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

fwupd_device_set_parent_id:
  543|    758|{
  544|    758|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    758|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
  545|    758|	g_return_if_fail(FWUPD_IS_DEVICE(self));
  ------------------
  |  |  630|    758|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    758|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    758|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    758| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    758|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    758|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 758, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    758|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    758|   else                                         \
  |  |  |  |  |  | 1021|    758|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    758|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    758|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    758|      { } \
  |  |  633|    758|    else \
  |  |  634|    758|      { \
  |  |  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|    758|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  546|       |
  547|       |	/* not changed */
  548|    758|	if (g_strcmp0(priv->parent_id, parent_id) == 0)
  ------------------
  |  Branch (548:6): [True: 758, False: 0]
  ------------------
  549|    758|		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|    758|{
  627|    758|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    758|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
  628|    758|	g_return_val_if_fail(FWUPD_IS_DEVICE(self), NULL);
  ------------------
  |  |  643|    758|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    758|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    758|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    758| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    758|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    758|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 758, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    758|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    758|   else                                         \
  |  |  |  |  |  | 1021|    758|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    758|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    758|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    758|      { } \
  |  |  646|    758|    else \
  |  |  647|    758|      { \
  |  |  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|    758|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  629|    758|	return priv->parent;
  630|    758|}
fwupd_device_set_parent:
  666|    758|{
  667|    758|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    758|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
  668|    758|	g_return_if_fail(FWUPD_IS_DEVICE(self));
  ------------------
  |  |  630|    758|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    758|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    758|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    758| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    758|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    758|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 758, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    758|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    758|   else                                         \
  |  |  |  |  |  | 1021|    758|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    758|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    758|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    758|      { } \
  |  |  633|    758|    else \
  |  |  634|    758|      { \
  |  |  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|    758|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  669|    758|	g_return_if_fail(self != parent);
  ------------------
  |  |  630|    758|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    758|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    758|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    758| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    758|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    758|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 758, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    758|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    758|   else                                         \
  |  |  |  |  |  | 1021|    758|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    758|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    758|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    758|      { } \
  |  |  633|    758|    else \
  |  |  634|    758|      { \
  |  |  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|    758|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  670|       |
  671|    758|	if (priv->parent != NULL)
  ------------------
  |  Branch (671:6): [True: 0, False: 758]
  ------------------
  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|    758|	if (parent != NULL)
  ------------------
  |  Branch (673:6): [True: 0, False: 758]
  ------------------
  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|    758|	priv->parent = parent;
  676|       |
  677|       |	/* this is what goes over D-Bus */
  678|    758|	fwupd_device_set_parent_id(self, parent != NULL ? fwupd_device_get_id(parent) : NULL);
  ------------------
  |  Branch (678:35): [True: 0, False: 758]
  ------------------
  679|    758|}
fwupd_device_set_name:
 1059|    758|{
 1060|    758|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    758|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
 1061|    758|	g_return_if_fail(FWUPD_IS_DEVICE(self));
  ------------------
  |  |  630|    758|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    758|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    758|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    758| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    758|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    758|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 758, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    758|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    758|   else                                         \
  |  |  |  |  |  | 1021|    758|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    758|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    758|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    758|      { } \
  |  |  633|    758|    else \
  |  |  634|    758|      { \
  |  |  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|    758|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1062|       |
 1063|       |	/* not changed */
 1064|    758|	if (g_strcmp0(priv->name, name) == 0)
  ------------------
  |  Branch (1064:6): [True: 758, False: 0]
  ------------------
 1065|    758|		return;
 1066|       |
 1067|      0|	g_free(priv->name);
 1068|      0|	priv->name = g_strdup(name);
 1069|      0|}
fwupd_device_add_flag:
 1799|    758|{
 1800|    758|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    758|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
 1801|    758|	g_return_if_fail(FWUPD_IS_DEVICE(self));
  ------------------
  |  |  630|    758|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    758|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    758|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    758| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    758|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    758|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 758, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    758|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    758|   else                                         \
  |  |  |  |  |  | 1021|    758|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    758|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    758|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    758|      { } \
  |  |  633|    758|    else \
  |  |  634|    758|      { \
  |  |  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|    758|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1802|    758|	if (flag == 0)
  ------------------
  |  Branch (1802:6): [True: 0, False: 758]
  ------------------
 1803|      0|		return;
 1804|    758|	if ((priv->flags | flag) == priv->flags)
  ------------------
  |  Branch (1804:6): [True: 0, False: 758]
  ------------------
 1805|      0|		return;
 1806|    758|	priv->flags |= flag;
 1807|    758|	g_object_notify(G_OBJECT(self), "flags");
  ------------------
  |  |   56|    758|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|    758|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|    758|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1808|    758|}
fwupd_device_has_flag:
 1845|    758|{
 1846|    758|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    758|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
 1847|    758|	g_return_val_if_fail(FWUPD_IS_DEVICE(self), FALSE);
  ------------------
  |  |  643|    758|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    758|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    758|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    758| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    758|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    758|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 758, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    758|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    758|   else                                         \
  |  |  |  |  |  | 1021|    758|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    758|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    758|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    758|      { } \
  |  |  646|    758|    else \
  |  |  647|    758|      { \
  |  |  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|    758|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1848|    758|	return (priv->flags & flag) > 0;
 1849|    758|}
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,
  ------------------
  |  |  453|      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,
  ------------------
  |  |  106|      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,
  ------------------
  |  |  346|      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|    758|{
 4166|    758|	FwupdDevice *self = FWUPD_DEVICE(object);
 4167|    758|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    758|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
 4168|       |
 4169|    758|	if (priv->parent != NULL)
  ------------------
  |  Branch (4169:6): [True: 0, False: 758]
  ------------------
 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|    758|	if (priv->children != NULL) {
  ------------------
  |  Branch (4171:6): [True: 0, False: 758]
  ------------------
 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|    758|	g_free(priv->id);
 4179|    758|	g_free(priv->parent_id);
 4180|    758|	g_free(priv->composite_id);
 4181|    758|	g_free(priv->name);
 4182|    758|	g_free(priv->serial);
 4183|    758|	g_free(priv->summary);
 4184|    758|	g_free(priv->details_url);
 4185|    758|	g_free(priv->branch);
 4186|    758|	g_free(priv->vendor);
 4187|    758|	g_free(priv->plugin);
 4188|    758|	g_free(priv->update_error);
 4189|    758|	g_free(priv->version);
 4190|    758|	g_free(priv->version_lowest);
 4191|    758|	g_free(priv->version_highest);
 4192|    758|	g_free(priv->version_bootloader);
 4193|    758|	if (priv->guids != NULL)
  ------------------
  |  Branch (4193:6): [True: 0, False: 758]
  ------------------
 4194|      0|		g_ptr_array_unref(priv->guids);
 4195|    758|	if (priv->vendor_ids != NULL)
  ------------------
  |  Branch (4195:6): [True: 0, False: 758]
  ------------------
 4196|      0|		g_ptr_array_unref(priv->vendor_ids);
 4197|    758|	if (priv->protocols != NULL)
  ------------------
  |  Branch (4197:6): [True: 0, False: 758]
  ------------------
 4198|      0|		g_ptr_array_unref(priv->protocols);
 4199|    758|	if (priv->instance_ids != NULL)
  ------------------
  |  Branch (4199:6): [True: 0, False: 758]
  ------------------
 4200|      0|		g_ptr_array_unref(priv->instance_ids);
 4201|    758|	if (priv->icons != NULL)
  ------------------
  |  Branch (4201:6): [True: 0, False: 758]
  ------------------
 4202|      0|		g_ptr_array_unref(priv->icons);
 4203|    758|	if (priv->checksums != NULL)
  ------------------
  |  Branch (4203:6): [True: 0, False: 758]
  ------------------
 4204|      0|		g_ptr_array_unref(priv->checksums);
 4205|    758|	if (priv->children != NULL)
  ------------------
  |  Branch (4205:6): [True: 0, False: 758]
  ------------------
 4206|      0|		g_ptr_array_unref(priv->children);
 4207|    758|	if (priv->releases != NULL)
  ------------------
  |  Branch (4207:6): [True: 0, False: 758]
  ------------------
 4208|      0|		g_ptr_array_unref(priv->releases);
 4209|    758|	if (priv->issues != NULL)
  ------------------
  |  Branch (4209:6): [True: 0, False: 758]
  ------------------
 4210|      0|		g_ptr_array_unref(priv->issues);
 4211|       |
 4212|    758|	G_OBJECT_CLASS(fwupd_device_parent_class)->finalize(object);
  ------------------
  |  |   63|    758|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|    758|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|    758|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4213|    758|}
fwupd-device.c:fwupd_device_init:
 4157|    758|{
 4158|    758|	FwupdDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  107|    758|#define GET_PRIVATE(o) (fwupd_device_get_instance_private(o))
  ------------------
 4159|    758|	priv->battery_level = FWUPD_BATTERY_LEVEL_INVALID;
  ------------------
  |  |   19|    758|#define FWUPD_BATTERY_LEVEL_INVALID 101
  ------------------
 4160|    758|	priv->battery_threshold = FWUPD_BATTERY_LEVEL_INVALID;
  ------------------
  |  |   19|    758|#define FWUPD_BATTERY_LEVEL_INVALID 101
  ------------------
 4161|    758|}
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.46k|{
  146|  1.46k|	static GQuark quark = 0;
  147|  1.46k|	if (!quark) {
  ------------------
  |  Branch (147:6): [True: 1, False: 1.45k]
  ------------------
  148|      1|		quark = g_quark_from_static_string("FwupdError");
  149|     23|		for (gint i = 0; i < FWUPD_ERROR_LAST; i++) {
  ------------------
  |  |  148|     23|#define FWUPD_ERROR_LAST 22
  ------------------
  |  Branch (149:20): [True: 22, False: 1]
  ------------------
  150|     22|			g_dbus_error_register_error(quark, i, fwupd_error_to_string(i));
  151|     22|		}
  152|      1|	}
  153|  1.46k|	return quark;
  154|  1.46k|}

fu_bytes_get_data_safe:
  343|   473k|{
  344|   473k|	const guint8 *buf = g_bytes_get_data(bytes, bufsz);
  345|   473k|	if (buf == NULL) {
  ------------------
  |  Branch (345:6): [True: 0, False: 473k]
  ------------------
  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|   473k|	return buf;
  350|   473k|}

fu_size_checked_add:
  112|   857k|{
  113|   857k|	gsize tmp = 0;
  114|   857k|	if (!g_size_checked_add(&tmp, a, b))
  ------------------
  |  |  444|   857k|    _GLIB_CHECKED_ADD_U64(dest, a, b)
  ------------------
  |  Branch (114:6): [True: 0, False: 857k]
  ------------------
  115|      0|		return G_MAXSIZE;
  ------------------
  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
  116|   857k|	return tmp;
  117|   857k|}
fu_size_checked_inc:
  135|   592k|{
  136|   592k|	gsize value_new;
  137|       |
  138|   592k|	g_return_val_if_fail(value != NULL, FALSE);
  ------------------
  |  |  643|   592k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   592k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   592k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   592k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   592k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   592k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   592k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   592k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 592k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   592k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   592k|   else                                         \
  |  |  |  |  |  | 1021|   592k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   592k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   592k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 592k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   592k|      { } \
  |  |  646|   592k|    else \
  |  |  647|   592k|      { \
  |  |  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|   592k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   592k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 592k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  139|   592k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   592k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   592k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   592k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   592k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   592k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   592k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   592k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.18M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 592k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   592k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   592k|   else                                         \
  |  |  |  |  |  | 1021|   592k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   592k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   592k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 592k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   592k|      { } \
  |  |  646|   592k|    else \
  |  |  647|   592k|      { \
  |  |  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|   592k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   592k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 592k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  140|       |
  141|   592k|	value_new = *value;
  142|   592k|	if (!g_size_checked_add(&value_new, *value, len)) {
  ------------------
  |  |  444|   592k|    _GLIB_CHECKED_ADD_U64(dest, a, b)
  ------------------
  |  Branch (142:6): [True: 0, False: 592k]
  ------------------
  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|   592k|	*value = value_new;
  154|   592k|	return TRUE;
  ------------------
  |  |  818|   592k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   592k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  155|   592k|}

fu_device_has_private_flag_quark:
  287|    758|{
  288|    758|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  172|    758|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
  289|    758|	for (guint i = 0; i < priv->private_flags->len; i++) {
  ------------------
  |  Branch (289:20): [True: 0, False: 758]
  ------------------
  290|      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)])
  ------------------
  291|      0|		if (flag_quark == flag_tmp)
  ------------------
  |  Branch (291:7): [True: 0, False: 0]
  ------------------
  292|      0|			return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  293|      0|	}
  294|    758|	return FALSE;
  ------------------
  |  |  814|    758|#define	FALSE	(0)
  ------------------
  295|    758|}
fu_device_find_private_flag:
  335|      1|{
  336|      1|	return fu_device_find_private_flag_quark(klass, g_quark_from_string(flag));
  337|      1|}
fu_device_retry_add_recovery:
  575|    758|{
  576|    758|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  172|    758|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
  577|    758|	FuDeviceRetryRecovery *rec;
  578|       |
  579|    758|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    758|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    758|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    758|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    758| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    758|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    758|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 758, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    758|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    758|   else                                         \
  |  |  |  |  |  | 1021|    758|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    758|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    758|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    758|      { } \
  |  |  633|    758|    else \
  |  |  634|    758|      { \
  |  |  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|    758|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  580|    758|	g_return_if_fail(domain != 0);
  ------------------
  |  |  630|    758|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    758|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    758|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    758| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    758|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    758|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 758, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    758|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    758|   else                                         \
  |  |  |  |  |  | 1021|    758|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    758|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    758|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    758|      { } \
  |  |  633|    758|    else \
  |  |  634|    758|      { \
  |  |  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|    758|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  581|       |
  582|       |	/* ensure */
  583|    758|	if (priv->retry_recs == NULL)
  ------------------
  |  Branch (583:6): [True: 758, False: 0]
  ------------------
  584|    758|		priv->retry_recs = g_ptr_array_new_with_free_func(g_free);
  585|       |
  586|       |	rec = g_new(FuDeviceRetryRecovery, 1);
  ------------------
  |  |  290|    758|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|    758|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|    758|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|    758|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|    758|	  gpointer __p;						\
  |  |  |  |  239|    758|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 758]
  |  |  |  |  ------------------
  |  |  |  |  240|    758|	    __p = g_##func (__n);				\
  |  |  |  |  241|    758|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|    758|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|    758|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|    758|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 758]
  |  |  |  |  |  Branch (242:26): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|    758|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|    758|	  else							\
  |  |  |  |  245|    758|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|    758|	  __p;							\
  |  |  |  |  247|    758|	}))
  |  |  ------------------
  ------------------
  587|    758|	rec->domain = domain;
  588|    758|	rec->code = code;
  589|    758|	rec->recovery_func = func;
  590|    758|	g_ptr_array_add(priv->retry_recs, rec);
  591|    758|}
fu_device_get_parent_internal:
 1454|    758|{
 1455|    758|	g_return_val_if_fail(FU_IS_DEVICE(self), NULL);
  ------------------
  |  |  643|    758|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    758|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    758|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    758| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    758|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    758|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 758, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    758|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    758|   else                                         \
  |  |  |  |  |  | 1021|    758|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    758|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    758|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    758|      { } \
  |  |  646|    758|    else \
  |  |  647|    758|      { \
  |  |  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|    758|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1456|    758|	return FU_DEVICE(fwupd_device_get_parent(FWUPD_DEVICE(self)));
 1457|    758|}
fu_device_set_parent:
 1549|    758|{
 1550|    758|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    758|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    758|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    758|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    758| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    758|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    758|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 758, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    758|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    758|   else                                         \
  |  |  |  |  |  | 1021|    758|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    758|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    758|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    758|      { } \
  |  |  633|    758|    else \
  |  |  634|    758|      { \
  |  |  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|    758|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1551|       |
 1552|       |	/* debug */
 1553|    758|	if (parent != NULL) {
  ------------------
  |  Branch (1553:6): [True: 0, False: 758]
  ------------------
 1554|      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)))
  |  |  ------------------
  ------------------
 1555|      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)))
  |  |  ------------------
  ------------------
 1556|      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__)
  ------------------
 1557|      0|	}
 1558|       |
 1559|       |	/* set the composite ID on the children and grandchildren */
 1560|    758|	if (parent != NULL)
  ------------------
  |  Branch (1560:6): [True: 0, False: 758]
  ------------------
 1561|      0|		fu_device_set_composite_id(self, fu_device_get_composite_id(parent));
  ------------------
  |  |  183|      0|#define fu_device_get_composite_id(d)	     fwupd_device_get_composite_id(FWUPD_DEVICE(d))
  ------------------
 1562|       |
 1563|       |	/* if the parent has a context, make the child inherit it */
 1564|    758|	if (parent != NULL) {
  ------------------
  |  Branch (1564:6): [True: 0, False: 758]
  ------------------
 1565|      0|		if (fu_device_get_context(self) == NULL && fu_device_get_context(parent) != NULL)
  ------------------
  |  Branch (1565:7): [True: 0, False: 0]
  |  Branch (1565:46): [True: 0, False: 0]
  ------------------
 1566|      0|			fu_device_set_context(self, fu_device_get_context(parent));
 1567|      0|	}
 1568|       |
 1569|    758|	fwupd_device_set_parent(FWUPD_DEVICE(self), FWUPD_DEVICE(parent));
 1570|    758|	g_object_notify(G_OBJECT(self), "parent");
  ------------------
  |  |   56|    758|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|    758|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|    758|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1571|       |
 1572|       |	/* fix the exported name */
 1573|    758|	fu_device_ensure_exported_name(self);
 1574|    758|}
fu_device_set_proxy:
 1622|    758|{
 1623|    758|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  172|    758|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 1624|       |
 1625|    758|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    758|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    758|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    758|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    758| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    758|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    758|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 758, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    758|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    758|   else                                         \
  |  |  |  |  |  | 1021|    758|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    758|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    758|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    758|      { } \
  |  |  633|    758|    else \
  |  |  634|    758|      { \
  |  |  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|    758|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1626|    758|	g_return_if_fail(proxy == NULL || FU_IS_DEVICE(proxy));
  ------------------
  |  |  630|    758|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    758|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    758|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    758| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    758|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.51k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 758, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    758|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    758|   else                                         \
  |  |  |  |  |  | 1021|    758|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    758|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    758|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    758|      { } \
  |  |  633|    758|    else \
  |  |  634|    758|      { \
  |  |  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|    758|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1627|    758|	g_return_if_fail(self != proxy);
  ------------------
  |  |  630|    758|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    758|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    758|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    758| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    758|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    758|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 758, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    758|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    758|   else                                         \
  |  |  |  |  |  | 1021|    758|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    758|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    758|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    758|      { } \
  |  |  633|    758|    else \
  |  |  634|    758|      { \
  |  |  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|    758|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1628|       |
 1629|       |	/* unchanged */
 1630|    758|	if (proxy == priv->proxy)
  ------------------
  |  Branch (1630:6): [True: 758, False: 0]
  ------------------
 1631|    758|		return;
 1632|       |
 1633|       |	/* check is the correct type */
 1634|      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 (1634:6): [True: 0, False: 0]
  |  Branch (1634:23): [True: 0, False: 0]
  ------------------
 1635|      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 (1635:6): [True: 0, False: 0]
  ------------------
 1636|      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__)
  ------------------
 1637|      0|			   G_OBJECT_TYPE_NAME(proxy),
 1638|      0|			   g_type_name(priv->proxy_gtype));
 1639|      0|	}
 1640|       |
 1641|       |	/* disconnect from old proxy */
 1642|      0|	if (priv->proxy != NULL && priv->notify_flags_proxy_id != 0)
  ------------------
  |  Branch (1642:6): [True: 0, False: 0]
  |  Branch (1642:29): [True: 0, False: 0]
  ------------------
 1643|      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
  ------------------
 1644|       |
 1645|       |	/* copy from proxy */
 1646|      0|	if (proxy != NULL) {
  ------------------
  |  Branch (1646:6): [True: 0, False: 0]
  ------------------
 1647|      0|		fu_device_incorporate(self, proxy, FU_DEVICE_INCORPORATE_FLAG_PHYSICAL_ID);
 1648|      0|		priv->notify_flags_proxy_id =
 1649|      0|		    g_signal_connect(FWUPD_DEVICE(proxy),
  ------------------
  |  |  501|      0|    g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
  ------------------
 1650|      0|				     "notify::flags",
 1651|      0|				     G_CALLBACK(fu_device_proxy_flags_notify_cb),
 1652|      0|				     self);
 1653|      0|		fu_device_incorporate_from_proxy_flags(self, proxy);
 1654|      0|	}
 1655|       |
 1656|       |	/* sometimes strong, sometimes weak */
 1657|      0|	if (fu_device_has_private_flag_quark(self, quarks[QUARK_REFCOUNTED_PROXY])) {
  ------------------
  |  Branch (1657:6): [True: 0, False: 0]
  ------------------
 1658|      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
  ------------------
 1659|      0|		fu_device_set_target(self, proxy);
 1660|      0|	} else {
 1661|      0|		if (priv->proxy != NULL)
  ------------------
  |  Branch (1661:7): [True: 0, False: 0]
  ------------------
 1662|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1663|      0|						     (gpointer *)&priv->proxy);
 1664|      0|		if (proxy != NULL)
  ------------------
  |  Branch (1664:7): [True: 0, False: 0]
  ------------------
 1665|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1666|      0|		priv->proxy = proxy;
 1667|      0|	}
 1668|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1669|      0|}
fu_device_set_backend:
 4242|    758|{
 4243|    758|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  172|    758|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 4244|       |
 4245|    758|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    758|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    758|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    758|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    758| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    758|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    758|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 758, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    758|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    758|   else                                         \
  |  |  |  |  |  | 1021|    758|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    758|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    758|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    758|      { } \
  |  |  633|    758|    else \
  |  |  634|    758|      { \
  |  |  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|    758|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4246|    758|	g_return_if_fail(backend == NULL || FU_IS_BACKEND(backend));
  ------------------
  |  |  630|    758|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    758|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    758|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    758| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    758|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.51k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 758, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    758|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    758|   else                                         \
  |  |  |  |  |  | 1021|    758|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    758|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    758|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    758|      { } \
  |  |  633|    758|    else \
  |  |  634|    758|      { \
  |  |  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|    758|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4247|       |
 4248|       |	/* same */
 4249|    758|	if (priv->backend == backend)
  ------------------
  |  Branch (4249:6): [True: 758, False: 0]
  ------------------
 4250|    758|		return;
 4251|       |
 4252|       |	/* not already set */
 4253|      0|	if (priv->ctx == NULL)
  ------------------
  |  Branch (4253:6): [True: 0, False: 0]
  ------------------
 4254|      0|		fu_device_set_context(self, fu_backend_get_context(backend));
 4255|       |
 4256|       |	/* there is no ref on backend to prevent a loop */
 4257|      0|	if (priv->backend != NULL)
  ------------------
  |  Branch (4257:6): [True: 0, False: 0]
  ------------------
 4258|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4259|      0|	if (backend != NULL)
  ------------------
  |  Branch (4259:6): [True: 0, False: 0]
  ------------------
 4260|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4261|      0|	priv->backend = backend; /* no ref */
 4262|       |
 4263|       |	/* in case anything cares */
 4264|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4265|      0|}
fu_device_add_flag:
 4754|    758|{
 4755|    758|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  172|    758|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 4756|       |
 4757|       |	/* none is not used as an "exported" flag */
 4758|    758|	if (flag == FWUPD_DEVICE_FLAG_NONE)
  ------------------
  |  Branch (4758:6): [True: 0, False: 758]
  ------------------
 4759|      0|		return;
 4760|       |
 4761|       |	/* emulated device reinstalling do not need a replug or shutdown */
 4762|    758|	if (flag == FWUPD_DEVICE_FLAG_EMULATED) {
  ------------------
  |  Branch (4762:6): [True: 0, False: 758]
  ------------------
 4763|      0|		if (fu_device_has_flag(self, FWUPD_DEVICE_FLAG_NEEDS_REBOOT)) {
  ------------------
  |  |  142|      0|#define fu_device_has_flag(d, v)	 fwupd_device_has_flag(FWUPD_DEVICE(d), v)
  |  |  ------------------
  |  |  |  Branch (142:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4764|      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__)
  ------------------
 4765|      0|			fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_NEEDS_REBOOT);
 4766|      0|		}
 4767|      0|		if (fu_device_has_flag(self, FWUPD_DEVICE_FLAG_NEEDS_SHUTDOWN)) {
  ------------------
  |  |  142|      0|#define fu_device_has_flag(d, v)	 fwupd_device_has_flag(FWUPD_DEVICE(d), v)
  |  |  ------------------
  |  |  |  Branch (142:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4768|      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__)
  ------------------
 4769|      0|			fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_NEEDS_SHUTDOWN);
 4770|      0|		}
 4771|      0|	}
 4772|       |
 4773|       |	/* we only inhibit when the flags contains UPDATABLE, and that might be discovered by
 4774|       |	 * probing the hardware *after* the battery level has been set */
 4775|    758|	if (flag == FWUPD_DEVICE_FLAG_UPDATABLE && priv->inhibits != NULL)
  ------------------
  |  Branch (4775:6): [True: 0, False: 758]
  |  Branch (4775:45): [True: 0, False: 0]
  ------------------
 4776|      0|		fu_device_ensure_inhibits(self);
 4777|       |
 4778|       |	/* an emulated device cannot be used to record emulation events,
 4779|       |	 * and an emulated device cannot be tagged for emulation */
 4780|    758|	if (flag == FWUPD_DEVICE_FLAG_EMULATED)
  ------------------
  |  Branch (4780:6): [True: 0, False: 758]
  ------------------
 4781|      0|		fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_CAN_EMULATION_TAG);
 4782|    758|	if (flag == FWUPD_DEVICE_FLAG_CAN_EMULATION_TAG &&
  ------------------
  |  Branch (4782:6): [True: 758, False: 0]
  ------------------
 4783|    758|	    fu_device_has_flag(self, FWUPD_DEVICE_FLAG_EMULATED))
  ------------------
  |  |  142|    758|#define fu_device_has_flag(d, v)	 fwupd_device_has_flag(FWUPD_DEVICE(d), v)
  |  |  ------------------
  |  |  |  Branch (142:35): [True: 0, False: 758]
  |  |  ------------------
  ------------------
 4784|      0|		return;
 4785|       |
 4786|       |	/* being both a bootloader and requiring a bootloader is invalid */
 4787|    758|	if (flag & FWUPD_DEVICE_FLAG_NEEDS_BOOTLOADER)
  ------------------
  |  Branch (4787:6): [True: 0, False: 758]
  ------------------
 4788|      0|		fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_IS_BOOTLOADER);
 4789|    758|	if (flag & FWUPD_DEVICE_FLAG_IS_BOOTLOADER)
  ------------------
  |  Branch (4789:6): [True: 0, False: 758]
  ------------------
 4790|      0|		fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_NEEDS_BOOTLOADER);
 4791|       |
 4792|       |	/* being both a signed and unsigned is invalid */
 4793|    758|	if (flag & FWUPD_DEVICE_FLAG_SIGNED_PAYLOAD)
  ------------------
  |  Branch (4793:6): [True: 0, False: 758]
  ------------------
 4794|      0|		fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_UNSIGNED_PAYLOAD);
 4795|    758|	if (flag & FWUPD_DEVICE_FLAG_UNSIGNED_PAYLOAD)
  ------------------
  |  Branch (4795:6): [True: 0, False: 758]
  ------------------
 4796|      0|		fu_device_remove_flag(self, FWUPD_DEVICE_FLAG_SIGNED_PAYLOAD);
 4797|       |
 4798|       |	/* one implies the other */
 4799|    758|	if (flag & FWUPD_DEVICE_FLAG_CAN_VERIFY_IMAGE)
  ------------------
  |  Branch (4799:6): [True: 0, False: 758]
  ------------------
 4800|      0|		flag |= FWUPD_DEVICE_FLAG_CAN_VERIFY;
 4801|    758|	if (flag & FWUPD_DEVICE_FLAG_INSTALL_ALL_RELEASES)
  ------------------
  |  Branch (4801:6): [True: 0, False: 758]
  ------------------
 4802|      0|		flag |= FWUPD_DEVICE_FLAG_VERSION_CHECK_REQUIRED;
 4803|    758|	fwupd_device_add_flag(FWUPD_DEVICE(self), flag);
 4804|       |
 4805|       |	/* activatable devices shouldn't be allowed to update again until activated */
 4806|       |	/* don't let devices be updated until activated */
 4807|    758|	if (flag & FWUPD_DEVICE_FLAG_NEEDS_ACTIVATION)
  ------------------
  |  Branch (4807:6): [True: 0, False: 758]
  ------------------
 4808|      0|		fu_device_inhibit(self, "needs-activation", "Pending activation");
 4809|       |
 4810|       |	/* do not let devices be updated until back in range */
 4811|    758|	if (flag & FWUPD_DEVICE_FLAG_UNREACHABLE)
  ------------------
  |  Branch (4811:6): [True: 0, False: 758]
  ------------------
 4812|      0|		fu_device_add_problem(self, FWUPD_DEVICE_PROBLEM_UNREACHABLE);
 4813|       |
 4814|       |	/* fixup and maybe show a warning if the remove delay was forgotten */
 4815|    758|	if ((flag & FWUPD_DEVICE_FLAG_WAIT_FOR_REPLUG) && priv->remove_delay == 0) {
  ------------------
  |  Branch (4815:6): [True: 0, False: 758]
  |  Branch (4815:52): [True: 0, False: 0]
  ------------------
 4816|      0|		priv->remove_delay = FU_DEVICE_REMOVE_DELAY_RE_ENUMERATE;
  ------------------
  |  |  112|      0|#define FU_DEVICE_REMOVE_DELAY_RE_ENUMERATE 10000 /* ms */
  ------------------
 4817|      0|#ifndef SUPPORTED_BUILD
 4818|      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__)
  ------------------
 4819|      0|			   "add something like fu_device_set_remove_delay(FU_DEVICE(self), "
 4820|      0|			   "FU_DEVICE_REMOVE_DELAY_RE_ENUMERATE) to the %s _init()",
 4821|      0|			   G_OBJECT_TYPE_NAME(self));
 4822|      0|#endif
 4823|      0|	}
 4824|    758|}
fu_device_register_private_flag_safe:
 4829|     62|{
 4830|     62|	FuDeviceClassPrivate *cpriv = fu_device_get_class_private(klass);
 4831|     62|	GQuark quark = g_quark_from_static_string(flag);
 4832|       |
 4833|     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]
  |  |  ------------------
  ------------------
 4834|      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__)
  ------------------
 4835|      0|			   FU_DEVICE_PRIVATE_FLAG_REGISTERED_MAX);
 4836|      0|		return 0;
 4837|      0|	}
 4838|     62|	cpriv->quarks[cpriv->quarks_cnt] = quark;
 4839|     62|	cpriv->quarks_cnt++;
 4840|     62|	return quark;
 4841|     62|}
fu_device_set_acquiesce_delay:
 5042|  1.51k|{
 5043|  1.51k|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  172|  1.51k|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 5044|  1.51k|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|  1.51k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.51k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.51k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.51k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.51k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.51k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.51k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.51k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.51k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.51k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.51k|   else                                         \
  |  |  |  |  |  | 1021|  1.51k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.51k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.51k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.51k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.51k|      { } \
  |  |  633|  1.51k|    else \
  |  |  634|  1.51k|      { \
  |  |  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.51k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.51k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.51k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5045|  1.51k|	priv->acquiesce_delay = acquiesce_delay;
 5046|  1.51k|}
fu_device_get_vid:
 5246|  1.25k|{
 5247|  1.25k|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  172|  1.25k|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 5248|  1.25k|	g_return_val_if_fail(FU_IS_DEVICE(self), 0x0000);
  ------------------
  |  |  643|  1.25k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.25k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.25k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.25k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.25k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.25k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.25k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.25k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.25k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.25k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.25k|   else                                         \
  |  |  |  |  |  | 1021|  1.25k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.25k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.25k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.25k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.25k|      { } \
  |  |  646|  1.25k|    else \
  |  |  647|  1.25k|      { \
  |  |  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.25k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.25k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.25k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5249|  1.25k|	return priv->vid;
 5250|  1.25k|}
fu_device_set_vid:
 5263|    693|{
 5264|    693|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  172|    693|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 5265|    693|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    693|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    693|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    693|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    693|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    693| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    693|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    693|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    693|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 693, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    693|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    693|   else                                         \
  |  |  |  |  |  | 1021|    693|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    693|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    693|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 693, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    693|      { } \
  |  |  633|    693|    else \
  |  |  634|    693|      { \
  |  |  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|    693|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    693|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 693]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5266|    693|	if (priv->vid == vid)
  ------------------
  |  Branch (5266:6): [True: 65, False: 628]
  ------------------
 5267|     65|		return;
 5268|    628|	priv->vid = vid;
 5269|    628|	g_object_notify(G_OBJECT(self), "vid");
  ------------------
  |  |   56|    628|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|    628|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|    628|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5270|    628|}
fu_device_get_pid:
 5284|  1.31k|{
 5285|  1.31k|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  172|  1.31k|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 5286|  1.31k|	g_return_val_if_fail(FU_IS_DEVICE(self), 0x0000);
  ------------------
  |  |  643|  1.31k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.31k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.31k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.31k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.31k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.31k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.31k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.31k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.31k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.31k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.31k|   else                                         \
  |  |  |  |  |  | 1021|  1.31k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.31k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.31k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.31k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.31k|      { } \
  |  |  646|  1.31k|    else \
  |  |  647|  1.31k|      { \
  |  |  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.31k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.31k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.31k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5287|  1.31k|	return priv->pid;
 5288|  1.31k|}
fu_device_set_pid:
 5301|    693|{
 5302|    693|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  172|    693|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 5303|    693|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    693|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    693|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    693|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    693|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    693| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    693|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    693|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    693|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 693, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    693|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    693|   else                                         \
  |  |  |  |  |  | 1021|    693|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    693|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    693|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 693, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    693|      { } \
  |  |  633|    693|    else \
  |  |  634|    693|      { \
  |  |  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|    693|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    693|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 693]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5304|    693|	if (priv->pid == pid)
  ------------------
  |  Branch (5304:6): [True: 35, False: 658]
  ------------------
 5305|     35|		return;
 5306|    658|	priv->pid = pid;
 5307|    658|	g_object_notify(G_OBJECT(self), "pid");
  ------------------
  |  |   56|    658|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|    658|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|    658|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5308|    658|}
fu_device_set_context:
 5579|    758|{
 5580|    758|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  172|    758|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 5581|    758|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|    758|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    758|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    758|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    758| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    758|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    758|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 758, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    758|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    758|   else                                         \
  |  |  |  |  |  | 1021|    758|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    758|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    758|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    758|      { } \
  |  |  633|    758|    else \
  |  |  634|    758|      { \
  |  |  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|    758|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5582|    758|	g_return_if_fail(FU_IS_CONTEXT(ctx) || ctx == NULL);
  ------------------
  |  |  630|    758|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    758|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    758|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    758| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    758|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.27k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 758]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 758, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    758|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    758|   else                                         \
  |  |  |  |  |  | 1021|    758|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    758|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    758|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    758|      { } \
  |  |  633|    758|    else \
  |  |  634|    758|      { \
  |  |  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|    758|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5583|       |
 5584|    758|#ifndef SUPPORTED_BUILD
 5585|    758|	if (priv->ctx != NULL && ctx == NULL) {
  ------------------
  |  Branch (5585:6): [True: 0, False: 758]
  |  Branch (5585:27): [True: 0, False: 0]
  ------------------
 5586|      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)))
  |  |  ------------------
  ------------------
 5587|      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__)
  ------------------
 5588|      0|		return;
 5589|      0|	}
 5590|    758|#endif
 5591|       |
 5592|    758|	if (g_set_object(&priv->ctx, ctx))
  ------------------
  |  |  750|    758|  (G_GNUC_EXTENSION ({ \
  |  |  ------------------
  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  |  Branch (750:3): [True: 0, False: 758]
  |  |  ------------------
  |  |  751|    758|    G_STATIC_ASSERT (sizeof *(object_ptr) == sizeof (new_object)); \
  |  |  ------------------
  |  |  |  |  758|    758|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  ------------------
  |  |  752|    758|    /* Only one access, please; work around type aliasing */ \
  |  |  753|    758|    union { char *in; GObject **out; } _object_ptr; \
  |  |  754|    758|    _object_ptr.in = (char *) (object_ptr); \
  |  |  755|    758|    /* Check types match */ \
  |  |  756|    758|    (void) (0 ? *(object_ptr) = (new_object), FALSE : FALSE); \
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  |  |                   (void) (0 ? *(object_ptr) = (new_object), FALSE : FALSE); \
  |  |  ------------------
  |  |  |  |  814|    758|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (756:13): [Folded, False: 758]
  |  |  ------------------
  |  |  757|    758|    (g_set_object) (_object_ptr.out, (GObject *) new_object); \
  |  |  758|    758|  })) \
  |  |  759|    758|  GLIB_AVAILABLE_MACRO_IN_2_44
  ------------------
 5593|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5594|    758|}
fu_device_add_instance_u16:
 7786|  2.57k|{
 7787|  2.57k|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  172|  2.57k|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 7788|  2.57k|	g_return_if_fail(FU_IS_DEVICE(self));
  ------------------
  |  |  630|  2.57k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.57k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.57k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.57k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.57k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.57k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.57k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.57k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.57k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.57k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.57k|   else                                         \
  |  |  |  |  |  | 1021|  2.57k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.57k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.57k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.57k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.57k|      { } \
  |  |  633|  2.57k|    else \
  |  |  634|  2.57k|      { \
  |  |  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.57k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.57k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.57k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7789|  2.57k|	g_return_if_fail(key != NULL);
  ------------------
  |  |  630|  2.57k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.57k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.57k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.57k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.57k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.57k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.57k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.57k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.57k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.57k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.57k|   else                                         \
  |  |  |  |  |  | 1021|  2.57k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.57k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.57k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.57k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.57k|      { } \
  |  |  633|  2.57k|    else \
  |  |  634|  2.57k|      { \
  |  |  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.57k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.57k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.57k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7790|  2.57k|	fu_device_ensure_instance_hash(self);
 7791|  2.57k|	g_hash_table_insert(priv->instance_hash, g_strdup(key), g_strdup_printf("%04X", value));
 7792|  2.57k|}
fu-device.c:fu_device_class_init:
 8400|      1|{
 8401|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8402|      1|	FuDeviceClass *device_class = FU_DEVICE_CLASS(klass);
 8403|      1|	GParamSpec *pspec;
 8404|      1|	const gchar *quark_flags[] = {
 8405|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_PROBE,
  ------------------
  |  |  376|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_PROBE "no-probe"
  ------------------
 8406|      1|	    FU_DEVICE_PRIVATE_FLAG_REFCOUNTED_PROXY,
  ------------------
  |  |  577|      1|#define FU_DEVICE_PRIVATE_FLAG_REFCOUNTED_PROXY "refcounted-proxy"
  ------------------
 8407|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_GENERIC_GUIDS,
  ------------------
  |  |  492|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_GENERIC_GUIDS "no-generic-guids"
  ------------------
 8408|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_SERIAL_NUMBER,
  ------------------
  |  |  304|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_SERIAL_NUMBER "no-serial-number"
  ------------------
 8409|      1|	    FU_DEVICE_PRIVATE_FLAG_IS_FAKE,
  ------------------
  |  |  643|      1|#define FU_DEVICE_PRIVATE_FLAG_IS_FAKE "is-fake"
  ------------------
 8410|      1|	    FU_DEVICE_PRIVATE_FLAG_PARENT_NAME_PREFIX,
  ------------------
  |  |  700|      1|#define FU_DEVICE_PRIVATE_FLAG_PARENT_NAME_PREFIX "parent-name-prefix"
  ------------------
 8411|      1|	};
 8412|      1|	const gchar *flags[] = {
 8413|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_ICON,
  ------------------
  |  |  264|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_ICON "md-set-icon"
  ------------------
 8414|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_NAME,
  ------------------
  |  |  240|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_NAME "md-set-name"
  ------------------
 8415|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_NAME_CATEGORY,
  ------------------
  |  |  248|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_NAME_CATEGORY "md-set-name-category"
  ------------------
 8416|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_VERFMT,
  ------------------
  |  |  256|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_VERFMT "md-set-verfmt"
  ------------------
 8417|      1|	    FU_DEVICE_PRIVATE_FLAG_ONLY_SUPPORTED,
  ------------------
  |  |  232|      1|#define FU_DEVICE_PRIVATE_FLAG_ONLY_SUPPORTED "only-supported"
  ------------------
 8418|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_AUTO_INSTANCE_IDS,
  ------------------
  |  |  216|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_AUTO_INSTANCE_IDS "no-auto-instance-ids"
  ------------------
 8419|      1|	    FU_DEVICE_PRIVATE_FLAG_ENSURE_SEMVER,
  ------------------
  |  |  224|      1|#define FU_DEVICE_PRIVATE_FLAG_ENSURE_SEMVER "ensure-semver"
  ------------------
 8420|      1|	    FU_DEVICE_PRIVATE_FLAG_RETRY_OPEN,
  ------------------
  |  |  272|      1|#define FU_DEVICE_PRIVATE_FLAG_RETRY_OPEN "retry-open"
  ------------------
 8421|      1|	    FU_DEVICE_PRIVATE_FLAG_REPLUG_MATCH_GUID,
  ------------------
  |  |  280|      1|#define FU_DEVICE_PRIVATE_FLAG_REPLUG_MATCH_GUID "replug-match-guid"
  ------------------
 8422|      1|	    FU_DEVICE_PRIVATE_FLAG_INHERIT_ACTIVATION,
  ------------------
  |  |  288|      1|#define FU_DEVICE_PRIVATE_FLAG_INHERIT_ACTIVATION "inherit-activation"
  ------------------
 8423|      1|	    FU_DEVICE_PRIVATE_FLAG_IS_OPEN,
  ------------------
  |  |  296|      1|#define FU_DEVICE_PRIVATE_FLAG_IS_OPEN "is-open"
  ------------------
 8424|      1|	    FU_DEVICE_PRIVATE_FLAG_AUTO_PARENT_CHILDREN,
  ------------------
  |  |  312|      1|#define FU_DEVICE_PRIVATE_FLAG_AUTO_PARENT_CHILDREN "auto-parent-children"
  ------------------
 8425|      1|	    FU_DEVICE_PRIVATE_FLAG_ATTACH_EXTRA_RESET,
  ------------------
  |  |  320|      1|#define FU_DEVICE_PRIVATE_FLAG_ATTACH_EXTRA_RESET "attach-extra-reset"
  ------------------
 8426|      1|	    FU_DEVICE_PRIVATE_FLAG_INHIBIT_CHILDREN,
  ------------------
  |  |  328|      1|#define FU_DEVICE_PRIVATE_FLAG_INHIBIT_CHILDREN "inhibit-children"
  ------------------
 8427|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_AUTO_REMOVE_CHILDREN,
  ------------------
  |  |  336|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_AUTO_REMOVE_CHILDREN "no-auto-remove-children"
  ------------------
 8428|      1|	    FU_DEVICE_PRIVATE_FLAG_USE_PROXY_FOR_OPEN,
  ------------------
  |  |  585|      1|#define FU_DEVICE_PRIVATE_FLAG_USE_PROXY_FOR_OPEN "use-proxy-for-open"
  ------------------
 8429|      1|	    FU_DEVICE_PRIVATE_FLAG_USE_PROXY_FALLBACK,
  ------------------
  |  |  344|      1|#define FU_DEVICE_PRIVATE_FLAG_USE_PROXY_FALLBACK "use-proxy-fallback"
  ------------------
 8430|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_AUTO_REMOVE,
  ------------------
  |  |  352|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_AUTO_REMOVE "no-auto-remove"
  ------------------
 8431|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_VENDOR,
  ------------------
  |  |  360|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_VENDOR "md-set-vendor"
  ------------------
 8432|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_LID_CLOSED,
  ------------------
  |  |  368|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_LID_CLOSED "no-lid-closed"
  ------------------
 8433|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_SIGNED,
  ------------------
  |  |  384|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_SIGNED "md-set-signed"
  ------------------
 8434|      1|	    FU_DEVICE_PRIVATE_FLAG_AUTO_PAUSE_POLLING,
  ------------------
  |  |  392|      1|#define FU_DEVICE_PRIVATE_FLAG_AUTO_PAUSE_POLLING "auto-pause-polling"
  ------------------
 8435|      1|	    FU_DEVICE_PRIVATE_FLAG_DELAYED_REMOVAL,
  ------------------
  |  |  401|      1|#define FU_DEVICE_PRIVATE_FLAG_DELAYED_REMOVAL "delayed-removal"
  ------------------
 8436|      1|	    FU_DEVICE_PRIVATE_FLAG_IGNORE_SYSTEM_POWER,
  ------------------
  |  |  410|      1|#define FU_DEVICE_PRIVATE_FLAG_IGNORE_SYSTEM_POWER "ignore-system-power"
  ------------------
 8437|      1|	    FU_DEVICE_PRIVATE_FLAG_SAVE_INTO_BACKUP_REMOTE,
  ------------------
  |  |  423|      1|#define FU_DEVICE_PRIVATE_FLAG_SAVE_INTO_BACKUP_REMOTE "save-into-backup-remote"
  ------------------
 8438|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_FLAGS,
  ------------------
  |  |  434|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_FLAGS "md-set-flags"
  ------------------
 8439|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_VERSION,
  ------------------
  |  |  442|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_VERSION "md-set-version"
  ------------------
 8440|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_ONLY_CHECKSUM,
  ------------------
  |  |  452|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_ONLY_CHECKSUM "md-only-checksum"
  ------------------
 8441|      1|	    FU_DEVICE_PRIVATE_FLAG_ADD_INSTANCE_ID_REV,
  ------------------
  |  |  460|      1|#define FU_DEVICE_PRIVATE_FLAG_ADD_INSTANCE_ID_REV "add-instance-id-rev"
  ------------------
 8442|      1|	    FU_DEVICE_PRIVATE_FLAG_UNCONNECTED,
  ------------------
  |  |  468|      1|#define FU_DEVICE_PRIVATE_FLAG_UNCONNECTED "unconnected"
  ------------------
 8443|      1|	    FU_DEVICE_PRIVATE_FLAG_DISPLAY_REQUIRED,
  ------------------
  |  |  476|      1|#define FU_DEVICE_PRIVATE_FLAG_DISPLAY_REQUIRED "display-required"
  ------------------
 8444|      1|	    FU_DEVICE_PRIVATE_FLAG_UPDATE_PENDING,
  ------------------
  |  |  484|      1|#define FU_DEVICE_PRIVATE_FLAG_UPDATE_PENDING "update-pending"
  ------------------
 8445|      1|	    FU_DEVICE_PRIVATE_FLAG_ENFORCE_REQUIRES,
  ------------------
  |  |  509|      1|#define FU_DEVICE_PRIVATE_FLAG_ENFORCE_REQUIRES "enforce-requires"
  ------------------
 8446|      1|	    FU_DEVICE_PRIVATE_FLAG_REQUIRES_UNLOCK_FIRMWARE,
  ------------------
  |  |  519|      1|#define FU_DEVICE_PRIVATE_FLAG_REQUIRES_UNLOCK_FIRMWARE "requires-unlock-firmware"
  ------------------
 8447|      1|	    FU_DEVICE_PRIVATE_FLAG_REQUIRES_UNLOCK_SECUREBOOT,
  ------------------
  |  |  529|      1|#define FU_DEVICE_PRIVATE_FLAG_REQUIRES_UNLOCK_SECUREBOOT "requires-unlock-secureboot"
  ------------------
 8448|      1|	    FU_DEVICE_PRIVATE_FLAG_HOST_FIRMWARE,
  ------------------
  |  |  537|      1|#define FU_DEVICE_PRIVATE_FLAG_HOST_FIRMWARE "host-firmware"
  ------------------
 8449|      1|	    FU_DEVICE_PRIVATE_FLAG_HOST_FIRMWARE_CHILD,
  ------------------
  |  |  545|      1|#define FU_DEVICE_PRIVATE_FLAG_HOST_FIRMWARE_CHILD "host-firmware-child"
  ------------------
 8450|      1|	    FU_DEVICE_PRIVATE_FLAG_HOST_CPU,
  ------------------
  |  |  553|      1|#define FU_DEVICE_PRIVATE_FLAG_HOST_CPU "host-cpu"
  ------------------
 8451|      1|	    FU_DEVICE_PRIVATE_FLAG_HOST_CPU_CHILD,
  ------------------
  |  |  561|      1|#define FU_DEVICE_PRIVATE_FLAG_HOST_CPU_CHILD "host-cpu-child"
  ------------------
 8452|      1|	    FU_DEVICE_PRIVATE_FLAG_EXPLICIT_ORDER,
  ------------------
  |  |  569|      1|#define FU_DEVICE_PRIVATE_FLAG_EXPLICIT_ORDER "explicit-order"
  ------------------
 8453|      1|	    FU_DEVICE_PRIVATE_FLAG_INSTALL_PARENT_FIRST,
  ------------------
  |  |  596|      1|#define FU_DEVICE_PRIVATE_FLAG_INSTALL_PARENT_FIRST "install-parent-first"
  ------------------
 8454|      1|	    FU_DEVICE_PRIVATE_FLAG_REGISTERED,
  ------------------
  |  |  605|      1|#define FU_DEVICE_PRIVATE_FLAG_REGISTERED "registered"
  ------------------
 8455|      1|	    FU_DEVICE_PRIVATE_FLAG_ADD_COUNTERPART_GUIDS,
  ------------------
  |  |  615|      1|#define FU_DEVICE_PRIVATE_FLAG_ADD_COUNTERPART_GUIDS "add-counterpart-guids"
  ------------------
 8456|      1|	    FU_DEVICE_PRIVATE_FLAG_USE_RUNTIME_VERSION,
  ------------------
  |  |  625|      1|#define FU_DEVICE_PRIVATE_FLAG_USE_RUNTIME_VERSION "use-runtime-version"
  ------------------
 8457|      1|	    FU_DEVICE_PRIVATE_FLAG_SKIPS_RESTART,
  ------------------
  |  |  634|      1|#define FU_DEVICE_PRIVATE_FLAG_SKIPS_RESTART "skips-restart"
  ------------------
 8458|      1|	    FU_DEVICE_PRIVATE_FLAG_COUNTERPART_VISIBLE,
  ------------------
  |  |  654|      1|#define FU_DEVICE_PRIVATE_FLAG_COUNTERPART_VISIBLE "counterpart-visible"
  ------------------
 8459|      1|	    FU_DEVICE_PRIVATE_FLAG_DETACH_PREPARE_FIRMWARE,
  ------------------
  |  |  664|      1|#define FU_DEVICE_PRIVATE_FLAG_DETACH_PREPARE_FIRMWARE "detach-prepare-firmware"
  ------------------
 8460|      1|	    FU_DEVICE_PRIVATE_FLAG_EMULATED_REQUIRE_SETUP,
  ------------------
  |  |  674|      1|#define FU_DEVICE_PRIVATE_FLAG_EMULATED_REQUIRE_SETUP "emulated-require-setup"
  ------------------
 8461|      1|	    FU_DEVICE_PRIVATE_FLAG_INSTALL_LOOP_RESTART,
  ------------------
  |  |  684|      1|#define FU_DEVICE_PRIVATE_FLAG_INSTALL_LOOP_RESTART "install-loop-restart"
  ------------------
 8462|      1|	    FU_DEVICE_PRIVATE_FLAG_MD_SET_REQUIRED_FREE,
  ------------------
  |  |  692|      1|#define FU_DEVICE_PRIVATE_FLAG_MD_SET_REQUIRED_FREE "md-set-required-free"
  ------------------
 8463|      1|	    FU_DEVICE_PRIVATE_FLAG_LAZY_VERFMT,
  ------------------
  |  |  710|      1|#define FU_DEVICE_PRIVATE_FLAG_LAZY_VERFMT "lazy-verfmt"
  ------------------
 8464|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_VERSION_EXPECTED,
  ------------------
  |  |  722|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_VERSION_EXPECTED "no-version-expected"
  ------------------
 8465|      1|	    FU_DEVICE_PRIVATE_FLAG_NO_GENERIC_VERSION,
  ------------------
  |  |  500|      1|#define FU_DEVICE_PRIVATE_FLAG_NO_GENERIC_VERSION "no-generic-version"
  ------------------
 8466|      1|	    FU_DEVICE_PRIVATE_FLAG_STRICT_EMULATION_ORDER,
  ------------------
  |  |  735|      1|#define FU_DEVICE_PRIVATE_FLAG_STRICT_EMULATION_ORDER "strict-emulation-order"
  ------------------
 8467|      1|	};
 8468|       |
 8469|      1|	object_class->dispose = fu_device_dispose;
 8470|      1|	object_class->finalize = fu_device_finalize;
 8471|      1|	object_class->get_property = fu_device_get_property;
 8472|      1|	object_class->set_property = fu_device_set_property;
 8473|       |
 8474|      1|	device_class->to_string = fu_device_to_string_impl;
 8475|       |
 8476|       |	/* used as device flags, order is important! */
 8477|      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 (8477:20): [True: 6, False: 1]
  ------------------
 8478|      6|		quarks[i] = fu_device_register_private_flag_safe(device_class, quark_flags[i]);
 8479|     55|	for (guint i = 0; i < G_N_ELEMENTS(flags); i++)
  ------------------
  |  |  840|     55|#define G_N_ELEMENTS(arr)		(sizeof (arr) / sizeof ((arr)[0]))
  ------------------
  |  Branch (8479:20): [True: 54, False: 1]
  ------------------
 8480|       |		/* register class private flags */
 8481|     54|		fu_device_register_private_flag_safe(device_class, flags[i]);
 8482|       |
 8483|       |	/**
 8484|       |	 * FuDevice::child-added:
 8485|       |	 * @self: the #FuDevice instance that emitted the signal
 8486|       |	 * @device: the #FuDevice child
 8487|       |	 *
 8488|       |	 * The ::child-added signal is emitted when a device has been added as a child.
 8489|       |	 *
 8490|       |	 * Since: 1.0.8
 8491|       |	 **/
 8492|      1|	signals[SIGNAL_CHILD_ADDED] = g_signal_new("child-added",
 8493|      1|						   G_TYPE_FROM_CLASS(object_class),
  ------------------
  |  |  613|      1|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  ------------------
 8494|      1|						   G_SIGNAL_RUN_LAST,
 8495|      1|						   G_STRUCT_OFFSET(FuDeviceClass, child_added),
  ------------------
  |  |  853|      1|      ((glong) offsetof (struct_type, member))
  ------------------
 8496|      1|						   NULL,
 8497|      1|						   NULL,
 8498|      1|						   g_cclosure_marshal_VOID__OBJECT,
 8499|      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)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8500|      1|						   1,
 8501|      1|						   FU_TYPE_DEVICE);
  ------------------
  |  |   20|      1|#define FU_TYPE_DEVICE (fu_device_get_type())
  ------------------
 8502|       |	/**
 8503|       |	 * FuDevice::child-removed:
 8504|       |	 * @self: the #FuDevice instance that emitted the signal
 8505|       |	 * @device: the #FuDevice child
 8506|       |	 *
 8507|       |	 * The ::child-removed signal is emitted when a device has been removed as a child.
 8508|       |	 *
 8509|       |	 * Since: 1.0.8
 8510|       |	 **/
 8511|      1|	signals[SIGNAL_CHILD_REMOVED] = g_signal_new("child-removed",
 8512|      1|						     G_TYPE_FROM_CLASS(object_class),
  ------------------
  |  |  613|      1|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  ------------------
 8513|      1|						     G_SIGNAL_RUN_LAST,
 8514|      1|						     G_STRUCT_OFFSET(FuDeviceClass, child_removed),
  ------------------
  |  |  853|      1|      ((glong) offsetof (struct_type, member))
  ------------------
 8515|      1|						     NULL,
 8516|      1|						     NULL,
 8517|      1|						     g_cclosure_marshal_VOID__OBJECT,
 8518|      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)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8519|      1|						     1,
 8520|      1|						     FU_TYPE_DEVICE);
  ------------------
  |  |   20|      1|#define FU_TYPE_DEVICE (fu_device_get_type())
  ------------------
 8521|       |	/**
 8522|       |	 * FuDevice::request:
 8523|       |	 * @self: the #FuDevice instance that emitted the signal
 8524|       |	 * @request: the #FwupdRequest
 8525|       |	 *
 8526|       |	 * The ::request signal is emitted when the device needs interactive action from the user.
 8527|       |	 *
 8528|       |	 * Since: 1.6.2
 8529|       |	 **/
 8530|      1|	signals[SIGNAL_REQUEST] = g_signal_new("request",
 8531|      1|					       G_TYPE_FROM_CLASS(object_class),
  ------------------
  |  |  613|      1|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  ------------------
 8532|      1|					       G_SIGNAL_RUN_LAST,
 8533|      1|					       G_STRUCT_OFFSET(FuDeviceClass, request),
  ------------------
  |  |  853|      1|      ((glong) offsetof (struct_type, member))
  ------------------
 8534|      1|					       NULL,
 8535|      1|					       NULL,
 8536|      1|					       g_cclosure_marshal_VOID__OBJECT,
 8537|      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)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8538|      1|					       1,
 8539|      1|					       FWUPD_TYPE_REQUEST);
  ------------------
  |  |   15|      1|#define FWUPD_TYPE_REQUEST (fwupd_request_get_type())
  ------------------
 8540|       |
 8541|       |	/**
 8542|       |	 * FuDevice:physical-id:
 8543|       |	 *
 8544|       |	 * The device physical ID.
 8545|       |	 *
 8546|       |	 * Since: 1.1.2
 8547|       |	 */
 8548|      1|	pspec = g_param_spec_string("physical-id",
 8549|      1|				    NULL,
 8550|      1|				    NULL,
 8551|      1|				    NULL,
 8552|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8553|      1|	g_object_class_install_property(object_class, PROP_PHYSICAL_ID, pspec);
 8554|       |
 8555|       |	/**
 8556|       |	 * FuDevice:logical-id:
 8557|       |	 *
 8558|       |	 * The device logical ID.
 8559|       |	 *
 8560|       |	 * Since: 1.1.2
 8561|       |	 */
 8562|      1|	pspec = g_param_spec_string("logical-id",
 8563|      1|				    NULL,
 8564|      1|				    NULL,
 8565|      1|				    NULL,
 8566|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8567|      1|	g_object_class_install_property(object_class, PROP_LOGICAL_ID, pspec);
 8568|       |
 8569|       |	/**
 8570|       |	 * FuDevice:backend-id:
 8571|       |	 *
 8572|       |	 * The device backend ID.
 8573|       |	 *
 8574|       |	 * Since: 1.5.8
 8575|       |	 */
 8576|      1|	pspec = g_param_spec_string("backend-id",
 8577|      1|				    NULL,
 8578|      1|				    NULL,
 8579|      1|				    NULL,
 8580|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8581|      1|	g_object_class_install_property(object_class, PROP_BACKEND_ID, pspec);
 8582|       |
 8583|       |	/**
 8584|       |	 * FuDevice:equivalent-id:
 8585|       |	 *
 8586|       |	 * The device equivalent ID.
 8587|       |	 *
 8588|       |	 * Since: 2.0.0
 8589|       |	 */
 8590|      1|	pspec = g_param_spec_string("equivalent-id",
 8591|      1|				    NULL,
 8592|      1|				    NULL,
 8593|      1|				    NULL,
 8594|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8595|      1|	g_object_class_install_property(object_class, PROP_EQUIVALENT_ID, pspec);
 8596|       |	/**
 8597|       |	 * FuDevice:update-message:
 8598|       |	 *
 8599|       |	 * The device update message.
 8600|       |	 *
 8601|       |	 * Since: 2.0.0
 8602|       |	 */
 8603|      1|	pspec = g_param_spec_string("update-message",
 8604|      1|				    NULL,
 8605|      1|				    NULL,
 8606|      1|				    NULL,
 8607|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8608|      1|	g_object_class_install_property(object_class, PROP_UPDATE_MESSAGE, pspec);
 8609|       |
 8610|       |	/**
 8611|       |	 * FuDevice:update-image:
 8612|       |	 *
 8613|       |	 * The update image for the device.
 8614|       |	 *
 8615|       |	 * Since: 2.0.0
 8616|       |	 */
 8617|      1|	pspec = g_param_spec_string("update-image",
 8618|      1|				    NULL,
 8619|      1|				    NULL,
 8620|      1|				    NULL,
 8621|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8622|      1|	g_object_class_install_property(object_class, PROP_UPDATE_IMAGE, pspec);
 8623|       |
 8624|       |	/**
 8625|       |	 * FuDevice:context:
 8626|       |	 *
 8627|       |	 * The #FuContext to use.
 8628|       |	 *
 8629|       |	 * Since: 1.6.0
 8630|       |	 */
 8631|      1|	pspec = g_param_spec_object("context",
 8632|      1|				    NULL,
 8633|      1|				    NULL,
 8634|      1|				    FU_TYPE_CONTEXT,
  ------------------
  |  |   21|      1|#define FU_TYPE_CONTEXT (fu_context_get_type())
  ------------------
 8635|      1|				    G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME);
 8636|      1|	g_object_class_install_property(object_class, PROP_CONTEXT, pspec);
 8637|       |
 8638|       |	/**
 8639|       |	 * FuDevice:backend:
 8640|       |	 *
 8641|       |	 * The #FuBackend that created the device.
 8642|       |	 *
 8643|       |	 * Since: 2.0.0
 8644|       |	 */
 8645|      1|	pspec = g_param_spec_object("backend",
 8646|      1|				    NULL,
 8647|      1|				    NULL,
 8648|      1|				    FU_TYPE_BACKEND,
  ------------------
  |  |   12|      1|#define FU_TYPE_BACKEND (fu_backend_get_type())
  ------------------
 8649|      1|				    G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME);
 8650|      1|	g_object_class_install_property(object_class, PROP_BACKEND, pspec);
 8651|       |
 8652|       |	/**
 8653|       |	 * FuDevice:proxy:
 8654|       |	 *
 8655|       |	 * The device proxy to use.
 8656|       |	 *
 8657|       |	 * Since: 1.4.1
 8658|       |	 */
 8659|      1|	pspec = g_param_spec_object("proxy",
 8660|      1|				    NULL,
 8661|      1|				    NULL,
 8662|      1|				    FU_TYPE_DEVICE,
  ------------------
  |  |   20|      1|#define FU_TYPE_DEVICE (fu_device_get_type())
  ------------------
 8663|      1|				    G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME);
 8664|      1|	g_object_class_install_property(object_class, PROP_PROXY, pspec);
 8665|       |
 8666|       |	/**
 8667|       |	 * FuDevice:parent:
 8668|       |	 *
 8669|       |	 * The device parent.
 8670|       |	 *
 8671|       |	 * Since: 1.0.8
 8672|       |	 */
 8673|      1|	pspec = g_param_spec_object("parent",
 8674|      1|				    NULL,
 8675|      1|				    NULL,
 8676|      1|				    FU_TYPE_DEVICE,
  ------------------
  |  |   20|      1|#define FU_TYPE_DEVICE (fu_device_get_type())
  ------------------
 8677|      1|				    G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME);
 8678|      1|	g_object_class_install_property(object_class, PROP_PARENT, pspec);
 8679|       |
 8680|       |	/**
 8681|       |	 * FuDevice:private-flags:
 8682|       |	 *
 8683|       |	 * The device private flags.
 8684|       |	 *
 8685|       |	 * Since: 1.9.1
 8686|       |	 */
 8687|      1|	pspec = g_param_spec_uint64("private-flags",
 8688|      1|				    NULL,
 8689|      1|				    NULL,
 8690|      1|				    0,
 8691|      1|				    G_MAXUINT64,
  ------------------
  |  |  101|      1|#define G_MAXUINT64	G_GUINT64_CONSTANT(0xffffffffffffffff)
  |  |  ------------------
  |  |  |  |   65|      1|#define G_GUINT64_CONSTANT(val)	(val##UL)
  |  |  ------------------
  ------------------
 8692|      1|				    0,
 8693|      1|				    G_PARAM_READABLE | G_PARAM_STATIC_NAME);
 8694|      1|	g_object_class_install_property(object_class, PROP_PRIVATE_FLAGS, pspec);
 8695|       |
 8696|       |	/**
 8697|       |	 * FuDevice:vid:
 8698|       |	 *
 8699|       |	 * The device vendor ID.
 8700|       |	 *
 8701|       |	 * Since: 2.0.0
 8702|       |	 */
 8703|      1|	pspec = g_param_spec_uint("vid",
 8704|      1|				  NULL,
 8705|      1|				  NULL,
 8706|      1|				  0,
 8707|      1|				  G_MAXUINT16,
  ------------------
  |  |   81|      1|#define G_MAXUINT16	((guint16) 0xffff)
  ------------------
 8708|      1|				  0,
 8709|      1|				  G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8710|      1|	g_object_class_install_property(object_class, PROP_VID, pspec);
 8711|       |
 8712|       |	/**
 8713|       |	 * FuDevice:pid:
 8714|       |	 *
 8715|       |	 * The device product ID.
 8716|       |	 *
 8717|       |	 * Since: 2.0.0
 8718|       |	 */
 8719|      1|	pspec = g_param_spec_uint("pid",
 8720|      1|				  NULL,
 8721|      1|				  NULL,
 8722|      1|				  0,
 8723|      1|				  G_MAXUINT16,
  ------------------
  |  |   81|      1|#define G_MAXUINT16	((guint16) 0xffff)
  ------------------
 8724|      1|				  0,
 8725|      1|				  G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8726|      1|	g_object_class_install_property(object_class, PROP_PID, pspec);
 8727|       |
 8728|       |	/**
 8729|       |	 * FuDevice:required-free:
 8730|       |	 *
 8731|       |	 * The required amount of free firmware space.
 8732|       |	 *
 8733|       |	 * Since: 2.0.12
 8734|       |	 */
 8735|      1|	pspec = g_param_spec_uint64("required-free",
 8736|      1|				    NULL,
 8737|      1|				    NULL,
 8738|      1|				    0,
 8739|      1|				    G_MAXUINT64,
  ------------------
  |  |  101|      1|#define G_MAXUINT64	G_GUINT64_CONSTANT(0xffffffffffffffff)
  |  |  ------------------
  |  |  |  |   65|      1|#define G_GUINT64_CONSTANT(val)	(val##UL)
  |  |  ------------------
  ------------------
 8740|      1|				    0,
 8741|      1|				    G_PARAM_READWRITE | G_PARAM_STATIC_NAME);
 8742|      1|	g_object_class_install_property(object_class, PROP_REQUIRED_FREE, pspec);
 8743|      1|}
fu-device.c:fu_device_dispose:
 8390|    758|{
 8391|    758|	FuDevice *self = FU_DEVICE(object);
 8392|    758|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  172|    758|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 8393|    758|	g_clear_object(&priv->ctx);
  ------------------
  |  |  683|    758|#define g_clear_object(object_ptr) g_clear_pointer ((object_ptr), g_object_unref)
  |  |  ------------------
  |  |  |  |  120|    758|  G_STMT_START                                           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  121|    758|  {                                                      \
  |  |  |  |  122|    758|    G_STATIC_ASSERT (sizeof *(pp) == sizeof (gpointer)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|    758|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  |  |  ------------------
  |  |  |  |  123|    758|    glib_typeof ((pp)) _pp = (pp);                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    758|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  124|    758|    glib_typeof (*(pp)) _ptr = *_pp;                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    758|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  125|    758|    *_pp = NULL;                                         \
  |  |  |  |  126|    758|    if (_ptr)                                            \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (126:9): [True: 0, False: 758]
  |  |  |  |  ------------------
  |  |  |  |  127|    758|      (destroy) (_ptr);                                  \
  |  |  |  |  128|    758|  }                                                      \
  |  |  |  |  129|    758|  G_STMT_END                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  130|    758|  GLIB_AVAILABLE_MACRO_IN_2_34
  |  |  ------------------
  ------------------
 8394|    758|	g_clear_object(&priv->target);
  ------------------
  |  |  683|    758|#define g_clear_object(object_ptr) g_clear_pointer ((object_ptr), g_object_unref)
  |  |  ------------------
  |  |  |  |  120|    758|  G_STMT_START                                           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|    758|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  121|    758|  {                                                      \
  |  |  |  |  122|    758|    G_STATIC_ASSERT (sizeof *(pp) == sizeof (gpointer)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|    758|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  |  |  ------------------
  |  |  |  |  123|    758|    glib_typeof ((pp)) _pp = (pp);                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    758|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  124|    758|    glib_typeof (*(pp)) _ptr = *_pp;                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    758|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  125|    758|    *_pp = NULL;                                         \
  |  |  |  |  126|    758|    if (_ptr)                                            \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (126:9): [True: 0, False: 758]
  |  |  |  |  ------------------
  |  |  |  |  127|    758|      (destroy) (_ptr);                                  \
  |  |  |  |  128|    758|  }                                                      \
  |  |  |  |  129|    758|  G_STMT_END                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|    758|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 758]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  130|    758|  GLIB_AVAILABLE_MACRO_IN_2_34
  |  |  ------------------
  ------------------
 8395|    758|	G_OBJECT_CLASS(fu_device_parent_class)->dispose(object);
  ------------------
  |  |   63|    758|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|    758|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|    758|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8396|    758|}
fu-device.c:fu_device_finalize:
 8757|    758|{
 8758|    758|	FuDevice *self = FU_DEVICE(object);
 8759|    758|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  172|    758|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 8760|       |
 8761|    758|	if (priv->progress != NULL)
  ------------------
  |  Branch (8761:6): [True: 0, False: 758]
  ------------------
 8762|      0|		g_object_unref(priv->progress);
 8763|    758|	if (priv->proxy != NULL) {
  ------------------
  |  Branch (8763:6): [True: 0, False: 758]
  ------------------
 8764|      0|		if (priv->notify_flags_proxy_id != 0)
  ------------------
  |  Branch (8764:7): [True: 0, False: 0]
  ------------------
 8765|      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
  ------------------
 8766|      0|		if (fu_device_has_private_flag_quark(self, quarks[QUARK_REFCOUNTED_PROXY])) {
  ------------------
  |  Branch (8766:7): [True: 0, False: 0]
  ------------------
 8767|      0|			g_object_unref(priv->proxy);
 8768|      0|		} else {
 8769|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8770|      0|						     (gpointer *)&priv->proxy);
 8771|      0|		}
 8772|      0|	}
 8773|    758|	if (priv->backend != NULL)
  ------------------
  |  Branch (8773:6): [True: 0, False: 758]
  ------------------
 8774|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8775|    758|	if (priv->poll_id != 0)
  ------------------
  |  Branch (8775:6): [True: 0, False: 758]
  ------------------
 8776|      0|		g_source_remove(priv->poll_id);
 8777|    758|	if (priv->metadata != NULL)
  ------------------
  |  Branch (8777:6): [True: 0, False: 758]
  ------------------
 8778|      0|		g_hash_table_unref(priv->metadata);
 8779|    758|	if (priv->inhibits != NULL)
  ------------------
  |  Branch (8779:6): [True: 0, False: 758]
  ------------------
 8780|      0|		g_hash_table_unref(priv->inhibits);
 8781|    758|	if (priv->instance_hash != NULL)
  ------------------
  |  Branch (8781:6): [True: 676, False: 82]
  ------------------
 8782|    676|		g_hash_table_unref(priv->instance_hash);
 8783|    758|	if (priv->parent_physical_ids != NULL)
  ------------------
  |  Branch (8783:6): [True: 0, False: 758]
  ------------------
 8784|      0|		g_ptr_array_unref(priv->parent_physical_ids);
 8785|    758|	if (priv->parent_backend_ids != NULL)
  ------------------
  |  Branch (8785:6): [True: 0, False: 758]
  ------------------
 8786|      0|		g_ptr_array_unref(priv->parent_backend_ids);
 8787|    758|	if (priv->events != NULL)
  ------------------
  |  Branch (8787:6): [True: 0, False: 758]
  ------------------
 8788|      0|		g_ptr_array_unref(priv->events);
 8789|    758|	if (priv->retry_recs != NULL)
  ------------------
  |  Branch (8789:6): [True: 758, False: 0]
  ------------------
 8790|    758|		g_ptr_array_unref(priv->retry_recs);
 8791|    758|	if (priv->instance_ids != NULL)
  ------------------
  |  Branch (8791:6): [True: 0, False: 758]
  ------------------
 8792|      0|		g_ptr_array_unref(priv->instance_ids);
 8793|    758|	if (priv->parent_guids != NULL)
  ------------------
  |  Branch (8793:6): [True: 0, False: 758]
  ------------------
 8794|      0|		g_ptr_array_unref(priv->parent_guids);
 8795|    758|	if (priv->possible_plugins != NULL)
  ------------------
  |  Branch (8795:6): [True: 0, False: 758]
  ------------------
 8796|      0|		g_ptr_array_unref(priv->possible_plugins);
 8797|    758|	g_array_unref(priv->private_flags);
 8798|    758|	g_free(priv->equivalent_id);
 8799|    758|	g_free(priv->physical_id);
 8800|    758|	g_free(priv->logical_id);
 8801|    758|	g_free(priv->backend_id);
 8802|    758|	g_free(priv->update_request_id);
 8803|    758|	g_free(priv->update_message);
 8804|    758|	g_free(priv->update_image);
 8805|    758|	g_free(priv->fwupd_version);
 8806|    758|	g_free(priv->proxy_guid);
 8807|    758|	g_free(priv->name);
 8808|    758|	g_free(priv->custom_flags);
 8809|       |
 8810|    758|	G_OBJECT_CLASS(fu_device_parent_class)->finalize(object);
  ------------------
  |  |   63|    758|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|    758|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|    758|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8811|    758|}
fu-device.c:fu_device_set_property:
  236|  3.03k|{
  237|  3.03k|	FuDevice *self = FU_DEVICE(object);
  238|  3.03k|	switch (prop_id) {
  239|      0|	case PROP_PHYSICAL_ID:
  ------------------
  |  Branch (239:2): [True: 0, False: 3.03k]
  ------------------
  240|      0|		fu_device_set_physical_id(self, g_value_get_string(value));
  241|      0|		break;
  242|      0|	case PROP_LOGICAL_ID:
  ------------------
  |  Branch (242:2): [True: 0, False: 3.03k]
  ------------------
  243|      0|		fu_device_set_logical_id(self, g_value_get_string(value));
  244|      0|		break;
  245|      0|	case PROP_BACKEND_ID:
  ------------------
  |  Branch (245:2): [True: 0, False: 3.03k]
  ------------------
  246|      0|		fu_device_set_backend_id(self, g_value_get_string(value));
  247|      0|		break;
  248|      0|	case PROP_EQUIVALENT_ID:
  ------------------
  |  Branch (248:2): [True: 0, False: 3.03k]
  ------------------
  249|      0|		fu_device_set_equivalent_id(self, g_value_get_string(value));
  250|      0|		break;
  251|      0|	case PROP_UPDATE_MESSAGE:
  ------------------
  |  Branch (251:2): [True: 0, False: 3.03k]
  ------------------
  252|      0|		fu_device_set_update_message(self, g_value_get_string(value));
  253|      0|		break;
  254|      0|	case PROP_UPDATE_IMAGE:
  ------------------
  |  Branch (254:2): [True: 0, False: 3.03k]
  ------------------
  255|      0|		fu_device_set_update_image(self, g_value_get_string(value));
  256|      0|		break;
  257|    758|	case PROP_CONTEXT:
  ------------------
  |  Branch (257:2): [True: 758, False: 2.27k]
  ------------------
  258|    758|		fu_device_set_context(self, g_value_get_object(value));
  259|    758|		break;
  260|    758|	case PROP_BACKEND:
  ------------------
  |  Branch (260:2): [True: 758, False: 2.27k]
  ------------------
  261|    758|		fu_device_set_backend(self, g_value_get_object(value));
  262|    758|		break;
  263|    758|	case PROP_PROXY:
  ------------------
  |  Branch (263:2): [True: 758, False: 2.27k]
  ------------------
  264|    758|		fu_device_set_proxy(self, g_value_get_object(value));
  265|    758|		break;
  266|    758|	case PROP_PARENT:
  ------------------
  |  Branch (266:2): [True: 758, False: 2.27k]
  ------------------
  267|    758|		fu_device_set_parent(self, g_value_get_object(value));
  268|    758|		break;
  269|      0|	case PROP_VID:
  ------------------
  |  Branch (269:2): [True: 0, False: 3.03k]
  ------------------
  270|      0|		fu_device_set_vid(self, g_value_get_uint(value));
  271|      0|		break;
  272|      0|	case PROP_PID:
  ------------------
  |  Branch (272:2): [True: 0, False: 3.03k]
  ------------------
  273|      0|		fu_device_set_pid(self, g_value_get_uint(value));
  274|      0|		break;
  275|      0|	case PROP_REQUIRED_FREE:
  ------------------
  |  Branch (275:2): [True: 0, False: 3.03k]
  ------------------
  276|      0|		fu_device_set_required_free(self, g_value_get_uint64(value));
  277|      0|		break;
  278|      0|	default:
  ------------------
  |  Branch (278:2): [True: 0, False: 3.03k]
  ------------------
  279|      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]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  280|      0|		break;
  281|  3.03k|	}
  282|  3.03k|}
fu-device.c:fu_device_init:
 8747|    758|{
 8748|    758|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  172|    758|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 8749|    758|	priv->order = G_MAXINT;
  ------------------
  |  |   34|    758|#define G_MAXINT	INT_MAX
  ------------------
 8750|    758|	priv->acquiesce_delay = 50; /* ms */
 8751|    758|	priv->private_flags = g_array_new(FALSE, FALSE, sizeof(GQuark));
  ------------------
  |  |  814|    758|#define	FALSE	(0)
  ------------------
              	priv->private_flags = g_array_new(FALSE, FALSE, sizeof(GQuark));
  ------------------
  |  |  814|    758|#define	FALSE	(0)
  ------------------
 8752|    758|	priv->proxy_gtype = G_TYPE_INVALID;
  ------------------
  |  |   55|    758|#define G_TYPE_INVALID			G_TYPE_MAKE_FUNDAMENTAL (0)
  |  |  ------------------
  |  |  |  |  221|    758|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|    758|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8753|    758|}
fu-device.c:fu_device_find_private_flag_quark:
  324|      1|{
  325|      1|	FuDeviceClassPrivate *cpriv = fu_device_get_class_private(klass);
  326|     35|	for (guint i = 0; i < cpriv->quarks_cnt; i++) {
  ------------------
  |  Branch (326:20): [True: 35, False: 0]
  ------------------
  327|     35|		if (flag_quark == cpriv->quarks[i])
  ------------------
  |  Branch (327:7): [True: 1, False: 34]
  ------------------
  328|      1|			return cpriv->quarks[i];
  329|     35|	}
  330|      0|	return 0;
  331|      1|}
fu-device.c:fu_device_ensure_exported_name:
 1821|    758|{
 1822|    758|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  172|    758|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 1823|    758|	FuDevice *parent = fu_device_get_parent_internal(self);
 1824|       |
 1825|    758|	if (fu_device_has_private_flag_quark(self, quarks[QUARK_PARENT_NAME_PREFIX]) &&
  ------------------
  |  Branch (1825:6): [True: 0, False: 758]
  ------------------
 1826|      0|	    priv->name != NULL && parent != NULL && fu_device_get_name(parent) != NULL) {
  ------------------
  |  |  177|      0|#define fu_device_get_name(d)		     fwupd_device_get_name(FWUPD_DEVICE(d))
  ------------------
  |  Branch (1826:6): [True: 0, False: 0]
  |  Branch (1826:28): [True: 0, False: 0]
  |  Branch (1826:46): [True: 0, False: 0]
  ------------------
 1827|      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)))
  |  |  ------------------
  ------------------
 1828|      0|		    g_strdup_printf("%s (%s)", fu_device_get_name(parent), priv->name);
  ------------------
  |  |  177|      0|#define fu_device_get_name(d)		     fwupd_device_get_name(FWUPD_DEVICE(d))
  ------------------
 1829|      0|		fwupd_device_set_name(FWUPD_DEVICE(self), name_parent);
 1830|    758|	} else {
 1831|    758|		fwupd_device_set_name(FWUPD_DEVICE(self), priv->name);
 1832|    758|	}
 1833|    758|}
fu-device.c:fu_device_get_class_private:
  176|     63|{
  177|     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)))
  ------------------
  178|     63|}
fu-device.c:fu_device_ensure_instance_hash:
 7601|  2.57k|{
 7602|  2.57k|	FuDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |  172|  2.57k|#define GET_PRIVATE(o) (fu_device_get_instance_private(o))
  ------------------
 7603|  2.57k|	if (priv->instance_hash != NULL)
  ------------------
  |  Branch (7603:6): [True: 1.89k, False: 676]
  ------------------
 7604|  1.89k|		return;
 7605|    676|	priv->instance_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
 7606|    676|}

fu_firmware_add_flag:
  108|   386k|{
  109|   386k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   386k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  110|   386k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   386k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   386k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   386k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   386k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   386k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   386k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   386k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   386k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 386k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   386k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   386k|   else                                         \
  |  |  |  |  |  | 1021|   386k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   386k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   386k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 386k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   386k|      { } \
  |  |  633|   386k|    else \
  |  |  634|   386k|      { \
  |  |  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|   386k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   386k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 386k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  111|   386k|	priv->flags |= flag;
  112|   386k|}
fu_firmware_has_flag:
  127|   506k|{
  128|   506k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   506k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  129|   506k|	g_return_val_if_fail(FU_IS_FIRMWARE(self), FALSE);
  ------------------
  |  |  643|   506k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   506k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   506k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   506k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   506k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   506k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   506k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   506k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 506k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   506k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   506k|   else                                         \
  |  |  |  |  |  | 1021|   506k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   506k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   506k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 506k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   506k|      { } \
  |  |  646|   506k|    else \
  |  |  647|   506k|      { \
  |  |  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|   506k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   506k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 506k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  130|   506k|	return (priv->flags & flag) > 0;
  131|   506k|}
fu_firmware_set_offset:
  396|   386k|{
  397|   386k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   386k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  398|   386k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   386k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   386k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   386k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   386k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   386k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   386k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   386k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   386k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 386k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   386k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   386k|   else                                         \
  |  |  |  |  |  | 1021|   386k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   386k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   386k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 386k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   386k|      { } \
  |  |  633|   386k|    else \
  |  |  634|   386k|      { \
  |  |  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|   386k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   386k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 386k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  399|   386k|	priv->offset = offset;
  400|   386k|}
fu_firmware_set_parent:
  449|   506k|{
  450|   506k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   506k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  451|   506k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   506k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   506k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   506k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   506k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   506k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   506k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   506k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   506k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 506k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   506k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   506k|   else                                         \
  |  |  |  |  |  | 1021|   506k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   506k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   506k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 506k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   506k|      { } \
  |  |  633|   506k|    else \
  |  |  634|   506k|      { \
  |  |  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|   506k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   506k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 506k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  452|       |
  453|   506k|	if (priv->parent != NULL)
  ------------------
  |  Branch (453:6): [True: 0, False: 506k]
  ------------------
  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|   506k|	if (parent != NULL)
  ------------------
  |  Branch (455:6): [True: 120k, False: 386k]
  ------------------
  456|   120k|		g_object_add_weak_pointer(G_OBJECT(parent), (gpointer *)&priv->parent);
  ------------------
  |  |   56|   120k|#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
  |  |  ------------------
  |  |  |  |  484|   120k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   120k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  457|   506k|	priv->parent = parent;
  458|   506k|}
fu_firmware_set_size:
  472|   295k|{
  473|   295k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   295k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  474|   295k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   295k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   295k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   295k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   295k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   295k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   295k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   295k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   295k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 295k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   295k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   295k|   else                                         \
  |  |  |  |  |  | 1021|   295k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   295k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   295k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 295k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   295k|      { } \
  |  |  633|   295k|    else \
  |  |  634|   295k|      { \
  |  |  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|   295k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   295k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 295k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  475|   295k|	priv->size = size;
  476|   295k|}
fu_firmware_get_size:
  494|   120k|{
  495|   120k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   120k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  496|   120k|	g_return_val_if_fail(FU_IS_FIRMWARE(self), G_MAXSIZE);
  ------------------
  |  |  643|   120k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   120k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   120k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   120k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   120k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   120k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   120k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   120k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 120k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   120k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   120k|   else                                         \
  |  |  |  |  |  | 1021|   120k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   120k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   120k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 120k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   120k|      { } \
  |  |  646|   120k|    else \
  |  |  647|   120k|      { \
  |  |  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|   120k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   120k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 120k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  497|   120k|	if (priv->size != 0)
  ------------------
  |  Branch (497:6): [True: 119k, False: 558]
  ------------------
  498|   119k|		return priv->size;
  499|    558|	if (priv->stream != NULL && priv->streamsz != 0)
  ------------------
  |  Branch (499:6): [True: 0, False: 558]
  |  Branch (499:30): [True: 0, False: 0]
  ------------------
  500|      0|		return priv->streamsz;
  501|    558|	if (priv->bytes != NULL)
  ------------------
  |  Branch (501:6): [True: 558, False: 0]
  ------------------
  502|    558|		return g_bytes_get_size(priv->bytes);
  503|      0|	return 0;
  504|    558|}
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|   221k|{
  555|   221k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   221k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  556|   221k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   221k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   221k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   221k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   221k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   221k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   221k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   221k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   221k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 221k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   221k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   221k|   else                                         \
  |  |  |  |  |  | 1021|   221k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   221k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   221k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 221k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   221k|      { } \
  |  |  633|   221k|    else \
  |  |  634|   221k|      { \
  |  |  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|   221k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   221k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 221k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  557|   221k|	priv->idx = idx;
  558|   221k|}
fu_firmware_set_bytes:
  589|   120k|{
  590|   120k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   120k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  591|   120k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   120k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   120k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   120k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   120k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   120k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   120k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   120k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   120k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 120k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   120k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   120k|   else                                         \
  |  |  |  |  |  | 1021|   120k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   120k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   120k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 120k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   120k|      { } \
  |  |  633|   120k|    else \
  |  |  634|   120k|      { \
  |  |  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|   120k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   120k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 120k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  592|   120k|	g_return_if_fail(bytes != NULL);
  ------------------
  |  |  630|   120k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   120k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   120k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   120k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   120k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   120k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   120k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   120k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 120k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   120k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   120k|   else                                         \
  |  |  |  |  |  | 1021|   120k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   120k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   120k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 120k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   120k|      { } \
  |  |  633|   120k|    else \
  |  |  634|   120k|      { \
  |  |  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|   120k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   120k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 120k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  593|   120k|	if (priv->bytes == bytes)
  ------------------
  |  Branch (593:6): [True: 0, False: 120k]
  ------------------
  594|      0|		return;
  595|   120k|	if (priv->bytes != NULL)
  ------------------
  |  Branch (595:6): [True: 0, False: 120k]
  ------------------
  596|      0|		g_bytes_unref(priv->bytes);
  597|   120k|	priv->bytes = g_bytes_ref(bytes);
  598|       |
  599|       |	/* the input stream is no longer valid */
  600|       |	g_clear_object(&priv->stream);
  ------------------
  |  |  683|   120k|#define g_clear_object(object_ptr) g_clear_pointer ((object_ptr), g_object_unref)
  |  |  ------------------
  |  |  |  |  120|   120k|  G_STMT_START                                           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|   120k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  121|   120k|  {                                                      \
  |  |  |  |  122|   120k|    G_STATIC_ASSERT (sizeof *(pp) == sizeof (gpointer)); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  758|   120k|#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
  |  |  |  |  ------------------
  |  |  |  |  123|   120k|    glib_typeof ((pp)) _pp = (pp);                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   120k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  124|   120k|    glib_typeof (*(pp)) _ptr = *_pp;                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   120k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  125|   120k|    *_pp = NULL;                                         \
  |  |  |  |  126|   120k|    if (_ptr)                                            \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (126:9): [True: 0, False: 120k]
  |  |  |  |  ------------------
  |  |  |  |  127|   120k|      (destroy) (_ptr);                                  \
  |  |  |  |  128|   120k|  }                                                      \
  |  |  |  |  129|   120k|  G_STMT_END                                             \
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|   120k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 120k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  130|   120k|  GLIB_AVAILABLE_MACRO_IN_2_34
  |  |  ------------------
  ------------------
  601|   120k|}
fu_firmware_parse_stream:
 1114|   386k|{
 1115|   386k|	FuFirmwareClass *klass = FU_FIRMWARE_GET_CLASS(self);
 1116|   386k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   386k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 1117|   386k|	gsize streamsz = 0;
 1118|   386k|	g_autoptr(FuInputStream) partial_stream = NULL;
  ------------------
  |  | 1162|   386k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   386k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1119|   386k|	g_autoptr(FuInputStream) seekable_stream = NULL;
  ------------------
  |  | 1162|   386k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   386k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1120|   386k|	g_autoptr(GBytes) blob = NULL;
  ------------------
  |  | 1162|   386k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   386k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1121|       |
 1122|   386k|	g_return_val_if_fail(FU_IS_FIRMWARE(self), FALSE);
  ------------------
  |  |  643|   386k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   386k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   386k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   386k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   386k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   386k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   386k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   386k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 386k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   386k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   386k|   else                                         \
  |  |  |  |  |  | 1021|   386k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   386k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   386k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 386k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   386k|      { } \
  |  |  646|   386k|    else \
  |  |  647|   386k|      { \
  |  |  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|   386k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   386k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 386k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1123|   386k|	g_return_val_if_fail(FU_IS_INPUT_STREAM(stream), FALSE);
  ------------------
  |  |  643|   386k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   386k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   386k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   386k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   386k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   386k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   386k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.70M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 386k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 386k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 386k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 386k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   386k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   386k|   else                                         \
  |  |  |  |  |  | 1021|   386k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   386k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   386k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 386k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   386k|      { } \
  |  |  646|   386k|    else \
  |  |  647|   386k|      { \
  |  |  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|   386k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   386k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 386k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1124|   386k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   386k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   386k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   386k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   386k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   386k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   386k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   386k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   772k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 386k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   386k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   386k|   else                                         \
  |  |  |  |  |  | 1021|   386k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   386k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   386k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 386k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   386k|      { } \
  |  |  646|   386k|    else \
  |  |  647|   386k|      { \
  |  |  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|   386k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   386k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 386k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1125|       |
 1126|       |	/* sanity check */
 1127|   386k|	if (fu_firmware_has_flag(self, FU_FIRMWARE_FLAG_DONE_PARSE)) {
  ------------------
  |  Branch (1127:6): [True: 0, False: 386k]
  ------------------
 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|   386k|	if (!G_IS_SEEKABLE(stream) || !g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   34|   772k|#define G_IS_SEEKABLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_SEEKABLE))
  |  |  ------------------
  |  |  |  |  497|   386k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2313|   386k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   386k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2314|   386k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  |  |  | 2315|   386k|  if (!__inst) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2315:7): [True: 0, False: 386k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2316|   386k|    __r = FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2317|   386k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2317:12): [True: 386k, False: 0]
  |  |  |  |  |  |  |  Branch (2317:31): [True: 0, False: 386k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2318|   386k|    __r = TRUE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2319|   386k|  else \
  |  |  |  |  |  | 2320|   386k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  |  |  | 2321|   386k|  __r; \
  |  |  |  |  |  | 2322|   386k|}))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (!G_IS_SEEKABLE(stream) || !g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   33|   386k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   386k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   386k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1136:6): [True: 0, False: 386k]
  |  Branch (1136:32): [True: 0, False: 386k]
  ------------------
 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|   386k|	} else {
 1142|   386k|		seekable_stream = g_object_ref(stream);
  ------------------
  |  |  523|   386k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
 1143|   386k|	}
 1144|       |
 1145|       |	/* check size */
 1146|   386k|	if (!fu_input_stream_size(seekable_stream, &streamsz, error))
  ------------------
  |  Branch (1146:6): [True: 0, False: 386k]
  ------------------
 1147|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1148|   386k|	if (streamsz <= offset) {
  ------------------
  |  Branch (1148:6): [True: 51, False: 386k]
  ------------------
 1149|     51|		g_set_error(error,
 1150|     51|			    FWUPD_ERROR,
  ------------------
  |  |   15|     51|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1151|     51|			    FWUPD_ERROR_NOT_SUPPORTED,
 1152|     51|			    "stream size 0x%x is smaller than offset 0x%x",
 1153|     51|			    (guint)streamsz,
 1154|     51|			    (guint)offset);
 1155|     51|		return FALSE;
  ------------------
  |  |  814|     51|#define	FALSE	(0)
  ------------------
 1156|     51|	}
 1157|       |
 1158|       |	/* optional */
 1159|   386k|	if (!fu_firmware_validate_for_offset(self, seekable_stream, offset, &offset, flags, error))
  ------------------
  |  Branch (1159:6): [True: 0, False: 386k]
  ------------------
 1160|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1161|   386k|	fu_firmware_set_offset(self, offset);
 1162|       |
 1163|       |	/* validate offset hasn't been corrupted */
 1164|   386k|	if (offset >= streamsz) {
  ------------------
  |  Branch (1164:6): [True: 0, False: 386k]
  ------------------
 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|   386k|	priv->streamsz = streamsz - offset;
 1176|   386k|	if (priv->streamsz == 0) {
  ------------------
  |  Branch (1176:6): [True: 0, False: 386k]
  ------------------
 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|   386k|	{
 1184|   386k|		FuFirmwareClassPrivate *cpriv =
 1185|   386k|		    fu_firmware_get_class_private(FU_FIRMWARE_GET_CLASS(self));
 1186|   386k|		if (cpriv->size_max > 0 && priv->streamsz > cpriv->size_max) {
  ------------------
  |  Branch (1186:7): [True: 386k, False: 0]
  |  Branch (1186:30): [True: 0, False: 386k]
  ------------------
 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|   386k|#ifndef SUPPORTED_BUILD
 1200|       |		/* we want all firmware subclasses to set this now */
 1201|   386k|		if (G_OBJECT_TYPE(self) != FU_TYPE_FIRMWARE &&
  ------------------
  |  |  100|   386k|#define G_OBJECT_TYPE(object)       (G_TYPE_FROM_INSTANCE (object))
  |  |  ------------------
  |  |  |  |  602|   386k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|   386k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              		if (G_OBJECT_TYPE(self) != FU_TYPE_FIRMWARE &&
  ------------------
  |  |   16|   772k|#define FU_TYPE_FIRMWARE (fu_firmware_get_type())
  ------------------
  |  Branch (1201:7): [True: 386k, False: 0]
  ------------------
 1202|   386k|		    cpriv->size_max == FU_FIRMWARE_SIZE_MAX_DEFAULT) {
  ------------------
  |  |   11|   386k|#define FU_FIRMWARE_SIZE_MAX_DEFAULT ((100 * FU_MB) + 1)
  |  |  ------------------
  |  |  |  |   79|   386k|#define FU_MB (1ull << 20)
  |  |  ------------------
  ------------------
  |  Branch (1202:7): [True: 0, False: 386k]
  ------------------
 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|   386k|#endif
 1208|   386k|	}
 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|   386k|	if (klass->check_compatible != NULL)
  ------------------
  |  Branch (1215:6): [True: 0, False: 386k]
  ------------------
 1216|      0|		fu_firmware_add_flag(self, FU_FIRMWARE_FLAG_HAS_CHECK_COMPATIBLE);
 1217|       |
 1218|       |	/* save stream */
 1219|   386k|	if (offset == 0) {
  ------------------
  |  Branch (1219:6): [True: 1.98k, False: 384k]
  ------------------
 1220|  1.98k|		partial_stream = g_object_ref(seekable_stream);
  ------------------
  |  |  523|  1.98k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
 1221|   384k|	} else {
 1222|   384k|		partial_stream =
 1223|   384k|		    fu_partial_input_stream_new(seekable_stream, offset, priv->streamsz, error);
 1224|   384k|		if (partial_stream == NULL) {
  ------------------
  |  Branch (1224:7): [True: 0, False: 384k]
  ------------------
 1225|      0|			g_prefix_error_literal(error, "failed to cut firmware: ");
  ------------------
  |  |   11|      0|#define g_prefix_error_literal	  g_prefix_error
  ------------------
 1226|      0|			return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1227|      0|		}
 1228|   384k|	}
 1229|       |
 1230|       |	/* cache */
 1231|   386k|	if (flags & FU_FIRMWARE_PARSE_FLAG_CACHE_BLOB) {
  ------------------
  |  Branch (1231:6): [True: 120k, False: 265k]
  ------------------
 1232|   120k|		if (blob == NULL) {
  ------------------
  |  Branch (1232:7): [True: 120k, False: 0]
  ------------------
 1233|   120k|			blob = fu_input_stream_read_bytes(partial_stream,
 1234|   120k|							  0x0,
 1235|   120k|							  priv->streamsz,
 1236|   120k|							  NULL,
 1237|   120k|							  error);
 1238|   120k|			if (blob == NULL)
  ------------------
  |  Branch (1238:8): [True: 0, False: 120k]
  ------------------
 1239|      0|				return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1240|   120k|		}
 1241|   120k|		fu_firmware_set_bytes(self, blob);
 1242|   120k|	}
 1243|   386k|	if (flags & FU_FIRMWARE_PARSE_FLAG_CACHE_STREAM)
  ------------------
  |  Branch (1243:6): [True: 0, False: 386k]
  ------------------
 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|   386k|  GLIB_AVAILABLE_MACRO_IN_2_44
  ------------------
 1245|       |
 1246|       |	/* optional */
 1247|   386k|	if (klass->tokenize != NULL) {
  ------------------
  |  Branch (1247:6): [True: 0, False: 386k]
  ------------------
 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|   386k|	if (klass->parse_full != NULL)
  ------------------
  |  Branch (1253:6): [True: 0, False: 386k]
  ------------------
 1254|      0|		return klass->parse_full(self, seekable_stream, offset, flags, error);
 1255|   386k|	if (klass->parse != NULL)
  ------------------
  |  Branch (1255:6): [True: 386k, False: 0]
  ------------------
 1256|   386k|		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|   386k|{
 1296|   386k|	g_autoptr(FuInputStream) stream = NULL;
  ------------------
  |  | 1162|   386k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   386k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1297|       |
 1298|   386k|	g_return_val_if_fail(FU_IS_FIRMWARE(self), FALSE);
  ------------------
  |  |  643|   386k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   386k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   386k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   386k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   386k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   386k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   386k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   386k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 386k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   386k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   386k|   else                                         \
  |  |  |  |  |  | 1021|   386k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   386k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   386k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 386k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   386k|      { } \
  |  |  646|   386k|    else \
  |  |  647|   386k|      { \
  |  |  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|   386k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   386k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 386k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1299|   386k|	g_return_val_if_fail(fw != NULL, FALSE);
  ------------------
  |  |  643|   386k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   386k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   386k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   386k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   386k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   386k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   386k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   386k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 386k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   386k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   386k|   else                                         \
  |  |  |  |  |  | 1021|   386k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   386k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   386k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 386k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   386k|      { } \
  |  |  646|   386k|    else \
  |  |  647|   386k|      { \
  |  |  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|   386k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   386k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 386k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1300|   386k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   386k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   386k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   386k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   386k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   386k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   386k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   386k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   772k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 386k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   386k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   386k|   else                                         \
  |  |  |  |  |  | 1021|   386k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   386k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   386k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 386k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   386k|      { } \
  |  |  646|   386k|    else \
  |  |  647|   386k|      { \
  |  |  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|   386k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   386k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 386k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1301|       |
 1302|   386k|	stream = fu_memory_input_stream_new_from_bytes(fw);
 1303|   386k|	return fu_firmware_parse_stream(self, stream, offset, flags, error);
 1304|   386k|}
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|   120k|{
 1970|   120k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   120k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 1971|       |
 1972|   120k|	g_return_val_if_fail(FU_IS_FIRMWARE(self), FALSE);
  ------------------
  |  |  643|   120k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   120k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   120k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   120k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   120k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   120k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   120k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   120k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 120k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   120k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   120k|   else                                         \
  |  |  |  |  |  | 1021|   120k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   120k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   120k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 120k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   120k|      { } \
  |  |  646|   120k|    else \
  |  |  647|   120k|      { \
  |  |  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|   120k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   120k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 120k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1973|   120k|	g_return_val_if_fail(FU_IS_FIRMWARE(img), FALSE);
  ------------------
  |  |  643|   120k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   120k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   120k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   120k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   120k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   120k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   120k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   120k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 120k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   120k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   120k|   else                                         \
  |  |  |  |  |  | 1021|   120k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   120k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   120k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 120k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   120k|      { } \
  |  |  646|   120k|    else \
  |  |  647|   120k|      { \
  |  |  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|   120k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   120k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 120k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1974|   120k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   120k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   120k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   120k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   120k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   120k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   120k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   120k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   240k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 120k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   120k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   120k|   else                                         \
  |  |  |  |  |  | 1021|   120k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   120k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   120k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 120k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   120k|      { } \
  |  |  646|   120k|    else \
  |  |  647|   120k|      { \
  |  |  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|   120k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   120k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 120k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1975|       |
 1976|       |	/* check depth */
 1977|   120k|	if (priv->depth > FU_FIRMWARE_IMAGE_DEPTH_MAX) {
  ------------------
  |  |   83|   120k|#define FU_FIRMWARE_IMAGE_DEPTH_MAX 50
  ------------------
  |  Branch (1977:6): [True: 0, False: 120k]
  ------------------
 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|   120k|	if (!fu_firmware_check_image_gtype(self, G_OBJECT_TYPE(img), error))
  ------------------
  |  |  100|   120k|#define G_OBJECT_TYPE(object)       (G_TYPE_FROM_INSTANCE (object))
  |  |  ------------------
  |  |  |  |  602|   120k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|   120k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1987:6): [True: 0, False: 120k]
  ------------------
 1988|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1989|       |
 1990|       |	/* dedupe */
 1991|   120k|	if (priv->flags & FU_FIRMWARE_FLAG_DEDUPE_ID) {
  ------------------
  |  Branch (1991:6): [True: 0, False: 120k]
  ------------------
 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|   120k|	if (priv->flags & FU_FIRMWARE_FLAG_DEDUPE_IDX) {
  ------------------
  |  Branch (2000:6): [True: 0, False: 120k]
  ------------------
 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|   120k|	{
 2012|   120k|		FuFirmwareClassPrivate *cpriv =
 2013|   120k|		    fu_firmware_get_class_private(FU_FIRMWARE_GET_CLASS(self));
 2014|   120k|		if (cpriv->images_max > 0 && priv->images->len >= cpriv->images_max) {
  ------------------
  |  Branch (2014:7): [True: 0, False: 120k]
  |  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|   120k|	}
 2023|       |
 2024|   120k|	g_ptr_array_add(priv->images, g_object_ref(img));
  ------------------
  |  |  523|   120k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
 2025|       |
 2026|       |	/* set the other way around */
 2027|   120k|	fu_firmware_set_parent(img, self);
 2028|   120k|	fu_firmware_set_depth(img, priv->depth + 1);
 2029|       |
 2030|       |	/* success */
 2031|   120k|	return TRUE;
  ------------------
  |  |  818|   120k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   120k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2032|   120k|}
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);
  ------------------
  |  |   11|      1|#define FU_FIRMWARE_SIZE_MAX_DEFAULT ((100 * FU_MB) + 1)
  |  |  ------------------
  |  |  |  |   79|      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,
  ------------------
  |  |   16|      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|   386k|{
 2761|   386k|	FuFirmware *self = FU_FIRMWARE(object);
 2762|   386k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   386k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 2763|   386k|	g_free(priv->version);
 2764|   386k|	g_free(priv->id);
 2765|   386k|	g_free(priv->filename);
 2766|   386k|	if (priv->bytes != NULL)
  ------------------
  |  Branch (2766:6): [True: 120k, False: 265k]
  ------------------
 2767|   120k|		g_bytes_unref(priv->bytes);
 2768|   386k|	if (priv->stream != NULL)
  ------------------
  |  Branch (2768:6): [True: 0, False: 386k]
  ------------------
 2769|      0|		g_object_unref(priv->stream);
 2770|   386k|	if (priv->chunks != NULL)
  ------------------
  |  Branch (2770:6): [True: 0, False: 386k]
  ------------------
 2771|      0|		g_ptr_array_unref(priv->chunks);
 2772|   386k|	if (priv->patches != NULL)
  ------------------
  |  Branch (2772:6): [True: 0, False: 386k]
  ------------------
 2773|      0|		g_ptr_array_unref(priv->patches);
 2774|   386k|	if (priv->magic != NULL)
  ------------------
  |  Branch (2774:6): [True: 0, False: 386k]
  ------------------
 2775|      0|		g_ptr_array_unref(priv->magic);
 2776|   386k|	if (priv->parent != NULL)
  ------------------
  |  Branch (2776:6): [True: 0, False: 386k]
  ------------------
 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|   386k|	g_ptr_array_unref(priv->images);
 2779|   386k|	G_OBJECT_CLASS(fu_firmware_parent_class)->finalize(object);
  ------------------
  |  |   63|   386k|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|   386k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|   386k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2780|   386k|}
fu-firmware.c:fu_firmware_set_property:
 2724|   386k|{
 2725|   386k|	FuFirmware *self = FU_FIRMWARE(object);
 2726|   386k|	switch (prop_id) {
 2727|   386k|	case PROP_PARENT:
  ------------------
  |  Branch (2727:2): [True: 386k, False: 0]
  ------------------
 2728|   386k|		fu_firmware_set_parent(self, g_value_get_object(value));
 2729|   386k|		break;
 2730|      0|	default:
  ------------------
  |  Branch (2730:2): [True: 0, False: 386k]
  ------------------
 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|   386k|	}
 2734|   386k|}
fu-firmware.c:fu_firmware_constructed:
 2745|   386k|{
 2746|   386k|	FuFirmware *self = FU_FIRMWARE(obj);
 2747|   386k|	FuFirmwareClass *klass = FU_FIRMWARE_GET_CLASS(self);
 2748|   386k|	if (klass->add_magic != NULL)
  ------------------
  |  Branch (2748:6): [True: 0, False: 386k]
  ------------------
 2749|      0|		klass->add_magic(self);
 2750|   386k|	if (G_TYPE_FROM_CLASS(klass) != FU_TYPE_FIRMWARE && klass->parse_full == NULL &&
  ------------------
  |  |  613|   386k|#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 &&
  ------------------
  |  |   16|   772k|#define FU_TYPE_FIRMWARE (fu_firmware_get_type())
  ------------------
  |  Branch (2750:6): [True: 386k, False: 0]
  |  Branch (2750:54): [True: 386k, False: 0]
  ------------------
 2751|   386k|	    klass->parse == NULL)
  ------------------
  |  Branch (2751:6): [True: 0, False: 386k]
  ------------------
 2752|      0|		fu_firmware_add_flag(self, FU_FIRMWARE_FLAG_IS_ABSTRACT);
 2753|       |
 2754|       |	/* chain up to parent */
 2755|   386k|	G_OBJECT_CLASS(fu_firmware_parent_class)->constructed(obj);
  ------------------
  |  |   63|   386k|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|   386k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|   386k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2756|   386k|}
fu-firmware.c:fu_firmware_init:
 2738|   386k|{
 2739|   386k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   386k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 2740|   386k|	priv->images = g_ptr_array_new_with_free_func((GDestroyNotify)g_object_unref);
 2741|   386k|}
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|   626k|{
   78|   626k|	return G_TYPE_CLASS_GET_PRIVATE(klass, FU_TYPE_FIRMWARE, FuFirmwareClassPrivate);
  ------------------
  |  |  660|   626k|#define G_TYPE_CLASS_GET_PRIVATE(klass, g_type, c_type)   ((c_type*) g_type_class_get_private ((GTypeClass*) (klass), (g_type)))
  ------------------
   79|   626k|}
fu-firmware.c:fu_firmware_validate_for_offset:
 1059|   386k|{
 1060|   386k|	FuFirmwareClass *klass = FU_FIRMWARE_GET_CLASS(self);
 1061|   386k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   386k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 1062|   386k|	gsize streamsz = 0;
 1063|       |
 1064|       |	/* not implemented */
 1065|   386k|	if (klass->validate == NULL)
  ------------------
  |  Branch (1065:6): [True: 386k, False: 0]
  ------------------
 1066|   386k|		return TRUE;
  ------------------
  |  |  818|   386k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   386k|#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) {
  ------------------
  |  |   80|      0|#define FU_FIRMWARE_SEARCH_MAGIC_BUFSZ_MAX (64 * FU_KB)
  |  |  ------------------
  |  |  |  |   70|      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|   120k|{
 1924|   120k|	FuFirmwareClassPrivate *cpriv = fu_firmware_get_class_private(FU_FIRMWARE_GET_CLASS(self));
 1925|       |
 1926|       |	/* certain GTypes can opt-out of this check */
 1927|   120k|	if (fu_firmware_has_flag(self, FU_FIRMWARE_FLAG_NO_IMAGE_TYPE_CHECK))
  ------------------
  |  Branch (1927:6): [True: 0, False: 120k]
  ------------------
 1928|      0|		return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1929|       |
 1930|   120k|	if (cpriv->image_gtypes_cnt == 0) {
  ------------------
  |  Branch (1930:6): [True: 0, False: 120k]
  ------------------
 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|   120k|	for (guint i = 0; i < cpriv->image_gtypes_cnt; i++) {
  ------------------
  |  Branch (1938:20): [True: 120k, False: 0]
  ------------------
 1939|   120k|		if (cpriv->image_gtypes[i] == gtype)
  ------------------
  |  Branch (1939:7): [True: 120k, False: 0]
  ------------------
 1940|   120k|			return TRUE;
  ------------------
  |  |  818|   120k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   120k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1941|   120k|	}
 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|   120k|}
fu-firmware.c:fu_firmware_set_depth:
 1851|   120k|{
 1852|   120k|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|   120k|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 1853|   120k|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  630|   120k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   120k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   120k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   120k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   120k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   120k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   120k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   120k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 120k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   120k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   120k|   else                                         \
  |  |  |  |  |  | 1021|   120k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   120k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   120k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 120k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   120k|      { } \
  |  |  633|   120k|    else \
  |  |  634|   120k|      { \
  |  |  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|   120k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   120k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 120k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1854|   120k|	priv->depth = depth;
 1855|   120k|}

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

fu_input_stream_read_byte_array:
  277|   609k|{
  278|   609k|	guint8 tmp[0x8000]; /* nocheck:zero-init */
  279|   609k|	g_autoptr(GByteArray) buf = g_byte_array_new();
  ------------------
  |  | 1162|   609k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   609k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  280|   609k|	g_autoptr(GError) error_local = NULL;
  ------------------
  |  | 1162|   609k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   609k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  281|       |
  282|   609k|	g_return_val_if_fail(FU_IS_INPUT_STREAM(stream), NULL);
  ------------------
  |  |  643|   609k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   609k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   609k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   609k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   609k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   609k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   609k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  4.26M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 609k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 609k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 609k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 609k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   609k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   609k|   else                                         \
  |  |  |  |  |  | 1021|   609k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   609k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   609k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 609k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   609k|      { } \
  |  |  646|   609k|    else \
  |  |  647|   609k|      { \
  |  |  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|   609k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   609k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 609k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  283|   609k|	g_return_val_if_fail(progress == NULL || FU_IS_PROGRESS(progress), NULL);
  ------------------
  |  |  643|   609k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   609k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   609k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   609k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   609k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   609k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   609k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.21M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 609k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   609k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   609k|   else                                         \
  |  |  |  |  |  | 1021|   609k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   609k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   609k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 609k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   609k|      { } \
  |  |  646|   609k|    else \
  |  |  647|   609k|      { \
  |  |  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|   609k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   609k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 609k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  284|   609k|	g_return_val_if_fail(error == NULL || *error == NULL, NULL);
  ------------------
  |  |  643|   609k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   609k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   609k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   609k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   609k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   609k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   609k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.21M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 609k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   609k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   609k|   else                                         \
  |  |  |  |  |  | 1021|   609k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   609k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   609k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 609k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   609k|      { } \
  |  |  646|   609k|    else \
  |  |  647|   609k|      { \
  |  |  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|   609k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   609k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 609k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  285|       |
  286|       |	/* this is invalid */
  287|   609k|	if (count == 0) {
  ------------------
  |  Branch (287:6): [True: 0, False: 609k]
  ------------------
  288|      0|		g_set_error_literal(error,
  289|      0|				    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  290|      0|				    FWUPD_ERROR_NOT_SUPPORTED,
  291|      0|				    "read size must be non-zero");
  292|      0|		return NULL;
  293|      0|	}
  294|       |
  295|       |	/* seek back to start */
  296|   609k|	if (G_IS_SEEKABLE(stream) && g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   34|  1.21M|#define G_IS_SEEKABLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_SEEKABLE))
  |  |  ------------------
  |  |  |  |  497|   609k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2313|   609k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   609k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2314|   609k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  |  |  | 2315|   609k|  if (!__inst) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2315:7): [True: 0, False: 609k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2316|   609k|    __r = FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2317|   609k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2317:12): [True: 609k, False: 0]
  |  |  |  |  |  |  |  Branch (2317:31): [True: 0, False: 609k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2318|   609k|    __r = TRUE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2319|   609k|  else \
  |  |  |  |  |  | 2320|   609k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  |  |  | 2321|   609k|  __r; \
  |  |  |  |  |  | 2322|   609k|}))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (34:36): [True: 609k, False: 0]
  |  |  ------------------
  ------------------
              	if (G_IS_SEEKABLE(stream) && g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   33|   609k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   609k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   609k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (296:31): [True: 609k, False: 0]
  ------------------
  297|   609k|		if (!g_seekable_seek(G_SEEKABLE(stream), offset, G_SEEK_SET, NULL, error))
  ------------------
  |  |   33|   609k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   609k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   609k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (297:7): [True: 0, False: 609k]
  ------------------
  298|      0|			return NULL;
  299|   609k|	}
  300|       |
  301|       |	/* read from stream in 32kB chunks */
  302|   615k|	while (TRUE) {
  ------------------
  |  |  818|   615k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   615k|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (818:14): [True: 615k, Folded]
  |  |  ------------------
  ------------------
  303|   615k|		gssize sz;
  304|   615k|		sz = g_input_stream_read(G_INPUT_STREAM(stream), /* nocheck:blocked */
  ------------------
  |  |   33|   615k|#define G_INPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_INPUT_STREAM, GInputStream))
  |  |  ------------------
  |  |  |  |  484|   615k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   615k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  305|   615k|					 tmp,
  306|   615k|					 MIN(count - buf->len, sizeof(tmp)),
  ------------------
  |  |  825|   615k|#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (825:21): [True: 610k, False: 5.93k]
  |  |  ------------------
  ------------------
  307|   615k|					 NULL,
  308|   615k|					 &error_local);
  309|   615k|		if (sz == 0)
  ------------------
  |  Branch (309:7): [True: 539, False: 615k]
  ------------------
  310|    539|			break;
  311|   615k|		if (sz < 0) {
  ------------------
  |  Branch (311:7): [True: 0, False: 615k]
  ------------------
  312|      0|			g_set_error_literal(error,
  313|      0|					    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  314|      0|					    FWUPD_ERROR_INVALID_FILE,
  315|      0|					    error_local->message);
  316|      0|			return NULL;
  317|      0|		}
  318|       |
  319|       |		/* update progress */
  320|   615k|		if (progress != NULL)
  ------------------
  |  Branch (320:7): [True: 0, False: 615k]
  ------------------
  321|      0|			fu_progress_set_percentage_full(progress, buf->len, count);
  322|       |
  323|   615k|		g_byte_array_append(buf, tmp, sz);
  324|   615k|		if (buf->len >= count)
  ------------------
  |  Branch (324:7): [True: 608k, False: 6.46k]
  ------------------
  325|   608k|			break;
  326|   615k|	}
  327|       |
  328|       |	/* no data was read */
  329|   609k|	if (buf->len == 0) {
  ------------------
  |  Branch (329:6): [True: 1, False: 609k]
  ------------------
  330|      1|		g_set_error_literal(error,
  331|      1|				    FWUPD_ERROR,
  ------------------
  |  |   15|      1|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  332|      1|				    FWUPD_ERROR_INVALID_FILE,
  333|      1|				    "no data could be read");
  334|      1|		return NULL;
  335|      1|	}
  336|       |
  337|       |	/* success */
  338|   609k|	return g_steal_pointer(&buf);
  ------------------
  |  |  222|   609k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  339|   609k|}
fu_input_stream_read_bytes:
  363|   120k|{
  364|   120k|	g_autoptr(GByteArray) buf = NULL;
  ------------------
  |  | 1162|   120k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   120k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  365|   120k|	g_return_val_if_fail(FU_IS_INPUT_STREAM(stream), NULL);
  ------------------
  |  |  643|   120k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   120k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   120k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   120k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   120k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   120k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   120k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   841k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 120k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 120k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 120k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 120k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   120k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   120k|   else                                         \
  |  |  |  |  |  | 1021|   120k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   120k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   120k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 120k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   120k|      { } \
  |  |  646|   120k|    else \
  |  |  647|   120k|      { \
  |  |  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|   120k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   120k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 120k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  366|   120k|	g_return_val_if_fail(progress == NULL || FU_IS_PROGRESS(progress), NULL);
  ------------------
  |  |  643|   120k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   120k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   120k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   120k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   120k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   120k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   120k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   240k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 120k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   120k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   120k|   else                                         \
  |  |  |  |  |  | 1021|   120k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   120k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   120k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 120k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   120k|      { } \
  |  |  646|   120k|    else \
  |  |  647|   120k|      { \
  |  |  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|   120k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   120k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 120k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  367|   120k|	g_return_val_if_fail(error == NULL || *error == NULL, NULL);
  ------------------
  |  |  643|   120k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   120k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   120k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   120k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   120k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   120k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   120k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   240k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 120k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   120k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   120k|   else                                         \
  |  |  |  |  |  | 1021|   120k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   120k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   120k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 120k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   120k|      { } \
  |  |  646|   120k|    else \
  |  |  647|   120k|      { \
  |  |  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|   120k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   120k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 120k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  368|   120k|	buf = fu_input_stream_read_byte_array(stream, offset, count, progress, error);
  369|   120k|	if (buf == NULL)
  ------------------
  |  Branch (369:6): [True: 0, False: 120k]
  ------------------
  370|      0|		return NULL;
  371|   120k|	return g_byte_array_free_to_bytes(g_steal_pointer(&buf));
  ------------------
  |  |  222|   120k|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  372|   120k|}
fu_input_stream_size:
  424|   770k|{
  425|   770k|	g_return_val_if_fail(FU_IS_INPUT_STREAM(stream), FALSE);
  ------------------
  |  |  643|   770k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   770k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   770k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   770k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   770k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   770k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   770k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  5.39M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 770k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 770k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 770k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 770k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   770k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   770k|   else                                         \
  |  |  |  |  |  | 1021|   770k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   770k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   770k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 770k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   770k|      { } \
  |  |  646|   770k|    else \
  |  |  647|   770k|      { \
  |  |  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|   770k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   770k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 770k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  426|   770k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   770k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   770k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   770k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   770k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   770k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   770k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   770k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.54M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 770k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   770k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   770k|   else                                         \
  |  |  |  |  |  | 1021|   770k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   770k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   770k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 770k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   770k|      { } \
  |  |  646|   770k|    else \
  |  |  647|   770k|      { \
  |  |  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|   770k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   770k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 770k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  427|       |
  428|       |	/* streaming from unseekable stream */
  429|   770k|	if (!G_IS_SEEKABLE(stream) || !g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   34|  1.54M|#define G_IS_SEEKABLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_SEEKABLE))
  |  |  ------------------
  |  |  |  |  497|   770k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2313|   770k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   770k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2314|   770k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  |  |  | 2315|   770k|  if (!__inst) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2315:7): [True: 0, False: 770k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2316|   770k|    __r = FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2317|   770k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2317:12): [True: 770k, False: 0]
  |  |  |  |  |  |  |  Branch (2317:31): [True: 0, False: 770k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2318|   770k|    __r = TRUE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2319|   770k|  else \
  |  |  |  |  |  | 2320|   770k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  |  |  | 2321|   770k|  __r; \
  |  |  |  |  |  | 2322|   770k|}))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (!G_IS_SEEKABLE(stream) || !g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   33|   770k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   770k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   770k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (429:6): [True: 0, False: 770k]
  |  Branch (429:32): [True: 0, False: 770k]
  ------------------
  430|      0|		if (val != NULL)
  ------------------
  |  Branch (430:7): [True: 0, False: 0]
  ------------------
  431|      0|			*val = G_MAXSIZE;
  ------------------
  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
  432|      0|		return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  433|      0|	}
  434|       |
  435|   770k|	if (!g_seekable_seek(G_SEEKABLE(stream), 0, G_SEEK_END, NULL, error)) {
  ------------------
  |  |   33|   770k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   770k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   770k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (435:6): [True: 0, False: 770k]
  ------------------
  436|      0|		g_prefix_error_literal(error, "seek to end: ");
  ------------------
  |  |   11|      0|#define g_prefix_error_literal	  g_prefix_error
  ------------------
  437|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  438|      0|	}
  439|   770k|	if (val != NULL)
  ------------------
  |  Branch (439:6): [True: 770k, False: 0]
  ------------------
  440|   770k|		*val = g_seekable_tell(G_SEEKABLE(stream));
  ------------------
  |  |   33|   770k|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|   770k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|   770k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  441|       |
  442|       |	/* success */
  443|   770k|	return TRUE;
  ------------------
  |  |  818|   770k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   770k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  444|   770k|}

fu_memread_uint16:
  142|  42.7k|{
  143|  42.7k|	guint16 val_hw;
  144|  42.7k|	guint16 val_native;
  145|  42.7k|	memcpy(&val_hw, buf, sizeof(val_hw)); /* nocheck:blocked */
  146|  42.7k|	switch (endian) {
  147|      0|	case G_BIG_ENDIAN:
  ------------------
  |  |  185|      0|#define G_BIG_ENDIAN    4321
  ------------------
  |  Branch (147:2): [True: 0, False: 42.7k]
  ------------------
  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|  42.7k|	case G_LITTLE_ENDIAN:
  ------------------
  |  |  184|  42.7k|#define G_LITTLE_ENDIAN 1234
  ------------------
  |  Branch (150:2): [True: 42.7k, False: 0]
  ------------------
  151|  42.7k|		val_native = GUINT16_FROM_LE(val_hw); /* nocheck:blocked */
  ------------------
  |  |  386|  42.7k|#define GUINT16_FROM_LE(val)	(GUINT16_TO_LE (val))
  |  |  ------------------
  |  |  |  |  160|  42.7k|#define GUINT16_TO_LE(val)	((guint16) (val))
  |  |  ------------------
  ------------------
  152|  42.7k|		break;
  153|      0|	default:
  ------------------
  |  Branch (153:2): [True: 0, False: 42.7k]
  ------------------
  154|      0|		val_native = val_hw;
  155|      0|		break;
  156|  42.7k|	}
  157|  42.7k|	return val_native;
  158|  42.7k|}
fu_memchk_read:
  328|   473k|{
  329|   473k|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|   473k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   473k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   473k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   473k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   473k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   473k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   473k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.41M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 753, False: 472k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 472k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   473k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   473k|   else                                         \
  |  |  |  |  |  | 1021|   473k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   473k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   473k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 473k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   473k|      { } \
  |  |  646|   473k|    else \
  |  |  647|   473k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuCommon"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|   473k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   473k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 473k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  330|   473k|	if (n == 0)
  ------------------
  |  Branch (330:6): [True: 0, False: 473k]
  ------------------
  331|      0|		return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  332|   473k|	if (n > bufsz) {
  ------------------
  |  Branch (332:6): [True: 18, False: 473k]
  ------------------
  333|     18|		g_set_error(error,
  334|     18|			    FWUPD_ERROR,
  ------------------
  |  |   15|     18|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  335|     18|			    FWUPD_ERROR_READ,
  336|     18|			    "attempted to read 0x%02x bytes from buffer of 0x%02x",
  337|     18|			    (guint)n,
  338|     18|			    (guint)bufsz);
  339|     18|		return FALSE;
  ------------------
  |  |  814|     18|#define	FALSE	(0)
  ------------------
  340|     18|	}
  341|   473k|	if (fu_size_checked_add(offset, n) == G_MAXSIZE) {
  ------------------
  |  |   84|   473k|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|   473k|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
  |  Branch (341:6): [True: 0, False: 473k]
  ------------------
  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|   473k|	if (offset > bufsz || n + offset > bufsz) {
  ------------------
  |  Branch (350:6): [True: 0, False: 473k]
  |  Branch (350:24): [True: 78, False: 473k]
  ------------------
  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|   473k|	return TRUE;
  ------------------
  |  |  818|   473k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   473k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  361|   473k|}

fu_memory_input_stream_new_from_bytes:
   40|   386k|{
   41|   386k|	g_return_val_if_fail(bytes != NULL, NULL);
  ------------------
  |  |  643|   386k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   386k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   386k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   386k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   386k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   386k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   386k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   386k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 386k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   386k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   386k|   else                                         \
  |  |  |  |  |  | 1021|   386k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   386k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   386k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 386k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   386k|      { } \
  |  |  646|   386k|    else \
  |  |  647|   386k|      { \
  |  |  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|   386k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   386k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 386k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   42|   386k|	return g_memory_input_stream_new_from_bytes(bytes); /* nocheck:blocked */
   43|   386k|}

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

fu-udev-device.c:fu_udev_device_class_init:
 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);
  ------------------
  |  |   32|      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|    758|{
 2599|    758|	FuUdevDevice *self = FU_UDEV_DEVICE(object);
 2600|    758|	FuUdevDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   79|    758|#define GET_PRIVATE(o) (fu_udev_device_get_instance_private(o))
  ------------------
 2601|       |
 2602|    758|	g_hash_table_unref(priv->properties);
 2603|    758|	g_free(priv->subsystem);
 2604|    758|	g_free(priv->devtype);
 2605|    758|	g_free(priv->bind_id);
 2606|    758|	g_free(priv->driver);
 2607|    758|	g_free(priv->device_file);
 2608|    758|	if (priv->io_channel != NULL)
  ------------------
  |  Branch (2608:6): [True: 0, False: 758]
  ------------------
 2609|      0|		g_object_unref(priv->io_channel);
 2610|       |
 2611|    758|	G_OBJECT_CLASS(fu_udev_device_parent_class)->finalize(object);
  ------------------
  |  |   63|    758|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|    758|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|    758|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2612|    758|}
fu-udev-device.c:fu_udev_device_init:
 2628|    758|{
 2629|    758|	FuUdevDevicePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   79|    758|#define GET_PRIVATE(o) (fu_udev_device_get_instance_private(o))
  ------------------
 2630|    758|	priv->properties = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
 2631|    758|	fu_device_set_acquiesce_delay(FU_DEVICE(self), 2500);
 2632|    758|	fu_device_add_flag(FU_DEVICE(self), FWUPD_DEVICE_FLAG_CAN_EMULATION_TAG);
 2633|    758|	g_signal_connect(FU_DEVICE(self),
  ------------------
  |  |  501|    758|    g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
  ------------------
 2634|    758|			 "notify::vid",
 2635|    758|			 G_CALLBACK(fu_udev_device_vid_notify_cb),
 2636|    758|			 NULL);
 2637|       |	g_signal_connect(FU_DEVICE(self),
  ------------------
  |  |  501|    758|    g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
  ------------------
 2638|    758|			 "notify::pid",
 2639|    758|			 G_CALLBACK(fu_udev_device_pid_notify_cb),
 2640|    758|			 NULL);
 2641|    758|}
fu-udev-device.c:fu_udev_device_vid_notify_cb:
 2616|    628|{
 2617|    628|	fu_device_add_instance_u16(device, "VEN", fu_device_get_vid(device));
 2618|    628|}
fu-udev-device.c:fu_udev_device_pid_notify_cb:
 2622|    658|{
 2623|    658|	fu_device_add_instance_u16(device, "DEV", fu_device_get_pid(device));
 2624|    658|}

fu_usb_config_descriptor_new:
  164|   151k|{
  165|   151k|	return FU_USB_CONFIG_DESCRIPTOR(g_object_new(FU_TYPE_USB_CONFIG_DESCRIPTOR, NULL));
  ------------------
  |  |   11|   151k|#define FU_TYPE_USB_CONFIG_DESCRIPTOR (fu_usb_config_descriptor_get_type())
  ------------------
  166|   151k|}
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);
  ------------------
  |  |   79|      1|#define FU_MB (1ull << 20)
  ------------------
  148|      1|}
fu-usb-config-descriptor.c:fu_usb_config_descriptor_parse:
  120|   151k|{
  121|   151k|	FuUsbConfigDescriptor *self = FU_USB_CONFIG_DESCRIPTOR(firmware);
  122|   151k|	g_autoptr(FuUsbDescriptorHdr) st = NULL;
  ------------------
  |  | 1162|   151k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   151k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  123|       |
  124|       |	/* parse */
  125|   151k|	st = fu_usb_descriptor_hdr_parse_stream(stream, 0x0, error);
  126|   151k|	if (st == NULL)
  ------------------
  |  Branch (126:6): [True: 32, False: 151k]
  ------------------
  127|     32|		return FALSE;
  ------------------
  |  |  814|     32|#define	FALSE	(0)
  ------------------
  128|   151k|	self->configuration = fu_usb_descriptor_hdr_get_configuration(st);
  129|   151k|	self->configuration_value = fu_usb_descriptor_hdr_get_configuration_value(st);
  130|       |
  131|       |	/* success */
  132|   151k|	return TRUE;
  ------------------
  |  |  818|   151k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   151k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  133|   151k|}
fu-usb-config-descriptor.c:fu_usb_config_descriptor_init:
  152|   151k|{
  153|   151k|}
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);
  ------------------
  |  |   79|      1|#define FU_MB (1ull << 20)
  ------------------
   40|      1|}
fu-usb-descriptor.c:fu_usb_descriptor_parse:
   20|   221k|{
   21|   221k|	g_autoptr(FuUsbBaseHdr) st = NULL;
  ------------------
  |  | 1162|   221k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   221k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
   22|       |
   23|       |	/* parse */
   24|   221k|	st = fu_usb_base_hdr_parse_stream(stream, 0x0, error);
   25|   221k|	if (st == NULL)
  ------------------
  |  Branch (25:6): [True: 165, False: 221k]
  ------------------
   26|    165|		return FALSE;
  ------------------
  |  |  814|    165|#define	FALSE	(0)
  ------------------
   27|   221k|	fu_firmware_set_size(firmware, fu_usb_base_hdr_get_length(st));
   28|   221k|	fu_firmware_set_idx(firmware, fu_usb_base_hdr_get_descriptor_type(st));
   29|       |
   30|       |	/* success */
   31|   221k|	return TRUE;
  ------------------
  |  |  818|   221k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   221k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
   32|   221k|}
fu-usb-descriptor.c:fu_usb_descriptor_init:
   44|   386k|{
   45|   386k|}

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

fu_usb_endpoint_get_number:
  185|  10.3k|{
  186|  10.3k|	g_return_val_if_fail(FU_IS_USB_ENDPOINT(self), 0);
  ------------------
  |  |  643|  10.3k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  10.3k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  10.3k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 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: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 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: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  10.3k|      { } \
  |  |  646|  10.3k|    else \
  |  |  647|  10.3k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |  303|      0|#define G_LOG_DOMAIN    ((gchar*) 0)
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  10.3k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  10.3k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 10.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  187|  10.3k|	return (self->endpoint_descriptor.bEndpointAddress) & 0xf;
  188|  10.3k|}
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|  26.7k|{
  215|  26.7k|	FuUsbEndpoint *self = FU_USB_ENDPOINT(firmware);
  216|  26.7k|	g_autoptr(FuUsbEndpointHdr) st = NULL;
  ------------------
  |  | 1162|  26.7k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  26.7k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  217|       |
  218|       |	/* FuUsbDescriptor */
  219|  26.7k|	if (!FU_FIRMWARE_CLASS(fu_usb_endpoint_parent_class)->parse(firmware, stream, flags, error))
  ------------------
  |  Branch (219:6): [True: 0, False: 26.7k]
  ------------------
  220|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  221|       |
  222|       |	/* parse */
  223|  26.7k|	st = fu_usb_endpoint_hdr_parse_stream(stream, 0x0, error);
  224|  26.7k|	if (st == NULL)
  ------------------
  |  Branch (224:6): [True: 35, False: 26.6k]
  ------------------
  225|     35|		return FALSE;
  ------------------
  |  |  814|     35|#define	FALSE	(0)
  ------------------
  226|  26.6k|	self->endpoint_descriptor.bLength = fu_usb_endpoint_hdr_get_length(st);
  227|  26.6k|	self->endpoint_descriptor.bDescriptorType = fu_usb_endpoint_hdr_get_descriptor_type(st);
  228|  26.6k|	self->endpoint_descriptor.bEndpointAddress = fu_usb_endpoint_hdr_get_endpoint_address(st);
  229|  26.6k|	self->endpoint_descriptor.bmAttributes = fu_usb_endpoint_hdr_get_attributes(st);
  230|  26.6k|	self->endpoint_descriptor.wMaxPacketSize = fu_usb_endpoint_hdr_get_max_packet_size(st);
  231|  26.6k|	self->endpoint_descriptor.bInterval = fu_usb_endpoint_hdr_get_interval(st);
  232|  26.6k|	self->endpoint_descriptor.bRefresh = 0;
  233|  26.6k|	self->endpoint_descriptor.bSynchAddress = 0;
  234|       |
  235|       |	/* success */
  236|  26.6k|	return TRUE;
  ------------------
  |  |  818|  26.6k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  26.6k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  237|  26.7k|}
fu-usb-endpoint.c:fu_usb_endpoint_init:
  248|  26.7k|{
  249|  26.7k|}
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|  12.6k|{
   95|  12.6k|	g_return_if_fail(FU_IS_USB_HID_DESCRIPTOR(self));
  ------------------
  |  |  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, \
  |  |  ------------------
  |  |  |  |  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|  12.6k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  12.6k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 12.6k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   96|  12.6k|	self->iface_number = iface_number;
   97|  12.6k|}
fu-usb-hid-descriptor.c:fu_usb_hid_descriptor_class_init:
  192|      1|{
  193|      1|	GObjectClass *object_class = G_OBJECT_CLASS(klass);
  ------------------
  |  |   63|      1|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  194|      1|	FuFirmwareClass *firmware_class = FU_FIRMWARE_CLASS(klass);
  195|      1|	object_class->finalize = fu_usb_hid_descriptor_finalize;
  196|      1|	firmware_class->parse = fu_usb_hid_descriptor_parse;
  197|      1|	fu_firmware_set_size_max(firmware_class, 1 * FU_MB);
  ------------------
  |  |   79|      1|#define FU_MB (1ull << 20)
  ------------------
  198|      1|}
fu-usb-hid-descriptor.c:fu_usb_hid_descriptor_finalize:
  183|  13.3k|{
  184|  13.3k|	FuUsbHidDescriptor *self = FU_USB_HID_DESCRIPTOR(object);
  185|  13.3k|	if (self->blob != NULL)
  ------------------
  |  Branch (185:6): [True: 0, False: 13.3k]
  ------------------
  186|      0|		g_bytes_unref(self->blob);
  187|  13.3k|	G_OBJECT_CLASS(fu_usb_hid_descriptor_parent_class)->finalize(object);
  ------------------
  |  |   63|  13.3k|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|  13.3k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|  13.3k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|  13.3k|}
fu-usb-hid-descriptor.c:fu_usb_hid_descriptor_parse:
  155|  13.3k|{
  156|  13.3k|	FuUsbHidDescriptor *self = FU_USB_HID_DESCRIPTOR(firmware);
  157|  13.3k|	g_autoptr(FuUsbHidDescriptorHdr) st = NULL;
  ------------------
  |  | 1162|  13.3k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  13.3k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  158|       |
  159|       |	/* parse */
  160|  13.3k|	st = fu_usb_hid_descriptor_hdr_parse_stream(stream, 0x0, error);
  161|  13.3k|	if (st == NULL)
  ------------------
  |  Branch (161:6): [True: 11, False: 13.3k]
  ------------------
  162|     11|		return FALSE;
  ------------------
  |  |  814|     11|#define	FALSE	(0)
  ------------------
  163|  13.3k|	self->descriptor_length = fu_usb_hid_descriptor_hdr_get_class_descriptor_length(st);
  164|       |
  165|       |	/* success */
  166|  13.3k|	return TRUE;
  ------------------
  |  |  818|  13.3k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  13.3k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  167|  13.3k|}
fu-usb-hid-descriptor.c:fu_usb_hid_descriptor_init:
  178|  13.3k|{
  179|  13.3k|}
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|  12.6k|{
  271|  12.6k|	g_return_val_if_fail(FU_IS_USB_INTERFACE(self), 0);
  ------------------
  |  |  643|  12.6k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  12.6k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  12.6k|      { } \
  |  |  646|  12.6k|    else \
  |  |  647|  12.6k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |  303|      0|#define G_LOG_DOMAIN    ((gchar*) 0)
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  12.6k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  12.6k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 12.6k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  272|  12.6k|	return self->iface.bInterfaceNumber;
  273|  12.6k|}
fu_usb_interface_get_class:
  304|  74.3k|{
  305|  74.3k|	g_return_val_if_fail(FU_IS_USB_INTERFACE(self), 0);
  ------------------
  |  |  643|  74.3k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  74.3k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  74.3k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  74.3k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  74.3k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  74.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  74.3k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  74.3k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 74.3k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  74.3k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  74.3k|   else                                         \
  |  |  |  |  |  | 1021|  74.3k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  74.3k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  74.3k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 74.3k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  74.3k|      { } \
  |  |  646|  74.3k|    else \
  |  |  647|  74.3k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |  303|      0|#define G_LOG_DOMAIN    ((gchar*) 0)
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  74.3k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  74.3k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 74.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  306|  74.3k|	return self->iface.bInterfaceClass;
  307|  74.3k|}
fu_usb_interface_add_endpoint:
  382|  16.3k|{
  383|  16.3k|	g_return_if_fail(FU_IS_USB_INTERFACE(self));
  ------------------
  |  |  630|  16.3k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  16.3k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  16.3k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  16.3k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  16.3k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  16.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  16.3k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  16.3k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 16.3k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  16.3k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  16.3k|   else                                         \
  |  |  |  |  |  | 1021|  16.3k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  16.3k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  16.3k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 16.3k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  16.3k|      { } \
  |  |  633|  16.3k|    else \
  |  |  634|  16.3k|      { \
  |  |  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|  16.3k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  16.3k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 16.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  384|  16.3k|	g_return_if_fail(FU_IS_USB_ENDPOINT(endpoint));
  ------------------
  |  |  630|  16.3k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  16.3k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  16.3k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  16.3k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  16.3k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  16.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  16.3k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  16.3k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 16.3k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  16.3k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  16.3k|   else                                         \
  |  |  |  |  |  | 1021|  16.3k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  16.3k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  16.3k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 16.3k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  16.3k|      { } \
  |  |  633|  16.3k|    else \
  |  |  634|  16.3k|      { \
  |  |  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|  16.3k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  16.3k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 16.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  385|  16.3k|	g_ptr_array_add(self->endpoints, g_object_ref(endpoint));
  ------------------
  |  |  523|  16.3k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
  386|  16.3k|}
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);
  ------------------
  |  |   12|      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);
  ------------------
  |  |   79|      1|#define FU_MB (1ull << 20)
  ------------------
  466|      1|}
fu-usb-interface.c:fu_usb_interface_finalize:
  444|  74.5k|{
  445|  74.5k|	FuUsbInterface *self = FU_USB_INTERFACE(object);
  446|  74.5k|	g_ptr_array_unref(self->endpoints);
  447|  74.5k|	G_OBJECT_CLASS(fu_usb_interface_parent_class)->finalize(object);
  ------------------
  |  |   63|  74.5k|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|  74.5k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|  74.5k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  448|  74.5k|}
fu-usb-interface.c:fu_usb_interface_parse:
  393|  74.5k|{
  394|  74.5k|	FuUsbInterface *self = FU_USB_INTERFACE(firmware);
  395|  74.5k|	g_autoptr(FuUsbInterfaceHdr) st = NULL;
  ------------------
  |  | 1162|  74.5k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  74.5k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  396|       |
  397|       |	/* FuUsbDescriptor */
  398|  74.5k|	if (!FU_FIRMWARE_CLASS(fu_usb_interface_parent_class)
  ------------------
  |  Branch (398:6): [True: 0, False: 74.5k]
  ------------------
  399|  74.5k|		 ->parse(firmware, stream, flags, error))
  400|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  401|       |
  402|       |	/* parse as proper interface with endpoints */
  403|  74.5k|	st = fu_usb_interface_hdr_parse_stream(stream, 0x0, error);
  404|  74.5k|	if (st == NULL)
  ------------------
  |  Branch (404:6): [True: 48, False: 74.5k]
  ------------------
  405|     48|		return FALSE;
  ------------------
  |  |  814|     48|#define	FALSE	(0)
  ------------------
  406|  74.5k|	self->iface.bLength = fu_usb_interface_hdr_get_length(st);
  407|  74.5k|	self->iface.bDescriptorType = FU_USB_INTERFACE_HDR_DEFAULT_DESCRIPTOR_TYPE;
  ------------------
  |  |  447|  74.5k|#define FU_USB_INTERFACE_HDR_DEFAULT_DESCRIPTOR_TYPE FU_USB_DESCRIPTOR_KIND_INTERFACE
  ------------------
  408|  74.5k|	self->iface.bInterfaceNumber = fu_usb_interface_hdr_get_interface_number(st);
  409|  74.5k|	self->iface.bAlternateSetting = fu_usb_interface_hdr_get_alternate_setting(st);
  410|  74.5k|	self->iface.bNumEndpoints = fu_usb_interface_hdr_get_num_endpoints(st);
  411|  74.5k|	self->iface.bInterfaceClass = fu_usb_interface_hdr_get_interface_class(st);
  412|  74.5k|	self->iface.bInterfaceSubClass = fu_usb_interface_hdr_get_interface_sub_class(st);
  413|  74.5k|	self->iface.bInterfaceProtocol = fu_usb_interface_hdr_get_interface_protocol(st);
  414|  74.5k|	self->iface.iInterface = fu_usb_interface_hdr_get_interface(st);
  415|  74.5k|	fu_firmware_set_size(FU_FIRMWARE(self), self->iface.bLength);
  416|       |
  417|       |	/* extra data */
  418|  74.5k|	if (self->iface.bLength > st->buf->len) {
  ------------------
  |  Branch (418:6): [True: 1.98k, False: 72.5k]
  ------------------
  419|  1.98k|		g_autoptr(GByteArray) buf = NULL;
  ------------------
  |  | 1162|  1.98k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  1.98k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  420|  1.98k|		buf = fu_input_stream_read_byte_array(stream,
  421|  1.98k|						      st->buf->len,
  422|  1.98k|						      self->iface.bLength - st->buf->len,
  423|  1.98k|						      NULL,
  424|  1.98k|						      error);
  425|  1.98k|		if (buf == NULL)
  ------------------
  |  Branch (425:7): [True: 1, False: 1.98k]
  ------------------
  426|      1|			return FALSE;
  ------------------
  |  |  814|      1|#define	FALSE	(0)
  ------------------
  427|  1.98k|		if (!fu_usb_interface_parse_extra(self, buf->data, buf->len, error))
  ------------------
  |  Branch (427:7): [True: 163, False: 1.82k]
  ------------------
  428|    163|			return FALSE;
  ------------------
  |  |  814|    163|#define	FALSE	(0)
  ------------------
  429|  1.98k|	}
  430|       |
  431|       |	/* success */
  432|  74.3k|	return TRUE;
  ------------------
  |  |  818|  74.3k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  74.3k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  433|  74.5k|}
fu-usb-interface.c:fu_usb_interface_init:
  452|  74.5k|{
  453|  74.5k|	self->endpoints = g_ptr_array_new_with_free_func(g_object_unref);
  454|  74.5k|}
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.98k|{
   57|  1.98k|	gsize offset = 0;
   58|  1.98k|	g_autoptr(GBytes) bytes = g_bytes_new(buf, bufsz);
  ------------------
  |  | 1162|  1.98k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|  1.98k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
   59|       |
   60|       |	/* this is common to all descriptor types */
   61|   105k|	while (offset < bufsz) {
  ------------------
  |  Branch (61:9): [True: 104k, False: 1.82k]
  ------------------
   62|   104k|		g_autoptr(FuUsbDescriptor) img = g_object_new(FU_TYPE_USB_DESCRIPTOR, NULL);
  ------------------
  |  | 1162|   104k|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|   104k|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
              		g_autoptr(FuUsbDescriptor) img = g_object_new(FU_TYPE_USB_DESCRIPTOR, NULL);
  ------------------
  |  |   12|   104k|#define FU_TYPE_USB_DESCRIPTOR (fu_usb_descriptor_get_type())
  ------------------
   63|   104k|		if (!fu_firmware_parse_bytes(FU_FIRMWARE(img),
  ------------------
  |  Branch (63:7): [True: 163, False: 104k]
  ------------------
   64|   104k|					     bytes,
   65|   104k|					     offset,
   66|   104k|					     FU_FIRMWARE_PARSE_FLAG_CACHE_BLOB,
   67|   104k|					     error))
   68|    163|			return FALSE;
  ------------------
  |  |  814|    163|#define	FALSE	(0)
  ------------------
   69|   104k|		if (!fu_firmware_add_image(FU_FIRMWARE(self), FU_FIRMWARE(img), error))
  ------------------
  |  Branch (69:7): [True: 0, False: 104k]
  ------------------
   70|      0|			return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
   71|   104k|		if (!fu_size_checked_inc(&offset, fu_firmware_get_size(FU_FIRMWARE(img)), error))
  ------------------
  |  Branch (71:7): [True: 0, False: 104k]
  ------------------
   72|      0|			return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
   73|   104k|	}
   74|  1.82k|	return TRUE;
  ------------------
  |  |  818|  1.82k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.82k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
   75|  1.98k|}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

g_quark_init:
   59|      2|{
   60|      2|  g_assert (quark_seq_id == 0);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   61|      2|  quark_ht = g_hash_table_new (g_str_hash, g_str_equal);
   62|      2|  quarks = g_new (gchar*, QUARK_BLOCK_SIZE);
  ------------------
  |  |  290|      2|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|      2|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      2|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      2|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      2|	  gpointer __p;						\
  |  |  |  |  239|      2|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  240|      2|	    __p = g_##func (__n);				\
  |  |  |  |  241|      2|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      2|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      2|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      2|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 2]
  |  |  |  |  |  Branch (242:26): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      2|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      2|	  else							\
  |  |  |  |  245|      2|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      2|	  __p;							\
  |  |  |  |  247|      2|	}))
  |  |  ------------------
  ------------------
   63|       |  quarks[0] = NULL;
   64|      2|  quark_seq_id = 1;
   65|      2|}
g_quark_try_string:
  137|  3.03k|{
  138|  3.03k|  GQuark quark = 0;
  139|       |
  140|  3.03k|  if (string == NULL)
  ------------------
  |  Branch (140:7): [True: 0, False: 3.03k]
  ------------------
  141|      0|    return 0;
  142|       |
  143|  3.03k|  G_LOCK (quark_global);
  ------------------
  |  |  135|  3.03k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|  3.03k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  144|  3.03k|  quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string));
  ------------------
  |  |   99|  3.03k|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
  145|  3.03k|  G_UNLOCK (quark_global);
  ------------------
  |  |  136|  3.03k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|  3.03k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  146|       |
  147|  3.03k|  return quark;
  148|  3.03k|}
g_quark_from_string:
  228|  3.19k|{
  229|  3.19k|  return quark_from_string_locked (string, TRUE);
  ------------------
  |  |  818|  3.19k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  3.19k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  230|  3.19k|}
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|    166|{
  272|    166|  gchar* result = NULL;
  273|    166|  gchar **strings;
  274|    166|  guint seq_id;
  275|       |
  276|    166|  seq_id = (guint) g_atomic_int_get (&quark_seq_id);
  ------------------
  |  |   96|    166|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|    166|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|    166|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|    166|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|    166|    gint gaig_temp;                                                          \
  |  |   99|    166|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 166]
  |  |  ------------------
  |  |  100|    166|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|    166|    (gint) gaig_temp;                                                        \
  |  |  102|    166|  }))
  ------------------
  277|    166|  strings = g_atomic_pointer_get (&quarks);
  ------------------
  |  |  113|    166|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|    166|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|    166|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|    166|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|    166|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|    166|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|    166|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|    166|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|    166|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|    166|    gapg_temp_newval;                                                      \
  |  |  119|    166|  }))
  ------------------
  278|       |
  279|    166|  if (quark < seq_id)
  ------------------
  |  Branch (279:7): [True: 166, False: 0]
  ------------------
  280|    166|    result = strings[quark];
  281|       |
  282|    166|  return result;
  283|    166|}
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|    156|{
  373|    156|  return quark_intern_string_locked (string, FALSE);
  ------------------
  |  |  814|    156|#define	FALSE	(0)
  ------------------
  374|    156|}
gquark.c:quark_from_string_locked:
  199|  3.26k|{
  200|  3.26k|  GQuark quark = 0;
  201|       |
  202|  3.26k|  if (!string)
  ------------------
  |  Branch (202:7): [True: 0, False: 3.26k]
  ------------------
  203|      0|    return 0;
  204|       |
  205|  3.26k|  G_LOCK (quark_global);
  ------------------
  |  |  135|  3.26k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|  3.26k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  206|  3.26k|  quark = quark_from_string (string, duplicate);
  207|  3.26k|  G_UNLOCK (quark_global);
  ------------------
  |  |  136|  3.26k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|  3.26k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  208|       |
  209|  3.26k|  return quark;
  210|  3.26k|}
gquark.c:quark_from_string:
  182|  3.42k|{
  183|  3.42k|  GQuark quark = 0;
  184|       |
  185|  3.42k|  quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string));
  ------------------
  |  |   99|  3.42k|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
  186|       |
  187|  3.42k|  if (!quark)
  ------------------
  |  Branch (187:7): [True: 233, False: 3.19k]
  ------------------
  188|    233|    {
  189|    233|      quark = quark_new (duplicate ? quark_strdup (string) : (gchar *)string);
  ------------------
  |  Branch (189:26): [True: 4, False: 229]
  ------------------
  190|    233|      TRACE(GLIB_QUARK_NEW(string, quark));
  191|    233|    }
  192|       |
  193|  3.42k|  return quark;
  194|  3.42k|}
gquark.c:quark_new:
  288|    233|{
  289|    233|  GQuark quark;
  290|    233|  gchar **quarks_new;
  291|       |
  292|    233|  if (quark_seq_id % QUARK_BLOCK_SIZE == 0)
  ------------------
  |  |   45|    233|#define QUARK_BLOCK_SIZE         2048
  ------------------
  |  Branch (292:7): [True: 0, False: 233]
  ------------------
  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|    233|  quark = quark_seq_id;
  306|    233|  g_atomic_pointer_set (&quarks[quark], string);
  ------------------
  |  |  121|    233|  (G_GNUC_EXTENSION ({                                                      \
  |  |  ------------------
  |  |  |  |   54|    233|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  122|    233|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                \
  |  |  ------------------
  |  |  |  |  765|    233|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  123|    233|    glib_typeof ((atomic)) gaps_temp_atomic = (atomic);                     \
  |  |  ------------------
  |  |  |  |  238|    233|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  124|    233|    glib_typeof (*(atomic)) gaps_temp_newval = (newval);                    \
  |  |  ------------------
  |  |  |  |  238|    233|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  125|    233|    (void) (0 ? (gpointer) * (atomic) : NULL);                              \
  |  |  ------------------
  |  |  |  Branch (125:13): [Folded, False: 233]
  |  |  ------------------
  |  |  126|    233|    __atomic_store (gaps_temp_atomic, &gaps_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  127|    233|  }))
  ------------------
  307|    233|  g_hash_table_insert (quark_ht, string, GUINT_TO_POINTER (quark));
  ------------------
  |  |  102|    233|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
  308|    233|  g_atomic_int_inc (&quark_seq_id);
  ------------------
  |  |  148|    233|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|    233|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|    233|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|    233|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|    233|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 233]
  |  |  ------------------
  |  |  151|    233|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|    233|  }))
  ------------------
  309|       |
  310|    233|  return quark;
  311|    233|}
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|    161|{
  317|    161|  const gchar *result;
  318|    161|  GQuark quark;
  319|       |
  320|    161|  if (!string)
  ------------------
  |  Branch (320:7): [True: 0, False: 161]
  ------------------
  321|      0|    return NULL;
  322|       |
  323|    161|  G_LOCK (quark_global);
  ------------------
  |  |  135|    161|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|    161|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  324|    161|  quark = quark_from_string (string, duplicate);
  325|    161|  result = quarks[quark];
  326|    161|  G_UNLOCK (quark_global);
  ------------------
  |  |  136|    161|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|    161|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  327|       |
  328|    161|  return result;
  329|    161|}

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

g_slice_alloc:
 1035|  3.99M|{
 1036|  3.99M|  ThreadMemory *tmem;
 1037|  3.99M|  gsize chunk_size;
 1038|  3.99M|  gpointer mem;
 1039|  3.99M|  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.99M|  tmem = thread_memory_from_self ();
 1048|       |
 1049|  3.99M|  chunk_size = P2ALIGN (mem_size);
  ------------------
  |  |  207|  3.99M|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  ------------------
 1050|  3.99M|  acat = allocator_categorize (chunk_size);
 1051|  3.99M|  if (G_LIKELY (acat == 1))     /* allocate through magazine layer */
  ------------------
  |  | 1024|  3.99M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  3.99M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.99M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.99M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.99M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 3.99M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.99M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.99M|   else                                         \
  |  |  |  | 1021|  3.99M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.99M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.99M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 3.99M, False: 0]
  |  |  ------------------
  ------------------
 1052|  3.99M|    {
 1053|  3.99M|      guint ix = SLAB_INDEX (allocator, chunk_size);
  ------------------
  |  |  199|  3.99M|#define SLAB_INDEX(al, asize)   ((asize) / P2ALIGNMENT - 1)                     /* asize must be P2ALIGNMENT aligned */
  |  |  ------------------
  |  |  |  |  190|  3.99M|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1054|  3.99M|      if (G_UNLIKELY (thread_memory_magazine1_is_empty (tmem, ix)))
  ------------------
  |  | 1025|  3.99M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.99M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.99M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.99M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.99M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 257k, False: 3.73M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.99M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.99M|   else                                         \
  |  |  |  | 1021|  3.99M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.99M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.99M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 257k, False: 3.73M]
  |  |  ------------------
  ------------------
 1055|   257k|        {
 1056|   257k|          thread_memory_swap_magazines (tmem, ix);
 1057|   257k|          if (G_UNLIKELY (thread_memory_magazine1_is_empty (tmem, ix)))
  ------------------
  |  | 1025|   257k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   257k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   257k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   257k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   257k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 61.0k, False: 196k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   257k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   257k|   else                                         \
  |  |  |  | 1021|   257k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   257k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   257k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 61.0k, False: 196k]
  |  |  ------------------
  ------------------
 1058|  61.0k|            thread_memory_magazine1_reload (tmem, ix);
 1059|   257k|        }
 1060|  3.99M|      mem = thread_memory_magazine1_alloc (tmem, ix);
 1061|  3.99M|    }
 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.99M|  if (G_UNLIKELY (allocator->config.debug_blocks))
  ------------------
  |  | 1025|  3.99M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.99M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.99M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.99M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.99M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 3.99M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.99M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.99M|   else                                         \
  |  |  |  | 1021|  3.99M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.99M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.99M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 3.99M]
  |  |  ------------------
  ------------------
 1071|      0|    smc_notify_alloc (mem, mem_size);
 1072|       |
 1073|  3.99M|  TRACE (GLIB_SLICE_ALLOC((void*)mem, mem_size));
 1074|       |
 1075|  3.99M|  return mem;
 1076|  3.99M|}
g_slice_alloc0:
 1094|  1.15M|{
 1095|  1.15M|  gpointer mem = g_slice_alloc (mem_size);
 1096|  1.15M|  if (mem)
  ------------------
  |  Branch (1096:7): [True: 1.15M, False: 0]
  ------------------
 1097|  1.15M|    memset (mem, 0, mem_size);
 1098|  1.15M|  return mem;
 1099|  1.15M|}
g_slice_free1:
 1146|  3.21M|{
 1147|  3.21M|  gsize chunk_size = P2ALIGN (mem_size);
  ------------------
  |  |  207|  3.21M|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  ------------------
 1148|  3.21M|  guint acat = allocator_categorize (chunk_size);
 1149|  3.21M|  if (G_UNLIKELY (!mem_block))
  ------------------
  |  | 1025|  3.21M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.21M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.21M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.21M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.21M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 3.21M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.21M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.21M|   else                                         \
  |  |  |  | 1021|  3.21M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.21M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.21M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 3.21M]
  |  |  ------------------
  ------------------
 1150|      0|    return;
 1151|  3.21M|  if (G_UNLIKELY (allocator->config.debug_blocks) &&
  ------------------
  |  | 1025|  6.43M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.21M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.21M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.21M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.21M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 3.21M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.21M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.21M|   else                                         \
  |  |  |  | 1021|  3.21M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.21M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.21M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 3.21M]
  |  |  ------------------
  ------------------
 1152|      0|      !smc_notify_free (mem_block, mem_size))
  ------------------
  |  Branch (1152:7): [True: 0, False: 0]
  ------------------
 1153|      0|    abort();
 1154|  3.21M|  if (G_LIKELY (acat == 1))             /* allocate through magazine layer */
  ------------------
  |  | 1024|  3.21M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  3.21M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.21M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.21M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.21M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 3.21M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.21M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.21M|   else                                         \
  |  |  |  | 1021|  3.21M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.21M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.21M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 3.21M, False: 0]
  |  |  ------------------
  ------------------
 1155|  3.21M|    {
 1156|  3.21M|      ThreadMemory *tmem = thread_memory_from_self();
 1157|  3.21M|      guint ix = SLAB_INDEX (allocator, chunk_size);
  ------------------
  |  |  199|  3.21M|#define SLAB_INDEX(al, asize)   ((asize) / P2ALIGNMENT - 1)                     /* asize must be P2ALIGNMENT aligned */
  |  |  ------------------
  |  |  |  |  190|  3.21M|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1158|  3.21M|      if (G_UNLIKELY (thread_memory_magazine2_is_full (tmem, ix)))
  ------------------
  |  | 1025|  3.21M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.21M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.21M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.21M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.21M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 102k, False: 3.11M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.21M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.21M|   else                                         \
  |  |  |  | 1021|  3.21M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.21M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.21M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 102k, False: 3.11M]
  |  |  ------------------
  ------------------
 1159|   102k|        {
 1160|   102k|          thread_memory_swap_magazines (tmem, ix);
 1161|   102k|          if (G_UNLIKELY (thread_memory_magazine2_is_full (tmem, ix)))
  ------------------
  |  | 1025|   102k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   102k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   102k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   102k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   102k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 61.0k, False: 41.3k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   102k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   102k|   else                                         \
  |  |  |  | 1021|   102k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   102k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   102k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 61.0k, False: 41.3k]
  |  |  ------------------
  ------------------
 1162|  61.0k|            thread_memory_magazine2_unload (tmem, ix);
 1163|   102k|        }
 1164|  3.21M|      if (G_UNLIKELY (g_mem_gc_friendly))
  ------------------
  |  | 1025|  3.21M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.21M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.21M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.21M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.21M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 3.21M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.21M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.21M|   else                                         \
  |  |  |  | 1021|  3.21M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.21M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.21M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 3.21M]
  |  |  ------------------
  ------------------
 1165|      0|        memset (mem_block, 0, chunk_size);
 1166|  3.21M|      thread_memory_magazine2_free (tmem, ix, mem_block);
 1167|  3.21M|    }
 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.21M|  TRACE (GLIB_SLICE_FREE((void*)mem_block, mem_size));
 1183|  3.21M|}
g_slice_free_chain_with_offset:
 1209|   772k|{
 1210|   772k|  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|   772k|  gsize chunk_size = P2ALIGN (mem_size);
  ------------------
  |  |  207|   772k|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  ------------------
 1227|   772k|  guint acat = allocator_categorize (chunk_size);
 1228|   772k|  if (G_LIKELY (acat == 1))             /* allocate through magazine layer */
  ------------------
  |  | 1024|   772k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|   772k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   772k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   772k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   772k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 772k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|   772k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   772k|   else                                         \
  |  |  |  | 1021|   772k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   772k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   772k|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 772k, False: 0]
  |  |  ------------------
  ------------------
 1229|   772k|    {
 1230|   772k|      ThreadMemory *tmem = thread_memory_from_self();
 1231|   772k|      guint ix = SLAB_INDEX (allocator, chunk_size);
  ------------------
  |  |  199|   772k|#define SLAB_INDEX(al, asize)   ((asize) / P2ALIGNMENT - 1)                     /* asize must be P2ALIGNMENT aligned */
  |  |  ------------------
  |  |  |  |  190|   772k|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1232|  1.54M|      while (slice)
  ------------------
  |  Branch (1232:14): [True: 776k, False: 772k]
  ------------------
 1233|   776k|        {
 1234|   776k|          guint8 *current = slice;
 1235|   776k|          slice = *(gpointer*) (current + next_offset);
 1236|   776k|          if (G_UNLIKELY (allocator->config.debug_blocks) &&
  ------------------
  |  | 1025|  1.55M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   776k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   776k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   776k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   776k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 776k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   776k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   776k|   else                                         \
  |  |  |  | 1021|   776k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   776k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   776k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 776k]
  |  |  ------------------
  ------------------
 1237|      0|              !smc_notify_free (current, mem_size))
  ------------------
  |  Branch (1237:15): [True: 0, False: 0]
  ------------------
 1238|      0|            abort();
 1239|   776k|          if (G_UNLIKELY (thread_memory_magazine2_is_full (tmem, ix)))
  ------------------
  |  | 1025|   776k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   776k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   776k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   776k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   776k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 776k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   776k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   776k|   else                                         \
  |  |  |  | 1021|   776k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   776k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   776k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 776k]
  |  |  ------------------
  ------------------
 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|   776k|          if (G_UNLIKELY (g_mem_gc_friendly))
  ------------------
  |  | 1025|   776k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   776k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   776k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   776k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   776k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 776k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   776k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   776k|   else                                         \
  |  |  |  | 1021|   776k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   776k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   776k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 776k]
  |  |  ------------------
  ------------------
 1246|      0|            memset (current, 0, chunk_size);
 1247|   776k|          thread_memory_magazine2_free (tmem, ix, current);
 1248|   776k|        }
 1249|   772k|    }
 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|   772k|}
gslice.c:allocator_get_magazine_threshold:
  615|  4.10M|{
  616|       |  /* the magazine size calculated here has a lower bound of MIN_MAGAZINE_SIZE,
  617|       |   * which is required by the implementation. also, for moderately sized chunks
  618|       |   * (say >= 64 bytes), magazine sizes shouldn't be much smaller then the number
  619|       |   * of chunks available per page/2 to avoid excessive traffic in the magazine
  620|       |   * cache for small to medium sized structures.
  621|       |   * the upper bound of the magazine size is effectively provided by
  622|       |   * MAX_MAGAZINE_SIZE. for larger chunks, this number is scaled down so that
  623|       |   * the content of a single magazine doesn't exceed ca. 16KB.
  624|       |   */
  625|  4.10M|  gsize chunk_size = SLAB_CHUNK_SIZE (allocator, ix);
  ------------------
  |  |  200|  4.10M|#define SLAB_CHUNK_SIZE(al, ix) (((ix) + 1) * P2ALIGNMENT)
  |  |  ------------------
  |  |  |  |  190|  4.10M|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
  626|  4.10M|  guint threshold = MAX (MIN_MAGAZINE_SIZE, allocator->max_page_size / MAX (5 * chunk_size, 5 * 32));
  ------------------
  |  |  822|  8.21M|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 759, False: 4.10M]
  |  |  |  Branch (822:29): [True: 2.46M, False: 1.63M]
  |  |  |  Branch (822:42): [True: 2.46M, False: 1.63M]
  |  |  ------------------
  ------------------
  627|  4.10M|  guint contention_counter = allocator->contention_counters[ix];
  628|  4.10M|  if (G_UNLIKELY (contention_counter))  /* single CPU bias */
  ------------------
  |  | 1025|  4.10M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  4.10M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  4.10M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  4.10M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  4.10M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 4.10M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  4.10M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  4.10M|   else                                         \
  |  |  |  | 1021|  4.10M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  4.10M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  4.10M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 4.10M]
  |  |  ------------------
  ------------------
  629|      0|    {
  630|       |      /* adapt contention counter thresholds to chunk sizes */
  631|      0|      contention_counter = contention_counter * 64 / chunk_size;
  632|      0|      threshold = MAX (threshold, contention_counter);
  ------------------
  |  |  822|      0|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  633|      0|    }
  634|  4.10M|  return threshold;
  635|  4.10M|}
gslice.c:thread_memory_from_self:
  551|  7.98M|{
  552|  7.98M|  ThreadMemory *tmem = g_private_get (&private_thread_memory);
  553|  7.98M|  if (G_UNLIKELY (!tmem))
  ------------------
  |  | 1025|  7.98M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  7.98M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  7.98M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  7.98M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  7.98M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 2, False: 7.98M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  7.98M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  7.98M|   else                                         \
  |  |  |  | 1021|  7.98M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  7.98M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  7.98M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 2, False: 7.98M]
  |  |  ------------------
  ------------------
  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.98M|  return tmem;
  569|  7.98M|}
gslice.c:magazine_cache_push_magazine:
  734|  61.0k|{
  735|  61.0k|  ChunkLink *current = magazine_chain_prepare_fields (magazine_chunks);
  736|  61.0k|  ChunkLink *next, *prev;
  737|  61.0k|  g_mutex_lock (&allocator->magazine_mutex);
  738|       |  /* add magazine at head */
  739|  61.0k|  next = allocator->magazines[ix];
  740|  61.0k|  if (next)
  ------------------
  |  Branch (740:7): [True: 60.6k, False: 380]
  ------------------
  741|  60.6k|    prev = magazine_chain_prev (next);
  ------------------
  |  |  672|  60.6k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  742|    380|  else
  743|    380|    next = prev = current;
  744|  61.0k|  magazine_chain_next (prev) = current;
  ------------------
  |  |  675|  61.0k|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  745|  61.0k|  magazine_chain_prev (next) = current;
  ------------------
  |  |  672|  61.0k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  746|  61.0k|  magazine_chain_prev (current) = prev;
  ------------------
  |  |  672|  61.0k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  747|  61.0k|  magazine_chain_next (current) = next;
  ------------------
  |  |  675|  61.0k|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  748|  61.0k|  magazine_chain_count (current) = (gpointer) count;
  ------------------
  |  |  676|  61.0k|#define magazine_chain_count(mc)        ((mc)->next->next->next->data)
  ------------------
  749|       |  /* stamp magazine */
  750|  61.0k|  magazine_cache_update_stamp();
  751|  61.0k|  magazine_chain_stamp (current) = GUINT_TO_POINTER (allocator->last_stamp);
  ------------------
  |  |  673|  61.0k|#define magazine_chain_stamp(mc)        ((mc)->next->data)
  ------------------
                magazine_chain_stamp (current) = GUINT_TO_POINTER (allocator->last_stamp);
  ------------------
  |  |  102|  61.0k|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
  752|  61.0k|  allocator->magazines[ix] = current;
  753|       |  /* free old magazines beyond a certain threshold */
  754|  61.0k|  magazine_cache_trim (allocator, ix, allocator->last_stamp);
  755|       |  /* g_mutex_unlock (allocator->mutex); was done by magazine_cache_trim() */
  756|  61.0k|}
gslice.c:magazine_chain_prepare_fields:
  653|  61.0k|{
  654|  61.0k|  ChunkLink *chunk1;
  655|  61.0k|  ChunkLink *chunk2;
  656|  61.0k|  ChunkLink *chunk3;
  657|  61.0k|  ChunkLink *chunk4;
  658|       |  /* checked upon initialization: mem_assert (MIN_MAGAZINE_SIZE >= 4); */
  659|       |  /* ensure a magazine with at least 4 unused data pointers */
  660|  61.0k|  chunk1 = magazine_chain_pop_head (&magazine_chunks);
  661|  61.0k|  chunk2 = magazine_chain_pop_head (&magazine_chunks);
  662|  61.0k|  chunk3 = magazine_chain_pop_head (&magazine_chunks);
  663|  61.0k|  chunk4 = magazine_chain_pop_head (&magazine_chunks);
  664|  61.0k|  chunk4->next = magazine_chunks;
  665|  61.0k|  chunk3->next = chunk4;
  666|  61.0k|  chunk2->next = chunk3;
  667|  61.0k|  chunk1->next = chunk2;
  668|  61.0k|  return chunk1;
  669|  61.0k|}
gslice.c:magazine_cache_update_stamp:
  640|  61.0k|{
  641|  61.0k|  if (allocator->stamp_counter >= MAX_STAMP_COUNTER)
  ------------------
  |  |  196|  61.0k|#define MAX_STAMP_COUNTER       (7)                                             /* distributes the load of gettimeofday() */
  ------------------
  |  Branch (641:7): [True: 7.63k, False: 53.4k]
  ------------------
  642|  7.63k|    {
  643|  7.63k|      gint64 now_us = g_get_real_time ();
  644|  7.63k|      allocator->last_stamp = now_us / 1000; /* milli seconds */
  645|  7.63k|      allocator->stamp_counter = 0;
  646|  7.63k|    }
  647|  53.4k|  else
  648|  53.4k|    allocator->stamp_counter++;
  649|  61.0k|}
gslice.c:magazine_cache_trim:
  682|  61.0k|{
  683|       |  /* g_mutex_lock (allocator->mutex); done by caller */
  684|       |  /* trim magazine cache from tail */
  685|  61.0k|  ChunkLink *current = magazine_chain_prev (allocator->magazines[ix]);
  ------------------
  |  |  672|  61.0k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  686|  61.0k|  ChunkLink *trash = NULL;
  687|  61.0k|  while (!G_APPROX_VALUE(stamp, magazine_chain_uint_stamp (current),
  ------------------
  |  |  834|  61.0k|  (((a) > (b) ? (a) - (b) : (b) - (a)) < (epsilon))
  |  |  ------------------
  |  |  |  Branch (834:5): [True: 59.0k, False: 2.00k]
  |  |  ------------------
  ------------------
  |  Branch (687:10): [True: 0, False: 61.0k]
  ------------------
  688|  61.0k|                         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|  61.0k|  g_mutex_unlock (&allocator->magazine_mutex);
  710|       |  /* free trash */
  711|  61.0k|  if (trash)
  ------------------
  |  Branch (711:7): [True: 0, False: 61.0k]
  ------------------
  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|  61.0k|}
gslice.c:magazine_chain_pop_head:
  573|  4.24M|{
  574|       |  /* magazine chains are linked via ChunkLink->next.
  575|       |   * each ChunkLink->data of the toplevel chain may point to a subchain,
  576|       |   * linked via ChunkLink->next. ChunkLink->data of the subchains just
  577|       |   * contains uninitialized junk.
  578|       |   */
  579|  4.24M|  ChunkLink *chunk = (*magazine_chunks)->data;
  580|  4.24M|  if (G_UNLIKELY (chunk))
  ------------------
  |  | 1025|  4.24M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  4.24M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  4.24M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  4.24M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  4.24M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 4.24M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  4.24M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  4.24M|   else                                         \
  |  |  |  | 1021|  4.24M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  4.24M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  4.24M|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 4.24M]
  |  |  ------------------
  ------------------
  581|      0|    {
  582|       |      /* allocating from freed list */
  583|      0|      (*magazine_chunks)->data = chunk->next;
  584|      0|    }
  585|  4.24M|  else
  586|  4.24M|    {
  587|  4.24M|      chunk = *magazine_chunks;
  588|  4.24M|      *magazine_chunks = chunk->next;
  589|  4.24M|    }
  590|  4.24M|  return chunk;
  591|  4.24M|}
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.98M|{
  504|       |  /* speed up the likely path */
  505|  7.98M|  if (G_LIKELY (aligned_chunk_size && aligned_chunk_size <= allocator->max_slab_chunk_size_for_magazine_cache))
  ------------------
  |  | 1024|  7.98M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  7.98M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  7.98M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  7.98M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  23.9M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 7.98M, False: 0]
  |  |  |  |  |  Branch (1018:8): [True: 7.98M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  7.98M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  7.98M|   else                                         \
  |  |  |  | 1021|  7.98M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  7.98M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  7.98M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 7.98M, False: 0]
  |  |  ------------------
  ------------------
  506|  7.98M|    return 1;           /* use magazine cache */
  507|       |
  508|      0|  if (!allocator->config.always_malloc &&
  ------------------
  |  Branch (508:7): [True: 0, False: 0]
  ------------------
  509|      0|      aligned_chunk_size &&
  ------------------
  |  Branch (509:7): [True: 0, False: 0]
  ------------------
  510|      0|      aligned_chunk_size <= MAX_SLAB_CHUNK_SIZE (allocator))
  ------------------
  |  |  197|      0|#define MAX_SLAB_CHUNK_SIZE(al) (((al)->max_page_size - SLAB_INFO_SIZE) / 8)    /* we want at last 8 chunks per page, see [4] */
  |  |  ------------------
  |  |  |  |  193|      0|#define SLAB_INFO_SIZE          P2ALIGN (sizeof (SlabInfo) + NATIVE_MALLOC_PADDING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  207|      0|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (510:7): [True: 0, False: 0]
  ------------------
  511|      0|    {
  512|      0|      if (allocator->config.bypass_magazines)
  ------------------
  |  Branch (512:11): [True: 0, False: 0]
  ------------------
  513|      0|        return 2;       /* use slab allocator, see [2] */
  514|      0|      return 1;         /* use magazine cache */
  515|      0|    }
  516|      0|  return 0;             /* use malloc() */
  517|      0|}
gslice.c:thread_memory_magazine1_is_empty:
  870|  4.25M|{
  871|       |  return tmem->magazine1[ix].chunks == NULL;
  872|  4.25M|}
gslice.c:thread_memory_swap_magazines:
  861|   360k|{
  862|   360k|  Magazine xmag = tmem->magazine1[ix];
  863|   360k|  tmem->magazine1[ix] = tmem->magazine2[ix];
  864|   360k|  tmem->magazine2[ix] = xmag;
  865|   360k|}
gslice.c:thread_memory_magazine1_reload:
  841|  61.0k|{
  842|  61.0k|  Magazine *mag = &tmem->magazine1[ix];
  843|  61.0k|  mem_assert (mag->chunks == NULL); /* ensure that we may reset mag->count */
  ------------------
  |  |  214|  61.0k|#define mem_assert(cond)    do { if (G_LIKELY (cond)) ; else mem_error ("assertion failed: %s", #cond); } while (0)
  |  |  ------------------
  |  |  |  | 1024|  61.0k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  61.0k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  61.0k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  61.0k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  61.0k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 61.0k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  61.0k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  61.0k|   else                                         \
  |  |  |  |  |  | 1021|  61.0k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  61.0k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  61.0k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 61.0k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (214:114): [Folded, False: 61.0k]
  |  |  ------------------
  ------------------
  844|  61.0k|  mag->count = 0;
  845|  61.0k|  mag->chunks = magazine_cache_pop_magazine (ix, &mag->count);
  846|  61.0k|}
gslice.c:magazine_cache_pop_magazine:
  761|  61.0k|{
  762|  61.0k|  g_mutex_lock_a (&allocator->magazine_mutex, &allocator->contention_counters[ix]);
  763|  61.0k|  if (!allocator->magazines[ix])
  ------------------
  |  Branch (763:7): [True: 7.67k, False: 53.4k]
  ------------------
  764|  7.67k|    {
  765|  7.67k|      guint magazine_threshold = allocator_get_magazine_threshold (allocator, ix);
  766|  7.67k|      gsize i, chunk_size = SLAB_CHUNK_SIZE (allocator, ix);
  ------------------
  |  |  200|  7.67k|#define SLAB_CHUNK_SIZE(al, ix) (((ix) + 1) * P2ALIGNMENT)
  |  |  ------------------
  |  |  |  |  190|  7.67k|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
  767|  7.67k|      ChunkLink *chunk, *head;
  768|  7.67k|      g_mutex_unlock (&allocator->magazine_mutex);
  769|  7.67k|      g_mutex_lock (&allocator->slab_mutex);
  770|  7.67k|      head = slab_allocator_alloc_chunk (chunk_size);
  771|  7.67k|      head->data = NULL;
  772|  7.67k|      chunk = head;
  773|   112k|      for (i = 1; i < magazine_threshold; i++)
  ------------------
  |  Branch (773:19): [True: 104k, False: 7.67k]
  ------------------
  774|   104k|        {
  775|   104k|          chunk->next = slab_allocator_alloc_chunk (chunk_size);
  776|   104k|          chunk = chunk->next;
  777|   104k|          chunk->data = NULL;
  778|   104k|        }
  779|  7.67k|      chunk->next = NULL;
  780|  7.67k|      g_mutex_unlock (&allocator->slab_mutex);
  781|  7.67k|      *countp = i;
  782|  7.67k|      return head;
  783|  7.67k|    }
  784|  53.4k|  else
  785|  53.4k|    {
  786|  53.4k|      ChunkLink *current = allocator->magazines[ix];
  787|  53.4k|      ChunkLink *prev = magazine_chain_prev (current);
  ------------------
  |  |  672|  53.4k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  788|  53.4k|      ChunkLink *next = magazine_chain_next (current);
  ------------------
  |  |  675|  53.4k|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  789|       |      /* unlink */
  790|  53.4k|      magazine_chain_next (prev) = next;
  ------------------
  |  |  675|  53.4k|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  791|  53.4k|      magazine_chain_prev (next) = prev;
  ------------------
  |  |  672|  53.4k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  792|  53.4k|      allocator->magazines[ix] = next == current ? NULL : next;
  ------------------
  |  Branch (792:34): [True: 374, False: 53.0k]
  ------------------
  793|  53.4k|      g_mutex_unlock (&allocator->magazine_mutex);
  794|       |      /* clear special fields and hand out */
  795|  53.4k|      *countp = (gsize) magazine_chain_count (current);
  ------------------
  |  |  676|  53.4k|#define magazine_chain_count(mc)        ((mc)->next->next->next->data)
  ------------------
  796|  53.4k|      magazine_chain_prev (current) = NULL;
  ------------------
  |  |  672|  53.4k|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  797|  53.4k|      magazine_chain_next (current) = NULL;
  ------------------
  |  |  675|  53.4k|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  798|  53.4k|      magazine_chain_count (current) = NULL;
  ------------------
  |  |  676|  53.4k|#define magazine_chain_count(mc)        ((mc)->next->next->next->data)
  ------------------
  799|  53.4k|      magazine_chain_stamp (current) = NULL;
  ------------------
  |  |  673|  53.4k|#define magazine_chain_stamp(mc)        ((mc)->next->data)
  ------------------
  800|  53.4k|      return current;
  801|  53.4k|    }
  802|  61.0k|}
gslice.c:g_mutex_lock_a:
  522|  61.0k|{
  523|  61.0k|  gboolean contention = FALSE;
  ------------------
  |  |  814|  61.0k|#define	FALSE	(0)
  ------------------
  524|  61.0k|  if (!g_mutex_trylock (mutex))
  ------------------
  |  Branch (524:7): [True: 0, False: 61.0k]
  ------------------
  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|  61.0k|  if (contention)
  ------------------
  |  Branch (529:7): [True: 0, False: 61.0k]
  ------------------
  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|  61.0k|  else /* !contention */
  539|  61.0k|    {
  540|  61.0k|      allocator->mutex_counter--;
  541|  61.0k|      if (allocator->mutex_counter < -11)       /* moderately recover magazine sizes */
  ------------------
  |  Branch (541:11): [True: 5.09k, False: 55.9k]
  ------------------
  542|  5.09k|        {
  543|  5.09k|          allocator->mutex_counter = 0;
  544|  5.09k|          *contention_counter = MAX (*contention_counter, 1) - 1;
  ------------------
  |  |  822|  5.09k|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 0, False: 5.09k]
  |  |  ------------------
  ------------------
  545|  5.09k|        }
  546|  61.0k|    }
  547|  61.0k|}
gslice.c:thread_memory_magazine1_alloc:
  884|  3.99M|{
  885|  3.99M|  Magazine *mag = &tmem->magazine1[ix];
  886|  3.99M|  ChunkLink *chunk = magazine_chain_pop_head (&mag->chunks);
  887|  3.99M|  if (G_LIKELY (mag->count > 0))
  ------------------
  |  | 1024|  3.99M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  3.99M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.99M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.99M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.99M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 3.99M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.99M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.99M|   else                                         \
  |  |  |  | 1021|  3.99M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.99M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.99M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 3.99M, False: 0]
  |  |  ------------------
  ------------------
  888|  3.99M|    mag->count--;
  889|  3.99M|  return chunk;
  890|  3.99M|}
gslice.c:thread_memory_magazine2_is_full:
  877|  4.09M|{
  878|  4.09M|  return tmem->magazine2[ix].count >= allocator_get_magazine_threshold (allocator, ix);
  879|  4.09M|}
gslice.c:thread_memory_magazine2_unload:
  851|  61.0k|{
  852|  61.0k|  Magazine *mag = &tmem->magazine2[ix];
  853|  61.0k|  magazine_cache_push_magazine (ix, mag->chunks, mag->count);
  854|       |  mag->chunks = NULL;
  855|  61.0k|  mag->count = 0;
  856|  61.0k|}
gslice.c:thread_memory_magazine2_free:
  896|  3.99M|{
  897|  3.99M|  Magazine *mag = &tmem->magazine2[ix];
  898|  3.99M|  ChunkLink *chunk = mem;
  899|       |  chunk->data = NULL;
  900|  3.99M|  chunk->next = mag->chunks;
  901|  3.99M|  mag->chunks = chunk;
  902|  3.99M|  mag->count++;
  903|  3.99M|}
gslice.c:slab_allocator_alloc_chunk:
 1369|   112k|{
 1370|   112k|  ChunkLink *chunk;
 1371|   112k|  guint ix = SLAB_INDEX (allocator, chunk_size);
  ------------------
  |  |  199|   112k|#define SLAB_INDEX(al, asize)   ((asize) / P2ALIGNMENT - 1)                     /* asize must be P2ALIGNMENT aligned */
  |  |  ------------------
  |  |  |  |  190|   112k|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1372|       |  /* ensure non-empty slab */
 1373|   112k|  if (!allocator->slab_stack[ix] || !allocator->slab_stack[ix]->chunks)
  ------------------
  |  Branch (1373:7): [True: 18, False: 112k]
  |  Branch (1373:37): [True: 10.8k, False: 101k]
  ------------------
 1374|  10.8k|    allocator_add_slab (allocator, ix, chunk_size);
 1375|       |  /* allocate chunk */
 1376|   112k|  chunk = allocator->slab_stack[ix]->chunks;
 1377|   112k|  allocator->slab_stack[ix]->chunks = chunk->next;
 1378|   112k|  allocator->slab_stack[ix]->n_allocated++;
 1379|       |  /* rotate empty slabs */
 1380|   112k|  if (!allocator->slab_stack[ix]->chunks)
  ------------------
  |  Branch (1380:7): [True: 10.8k, False: 101k]
  ------------------
 1381|  10.8k|    allocator->slab_stack[ix] = allocator->slab_stack[ix]->next;
 1382|   112k|  return chunk;
 1383|   112k|}
gslice.c:allocator_add_slab:
 1316|  10.8k|{
 1317|  10.8k|  ChunkLink *chunk;
 1318|  10.8k|  SlabInfo *sinfo;
 1319|  10.8k|  gsize addr, padding, n_chunks, color = 0;
 1320|  10.8k|  gsize page_size;
 1321|  10.8k|  int errsv;
 1322|  10.8k|  gpointer aligned_memory;
 1323|  10.8k|  guint8 *mem;
 1324|  10.8k|  guint i;
 1325|       |
 1326|  10.8k|  page_size = allocator_aligned_page_size (allocator, SLAB_BPAGE_SIZE (allocator, chunk_size));
  ------------------
  |  |  201|  10.8k|#define SLAB_BPAGE_SIZE(al,csz) (8 * (csz) + SLAB_INFO_SIZE)
  |  |  ------------------
  |  |  |  |  193|  10.8k|#define SLAB_INFO_SIZE          P2ALIGN (sizeof (SlabInfo) + NATIVE_MALLOC_PADDING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  207|  10.8k|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1327|       |  /* allocate 1 page for the chunks and the slab */
 1328|  10.8k|  aligned_memory = allocator_memalign (page_size, page_size - NATIVE_MALLOC_PADDING);
  ------------------
  |  |  192|  10.8k|#define NATIVE_MALLOC_PADDING   P2ALIGNMENT                                     /* per-page padding left for native malloc(3) see [1] */
  |  |  ------------------
  |  |  |  |  190|  10.8k|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1329|  10.8k|  errsv = errno;
 1330|  10.8k|  mem = aligned_memory;
 1331|       |
 1332|  10.8k|  if (!mem)
  ------------------
  |  Branch (1332:7): [True: 0, False: 10.8k]
  ------------------
 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.8k|  addr = ((gsize) mem / page_size) * page_size;
 1340|       |  /* assert alignment */
 1341|  10.8k|  mem_assert (aligned_memory == (gpointer) addr);
  ------------------
  |  |  214|  10.8k|#define mem_assert(cond)    do { if (G_LIKELY (cond)) ; else mem_error ("assertion failed: %s", #cond); } while (0)
  |  |  ------------------
  |  |  |  | 1024|  10.8k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  10.8k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  10.8k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  10.8k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  10.8k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 10.8k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  10.8k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  10.8k|   else                                         \
  |  |  |  |  |  | 1021|  10.8k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  10.8k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  10.8k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 10.8k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (214:114): [Folded, False: 10.8k]
  |  |  ------------------
  ------------------
 1342|       |  /* basic slab info setup */
 1343|  10.8k|  sinfo = (SlabInfo*) (mem + page_size - SLAB_INFO_SIZE);
  ------------------
  |  |  193|  10.8k|#define SLAB_INFO_SIZE          P2ALIGN (sizeof (SlabInfo) + NATIVE_MALLOC_PADDING)
  |  |  ------------------
  |  |  |  |  207|  10.8k|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  |  |  ------------------
  ------------------
 1344|  10.8k|  sinfo->n_allocated = 0;
 1345|  10.8k|  sinfo->chunks = NULL;
 1346|       |  /* figure cache colorization */
 1347|  10.8k|  n_chunks = ((guint8*) sinfo - mem) / chunk_size;
 1348|  10.8k|  padding = ((guint8*) sinfo - mem) - n_chunks * chunk_size;
 1349|  10.8k|  if (padding)
  ------------------
  |  Branch (1349:7): [True: 10.8k, False: 8]
  ------------------
 1350|  10.8k|    {
 1351|  10.8k|      color = (allocator->color_accu * P2ALIGNMENT) % padding;
  ------------------
  |  |  190|  10.8k|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  ------------------
 1352|  10.8k|      allocator->color_accu += allocator->config.color_increment;
 1353|  10.8k|    }
 1354|       |  /* add chunks to free list */
 1355|  10.8k|  chunk = (ChunkLink*) (mem + color);
 1356|  10.8k|  sinfo->chunks = chunk;
 1357|   112k|  for (i = 0; i < n_chunks - 1; i++)
  ------------------
  |  Branch (1357:15): [True: 101k, False: 10.8k]
  ------------------
 1358|   101k|    {
 1359|   101k|      chunk->next = (ChunkLink*) ((guint8*) chunk + chunk_size);
 1360|   101k|      chunk = chunk->next;
 1361|   101k|    }
 1362|  10.8k|  chunk->next = NULL;   /* last chunk */
 1363|       |  /* add slab to slab ring */
 1364|  10.8k|  allocator_slab_stack_push (allocator, ix, sinfo);
 1365|  10.8k|}
gslice.c:allocator_aligned_page_size:
 1306|  10.8k|{
 1307|  10.8k|  gsize val = 1 << g_bit_storage (n_bytes - 1);
  ------------------
  |  |  370|  10.8k|#define g_bit_storage(number)        g_bit_storage_impl(number)
  ------------------
 1308|  10.8k|  val = MAX (val, allocator->min_page_size);
  ------------------
  |  |  822|  10.8k|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 10.8k, False: 0]
  |  |  ------------------
  ------------------
 1309|  10.8k|  return val;
 1310|  10.8k|}
gslice.c:allocator_memalign:
 1452|  10.8k|{
 1453|  10.8k|  gpointer aligned_memory = NULL;
 1454|  10.8k|  gint err = ENOMEM;
 1455|  10.8k|#if     HAVE_POSIX_MEMALIGN
 1456|  10.8k|  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.8k|  if (!aligned_memory)
  ------------------
  |  Branch (1490:7): [True: 0, False: 10.8k]
  ------------------
 1491|  10.8k|    errno = err;
 1492|  10.8k|  return aligned_memory;
 1493|  10.8k|}
gslice.c:allocator_slab_stack_push:
 1285|  10.8k|{
 1286|       |  /* insert slab at slab ring head */
 1287|  10.8k|  if (!allocator->slab_stack[ix])
  ------------------
  |  Branch (1287:7): [True: 18, False: 10.8k]
  ------------------
 1288|     18|    {
 1289|     18|      sinfo->next = sinfo;
 1290|     18|      sinfo->prev = sinfo;
 1291|     18|    }
 1292|  10.8k|  else
 1293|  10.8k|    {
 1294|  10.8k|      SlabInfo *next = allocator->slab_stack[ix], *prev = next->prev;
 1295|  10.8k|      next->prev = sinfo;
 1296|  10.8k|      prev->next = sinfo;
 1297|  10.8k|      sinfo->next = next;
 1298|  10.8k|      sinfo->prev = prev;
 1299|  10.8k|    }
 1300|  10.8k|  allocator->slab_stack[ix] = sinfo;
 1301|  10.8k|}

g_slist_free:
  148|   772k|{
  149|       |  g_slice_free_chain (GSList, list, next);
  ------------------
  |  |   84|   772k|#define g_slice_free_chain(type, mem_chain, next)               \
  |  |  ------------------
  |  |  |  |  874|   772k|#define G_STMT_START  do
  |  |  ------------------
  |  |   85|   772k|G_STMT_START {                                                  \
  |  |   86|   772k|  if (1) g_slice_free_chain_with_offset (sizeof (type),		\
  |  |  ------------------
  |  |  |  Branch (86:7): [True: 772k, Folded]
  |  |  ------------------
  |  |   87|   772k|                 (mem_chain), G_STRUCT_OFFSET (type, next)); 	\
  |  |  ------------------
  |  |  |  |  853|   772k|      ((glong) offsetof (struct_type, member))
  |  |  ------------------
  |  |   88|   772k|  else   (void) ((type*) 0 == (mem_chain));			\
  |  |   89|   772k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   772k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 772k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  150|   772k|}
g_slist_free_1:
  168|     37|{
  169|     37|  _g_slist_free1 (list);
  ------------------
  |  |  111|     37|#define _g_slist_free1(slist)   g_slice_free (GSList, slist)
  |  |  ------------------
  |  |  |  |   79|     37|#define g_slice_free(type, mem)                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|     37|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |   80|     37|G_STMT_START {                                                  \
  |  |  |  |   81|     37|  if (1) g_slice_free1 (sizeof (type), (mem));			\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (81:7): [True: 37, Folded]
  |  |  |  |  ------------------
  |  |  |  |   82|     37|  else   (void) ((type*) 0 == (mem)); 				\
  |  |  |  |   83|     37|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|     37|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 37]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  170|     37|}
g_slist_free_full:
  197|   386k|{
  198|       |  g_slist_foreach (list, (GFunc) free_func, NULL);
  199|   386k|  g_slist_free (list);
  200|   386k|}
g_slist_append:
  235|   386k|{
  236|   386k|  GSList *new_list;
  237|   386k|  GSList *last;
  238|       |
  239|   386k|  new_list = _g_slist_alloc ();
  ------------------
  |  |  110|   386k|#define _g_slist_alloc()        g_slice_new (GSList)
  |  |  ------------------
  |  |  |  |   46|   386k|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  |  |  ------------------
  ------------------
  240|   386k|  new_list->data = data;
  241|   386k|  new_list->next = NULL;
  242|       |
  243|   386k|  if (list)
  ------------------
  |  Branch (243:7): [True: 5, False: 386k]
  ------------------
  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|   386k|  else
  252|   386k|    return new_list;
  253|   386k|}
g_slist_prepend:
  277|   390k|{
  278|   390k|  GSList *new_list;
  279|       |
  280|   390k|  new_list = _g_slist_alloc ();
  ------------------
  |  |  110|   390k|#define _g_slist_alloc()        g_slice_new (GSList)
  |  |  ------------------
  |  |  |  |   46|   390k|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  |  |  ------------------
  ------------------
  281|   390k|  new_list->data = data;
  282|   390k|  new_list->next = list;
  283|       |
  284|   390k|  return new_list;
  285|   390k|}
g_slist_remove:
  453|     37|{
  454|     37|  return _g_slist_remove_data (list, data, FALSE);
  ------------------
  |  |  814|     37|#define	FALSE	(0)
  ------------------
  455|     37|}
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|   391k|{
  714|   402k|  while (list)
  ------------------
  |  Branch (714:10): [True: 12.1k, False: 390k]
  ------------------
  715|  12.1k|    {
  716|  12.1k|      if (list->data == data)
  ------------------
  |  Branch (716:11): [True: 758, False: 11.3k]
  ------------------
  717|    758|        break;
  718|  11.3k|      list = list->next;
  719|  11.3k|    }
  720|       |
  721|   391k|  return list;
  722|   391k|}
g_slist_last:
  829|      5|{
  830|      5|  if (list)
  ------------------
  |  Branch (830:7): [True: 5, False: 0]
  ------------------
  831|      5|    {
  832|     14|      while (list->next)
  ------------------
  |  Branch (832:14): [True: 9, False: 5]
  ------------------
  833|      9|        list = list->next;
  834|      5|    }
  835|       |
  836|      5|  return list;
  837|      5|}
g_slist_foreach:
  881|   386k|{
  882|   772k|  while (list)
  ------------------
  |  Branch (882:10): [True: 386k, False: 386k]
  ------------------
  883|   386k|    {
  884|   386k|      GSList *next = list->next;
  885|   386k|      (*func) (list->data, user_data);
  886|   386k|      list = next;
  887|   386k|    }
  888|   386k|}
g_slist_sort:
 1068|     22|{
 1069|       |  return g_slist_sort_real (list, (GFunc) compare_func, NULL);
 1070|     22|}
gslist.c:_g_slist_remove_data:
  417|     37|{
  418|     37|  GSList *tmp = NULL;
  419|     37|  GSList **previous_ptr = &list;
  420|       |
  421|     37|  while (*previous_ptr)
  ------------------
  |  Branch (421:10): [True: 37, False: 0]
  ------------------
  422|     37|    {
  423|     37|      tmp = *previous_ptr;
  424|     37|      if (tmp->data == data)
  ------------------
  |  Branch (424:11): [True: 37, False: 0]
  ------------------
  425|     37|        {
  426|     37|          *previous_ptr = tmp->next;
  427|     37|          g_slist_free_1 (tmp);
  428|     37|          if (!all)
  ------------------
  |  Branch (428:15): [True: 37, False: 0]
  ------------------
  429|     37|            break;
  430|     37|        }
  431|      0|      else
  432|      0|        {
  433|      0|          previous_ptr = &tmp->next;
  434|      0|        }
  435|     37|    }
  436|       |
  437|     37|  return list;
  438|     37|}
gslist.c:g_slist_sort_real:
 1025|     22|{
 1026|     22|  GSList *l1, *l2;
 1027|       |
 1028|     22|  if (!list)
  ------------------
  |  Branch (1028:7): [True: 22, False: 0]
  ------------------
 1029|     22|    return NULL;
 1030|      0|  if (!list->next)
  ------------------
  |  Branch (1030:7): [True: 0, False: 0]
  ------------------
 1031|      0|    return list;
 1032|       |
 1033|      0|  l1 = list;
 1034|      0|  l2 = list->next;
 1035|       |
 1036|      0|  while ((l2 = l2->next) != NULL)
  ------------------
  |  Branch (1036:10): [True: 0, False: 0]
  ------------------
 1037|      0|    {
 1038|      0|      if ((l2 = l2->next) == NULL)
  ------------------
  |  Branch (1038:11): [True: 0, False: 0]
  ------------------
 1039|      0|        break;
 1040|      0|      l1=l1->next;
 1041|      0|    }
 1042|      0|  l2 = l1->next;
 1043|      0|  l1->next = NULL;
 1044|       |
 1045|      0|  return g_slist_sort_merge (g_slist_sort_real (list, compare_func, user_data),
 1046|      0|                             g_slist_sort_real (l2, compare_func, user_data),
 1047|      0|                             compare_func,
 1048|      0|                             user_data);
 1049|      0|}

g_strdup:
  357|  2.67k|{
  358|  2.67k|  gchar *new_str;
  359|  2.67k|  gsize length;
  360|       |
  361|  2.67k|  if (str)
  ------------------
  |  Branch (361:7): [True: 2.59k, False: 85]
  ------------------
  362|  2.59k|    {
  363|  2.59k|      length = strlen (str) + 1;
  364|  2.59k|      new_str = g_new (char, length);
  ------------------
  |  |  290|  2.59k|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|  2.59k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  2.59k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|  2.59k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|  2.59k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|  2.59k|	  gpointer __p;						\
  |  |  |  |  239|  2.59k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 2.59k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  240|  2.59k|	    __p = g_##func (__n);				\
  |  |  |  |  241|  2.59k|	  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.59k|	  __p;							\
  |  |  |  |  247|  2.59k|	}))
  |  |  ------------------
  ------------------
  365|  2.59k|      memcpy (new_str, str, length);
  366|  2.59k|    }
  367|     85|  else
  368|     85|    new_str = NULL;
  369|       |
  370|  2.67k|  return new_str;
  371|  2.67k|}
g_memdup2:
  422|  2.70k|{
  423|  2.70k|  gpointer new_mem;
  424|       |
  425|  2.70k|  if (mem && byte_size != 0)
  ------------------
  |  Branch (425:7): [True: 2.70k, False: 0]
  |  Branch (425:14): [True: 2.69k, False: 1]
  ------------------
  426|  2.69k|    {
  427|  2.69k|      new_mem = g_malloc (byte_size);
  428|  2.69k|      memcpy (new_mem, mem, byte_size);
  429|  2.69k|    }
  430|      1|  else
  431|      1|    new_mem = NULL;
  432|       |
  433|  2.70k|  return new_mem;
  434|  2.70k|}
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|   220k|{
  552|   220k|  gchar *string = NULL;
  553|       |
  554|   220k|  g_vasprintf (&string, format, args);
  555|       |
  556|   220k|  return string;
  557|   220k|}
g_strdup_printf:
  579|  2.57k|{
  580|  2.57k|  gchar *buffer;
  581|  2.57k|  va_list args;
  582|       |
  583|  2.57k|  va_start (args, format);
  584|  2.57k|  buffer = g_strdup_vprintf (format, args);
  585|  2.57k|  va_end (args);
  586|       |
  587|  2.57k|  return buffer;
  588|  2.57k|}
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.51k|{
 3226|  1.51k|  if (!str1)
  ------------------
  |  Branch (3226:7): [True: 1.51k, False: 0]
  ------------------
 3227|  1.51k|    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|     46|{
  395|     46|  pthread_mutex_lock (g_rec_mutex_get_impl (mutex));
  396|     46|}
g_rec_mutex_unlock:
  413|     46|{
  414|     46|  pthread_mutex_unlock (rec_mutex->p);
  415|     46|}
g_rw_lock_writer_lock:
  551|    248|{
  552|    248|  int retval = pthread_rwlock_wrlock (g_rw_lock_get_impl (rw_lock));
  553|       |
  554|    248|  if (retval != 0)
  ------------------
  |  Branch (554:7): [True: 0, False: 248]
  ------------------
  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|    248|}
g_rw_lock_writer_unlock:
  593|    248|{
  594|    248|  pthread_rwlock_unlock (g_rw_lock_get_impl (rw_lock));
  595|    248|}
g_rw_lock_reader_lock:
  621|  4.19k|{
  622|  4.19k|  int retval = pthread_rwlock_rdlock (g_rw_lock_get_impl (rw_lock));
  623|       |
  624|  4.19k|  if (retval != 0)
  ------------------
  |  Branch (624:7): [True: 0, False: 4.19k]
  ------------------
  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.19k|}
g_rw_lock_reader_unlock:
  662|  4.19k|{
  663|  4.19k|  pthread_rwlock_unlock (g_rw_lock_get_impl (rw_lock));
  664|  4.19k|}
g_private_get:
 1080|  8.42M|{
 1081|       |  /* quote POSIX: No errors are returned from pthread_getspecific(). */
 1082|  8.42M|  return pthread_getspecific (*g_private_get_impl (key));
 1083|  8.42M|}
g_private_set:
 1099|   871k|{
 1100|   871k|  gint status;
 1101|       |
 1102|   871k|  if G_UNLIKELY ((status = pthread_setspecific (*g_private_get_impl (key), value)) != 0)
  ------------------
  |  | 1025|   871k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   871k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   871k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   871k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   871k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 871k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   871k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   871k|   else                                         \
  |  |  |  | 1021|   871k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   871k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   871k|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 871k]
  |  |  ------------------
  ------------------
 1103|      0|    g_thread_abort (status, "pthread_setspecific");
 1104|   871k|}
g_mutex_lock:
 1513|  4.52M|{
 1514|       |  /* 0 -> 1 and we're done.  Anything else, and we need to wait... */
 1515|  4.52M|  if G_UNLIKELY (g_atomic_int_add (&mutex->i[0], 1) != 0)
  ------------------
  |  | 1025|  4.52M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  4.52M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  4.52M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  4.52M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  13.5M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [Folded, False: 4.52M]
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 4.52M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  4.52M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  4.52M|   else                                         \
  |  |  |  | 1021|  4.52M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  4.52M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  4.52M|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 4.52M]
  |  |  ------------------
  ------------------
 1516|      0|    g_mutex_lock_slowpath (mutex);
 1517|  4.52M|}
g_mutex_unlock:
 1521|  4.58M|{
 1522|  4.58M|  guint prev;
 1523|       |
 1524|  4.58M|  prev = exchange_release (&mutex->i[0], 0);
  ------------------
  |  | 1425|  4.58M|  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.58M|  if G_UNLIKELY (prev != 1)
  ------------------
  |  | 1025|  4.58M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  4.58M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  4.58M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  4.58M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  4.58M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 4.58M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  4.58M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  4.58M|   else                                         \
  |  |  |  | 1021|  4.58M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  4.58M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  4.58M|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 4.58M]
  |  |  ------------------
  ------------------
 1528|      0|    g_mutex_unlock_slowpath (mutex, prev);
 1529|  4.58M|}
g_mutex_trylock:
 1533|  61.0k|{
 1534|  61.0k|  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|  61.0k|  atomic_compare_exchange_strong_explicit((atomic_uint *) (ptr), (old), (new), \
  |  | 1422|  61.0k|                                          __ATOMIC_ACQUIRE, __ATOMIC_RELAXED)
  ------------------
 1540|  61.0k|}
g_cond_broadcast:
 1588|     36|{
 1589|     36|  g_atomic_int_inc (&cond->i[0]);
  ------------------
  |  |  148|     36|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     36|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|     36|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|     36|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|     36|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 36]
  |  |  ------------------
  |  |  151|     36|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|     36|  }))
  ------------------
 1590|       |
 1591|     36|  syscall (__NR_futex, &cond->i[0], (gsize) FUTEX_WAKE_PRIVATE, (gsize) INT_MAX, NULL);
 1592|     36|}
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|     46|{
  306|     46|  pthread_mutex_t *impl = g_atomic_pointer_get (&rec_mutex->p);
  ------------------
  |  |  113|     46|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|     46|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|     46|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|     46|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|     46|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|     46|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|     46|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|     46|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|     46|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|     46|    gapg_temp_newval;                                                      \
  |  |  119|     46|  }))
  ------------------
  307|       |
  308|     46|  if G_UNLIKELY (impl == NULL)
  ------------------
  |  | 1025|     46|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 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: 2, False: 44]
  |  |  |  |  ------------------
  |  |  |  | 1019|     46|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     46|   else                                         \
  |  |  |  | 1021|     46|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     46|   _g_boolean_var_;                             \
  |  |  |  | 1023|     46|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 2, False: 44]
  |  |  ------------------
  ------------------
  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|     46|  return impl;
  317|     46|}
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.88k|{
  466|  8.88k|  pthread_rwlock_t *impl = g_atomic_pointer_get (&lock->p);
  ------------------
  |  |  113|  8.88k|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|  8.88k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|  8.88k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|  8.88k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|  8.88k|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|  8.88k|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|  8.88k|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|  8.88k|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|  8.88k|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|  8.88k|    gapg_temp_newval;                                                      \
  |  |  119|  8.88k|  }))
  ------------------
  467|       |
  468|  8.88k|  if G_UNLIKELY (impl == NULL)
  ------------------
  |  | 1025|  8.88k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  8.88k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  8.88k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  8.88k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  8.88k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 3, False: 8.87k]
  |  |  |  |  ------------------
  |  |  |  | 1019|  8.88k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  8.88k|   else                                         \
  |  |  |  | 1021|  8.88k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  8.88k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  8.88k|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 3, False: 8.87k]
  |  |  ------------------
  ------------------
  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.88k|  return impl;
  477|  8.88k|}
gthread-posix.c:g_private_get_impl:
 1050|  9.29M|{
 1051|  9.29M|  pthread_key_t *impl = g_atomic_pointer_get (&key->p);
  ------------------
  |  |  113|  9.29M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|  9.29M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|  9.29M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|  9.29M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|  9.29M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|  9.29M|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|  9.29M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|  9.29M|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|  9.29M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|  9.29M|    gapg_temp_newval;                                                      \
  |  |  119|  9.29M|  }))
  ------------------
 1052|       |
 1053|  9.29M|  if G_UNLIKELY (impl == NULL)
  ------------------
  |  | 1025|  9.29M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  9.29M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  9.29M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  9.29M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  9.29M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 4, False: 9.29M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  9.29M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  9.29M|   else                                         \
  |  |  |  | 1021|  9.29M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  9.29M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  9.29M|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 4, False: 9.29M]
  |  |  ------------------
  ------------------
 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|  9.29M|  return impl;
 1064|  9.29M|}
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|     36|{
  700|     36|  gsize *value_location = (gsize *) location;
  701|     36|  gboolean need_init = FALSE;
  ------------------
  |  |  814|     36|#define	FALSE	(0)
  ------------------
  702|     36|  g_mutex_lock (&g_once_mutex);
  703|     36|  if (g_atomic_pointer_get (value_location) == 0)
  ------------------
  |  |  113|     36|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|     36|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|     36|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|     36|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|     36|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|     36|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|     36|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|     36|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|     36|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|     36|    gapg_temp_newval;                                                      \
  |  |  119|     36|  }))
  ------------------
  |  Branch (703:7): [True: 36, False: 0]
  ------------------
  704|     36|    {
  705|     36|      if (!g_slist_find (g_once_init_list, (void*) value_location))
  ------------------
  |  Branch (705:11): [True: 36, False: 0]
  ------------------
  706|     36|        {
  707|     36|          need_init = TRUE;
  ------------------
  |  |  818|     36|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     36|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  708|     36|          g_once_init_list = g_slist_prepend (g_once_init_list, (void*) value_location);
  709|     36|        }
  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|     36|    }
  715|     36|  g_mutex_unlock (&g_once_mutex);
  716|     36|  return need_init;
  717|     36|}
g_once_init_leave:
  739|     36|{
  740|     36|  gsize *value_location = (gsize *) location;
  741|       |
  742|     36|  g_return_if_fail (g_atomic_pointer_get (value_location) == 0);
  ------------------
  |  |  630|     36|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     36|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     36|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     36|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     36| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     36|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     36|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     36|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 36, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     36|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     36|   else                                         \
  |  |  |  |  |  | 1021|     36|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     36|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     36|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 36, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     36|      { } \
  |  |  633|     36|    else \
  |  |  634|     36|      { \
  |  |  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|     36|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     36|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 36]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  743|     36|  g_return_if_fail (result != 0);
  ------------------
  |  |  630|     36|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     36|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     36|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     36|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     36| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     36|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     36|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     36|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 36, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     36|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     36|   else                                         \
  |  |  |  |  |  | 1021|     36|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     36|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     36|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 36, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     36|      { } \
  |  |  633|     36|    else \
  |  |  634|     36|      { \
  |  |  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|     36|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     36|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 36]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  744|       |
  745|     36|  g_atomic_pointer_set (value_location, result);
  ------------------
  |  |  121|     36|  (G_GNUC_EXTENSION ({                                                      \
  |  |  ------------------
  |  |  |  |   54|     36|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  122|     36|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                \
  |  |  ------------------
  |  |  |  |  765|     36|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  123|     36|    glib_typeof ((atomic)) gaps_temp_atomic = (atomic);                     \
  |  |  ------------------
  |  |  |  |  238|     36|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  124|     36|    glib_typeof (*(atomic)) gaps_temp_newval = (newval);                    \
  |  |  ------------------
  |  |  |  |  238|     36|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  125|     36|    (void) (0 ? (gpointer) * (atomic) : NULL);                              \
  |  |  ------------------
  |  |  |  Branch (125:13): [Folded, False: 36]
  |  |  ------------------
  |  |  126|     36|    __atomic_store (gaps_temp_atomic, &gaps_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  127|     36|  }))
  ------------------
  746|     36|  g_mutex_lock (&g_once_mutex);
  747|     36|  g_return_if_fail (g_once_init_list != NULL);
  ------------------
  |  |  630|     36|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     36|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     36|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     36|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     36| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     36|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     36|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     36|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 36, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     36|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     36|   else                                         \
  |  |  |  |  |  | 1021|     36|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     36|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     36|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 36, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     36|      { } \
  |  |  633|     36|    else \
  |  |  634|     36|      { \
  |  |  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|     36|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     36|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 36]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  748|     36|  g_once_init_list = g_slist_remove (g_once_init_list, (void*) value_location);
  749|     36|  g_cond_broadcast (&g_once_cond);
  750|     36|  g_mutex_unlock (&g_once_mutex);
  751|     36|}
g_thread_n_created:
  833|  1.51k|{
  834|  1.51k|  return g_atomic_int_get (&g_thread_n_created_counter);
  ------------------
  |  |   96|  1.51k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.51k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|  1.51k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.51k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  1.51k|    gint gaig_temp;                                                          \
  |  |   99|  1.51k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 1.51k]
  |  |  ------------------
  |  |  100|  1.51k|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  1.51k|    (gint) gaig_temp;                                                        \
  |  |  102|  1.51k|  }))
  ------------------
  835|  1.51k|}

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

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

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

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

g_closure_new_simple:
  194|  3.03k|{
  195|  3.03k|  GClosure *closure;
  196|  3.03k|  gint private_size;
  197|  3.03k|  gchar *allocated;
  198|       |
  199|  3.03k|  g_return_val_if_fail (sizeof_closure >= sizeof (GClosure), NULL);
  ------------------
  |  |  643|  3.03k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  3.03k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.03k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.03k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.03k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.03k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.03k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.03k|   else                                         \
  |  |  |  |  |  | 1021|  3.03k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.03k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.03k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.03k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  3.03k|      { } \
  |  |  646|  3.03k|    else \
  |  |  647|  3.03k|      { \
  |  |  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.03k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  200|       |
  201|  3.03k|  private_size = sizeof (GRealClosure) - sizeof (GClosure);
  202|       |
  203|  3.03k|#ifdef ENABLE_VALGRIND
  204|       |  /* See comments in gtype.c about what's going on here... */
  205|  3.03k|  if (RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|  3.03k|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|  3.03k|    __extension__                                                 \
  |  |  |  |  414|  3.03k|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|  3.03k|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|  3.03k|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|  3.03k|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|  3.03k|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|  3.03k|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|  3.03k|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|  3.03k|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|  3.03k|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|  3.03k|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|  3.03k|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|  3.03k|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|  3.03k|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|  3.03k|                     : "cc", "memory"                             \
  |  |  |  |  428|  3.03k|                    );                                            \
  |  |  |  |  429|  3.03k|    _zzq_result;                                                  \
  |  |  |  |  430|  3.03k|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 3.03k]
  |  |  ------------------
  |  | 6216|  3.03k|                                    VG_USERREQ__RUNNING_ON_VALGRIND,  \
  |  | 6217|  3.03k|                                    0, 0, 0, 0, 0)                    \
  ------------------
  206|      0|    {
  207|      0|      private_size += sizeof (gpointer);
  208|       |
  209|      0|      allocated = g_malloc0 (private_size + sizeof_closure + sizeof (gpointer));
  210|       |
  211|      0|      *(gpointer *) (allocated + private_size + sizeof_closure) = allocated + sizeof (gpointer);
  212|       |
  213|      0|      VALGRIND_MALLOCLIKE_BLOCK (allocated + private_size, sizeof_closure + sizeof (gpointer), 0, TRUE);
  ------------------
  |  | 6479|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MALLOCLIKE_BLOCK,       \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6480|      0|                                    addr, sizeB, rzB, is_zeroed, 0)
  ------------------
  214|      0|      VALGRIND_MALLOCLIKE_BLOCK (allocated + sizeof (gpointer), private_size - sizeof (gpointer), 0, TRUE);
  ------------------
  |  | 6479|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MALLOCLIKE_BLOCK,       \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6480|      0|                                    addr, sizeB, rzB, is_zeroed, 0)
  ------------------
  215|      0|    }
  216|  3.03k|  else
  217|  3.03k|#endif
  218|  3.03k|    allocated = g_malloc0 (private_size + sizeof_closure);
  219|       |
  220|  3.03k|  closure = (GClosure *) (allocated + private_size);
  221|       |
  222|  3.03k|  SET (closure, ref_count, 1);
  ------------------
  |  |  122|  3.03k|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|  3.03k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  3.03k|G_STMT_START {                                                                          \
  |  |  |  |  106|  3.03k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  3.03k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  3.03k|  do                                                    		                \
  |  |  |  |  109|  3.03k|    {                                                   		                \
  |  |  |  |  110|  3.03k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  3.03k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  3.03k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  3.03k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  3.03k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  3.03k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  3.03k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  3.03k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  3.03k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  3.03k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  3.03k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  3.03k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 3.03k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  3.03k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  3.03k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  3.03k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  3.03k|#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.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  3.03k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  3.03k|    }                                                   		                \
  |  |  |  |  118|  3.03k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 3.03k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  3.03k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  223|  3.03k|  SET (closure, floating, TRUE);
  ------------------
  |  |  122|  3.03k|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|  3.03k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  3.03k|G_STMT_START {                                                                          \
  |  |  |  |  106|  3.03k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  3.03k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  3.03k|  do                                                    		                \
  |  |  |  |  109|  3.03k|    {                                                   		                \
  |  |  |  |  110|  3.03k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  3.03k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  3.03k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  3.03k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  3.03k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  3.03k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  3.03k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  3.03k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  3.03k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  3.03k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  3.03k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  3.03k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 3.03k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  3.03k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  3.03k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  3.03k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  3.03k|#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.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  3.03k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  3.03k|    }                                                   		                \
  |  |  |  |  118|  3.03k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 3.03k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  3.03k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  224|  3.03k|  closure->data = data;
  225|       |
  226|  3.03k|  return closure;
  227|  3.03k|}
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.92k|{
  546|  9.92k|  guint new_ref_count;
  547|  9.92k|  g_return_val_if_fail (closure != NULL, NULL);
  ------------------
  |  |  643|  9.92k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  9.92k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  9.92k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  9.92k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  9.92k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  9.92k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  9.92k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  9.92k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9.92k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  9.92k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  9.92k|   else                                         \
  |  |  |  |  |  | 1021|  9.92k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  9.92k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  9.92k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 9.92k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  9.92k|      { } \
  |  |  646|  9.92k|    else \
  |  |  647|  9.92k|      { \
  |  |  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.92k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  9.92k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9.92k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  548|  9.92k|  g_return_val_if_fail (closure->ref_count > 0, NULL);
  ------------------
  |  |  643|  9.92k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  9.92k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  9.92k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  9.92k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  9.92k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  9.92k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  9.92k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  9.92k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9.92k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  9.92k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  9.92k|   else                                         \
  |  |  |  |  |  | 1021|  9.92k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  9.92k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  9.92k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 9.92k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  9.92k|      { } \
  |  |  646|  9.92k|    else \
  |  |  647|  9.92k|      { \
  |  |  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.92k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  9.92k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9.92k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  549|  9.92k|  g_return_val_if_fail (closure->ref_count < CLOSURE_MAX_REF_COUNT, NULL);
  ------------------
  |  |  643|  9.92k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  9.92k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  9.92k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  9.92k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  9.92k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  9.92k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  9.92k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  9.92k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9.92k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  9.92k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  9.92k|   else                                         \
  |  |  |  |  |  | 1021|  9.92k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  9.92k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  9.92k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 9.92k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  9.92k|      { } \
  |  |  646|  9.92k|    else \
  |  |  647|  9.92k|      { \
  |  |  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.92k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  9.92k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9.92k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  550|       |
  551|  9.92k|  INC_ASSIGN (closure, ref_count, &new_ref_count);
  ------------------
  |  |  124|  9.92k|#define INC_ASSIGN(_closure, _field, _newv)     CHANGE_FIELD (_closure, _field, +=,     1, TRUE,     (void), *(_newv) = )
  |  |  ------------------
  |  |  |  |  104|  9.92k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  9.92k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  9.92k|G_STMT_START {                                                                          \
  |  |  |  |  106|  9.92k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  9.92k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  9.92k|  do                                                    		                \
  |  |  |  |  109|  9.92k|    {                                                   		                \
  |  |  |  |  110|  9.92k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  9.92k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  9.92k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  9.92k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  9.92k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  9.92k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  9.92k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  9.92k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  9.92k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  9.92k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  9.92k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  9.92k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  9.92k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 9.92k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  9.92k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  9.92k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  9.92k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  9.92k|#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.92k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  9.92k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  9.92k|    }                                                   		                \
  |  |  |  |  118|  9.92k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 9.92k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  9.92k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  9.92k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 9.92k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  552|  9.92k|  g_return_val_if_fail (new_ref_count > 1, NULL);
  ------------------
  |  |  643|  9.92k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  9.92k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  9.92k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  9.92k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  9.92k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  9.92k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  9.92k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  9.92k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9.92k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  9.92k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  9.92k|   else                                         \
  |  |  |  |  |  | 1021|  9.92k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  9.92k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  9.92k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 9.92k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  9.92k|      { } \
  |  |  646|  9.92k|    else \
  |  |  647|  9.92k|      { \
  |  |  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.92k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  9.92k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9.92k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  553|       |
  554|  9.92k|  return closure;
  555|  9.92k|}
g_closure_invalidate:
  577|  3.03k|{
  578|  3.03k|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|  3.03k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.03k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.03k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.03k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.03k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.03k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.03k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.03k|   else                                         \
  |  |  |  |  |  | 1021|  3.03k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.03k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.03k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.03k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.03k|      { } \
  |  |  633|  3.03k|    else \
  |  |  634|  3.03k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  3.03k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  579|       |
  580|  3.03k|  if (!closure->is_invalid)
  ------------------
  |  Branch (580:7): [True: 3.03k, False: 0]
  ------------------
  581|  3.03k|    {
  582|  3.03k|      gboolean was_invalid;
  583|  3.03k|      g_closure_ref (closure);           /* preserve floating flag */
  584|  3.03k|      SWAP (closure, is_invalid, TRUE, &was_invalid);
  ------------------
  |  |  121|  3.03k|#define SWAP(_closure, _field, _value, _oldv)   CHANGE_FIELD (_closure, _field, =, _value, TRUE, *(_oldv) =,     (void) )
  |  |  ------------------
  |  |  |  |  104|  3.03k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  3.03k|G_STMT_START {                                                                          \
  |  |  |  |  106|  3.03k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  3.03k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  3.03k|  do                                                    		                \
  |  |  |  |  109|  3.03k|    {                                                   		                \
  |  |  |  |  110|  3.03k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  3.03k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  3.03k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  3.03k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  3.03k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  3.03k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  3.03k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  3.03k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  3.03k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  3.03k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  3.03k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  3.03k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 3.03k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  3.03k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  3.03k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  3.03k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  3.03k|#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.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  3.03k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  3.03k|    }                                                   		                \
  |  |  |  |  118|  3.03k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 3.03k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  3.03k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  585|       |      /* invalidate only once */
  586|  3.03k|      if (!was_invalid)
  ------------------
  |  Branch (586:11): [True: 3.03k, False: 0]
  ------------------
  587|  3.03k|        closure_invoke_notifiers (closure, INOTIFY);
  588|  3.03k|      g_closure_unref (closure);
  589|  3.03k|    }
  590|  3.03k|}
g_closure_unref:
  602|  12.9k|{
  603|  12.9k|  guint new_ref_count;
  604|       |
  605|  12.9k|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|  12.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  12.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  12.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  12.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  12.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  12.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  12.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  12.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 12.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  12.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  12.9k|   else                                         \
  |  |  |  |  |  | 1021|  12.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  12.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  12.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 12.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  12.9k|      { } \
  |  |  633|  12.9k|    else \
  |  |  634|  12.9k|      { \
  |  |  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.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  12.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 12.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  606|  12.9k|  g_return_if_fail (closure->ref_count > 0);
  ------------------
  |  |  630|  12.9k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  12.9k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  12.9k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  12.9k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  12.9k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  12.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  12.9k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  12.9k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 12.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  12.9k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  12.9k|   else                                         \
  |  |  |  |  |  | 1021|  12.9k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  12.9k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  12.9k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 12.9k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  12.9k|      { } \
  |  |  633|  12.9k|    else \
  |  |  634|  12.9k|      { \
  |  |  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.9k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  12.9k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 12.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  607|       |
  608|  12.9k|  if (closure->ref_count == 1)	/* last unref, invalidate first */
  ------------------
  |  Branch (608:7): [True: 3.03k, False: 9.92k]
  ------------------
  609|  3.03k|    g_closure_invalidate (closure);
  610|       |
  611|  12.9k|  DEC_ASSIGN (closure, ref_count, &new_ref_count);
  ------------------
  |  |  126|  12.9k|#define DEC_ASSIGN(_closure, _field, _newv)     CHANGE_FIELD (_closure, _field, -=,     1, TRUE,     (void), *(_newv) = )
  |  |  ------------------
  |  |  |  |  104|  12.9k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  12.9k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  12.9k|G_STMT_START {                                                                          \
  |  |  |  |  106|  12.9k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  12.9k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  12.9k|  do                                                    		                \
  |  |  |  |  109|  12.9k|    {                                                   		                \
  |  |  |  |  110|  12.9k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  12.9k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  12.9k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  12.9k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  12.9k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  12.9k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  12.9k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  12.9k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  12.9k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  12.9k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  12.9k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  12.9k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  12.9k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 12.9k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  12.9k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  12.9k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  12.9k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  12.9k|#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.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  12.9k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  12.9k|    }                                                   		                \
  |  |  |  |  118|  12.9k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 12.9k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  12.9k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  12.9k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 12.9k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  612|       |
  613|  12.9k|  if (new_ref_count == 0)
  ------------------
  |  Branch (613:7): [True: 3.03k, False: 9.92k]
  ------------------
  614|  3.03k|    {
  615|  3.03k|      closure_invoke_notifiers (closure, FNOTIFY);
  616|  3.03k|      g_free (closure->notifiers);
  617|       |
  618|  3.03k|#ifdef ENABLE_VALGRIND
  619|       |      /* See comments in gtype.c about what's going on here... */
  620|  3.03k|      if (RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|  3.03k|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|  3.03k|    __extension__                                                 \
  |  |  |  |  414|  3.03k|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|  3.03k|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|  3.03k|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|  3.03k|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|  3.03k|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|  3.03k|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|  3.03k|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|  3.03k|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|  3.03k|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|  3.03k|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|  3.03k|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|  3.03k|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|  3.03k|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|  3.03k|                     : "cc", "memory"                             \
  |  |  |  |  428|  3.03k|                    );                                            \
  |  |  |  |  429|  3.03k|    _zzq_result;                                                  \
  |  |  |  |  430|  3.03k|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 3.03k]
  |  |  ------------------
  |  | 6216|  3.03k|                                    VG_USERREQ__RUNNING_ON_VALGRIND,  \
  |  | 6217|  3.03k|                                    0, 0, 0, 0, 0)                    \
  ------------------
  621|      0|        {
  622|      0|          gchar *allocated;
  623|       |
  624|      0|          allocated = (gchar *) G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|      0|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|      0|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
  625|      0|          allocated -= sizeof (gpointer);
  626|       |
  627|      0|          g_free (allocated);
  628|       |
  629|      0|          VALGRIND_FREELIKE_BLOCK (allocated + sizeof (gpointer), 0);
  ------------------
  |  | 6493|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__FREELIKE_BLOCK,         \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6494|      0|                                    addr, rzB, 0, 0, 0)
  ------------------
  630|      0|          VALGRIND_FREELIKE_BLOCK (closure, 0);
  ------------------
  |  | 6493|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__FREELIKE_BLOCK,         \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6494|      0|                                    addr, rzB, 0, 0, 0)
  ------------------
  631|      0|        }
  632|  3.03k|      else
  633|  3.03k|#endif
  634|  3.03k|        g_free (G_REAL_CLOSURE (closure));
  ------------------
  |  |   63|  3.03k|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|  3.03k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
  635|  3.03k|    }
  636|  12.9k|}
g_closure_sink:
  686|  3.03k|{
  687|  3.03k|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|  3.03k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.03k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.03k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.03k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.03k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.03k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.03k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.03k|   else                                         \
  |  |  |  |  |  | 1021|  3.03k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.03k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.03k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.03k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.03k|      { } \
  |  |  633|  3.03k|    else \
  |  |  634|  3.03k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  3.03k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  688|  3.03k|  g_return_if_fail (closure->ref_count > 0);
  ------------------
  |  |  630|  3.03k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.03k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.03k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.03k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.03k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.03k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.03k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.03k|   else                                         \
  |  |  |  |  |  | 1021|  3.03k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.03k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.03k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.03k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.03k|      { } \
  |  |  633|  3.03k|    else \
  |  |  634|  3.03k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  3.03k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  689|       |
  690|       |  /* floating is basically a kludge to avoid creating closures
  691|       |   * with a ref_count of 0. so the initial ref_count a closure has
  692|       |   * is unowned. with invoking g_closure_sink() code may
  693|       |   * indicate that it takes over that initial ref_count.
  694|       |   */
  695|  3.03k|  if (closure->floating)
  ------------------
  |  Branch (695:7): [True: 3.03k, False: 0]
  ------------------
  696|  3.03k|    {
  697|  3.03k|      gboolean was_floating;
  698|  3.03k|      SWAP (closure, floating, FALSE, &was_floating);
  ------------------
  |  |  121|  3.03k|#define SWAP(_closure, _field, _value, _oldv)   CHANGE_FIELD (_closure, _field, =, _value, TRUE, *(_oldv) =,     (void) )
  |  |  ------------------
  |  |  |  |  104|  3.03k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  3.03k|G_STMT_START {                                                                          \
  |  |  |  |  106|  3.03k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  3.03k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  3.03k|  do                                                    		                \
  |  |  |  |  109|  3.03k|    {                                                   		                \
  |  |  |  |  110|  3.03k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  3.03k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  3.03k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  3.03k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  3.03k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  3.03k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  3.03k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  3.03k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  3.03k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  3.03k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  3.03k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  3.03k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 3.03k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  3.03k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  3.03k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  3.03k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  3.03k|#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.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  3.03k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  3.03k|    }                                                   		                \
  |  |  |  |  118|  3.03k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 3.03k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  3.03k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  699|       |      /* unref floating flag only once */
  700|  3.03k|      if (was_floating)
  ------------------
  |  Branch (700:11): [True: 3.03k, False: 0]
  ------------------
  701|  3.03k|        g_closure_unref (closure);
  702|  3.03k|    }
  703|  3.03k|}
g_closure_invoke:
  781|  3.85k|{
  782|  3.85k|  GRealClosure *real_closure;
  783|       |
  784|  3.85k|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|  3.85k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.85k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.85k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.85k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.85k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.85k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.85k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.85k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.85k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.85k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.85k|   else                                         \
  |  |  |  |  |  | 1021|  3.85k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.85k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.85k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.85k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.85k|      { } \
  |  |  633|  3.85k|    else \
  |  |  634|  3.85k|      { \
  |  |  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.85k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.85k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.85k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  785|       |
  786|  3.85k|  real_closure = G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|  3.85k|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|  3.85k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
  787|       |
  788|  3.85k|  g_closure_ref (closure);      /* preserve floating flag */
  789|  3.85k|  if (!closure->is_invalid)
  ------------------
  |  Branch (789:7): [True: 3.85k, False: 0]
  ------------------
  790|  3.85k|    {
  791|  3.85k|      GClosureMarshal marshal;
  792|  3.85k|      gpointer marshal_data;
  793|  3.85k|      gboolean in_marshal = closure->in_marshal;
  794|       |
  795|  3.85k|      g_return_if_fail (closure->marshal || real_closure->meta_marshal);
  ------------------
  |  |  630|  3.85k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.85k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.85k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.85k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.85k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.85k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.85k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  7.71k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.85k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.85k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.85k|   else                                         \
  |  |  |  |  |  | 1021|  3.85k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.85k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.85k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.85k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.85k|      { } \
  |  |  633|  3.85k|    else \
  |  |  634|  3.85k|      { \
  |  |  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.85k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.85k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.85k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  796|       |
  797|  3.85k|      SET (closure, in_marshal, TRUE);
  ------------------
  |  |  122|  3.85k|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|  3.85k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  3.85k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  3.85k|G_STMT_START {                                                                          \
  |  |  |  |  106|  3.85k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  3.85k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  3.85k|  do                                                    		                \
  |  |  |  |  109|  3.85k|    {                                                   		                \
  |  |  |  |  110|  3.85k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  3.85k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  3.85k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  3.85k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  3.85k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  3.85k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  3.85k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  3.85k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.85k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  3.85k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  3.85k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  3.85k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  3.85k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 3.85k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  3.85k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  3.85k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  3.85k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  3.85k|#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.85k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  3.85k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85k|    }                                                   		                \
  |  |  |  |  118|  3.85k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 3.85k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  3.85k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  3.85k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 3.85k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  798|  3.85k|      if (real_closure->meta_marshal)
  ------------------
  |  Branch (798:11): [True: 1.28k, False: 2.57k]
  ------------------
  799|  1.28k|	{
  800|  1.28k|	  marshal_data = real_closure->meta_marshal_data;
  801|  1.28k|	  marshal = real_closure->meta_marshal;
  802|  1.28k|	}
  803|  2.57k|      else
  804|  2.57k|	{
  805|  2.57k|	  marshal_data = NULL;
  806|  2.57k|	  marshal = closure->marshal;
  807|  2.57k|	}
  808|  3.85k|      if (!in_marshal)
  ------------------
  |  Branch (808:11): [True: 3.85k, False: 0]
  ------------------
  809|  3.85k|	closure_invoke_notifiers (closure, PRE_NOTIFY);
  810|  3.85k|      marshal (closure,
  811|  3.85k|	       return_value,
  812|  3.85k|	       n_param_values, param_values,
  813|  3.85k|	       invocation_hint,
  814|  3.85k|	       marshal_data);
  815|  3.85k|      if (!in_marshal)
  ------------------
  |  Branch (815:11): [True: 3.85k, False: 0]
  ------------------
  816|  3.85k|	closure_invoke_notifiers (closure, POST_NOTIFY);
  817|  3.85k|      SET (closure, in_marshal, in_marshal);
  ------------------
  |  |  122|  3.85k|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|  3.85k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  3.85k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  3.85k|G_STMT_START {                                                                          \
  |  |  |  |  106|  3.85k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  3.85k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  3.85k|  do                                                    		                \
  |  |  |  |  109|  3.85k|    {                                                   		                \
  |  |  |  |  110|  3.85k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  3.85k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  3.85k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  3.85k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  3.85k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  3.85k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  3.85k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  3.85k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.85k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  3.85k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  3.85k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  3.85k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  3.85k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 3.85k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  3.85k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  3.85k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  3.85k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  3.85k|#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.85k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  3.85k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  3.85k|    }                                                   		                \
  |  |  |  |  118|  3.85k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 3.85k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  3.85k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  3.85k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 3.85k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  818|  3.85k|    }
  819|  3.85k|  g_closure_unref (closure);
  820|  3.85k|}
_g_closure_supports_invoke_va:
  824|  1.28k|{
  825|  1.28k|  GRealClosure *real_closure;
  826|       |
  827|  1.28k|  g_return_val_if_fail (closure != NULL, FALSE);
  ------------------
  |  |  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, \
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  828|       |
  829|  1.28k|  real_closure = G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|  1.28k|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|  1.28k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
  830|       |
  831|  1.28k|  return
  832|  1.28k|    real_closure->va_marshal != NULL &&
  ------------------
  |  Branch (832:5): [True: 1.28k, False: 0]
  ------------------
  833|  1.28k|    (real_closure->meta_marshal == NULL ||
  ------------------
  |  Branch (833:6): [True: 1.28k, False: 0]
  ------------------
  834|      0|     real_closure->va_meta_marshal != NULL);
  ------------------
  |  Branch (834:6): [True: 0, False: 0]
  ------------------
  835|  1.28k|}
g_closure_set_marshal:
  901|  3.03k|{
  902|  3.03k|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|  3.03k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.03k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.03k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.03k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.03k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.03k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.03k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.03k|   else                                         \
  |  |  |  |  |  | 1021|  3.03k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.03k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.03k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.03k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.03k|      { } \
  |  |  633|  3.03k|    else \
  |  |  634|  3.03k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  3.03k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  903|  3.03k|  g_return_if_fail (marshal != NULL);
  ------------------
  |  |  630|  3.03k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.03k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.03k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.03k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.03k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.03k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.03k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.03k|   else                                         \
  |  |  |  |  |  | 1021|  3.03k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.03k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.03k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.03k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.03k|      { } \
  |  |  633|  3.03k|    else \
  |  |  634|  3.03k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  3.03k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  904|       |
  905|  3.03k|  if (closure->marshal && closure->marshal != marshal)
  ------------------
  |  Branch (905:7): [True: 0, False: 3.03k]
  |  Branch (905:27): [True: 0, False: 0]
  ------------------
  906|      0|    g_warning ("attempt to override closure->marshal (%p) with new marshal (%p)",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  907|  3.03k|	       closure->marshal, marshal);
  908|  3.03k|  else
  909|  3.03k|    closure->marshal = marshal;
  910|  3.03k|}
_g_closure_set_va_marshal:
  915|  3.03k|{
  916|  3.03k|  GRealClosure *real_closure;
  917|       |
  918|  3.03k|  g_return_if_fail (closure != NULL);
  ------------------
  |  |  630|  3.03k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.03k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.03k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.03k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.03k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.03k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.03k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.03k|   else                                         \
  |  |  |  |  |  | 1021|  3.03k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.03k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.03k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.03k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.03k|      { } \
  |  |  633|  3.03k|    else \
  |  |  634|  3.03k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  3.03k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  919|  3.03k|  g_return_if_fail (marshal != NULL);
  ------------------
  |  |  630|  3.03k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  3.03k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.03k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.03k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.03k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.03k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.03k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.03k|   else                                         \
  |  |  |  |  |  | 1021|  3.03k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.03k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.03k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.03k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  3.03k|      { } \
  |  |  633|  3.03k|    else \
  |  |  634|  3.03k|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|  3.03k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  920|       |
  921|  3.03k|  real_closure = G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|  3.03k|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|  3.03k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
  922|       |
  923|  3.03k|  if (real_closure->va_marshal && real_closure->va_marshal != marshal)
  ------------------
  |  Branch (923:7): [True: 0, False: 3.03k]
  |  Branch (923:35): [True: 0, False: 0]
  ------------------
  924|      0|    g_warning ("attempt to override closure->va_marshal (%p) with new marshal (%p)",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  925|  3.03k|	       real_closure->va_marshal, marshal);
  926|  3.03k|  else
  927|  3.03k|    real_closure->va_marshal = marshal;
  928|  3.03k|}
g_cclosure_new:
  947|  3.03k|{
  948|  3.03k|  GClosure *closure;
  949|       |  
  950|  3.03k|  g_return_val_if_fail (callback_func != NULL, NULL);
  ------------------
  |  |  643|  3.03k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  3.03k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.03k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.03k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.03k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.03k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.03k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.03k|   else                                         \
  |  |  |  |  |  | 1021|  3.03k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.03k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.03k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.03k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  3.03k|      { } \
  |  |  646|  3.03k|    else \
  |  |  647|  3.03k|      { \
  |  |  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.03k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  951|       |  
  952|  3.03k|  closure = g_closure_new_simple (sizeof (GCClosure), user_data);
  953|  3.03k|  if (destroy_data)
  ------------------
  |  Branch (953:7): [True: 0, False: 3.03k]
  ------------------
  954|      0|    g_closure_add_finalize_notifier (closure, user_data, destroy_data);
  955|  3.03k|  ((GCClosure*) closure)->callback = (gpointer) callback_func;
  956|       |  
  957|  3.03k|  return closure;
  958|  3.03k|}
_g_closure_is_void:
 1068|   391k|{
 1069|   391k|  GRealClosure *real_closure;
 1070|   391k|  GTypeClass *class;
 1071|   391k|  gpointer callback;
 1072|   391k|  GType itype;
 1073|   391k|  guint offset;
 1074|       |
 1075|   391k|  if (closure->is_invalid)
  ------------------
  |  Branch (1075:7): [True: 0, False: 391k]
  ------------------
 1076|      0|    return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1077|       |
 1078|   391k|  real_closure = G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|   391k|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|   391k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
 1079|       |
 1080|   391k|  if (real_closure->meta_marshal == g_type_iface_meta_marshal)
  ------------------
  |  Branch (1080:7): [True: 0, False: 391k]
  ------------------
 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|   391k|  else if (real_closure->meta_marshal == g_type_class_meta_marshal)
  ------------------
  |  Branch (1089:12): [True: 391k, False: 0]
  ------------------
 1090|   391k|    {
 1091|   391k|      offset = GPOINTER_TO_UINT (real_closure->meta_marshal_data);
  ------------------
  |  |   99|   391k|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 1092|       |
 1093|   391k|      class = G_TYPE_INSTANCE_GET_CLASS (instance, itype, GTypeClass);
  ------------------
  |  |  527|   391k|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2309|   391k|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  ------------------
  ------------------
 1094|   391k|      callback = G_STRUCT_MEMBER (gpointer, class, offset);
  ------------------
  |  |  862|   391k|    (*(member_type*) G_STRUCT_MEMBER_P ((struct_p), (struct_offset)))
  |  |  ------------------
  |  |  |  |  860|   391k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
 1095|   391k|      return callback == NULL;
 1096|   391k|    }
 1097|       |
 1098|      0|  return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1099|   391k|}
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.7k|{
  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.7k|  switch (notify_type)
  ------------------
  |  Branch (250:11): [True: 13.7k, False: 0]
  ------------------
  251|  13.7k|    {
  252|      0|      GClosureNotifyData *ndata;
  253|      0|      guint i, offs;
  254|  3.03k|    case FNOTIFY:
  ------------------
  |  Branch (254:5): [True: 3.03k, False: 10.7k]
  ------------------
  255|  3.03k|      while (closure->n_fnotifiers)
  ------------------
  |  Branch (255:14): [True: 0, False: 3.03k]
  ------------------
  256|      0|	{
  257|      0|          guint n;
  258|      0|	  DEC_ASSIGN (closure, n_fnotifiers, &n);
  ------------------
  |  |  126|      0|#define DEC_ASSIGN(_closure, _field, _newv)     CHANGE_FIELD (_closure, _field, -=,     1, TRUE,     (void), *(_newv) = )
  |  |  ------------------
  |  |  |  |  104|      0|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|      0|G_STMT_START {                                                                          \
  |  |  |  |  106|      0|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|      0|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|      0|  do                                                    		                \
  |  |  |  |  109|      0|    {                                                   		                \
  |  |  |  |  110|      0|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|      0|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|      0|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|      0|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|      0|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|      0|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|      0|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|      0|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|      0|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|      0|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|      0|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|      0|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      0|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (164:5): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      0|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|      0|    }                                                   		                \
  |  |  |  |  118|      0|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 0]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|      0|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  259|       |
  260|      0|	  ndata = closure->notifiers + CLOSURE_N_MFUNCS (closure) + n;
  ------------------
  |  |   93|      0|#define	CLOSURE_N_MFUNCS(cl)		(((cl)->n_guards << 1L))
  ------------------
  261|      0|	  closure->marshal = (GClosureMarshal) ndata->notify;
  262|      0|	  closure->data = ndata->data;
  263|      0|	  ndata->notify (ndata->data, closure);
  264|      0|	}
  265|  3.03k|      closure->marshal = NULL;
  266|  3.03k|      closure->data = NULL;
  267|  3.03k|      break;
  268|  3.03k|    case INOTIFY:
  ------------------
  |  Branch (268:5): [True: 3.03k, False: 10.7k]
  ------------------
  269|  3.03k|      SET (closure, in_inotify, TRUE);
  ------------------
  |  |  122|  3.03k|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|  3.03k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  3.03k|G_STMT_START {                                                                          \
  |  |  |  |  106|  3.03k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  3.03k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  3.03k|  do                                                    		                \
  |  |  |  |  109|  3.03k|    {                                                   		                \
  |  |  |  |  110|  3.03k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  3.03k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  3.03k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  3.03k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  3.03k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  3.03k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  3.03k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  3.03k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  3.03k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  3.03k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  3.03k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  3.03k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 3.03k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  3.03k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  3.03k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  3.03k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  3.03k|#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.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  3.03k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  3.03k|    }                                                   		                \
  |  |  |  |  118|  3.03k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 3.03k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  3.03k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  270|  3.03k|      while (closure->n_inotifiers)
  ------------------
  |  Branch (270:14): [True: 0, False: 3.03k]
  ------------------
  271|      0|	{
  272|      0|          guint n;
  273|      0|          DEC_ASSIGN (closure, n_inotifiers, &n);
  ------------------
  |  |  126|      0|#define DEC_ASSIGN(_closure, _field, _newv)     CHANGE_FIELD (_closure, _field, -=,     1, TRUE,     (void), *(_newv) = )
  |  |  ------------------
  |  |  |  |  104|      0|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|      0|G_STMT_START {                                                                          \
  |  |  |  |  106|      0|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|      0|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|      0|  do                                                    		                \
  |  |  |  |  109|      0|    {                                                   		                \
  |  |  |  |  110|      0|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|      0|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|      0|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|      0|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|      0|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|      0|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|      0|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|      0|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|      0|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|      0|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|      0|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|      0|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      0|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (164:5): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      0|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|      0|    }                                                   		                \
  |  |  |  |  118|      0|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 0]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|      0|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  274|       |
  275|      0|	  ndata = closure->notifiers + CLOSURE_N_MFUNCS (closure) + closure->n_fnotifiers + n;
  ------------------
  |  |   93|      0|#define	CLOSURE_N_MFUNCS(cl)		(((cl)->n_guards << 1L))
  ------------------
  276|      0|	  closure->marshal = (GClosureMarshal) ndata->notify;
  277|      0|	  closure->data = ndata->data;
  278|      0|	  ndata->notify (ndata->data, closure);
  279|      0|	}
  280|  3.03k|      closure->marshal = NULL;
  281|  3.03k|      closure->data = NULL;
  282|  3.03k|      SET (closure, in_inotify, FALSE);
  ------------------
  |  |  122|  3.03k|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|  3.03k|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|  3.03k|G_STMT_START {                                                                          \
  |  |  |  |  106|  3.03k|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|  3.03k|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|  3.03k|  do                                                    		                \
  |  |  |  |  109|  3.03k|    {                                                   		                \
  |  |  |  |  110|  3.03k|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|  3.03k|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|  3.03k|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|  3.03k|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|  3.03k|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|  3.03k|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|  3.03k|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|  3.03k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|  3.03k|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|  3.03k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  765|  3.03k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|  3.03k|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 3.03k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  3.03k|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  3.03k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|  3.03k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|  3.03k|#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.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  3.03k|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|  3.03k|    }                                                   		                \
  |  |  |  |  118|  3.03k|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 3.03k]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|  3.03k|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  283|  3.03k|      break;
  284|  3.85k|    case PRE_NOTIFY:
  ------------------
  |  Branch (284:5): [True: 3.85k, False: 9.92k]
  ------------------
  285|  3.85k|      i = closure->n_guards;
  286|  3.85k|      offs = 0;
  287|  3.85k|      while (i--)
  ------------------
  |  Branch (287:14): [True: 0, False: 3.85k]
  ------------------
  288|      0|	{
  289|      0|	  ndata = closure->notifiers + offs + i;
  290|      0|	  ndata->notify (ndata->data, closure);
  291|      0|	}
  292|  3.85k|      break;
  293|  3.85k|    case POST_NOTIFY:
  ------------------
  |  Branch (293:5): [True: 3.85k, False: 9.92k]
  ------------------
  294|  3.85k|      i = closure->n_guards;
  295|  3.85k|      offs = i;
  296|  3.85k|      while (i--)
  ------------------
  |  Branch (296:14): [True: 0, False: 3.85k]
  ------------------
  297|      0|	{
  298|      0|	  ndata = closure->notifiers + offs + i;
  299|      0|	  ndata->notify (ndata->data, closure);
  300|      0|	}
  301|  3.85k|      break;
  302|  13.7k|    }
  303|  13.7k|}
gclosure.c:g_type_class_meta_marshal:
  998|  1.28k|{
  999|  1.28k|  GTypeClass *class;
 1000|  1.28k|  gpointer callback;
 1001|       |  /* GType itype = (GType) closure->data; */
 1002|  1.28k|  guint offset = GPOINTER_TO_UINT (marshal_data);
  ------------------
  |  |   99|  1.28k|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 1003|       |  
 1004|  1.28k|  class = G_TYPE_INSTANCE_GET_CLASS (g_value_peek_pointer (param_values + 0), itype, GTypeClass);
  ------------------
  |  |  527|  1.28k|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2309|  1.28k|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  ------------------
  ------------------
 1005|  1.28k|  callback = G_STRUCT_MEMBER (gpointer, class, offset);
  ------------------
  |  |  862|  1.28k|    (*(member_type*) G_STRUCT_MEMBER_P ((struct_p), (struct_offset)))
  |  |  ------------------
  |  |  |  |  860|  1.28k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
 1006|  1.28k|  if (callback)
  ------------------
  |  Branch (1006:7): [True: 0, False: 1.28k]
  ------------------
 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.28k|}
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.57k|{
 1495|  2.57k|  typedef void (*GMarshalFunc_VOID__PARAM) (gpointer     data1,
 1496|  2.57k|                                            gpointer     arg_1,
 1497|  2.57k|                                            gpointer     data2);
 1498|  2.57k|  GMarshalFunc_VOID__PARAM callback;
 1499|  2.57k|  GCClosure *cc = (GCClosure*) closure;
 1500|  2.57k|  gpointer data1, data2;
 1501|       |
 1502|  2.57k|  g_return_if_fail (n_param_values == 2);
  ------------------
  |  |  630|  2.57k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.57k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.57k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.57k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.57k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.57k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.57k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.57k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.57k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.57k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.57k|   else                                         \
  |  |  |  |  |  | 1021|  2.57k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.57k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.57k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.57k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.57k|      { } \
  |  |  633|  2.57k|    else \
  |  |  634|  2.57k|      { \
  |  |  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.57k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.57k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.57k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1503|       |
 1504|  2.57k|  if (G_CCLOSURE_SWAP_DATA (closure))
  ------------------
  |  |   63|  2.57k|#define	G_CCLOSURE_SWAP_DATA(cclosure)	 (((GClosure*) (cclosure))->derivative_flag)
  |  |  ------------------
  |  |  |  Branch (63:41): [True: 0, False: 2.57k]
  |  |  ------------------
  ------------------
 1505|      0|    {
 1506|      0|      data1 = closure->data;
 1507|      0|      data2 = g_value_peek_pointer (param_values + 0);
 1508|      0|    }
 1509|  2.57k|  else
 1510|  2.57k|    {
 1511|  2.57k|      data1 = g_value_peek_pointer (param_values + 0);
 1512|  2.57k|      data2 = closure->data;
 1513|  2.57k|    }
 1514|  2.57k|  callback = (GMarshalFunc_VOID__PARAM) (marshal_data ? marshal_data : cc->callback);
  ------------------
  |  Branch (1514:42): [True: 0, False: 2.57k]
  ------------------
 1515|       |
 1516|  2.57k|  callback (data1,
 1517|  2.57k|            g_marshal_value_peek_param (param_values + 1),
  ------------------
  |  |   40|  2.57k|#define g_marshal_value_peek_param(v)    g_value_get_param (v)
  ------------------
 1518|  2.57k|            data2);
 1519|  2.57k|}

_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|   391k|{
 1068|   391k|#ifdef HAVE_OPTIONAL_FLAGS
 1069|   391k|  return (object_get_optional_flags (object) & OPTIONAL_FLAG_HAS_SIGNAL_HANDLER) != 0;
  ------------------
  |  |  166|   391k|#define OPTIONAL_FLAG_HAS_SIGNAL_HANDLER 1<<1 /* Set if object ever had a signal handler */
  ------------------
 1070|       |#else
 1071|       |  return TRUE;
 1072|       |#endif
 1073|   391k|}
_g_object_set_has_signal_handler:
 1077|  3.03k|{
 1078|  3.03k|#ifdef HAVE_OPTIONAL_FLAGS
 1079|  3.03k|  object_set_optional_flags (object, OPTIONAL_FLAG_HAS_SIGNAL_HANDLER);
  ------------------
  |  |  166|  3.03k|#define OPTIONAL_FLAG_HAS_SIGNAL_HANDLER 1<<1 /* Set if object ever had a signal handler */
  ------------------
 1080|  3.03k|#endif
 1081|  3.03k|}
g_object_notify:
 1323|  2.80k|{
 1324|  2.80k|  GParamSpec *pspec;
 1325|       |  
 1326|  2.80k|  g_return_if_fail (G_IS_OBJECT (object));
  ------------------
  |  |  630|  2.80k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.80k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.80k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.80k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.80k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.80k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.80k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.80k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.80k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.80k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.80k|   else                                         \
  |  |  |  |  |  | 1021|  2.80k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.80k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.80k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.80k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.80k|      { } \
  |  |  633|  2.80k|    else \
  |  |  634|  2.80k|      { \
  |  |  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.80k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.80k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.80k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1327|  2.80k|  g_return_if_fail (property_name != NULL);
  ------------------
  |  |  630|  2.80k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.80k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.80k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.80k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.80k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.80k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.80k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.80k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.80k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.80k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.80k|   else                                         \
  |  |  |  |  |  | 1021|  2.80k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.80k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.80k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.80k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.80k|      { } \
  |  |  633|  2.80k|    else \
  |  |  634|  2.80k|      { \
  |  |  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.80k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.80k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.80k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1328|  2.80k|  if (g_atomic_int_get (&object->ref_count) == 0)
  ------------------
  |  |   96|  2.80k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  2.80k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|  2.80k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  2.80k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  2.80k|    gint gaig_temp;                                                          \
  |  |   99|  2.80k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 2.80k]
  |  |  ------------------
  |  |  100|  2.80k|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  2.80k|    (gint) gaig_temp;                                                        \
  |  |  102|  2.80k|  }))
  ------------------
  |  Branch (1328:7): [True: 0, False: 2.80k]
  ------------------
 1329|      0|    return;
 1330|       |  
 1331|  2.80k|  g_object_ref (object);
  ------------------
  |  |  523|  2.80k|#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.80k|  pspec = g_param_spec_pool_lookup (pspec_pool,
 1337|  2.80k|				    property_name,
 1338|  2.80k|				    G_OBJECT_TYPE (object),
  ------------------
  |  |  100|  2.80k|#define G_OBJECT_TYPE(object)       (G_TYPE_FROM_INSTANCE (object))
  |  |  ------------------
  |  |  |  |  602|  2.80k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|  2.80k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1339|  2.80k|				    TRUE);
  ------------------
  |  |  818|  2.80k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  2.80k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1340|       |
 1341|  2.80k|  if (!pspec)
  ------------------
  |  Branch (1341:7): [True: 0, False: 2.80k]
  ------------------
 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.80k|	       G_STRFUNC,
 1344|  2.80k|	       G_OBJECT_TYPE_NAME (object),
 1345|  2.80k|	       property_name);
 1346|  2.80k|  else
 1347|  2.80k|    g_object_notify_by_spec_internal (object, pspec);
 1348|  2.80k|  g_object_unref (object);
 1349|  2.80k|}
g_object_new:
 1773|  1.15M|{
 1774|  1.15M|  GObject *object;
 1775|  1.15M|  va_list var_args;
 1776|       |  
 1777|       |  /* short circuit for calls supplying no properties */
 1778|  1.15M|  if (!first_property_name)
  ------------------
  |  Branch (1778:7): [True: 1.15M, False: 0]
  ------------------
 1779|  1.15M|    return g_object_new_with_properties (object_type, 0, NULL, NULL);
 1780|       |
 1781|  1.15M|  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.15M|}
g_object_new_with_properties:
 2066|  1.15M|{
 2067|  1.15M|  GObjectClass *class, *unref_class = NULL;
 2068|  1.15M|  GObject *object;
 2069|       |
 2070|  1.15M|  g_return_val_if_fail (G_TYPE_IS_OBJECT (object_type), NULL);
  ------------------
  |  |  643|  1.15M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.15M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.15M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.15M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.15M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.15M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.15M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.15M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.15M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.15M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.15M|   else                                         \
  |  |  |  |  |  | 1021|  1.15M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.15M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.15M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.15M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.15M|      { } \
  |  |  646|  1.15M|    else \
  |  |  647|  1.15M|      { \
  |  |  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.15M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.15M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.15M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 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.15M|  class = g_type_class_peek_static (object_type);
 2076|       |
 2077|  1.15M|  if (class == NULL)
  ------------------
  |  Branch (2077:7): [True: 7, False: 1.15M]
  ------------------
 2078|      7|    class = unref_class = g_type_class_ref (object_type);
 2079|       |
 2080|  1.15M|  if (n_properties > 0)
  ------------------
  |  Branch (2080:7): [True: 0, False: 1.15M]
  ------------------
 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.15M|  else
 2108|  1.15M|    object = g_object_new_internal (class, NULL, 0);
 2109|       |
 2110|  1.15M|  if (unref_class != NULL)
  ------------------
  |  Branch (2110:7): [True: 7, False: 1.15M]
  ------------------
 2111|      7|    g_type_class_unref (unref_class);
 2112|       |
 2113|  1.15M|  return object;
 2114|  1.15M|}
g_object_weak_ref:
 2992|   120k|{
 2993|   120k|  WeakRefStack *wstack;
 2994|   120k|  guint i;
 2995|       |  
 2996|   120k|  g_return_if_fail (G_IS_OBJECT (object));
  ------------------
  |  |  630|   120k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   120k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   120k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   120k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   120k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   120k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   120k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   120k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 120k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   120k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   120k|   else                                         \
  |  |  |  |  |  | 1021|   120k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   120k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   120k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 120k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   120k|      { } \
  |  |  633|   120k|    else \
  |  |  634|   120k|      { \
  |  |  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|   120k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   120k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 120k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2997|   120k|  g_return_if_fail (notify != NULL);
  ------------------
  |  |  630|   120k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   120k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   120k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   120k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   120k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   120k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   120k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   120k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 120k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   120k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   120k|   else                                         \
  |  |  |  |  |  | 1021|   120k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   120k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   120k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 120k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   120k|      { } \
  |  |  633|   120k|    else \
  |  |  634|   120k|      { \
  |  |  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|   120k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   120k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 120k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2998|   120k|  g_return_if_fail (g_atomic_int_get (&object->ref_count) >= 1);
  ------------------
  |  |  630|   120k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   120k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   120k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   120k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   120k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   120k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   120k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   360k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 120k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 120k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   120k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   120k|   else                                         \
  |  |  |  |  |  | 1021|   120k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   120k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   120k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 120k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   120k|      { } \
  |  |  633|   120k|    else \
  |  |  634|   120k|      { \
  |  |  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|   120k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   120k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 120k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2999|       |
 3000|   120k|  G_LOCK (weak_refs_mutex);
  ------------------
  |  |  135|   120k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   120k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
 3001|   120k|  wstack = g_datalist_id_remove_no_notify (&object->qdata, quark_weak_refs);
 3002|   120k|  if (wstack)
  ------------------
  |  Branch (3002:7): [True: 102k, False: 17.5k]
  ------------------
 3003|   102k|    {
 3004|   102k|      i = wstack->n_weak_refs++;
 3005|   102k|      wstack = g_realloc (wstack, sizeof (*wstack) + sizeof (wstack->weak_refs[0]) * i);
 3006|   102k|    }
 3007|  17.5k|  else
 3008|  17.5k|    {
 3009|  17.5k|      wstack = g_renew (WeakRefStack, NULL, 1);
  ------------------
  |  |  321|  17.5k|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|  17.5k|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  17.5k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|  17.5k|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|  17.5k|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|  17.5k|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|  17.5k|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 17.5k]
  |  |  |  |  ------------------
  |  |  |  |  254|  17.5k|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|  17.5k|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 17.5k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  256|  17.5k|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|  17.5k|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|  17.5k|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (256:14): [True: 0, False: 17.5k]
  |  |  |  |  |  Branch (256:26): [True: 17.5k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  257|  17.5k|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|  17.5k|	  else							\
  |  |  |  |  259|  17.5k|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|  17.5k|	  __p;							\
  |  |  |  |  261|  17.5k|	}))
  |  |  ------------------
  ------------------
 3010|  17.5k|      wstack->object = object;
 3011|  17.5k|      wstack->n_weak_refs = 1;
 3012|  17.5k|      i = 0;
 3013|  17.5k|    }
 3014|   120k|  wstack->weak_refs[i].notify = notify;
 3015|   120k|  wstack->weak_refs[i].data = data;
 3016|   120k|  g_datalist_id_set_data_full (&object->qdata, quark_weak_refs, wstack, weak_refs_notify);
 3017|   120k|  G_UNLOCK (weak_refs_mutex);
  ------------------
  |  |  136|   120k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   120k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
 3018|   120k|}
g_object_add_weak_pointer:
 3081|   120k|{
 3082|   120k|  g_return_if_fail (G_IS_OBJECT (object));
  ------------------
  |  |  630|   120k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   120k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   120k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   120k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   120k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   120k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   120k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   120k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 120k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   120k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   120k|   else                                         \
  |  |  |  |  |  | 1021|   120k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   120k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   120k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 120k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   120k|      { } \
  |  |  633|   120k|    else \
  |  |  634|   120k|      { \
  |  |  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|   120k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   120k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 120k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3083|   120k|  g_return_if_fail (weak_pointer_location != NULL);
  ------------------
  |  |  630|   120k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   120k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   120k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   120k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   120k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   120k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   120k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   120k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 120k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   120k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   120k|   else                                         \
  |  |  |  |  |  | 1021|   120k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   120k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   120k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 120k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   120k|      { } \
  |  |  633|   120k|    else \
  |  |  634|   120k|      { \
  |  |  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|   120k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   120k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 120k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3084|       |
 3085|   120k|  g_object_weak_ref (object, 
 3086|   120k|                     (GWeakNotify) g_nullify_pointer, 
 3087|   120k|                     weak_pointer_location);
 3088|   120k|}
g_object_ref:
 3384|  1.06M|{
 3385|  1.06M|  GObject *object = _object;
 3386|  1.06M|  gint old_val;
 3387|  1.06M|  gboolean object_already_finalized;
 3388|       |
 3389|  1.06M|  g_return_val_if_fail (G_IS_OBJECT (object), NULL);
  ------------------
  |  |  643|  1.06M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.06M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.06M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.06M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.06M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.06M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.06M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.06M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.06M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.06M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.06M|   else                                         \
  |  |  |  |  |  | 1021|  1.06M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.06M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.06M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.06M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.06M|      { } \
  |  |  646|  1.06M|    else \
  |  |  647|  1.06M|      { \
  |  |  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.06M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.06M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.06M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3390|       |  
 3391|  1.06M|  old_val = g_atomic_int_add (&object->ref_count, 1);
  ------------------
  |  |  167|  1.06M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.06M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  168|  1.06M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.06M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  169|  1.06M|    (void) (0 ? *(atomic) ^ (val) : 1);                                      \
  |  |  ------------------
  |  |  |  Branch (169:13): [Folded, False: 1.06M]
  |  |  ------------------
  |  |  170|  1.06M|    (gint) __atomic_fetch_add ((atomic), (val), __ATOMIC_SEQ_CST);           \
  |  |  171|  1.06M|  }))
  ------------------
 3392|  1.06M|  object_already_finalized = (old_val <= 0);
 3393|  1.06M|  g_return_val_if_fail (!object_already_finalized, NULL);
  ------------------
  |  |  643|  1.06M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.06M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.06M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.06M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.06M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.06M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.06M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.06M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.06M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.06M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.06M|   else                                         \
  |  |  |  |  |  | 1021|  1.06M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.06M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.06M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.06M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.06M|      { } \
  |  |  646|  1.06M|    else \
  |  |  647|  1.06M|      { \
  |  |  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.06M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.06M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.06M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3394|       |
 3395|  1.06M|  if (old_val == 1 && OBJECT_HAS_TOGGLE_REF (object))
  ------------------
  |  |  138|   599k|    ((g_datalist_get_flags (&(object)->qdata) & OBJECT_HAS_TOGGLE_REF_FLAG) != 0)
  |  |  ------------------
  |  |  |  |  136|   599k|#define OBJECT_HAS_TOGGLE_REF_FLAG 0x1
  |  |  ------------------
  |  |  |  Branch (138:5): [True: 0, False: 599k]
  |  |  ------------------
  ------------------
  |  Branch (3395:7): [True: 599k, False: 461k]
  ------------------
 3396|      0|    toggle_refs_notify (object, FALSE);
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 3397|       |
 3398|  1.06M|  TRACE (GOBJECT_OBJECT_REF(object,G_TYPE_FROM_INSTANCE(object),old_val));
 3399|       |
 3400|  1.06M|  return object;
 3401|  1.06M|}
g_object_unref:
 3417|  2.21M|{
 3418|  2.21M|  GObject *object = _object;
 3419|  2.21M|  gint old_ref;
 3420|       |  
 3421|  2.21M|  g_return_if_fail (G_IS_OBJECT (object));
  ------------------
  |  |  630|  2.21M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.21M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.21M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.21M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.21M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.21M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.21M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.21M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.21M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.21M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.21M|   else                                         \
  |  |  |  |  |  | 1021|  2.21M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.21M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.21M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.21M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.21M|      { } \
  |  |  633|  2.21M|    else \
  |  |  634|  2.21M|      { \
  |  |  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.21M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.21M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.21M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3422|       |  
 3423|       |  /* here we want to atomically do: if (ref_count>1) { ref_count--; return; } */
 3424|  2.21M| retry_atomic_decrement1:
 3425|  2.21M|  old_ref = g_atomic_int_get (&object->ref_count);
  ------------------
  |  |   96|  2.21M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  2.21M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|  2.21M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  2.21M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  2.21M|    gint gaig_temp;                                                          \
  |  |   99|  2.21M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 2.21M]
  |  |  ------------------
  |  |  100|  2.21M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  2.21M|    (gint) gaig_temp;                                                        \
  |  |  102|  2.21M|  }))
  ------------------
 3426|  2.21M|  if (old_ref > 1)
  ------------------
  |  Branch (3426:7): [True: 1.06M, False: 1.15M]
  ------------------
 3427|  1.06M|    {
 3428|       |      /* valid if last 2 refs are owned by this call to unref and the toggle_ref */
 3429|  1.06M|      gboolean has_toggle_ref = OBJECT_HAS_TOGGLE_REF (object);
  ------------------
  |  |  138|  1.06M|    ((g_datalist_get_flags (&(object)->qdata) & OBJECT_HAS_TOGGLE_REF_FLAG) != 0)
  |  |  ------------------
  |  |  |  |  136|  1.06M|#define OBJECT_HAS_TOGGLE_REF_FLAG 0x1
  |  |  ------------------
  ------------------
 3430|       |
 3431|  1.06M|      if (!g_atomic_int_compare_and_exchange ((int *)&object->ref_count, old_ref, old_ref - 1))
  ------------------
  |  |  160|  1.06M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.06M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  161|  1.06M|    gint gaicae_oldval = (oldval);                                           \
  |  |  162|  1.06M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.06M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  163|  1.06M|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  ------------------
  |  |  |  Branch (163:13): [Folded, False: 1.06M]
  |  |  ------------------
  |  |  164|  1.06M|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|  1.06M|#define	FALSE	(0)
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  818|  1.06M|#define	TRUE	(!FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  1.06M|#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.06M, False: 0]
  |  |  ------------------
  |  |  165|  1.06M|  }))
  ------------------
  |  Branch (3431:11): [True: 0, False: 1.06M]
  ------------------
 3432|      0|	goto retry_atomic_decrement1;
 3433|       |
 3434|  1.06M|      TRACE (GOBJECT_OBJECT_UNREF(object,G_TYPE_FROM_INSTANCE(object),old_ref));
 3435|       |
 3436|       |      /* if we went from 2->1 we need to notify toggle refs if any */
 3437|  1.06M|      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: 599k, False: 461k]
  |  Branch (3437:27): [True: 0, False: 599k]
  ------------------
 3438|      0|	toggle_refs_notify (object, TRUE);
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3439|  1.06M|    }
 3440|  1.15M|  else
 3441|  1.15M|    {
 3442|  1.15M|      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.15M|      weak_locations = g_datalist_id_get_data (&object->qdata, quark_weak_locations);
 3454|       |
 3455|  1.15M|      if (weak_locations != NULL)
  ------------------
  |  Branch (3455:11): [True: 0, False: 1.15M]
  ------------------
 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.15M|      TRACE (GOBJECT_OBJECT_DISPOSE(object,G_TYPE_FROM_INSTANCE(object), 1));
 3486|  1.15M|      G_OBJECT_GET_CLASS (object)->dispose (object);
  ------------------
  |  |   91|  1.15M|#define G_OBJECT_GET_CLASS(object)  (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  527|  1.15M|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|  1.15M|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3487|  1.15M|      TRACE (GOBJECT_OBJECT_DISPOSE_END(object,G_TYPE_FROM_INSTANCE(object), 1));
 3488|       |
 3489|       |      /* may have been re-referenced meanwhile */
 3490|  1.15M|    retry_atomic_decrement2:
 3491|  1.15M|      old_ref = g_atomic_int_get ((int *)&object->ref_count);
  ------------------
  |  |   96|  1.15M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.15M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|  1.15M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.15M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  1.15M|    gint gaig_temp;                                                          \
  |  |   99|  1.15M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 1.15M]
  |  |  ------------------
  |  |  100|  1.15M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  1.15M|    (gint) gaig_temp;                                                        \
  |  |  102|  1.15M|  }))
  ------------------
 3492|  1.15M|      if (old_ref > 1)
  ------------------
  |  Branch (3492:11): [True: 0, False: 1.15M]
  ------------------
 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.15M|      g_datalist_id_set_data (&object->qdata, quark_closure_array, NULL);
  ------------------
  |  |   99|  1.15M|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
 3511|  1.15M|      g_signal_handlers_destroy (object);
 3512|  1.15M|      g_datalist_id_set_data (&object->qdata, quark_weak_refs, NULL);
  ------------------
  |  |   99|  1.15M|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
 3513|       |      
 3514|       |      /* decrement the last reference */
 3515|  1.15M|      old_ref = g_atomic_int_add (&object->ref_count, -1);
  ------------------
  |  |  167|  1.15M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.15M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  168|  1.15M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.15M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  169|  1.15M|    (void) (0 ? *(atomic) ^ (val) : 1);                                      \
  |  |  ------------------
  |  |  |  Branch (169:13): [Folded, False: 1.15M]
  |  |  ------------------
  |  |  170|  1.15M|    (gint) __atomic_fetch_add ((atomic), (val), __ATOMIC_SEQ_CST);           \
  |  |  171|  1.15M|  }))
  ------------------
 3516|  1.15M|      g_return_if_fail (old_ref > 0);
  ------------------
  |  |  630|  1.15M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.15M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.15M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.15M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.15M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.15M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.15M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.15M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.15M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.15M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.15M|   else                                         \
  |  |  |  |  |  | 1021|  1.15M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.15M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.15M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.15M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.15M|      { } \
  |  |  633|  1.15M|    else \
  |  |  634|  1.15M|      { \
  |  |  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.15M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.15M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.15M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3517|       |
 3518|  1.15M|      TRACE (GOBJECT_OBJECT_UNREF(object,G_TYPE_FROM_INSTANCE(object),old_ref));
 3519|       |
 3520|       |      /* may have been re-referenced meanwhile */
 3521|  1.15M|      if (G_LIKELY (old_ref == 1))
  ------------------
  |  | 1024|  1.15M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  1.15M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.15M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.15M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.15M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 1.15M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.15M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.15M|   else                                         \
  |  |  |  | 1021|  1.15M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.15M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.15M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 1.15M, False: 0]
  |  |  ------------------
  ------------------
 3522|  1.15M|	{
 3523|  1.15M|	  TRACE (GOBJECT_OBJECT_FINALIZE(object,G_TYPE_FROM_INSTANCE(object)));
 3524|  1.15M|          G_OBJECT_GET_CLASS (object)->finalize (object);
  ------------------
  |  |   91|  1.15M|#define G_OBJECT_GET_CLASS(object)  (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  527|  1.15M|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|  1.15M|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3525|       |
 3526|  1.15M|	  TRACE (GOBJECT_OBJECT_FINALIZE_END(object,G_TYPE_FROM_INSTANCE(object)));
 3527|       |
 3528|  1.15M|          GOBJECT_IF_DEBUG (OBJECTS,
  ------------------
  |  |   37|  1.15M|#define GOBJECT_IF_DEBUG(debug_type, code_block) \
  |  |  ------------------
  |  |  |  |  874|  1.15M|#define G_STMT_START  do
  |  |  ------------------
  |  |   38|  1.15M|G_STMT_START { \
  |  |   39|  1.15M|    if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type) \
  |  |  ------------------
  |  |  |  Branch (39:9): [True: 0, False: 1.15M]
  |  |  ------------------
  |  |   40|  1.15M|      { code_block; } \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   41|  1.15M|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.15M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.15M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3529|  1.15M|	    {
 3530|  1.15M|              gboolean was_present;
 3531|       |
 3532|       |              /* catch objects not chaining finalize handlers */
 3533|  1.15M|              G_LOCK (debug_objects);
 3534|  1.15M|              was_present = g_hash_table_remove (debug_objects_ht, object);
 3535|  1.15M|              G_UNLOCK (debug_objects);
 3536|       |
 3537|  1.15M|              if (was_present)
 3538|  1.15M|                g_critical ("Object %p of type %s not finalized correctly.",
 3539|  1.15M|                            object, G_OBJECT_TYPE_NAME (object));
 3540|  1.15M|	    });
 3541|  1.15M|          g_type_free_instance ((GTypeInstance*) object);
 3542|  1.15M|	}
 3543|  1.15M|    }
 3544|  2.21M|}
g_value_get_object:
 4164|   389k|{
 4165|   389k|  g_return_val_if_fail (G_VALUE_HOLDS_OBJECT (value), NULL);
  ------------------
  |  |  643|   389k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   389k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   389k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   389k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   389k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   389k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   389k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.94M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 389k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 389k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 389k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   389k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   389k|   else                                         \
  |  |  |  |  |  | 1021|   389k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   389k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   389k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 389k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   389k|      { } \
  |  |  646|   389k|    else \
  |  |  647|   389k|      { \
  |  |  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|   389k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   389k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4166|       |  
 4167|   389k|  return value->data[0].v_pointer;
 4168|   389k|}
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|   386k|{
 2340|       |  /* empty default impl to allow unconditional upchaining */
 2341|   386k|}
gobject.c:g_object_real_dispose:
 1171|  1.15M|{
 1172|  1.15M|  g_signal_handlers_destroy (object);
 1173|  1.15M|  g_datalist_id_set_data (&object->qdata, quark_closure_array, NULL);
  ------------------
  |  |   99|  1.15M|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
 1174|       |  g_datalist_id_set_data (&object->qdata, quark_weak_refs, NULL);
  ------------------
  |  |   99|  1.15M|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
 1175|  1.15M|}
gobject.c:g_object_finalize:
 1179|  1.15M|{
 1180|  1.15M|  if (object_in_construction (object))
  ------------------
  |  Branch (1180:7): [True: 0, False: 1.15M]
  ------------------
 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.15M|  g_datalist_clear (&object->qdata);
 1187|       |  
 1188|  1.15M|  GOBJECT_IF_DEBUG (OBJECTS,
  ------------------
  |  |   37|  1.15M|#define GOBJECT_IF_DEBUG(debug_type, code_block) \
  |  |  ------------------
  |  |  |  |  874|  1.15M|#define G_STMT_START  do
  |  |  ------------------
  |  |   38|  1.15M|G_STMT_START { \
  |  |   39|  1.15M|    if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type) \
  |  |  ------------------
  |  |  |  Branch (39:9): [True: 0, False: 1.15M]
  |  |  ------------------
  |  |   40|  1.15M|      { code_block; } \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 0]
  |  |  |  Branch (40:9): [True: 0, False: 0]
  |  |  |  Branch (40:9): [Folded, False: 0]
  |  |  ------------------
  |  |   41|  1.15M|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.15M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.15M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1189|  1.15M|    {
 1190|  1.15M|      G_LOCK (debug_objects);
 1191|  1.15M|      g_assert (g_hash_table_contains (debug_objects_ht, object));
 1192|  1.15M|      g_hash_table_remove (debug_objects_ht, object);
 1193|  1.15M|      debug_objects_count--;
 1194|  1.15M|      G_UNLOCK (debug_objects);
 1195|  1.15M|    });
 1196|  1.15M|}
gobject.c:object_in_construction:
 1085|  1.15M|{
 1086|  1.15M|#ifdef HAVE_OPTIONAL_FLAGS
 1087|  1.15M|  return (object_get_optional_flags (object) & OPTIONAL_FLAG_IN_CONSTRUCTION) != 0;
  ------------------
  |  |  165|  1.15M|#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.15M|}
gobject.c:g_object_dispatch_properties_changed:
 1202|   388k|{
 1203|   388k|  guint i;
 1204|       |
 1205|   780k|  for (i = 0; i < n_pspecs; i++)
  ------------------
  |  Branch (1205:15): [True: 391k, False: 388k]
  ------------------
 1206|   391k|    g_signal_emit (object, gobject_signals[NOTIFY], g_param_spec_get_name_quark (pspecs[i]), pspecs[i]);
 1207|   388k|}
gobject.c:object_interface_check_properties:
 1583|     11|{
 1584|     11|  GTypeInterface *iface_class = g_iface;
 1585|     11|  GObjectClass *class;
 1586|     11|  GType iface_type = iface_class->g_type;
 1587|     11|  GParamSpec **pspecs;
 1588|     11|  guint n;
 1589|       |
 1590|     11|  class = g_type_class_ref (iface_class->g_instance_type);
 1591|       |
 1592|     11|  if (class == NULL)
  ------------------
  |  Branch (1592:7): [True: 0, False: 11]
  ------------------
 1593|      0|    return;
 1594|       |
 1595|     11|  if (!G_IS_OBJECT_CLASS (class))
  ------------------
  |  |   82|     11|#define G_IS_OBJECT_CLASS(class)    (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_OBJECT))
  |  |  ------------------
  |  |  |  |  566|     11|#define G_TYPE_CHECK_CLASS_TYPE(g_class, g_type)                (_G_TYPE_CCT ((g_class), (g_type)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2323|     11|#  define _G_TYPE_CCT(cp, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2324|     11|  GTypeClass *__class = (GTypeClass*) cp; GType __t = gt; gboolean __r; \
  |  |  |  |  |  | 2325|     11|  if (!__class) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2325:7): [True: 0, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2326|     11|    __r = FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2327|     11|  else if (__class->g_type == __t) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2327:12): [True: 0, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2328|     11|    __r = TRUE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2329|     11|  else \
  |  |  |  |  |  | 2330|     11|    __r = g_type_check_class_is_a (__class, __t); \
  |  |  |  |  |  | 2331|     11|  __r; \
  |  |  |  |  |  | 2332|     11|}))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1595:7): [True: 0, False: 11]
  ------------------
 1596|      0|    goto out;
 1597|       |
 1598|     11|  pspecs = g_param_spec_pool_list (pspec_pool, iface_type, &n);
 1599|       |
 1600|     11|  while (n--)
  ------------------
  |  Branch (1600:10): [True: 0, False: 11]
  ------------------
 1601|      0|    {
 1602|      0|      GParamSpec *class_pspec = g_param_spec_pool_lookup (pspec_pool,
 1603|      0|							  pspecs[n]->name,
 1604|      0|							  G_OBJECT_CLASS_TYPE (class),
  ------------------
  |  |  119|      0|#define G_OBJECT_CLASS_TYPE(class)  (G_TYPE_FROM_CLASS (class))
  |  |  ------------------
  |  |  |  |  613|      0|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
 1605|      0|							  TRUE);
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1606|       |
 1607|      0|      if (!class_pspec)
  ------------------
  |  Branch (1607:11): [True: 0, False: 0]
  ------------------
 1608|      0|	{
 1609|      0|	  g_critical ("Object class %s doesn't implement property "
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 1610|      0|		      "'%s' from interface '%s'",
 1611|      0|		      g_type_name (G_OBJECT_CLASS_TYPE (class)),
 1612|      0|		      pspecs[n]->name,
 1613|      0|		      g_type_name (iface_type));
 1614|       |
 1615|      0|	  continue;
 1616|      0|	}
 1617|       |
 1618|       |      /* We do a number of checks on the properties of an interface to
 1619|       |       * make sure that all classes implementing the interface are
 1620|       |       * overriding the properties correctly.
 1621|       |       *
 1622|       |       * We do the checks in order of importance so that we can give
 1623|       |       * more useful error messages first.
 1624|       |       *
 1625|       |       * First, we check that the implementation doesn't remove the
 1626|       |       * basic functionality (readability, writability) advertised by
 1627|       |       * the interface.  Next, we check that it doesn't introduce
 1628|       |       * additional restrictions (such as construct-only).  Finally, we
 1629|       |       * make sure the types are compatible.
 1630|       |       */
 1631|       |
 1632|      0|#define SUBSET(a,b,mask) (((a) & ~(b) & (mask)) == 0)
 1633|       |      /* If the property on the interface is readable then the
 1634|       |       * implementation must be readable.  If the interface is writable
 1635|       |       * then the implementation must be writable.
 1636|       |       */
 1637|      0|      if (!SUBSET (pspecs[n]->flags, class_pspec->flags, G_PARAM_READABLE | G_PARAM_WRITABLE))
  ------------------
  |  | 1632|      0|#define SUBSET(a,b,mask) (((a) & ~(b) & (mask)) == 0)
  ------------------
  |  Branch (1637:11): [True: 0, False: 0]
  ------------------
 1638|      0|        {
 1639|      0|          g_critical ("Flags for property '%s' on class '%s' remove functionality compared with the "
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 1640|      0|                      "property on interface '%s'\n", pspecs[n]->name,
 1641|      0|                      g_type_name (G_OBJECT_CLASS_TYPE (class)), g_type_name (iface_type));
 1642|      0|          continue;
 1643|      0|        }
 1644|       |
 1645|       |      /* If the property on the interface is writable then we need to
 1646|       |       * make sure the implementation doesn't introduce new restrictions
 1647|       |       * on that writability (ie: construct-only).
 1648|       |       *
 1649|       |       * If the interface was not writable to begin with then we don't
 1650|       |       * really have any problems here because "writable at construct
 1651|       |       * time only" is still more permissive than "read only".
 1652|       |       */
 1653|      0|      if (pspecs[n]->flags & G_PARAM_WRITABLE)
  ------------------
  |  Branch (1653:11): [True: 0, False: 0]
  ------------------
 1654|      0|        {
 1655|      0|          if (!SUBSET (class_pspec->flags, pspecs[n]->flags, G_PARAM_CONSTRUCT_ONLY))
  ------------------
  |  | 1632|      0|#define SUBSET(a,b,mask) (((a) & ~(b) & (mask)) == 0)
  ------------------
  |  Branch (1655:15): [True: 0, False: 0]
  ------------------
 1656|      0|            {
 1657|      0|              g_critical ("Flags for property '%s' on class '%s' introduce additional restrictions on "
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 1658|      0|                          "writability compared with the property on interface '%s'\n", pspecs[n]->name,
 1659|      0|                          g_type_name (G_OBJECT_CLASS_TYPE (class)), g_type_name (iface_type));
 1660|      0|              continue;
 1661|      0|            }
 1662|      0|        }
 1663|      0|#undef SUBSET
 1664|       |
 1665|       |      /* If the property on the interface is readable then we are
 1666|       |       * effectively advertising that reading the property will return a
 1667|       |       * value of a specific type.  All implementations of the interface
 1668|       |       * need to return items of this type -- but may be more
 1669|       |       * restrictive.  For example, it is legal to have:
 1670|       |       *
 1671|       |       *   GtkWidget *get_item();
 1672|       |       *
 1673|       |       * that is implemented by a function that always returns a
 1674|       |       * GtkEntry.  In short: readability implies that the
 1675|       |       * implementation  value type must be equal or more restrictive.
 1676|       |       *
 1677|       |       * Similarly, if the property on the interface is writable then
 1678|       |       * must be able to accept the property being set to any value of
 1679|       |       * that type, including subclasses.  In this case, we may also be
 1680|       |       * less restrictive.  For example, it is legal to have:
 1681|       |       *
 1682|       |       *   set_item (GtkEntry *);
 1683|       |       *
 1684|       |       * that is implemented by a function that will actually work with
 1685|       |       * any GtkWidget.  In short: writability implies that the
 1686|       |       * implementation value type must be equal or less restrictive.
 1687|       |       *
 1688|       |       * In the case that the property is both readable and writable
 1689|       |       * then the only way that both of the above can be satisfied is
 1690|       |       * with a type that is exactly equal.
 1691|       |       */
 1692|      0|      switch (pspecs[n]->flags & (G_PARAM_READABLE | G_PARAM_WRITABLE))
 1693|      0|        {
 1694|      0|        case G_PARAM_READABLE | G_PARAM_WRITABLE:
  ------------------
  |  Branch (1694:9): [True: 0, False: 0]
  ------------------
 1695|       |          /* class pspec value type must have exact equality with interface */
 1696|      0|          if (pspecs[n]->value_type != class_pspec->value_type)
  ------------------
  |  Branch (1696:15): [True: 0, False: 0]
  ------------------
 1697|      0|            g_critical ("Read/writable property '%s' on class '%s' has type '%s' which is not exactly equal to the "
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 1698|      0|                        "type '%s' of the property on the interface '%s'\n", pspecs[n]->name,
 1699|      0|                        g_type_name (G_OBJECT_CLASS_TYPE (class)), g_type_name (G_PARAM_SPEC_VALUE_TYPE (class_pspec)),
 1700|      0|                        g_type_name (G_PARAM_SPEC_VALUE_TYPE (pspecs[n])), g_type_name (iface_type));
 1701|      0|          break;
 1702|       |
 1703|      0|        case G_PARAM_READABLE:
  ------------------
  |  Branch (1703:9): [True: 0, False: 0]
  ------------------
 1704|       |          /* class pspec value type equal or more restrictive than interface */
 1705|      0|          if (!g_type_is_a (class_pspec->value_type, pspecs[n]->value_type))
  ------------------
  |  Branch (1705:15): [True: 0, False: 0]
  ------------------
 1706|      0|            g_critical ("Read-only property '%s' on class '%s' has type '%s' which is not equal to or more "
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 1707|      0|                        "restrictive than the type '%s' of the property on the interface '%s'\n", pspecs[n]->name,
 1708|      0|                        g_type_name (G_OBJECT_CLASS_TYPE (class)), g_type_name (G_PARAM_SPEC_VALUE_TYPE (class_pspec)),
 1709|      0|                        g_type_name (G_PARAM_SPEC_VALUE_TYPE (pspecs[n])), g_type_name (iface_type));
 1710|      0|          break;
 1711|       |
 1712|      0|        case G_PARAM_WRITABLE:
  ------------------
  |  Branch (1712:9): [True: 0, False: 0]
  ------------------
 1713|       |          /* class pspec value type equal or less restrictive than interface */
 1714|      0|          if (!g_type_is_a (pspecs[n]->value_type, class_pspec->value_type))
  ------------------
  |  Branch (1714:15): [True: 0, False: 0]
  ------------------
 1715|      0|            g_critical ("Write-only property '%s' on class '%s' has type '%s' which is not equal to or less "
  ------------------
  |  |  342|      0|#define g_critical(...) g_log (G_LOG_DOMAIN,         \
  |  |  343|      0|                               G_LOG_LEVEL_CRITICAL, \
  |  |  344|      0|                               __VA_ARGS__)
  ------------------
 1716|      0|                        "restrictive than the type '%s' of the property on the interface '%s' \n", pspecs[n]->name,
 1717|      0|                        g_type_name (G_OBJECT_CLASS_TYPE (class)), g_type_name (G_PARAM_SPEC_VALUE_TYPE (class_pspec)),
 1718|      0|                        g_type_name (G_PARAM_SPEC_VALUE_TYPE (pspecs[n])), g_type_name (iface_type));
 1719|      0|          break;
 1720|       |
 1721|      0|        default:
  ------------------
  |  Branch (1721:9): [True: 0, False: 0]
  ------------------
 1722|      0|          g_assert_not_reached ();
  ------------------
  |  |  230|      0|#define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |               #define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |               #define g_assert_not_reached()          G_STMT_START { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1723|      0|        }
 1724|      0|    }
 1725|       |
 1726|     11|  g_free (pspecs);
 1727|       |
 1728|     11| out:
 1729|     11|  g_type_class_unref (class);
 1730|     11|}
gobject.c:validate_and_install_class_property:
  607|     35|{
  608|     35|  if (!validate_pspec_to_install (pspec))
  ------------------
  |  Branch (608:7): [True: 0, False: 35]
  ------------------
  609|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  610|       |
  611|     35|  if (pspec->flags & G_PARAM_WRITABLE)
  ------------------
  |  Branch (611:7): [True: 34, False: 1]
  ------------------
  612|     35|    g_return_val_if_fail (class->set_property != NULL, FALSE);
  ------------------
  |  |  643|     34|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     34|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     34|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     34|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     34| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     34|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     34|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     34|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 34, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     34|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     34|   else                                         \
  |  |  |  |  |  | 1021|     34|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     34|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     34|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 34, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     34|      { } \
  |  |  646|     34|    else \
  |  |  647|     34|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     34|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     34|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 34]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  613|     35|  if (pspec->flags & G_PARAM_READABLE)
  ------------------
  |  Branch (613:7): [True: 35, False: 0]
  ------------------
  614|     35|    g_return_val_if_fail (class->get_property != NULL, FALSE);
  ------------------
  |  |  643|     35|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     35|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     35|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     35|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     35| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     35|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     35|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 35, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     35|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     35|   else                                         \
  |  |  |  |  |  | 1021|     35|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     35|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     35|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 35, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     35|      { } \
  |  |  646|     35|    else \
  |  |  647|     35|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     35|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     35|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  615|       |
  616|     35|  class->flags |= CLASS_HAS_PROPS_FLAG;
  ------------------
  |  |  141|     35|#define CLASS_HAS_PROPS_FLAG 0x1
  ------------------
  617|     35|  if (install_property_internal (oclass_type, property_id, pspec))
  ------------------
  |  Branch (617:7): [True: 35, False: 0]
  ------------------
  618|     35|    {
  619|     35|      if (pspec->flags & (G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY))
  ------------------
  |  Branch (619:11): [True: 7, False: 28]
  ------------------
  620|      7|        class->construct_properties = g_slist_append (class->construct_properties, pspec);
  621|       |
  622|       |      /* for property overrides of construct properties, we have to get rid
  623|       |       * of the overridden inherited construct property
  624|       |       */
  625|     35|      pspec = g_param_spec_pool_lookup (pspec_pool, pspec->name, parent_type, TRUE);
  ------------------
  |  |  818|     35|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     35|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  626|     35|      if (pspec && pspec->flags & (G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY))
  ------------------
  |  Branch (626:11): [True: 1, False: 34]
  |  Branch (626:20): [True: 1, False: 0]
  ------------------
  627|      1|        class->construct_properties = g_slist_remove (class->construct_properties, pspec);
  628|       |
  629|     35|      return TRUE;
  ------------------
  |  |  818|     35|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     35|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  630|     35|    }
  631|      0|  else
  632|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  633|     35|}
gobject.c:validate_pspec_to_install:
  586|     35|{
  587|     35|  g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), FALSE);
  ------------------
  |  |  643|     35|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     35|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     35|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     35|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     35| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     35|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     35|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 35, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     35|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     35|   else                                         \
  |  |  |  |  |  | 1021|     35|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     35|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     35|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 35, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     35|      { } \
  |  |  646|     35|    else \
  |  |  647|     35|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     35|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     35|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  588|     35|  g_return_val_if_fail (PARAM_SPEC_PARAM_ID (pspec) == 0, FALSE);	/* paranoid */
  ------------------
  |  |  643|     35|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     35|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     35|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     35|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     35| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     35|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     35|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 35, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     35|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     35|   else                                         \
  |  |  |  |  |  | 1021|     35|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     35|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     35|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 35, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     35|      { } \
  |  |  646|     35|    else \
  |  |  647|     35|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     35|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     35|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  589|       |
  590|     35|  g_return_val_if_fail (pspec->flags & (G_PARAM_READABLE | G_PARAM_WRITABLE), FALSE);
  ------------------
  |  |  643|     35|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     35|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     35|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     35|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     35| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     35|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     35|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     35|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 35, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     35|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     35|   else                                         \
  |  |  |  |  |  | 1021|     35|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     35|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     35|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 35, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     35|      { } \
  |  |  646|     35|    else \
  |  |  647|     35|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     35|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     35|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  591|       |
  592|     35|  if (pspec->flags & G_PARAM_CONSTRUCT)
  ------------------
  |  Branch (592:7): [True: 6, False: 29]
  ------------------
  593|     35|    g_return_val_if_fail ((pspec->flags & G_PARAM_CONSTRUCT_ONLY) == 0, FALSE);
  ------------------
  |  |  643|      6|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      6|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      6|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      6|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      6| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      6|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      6|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      6|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 6, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      6|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      6|   else                                         \
  |  |  |  |  |  | 1021|      6|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      6|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      6|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      6|      { } \
  |  |  646|      6|    else \
  |  |  647|      6|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      6|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      6|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  594|       |
  595|     35|  if (pspec->flags & (G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY))
  ------------------
  |  Branch (595:7): [True: 7, False: 28]
  ------------------
  596|     35|    g_return_val_if_fail (pspec->flags & G_PARAM_WRITABLE, FALSE);
  ------------------
  |  |  643|      7|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      7|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      7|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      7|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      7| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      7|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      7|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      7|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 7, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      7|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      7|   else                                         \
  |  |  |  |  |  | 1021|      7|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      7|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      7|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 7, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      7|      { } \
  |  |  646|      7|    else \
  |  |  647|      7|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      7|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      7|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  597|       |
  598|     35|  return TRUE;
  ------------------
  |  |  818|     35|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     35|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  599|     35|}
gobject.c:install_property_internal:
  569|     35|{
  570|     35|  if (g_param_spec_pool_lookup (pspec_pool, pspec->name, g_type, FALSE))
  ------------------
  |  |  814|     35|#define	FALSE	(0)
  ------------------
  |  Branch (570:7): [True: 0, False: 35]
  ------------------
  571|      0|    {
  572|      0|      g_warning ("When installing property: type '%s' already has a property named '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
  573|      0|		 g_type_name (g_type),
  574|      0|		 pspec->name);
  575|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  576|      0|    }
  577|       |
  578|     35|  g_param_spec_ref_sink (pspec);
  579|     35|  PARAM_SPEC_SET_PARAM_ID (pspec, property_id);
  ------------------
  |  |  134|     35|#define	PARAM_SPEC_SET_PARAM_ID(pspec, id)	((pspec)->param_id = (id))
  ------------------
  580|     35|  g_param_spec_pool_insert (pspec_pool, pspec, g_type);
  581|     35|  return TRUE;
  ------------------
  |  |  818|     35|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     35|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  582|     35|}
gobject.c:object_get_optional_flags:
 1036|  1.54M|{
 1037|  1.54M|#ifdef HAVE_OPTIONAL_FLAGS
 1038|  1.54M|  GObjectReal *real = (GObjectReal *)object;
 1039|  1.54M|  return (guint)g_atomic_int_get (&real->optional_flags);
  ------------------
  |  |   96|  1.54M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.54M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|  1.54M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.54M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  1.54M|    gint gaig_temp;                                                          \
  |  |   99|  1.54M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 1.54M]
  |  |  ------------------
  |  |  100|  1.54M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  1.54M|    (gint) gaig_temp;                                                        \
  |  |  102|  1.54M|  }))
  ------------------
 1040|       |#else
 1041|       |  return 0;
 1042|       |#endif
 1043|  1.54M|}
gobject.c:object_set_optional_flags:
 1048|  3.03k|{
 1049|  3.03k|#ifdef HAVE_OPTIONAL_FLAGS
 1050|  3.03k|  GObjectReal *real = (GObjectReal *)object;
 1051|  3.03k|  g_atomic_int_or (&real->optional_flags, flags);
  ------------------
  |  |  179|  3.03k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  180|  3.03k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  3.03k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  181|  3.03k|    (void) (0 ? *(atomic) ^ (val) : 1);                                      \
  |  |  ------------------
  |  |  |  Branch (181:13): [Folded, False: 3.03k]
  |  |  ------------------
  |  |  182|  3.03k|    (guint) __atomic_fetch_or ((atomic), (val), __ATOMIC_SEQ_CST);           \
  |  |  183|  3.03k|  }))
  ------------------
 1052|  3.03k|#endif
 1053|  3.03k|}
gobject.c:g_object_init:
 1116|  1.15M|{
 1117|  1.15M|  object->ref_count = 1;
 1118|  1.15M|  object->qdata = NULL;
 1119|       |
 1120|  1.15M|  if (CLASS_HAS_PROPS (class))
  ------------------
  |  |  143|  1.15M|    ((class)->flags & CLASS_HAS_PROPS_FLAG)
  |  |  ------------------
  |  |  |  |  141|  1.15M|#define CLASS_HAS_PROPS_FLAG 0x1
  |  |  ------------------
  |  |  |  Branch (143:5): [True: 386k, False: 770k]
  |  |  ------------------
  ------------------
 1121|   386k|    {
 1122|       |      /* freeze object's notification queue, g_object_newv() preserves pairedness */
 1123|   386k|      g_object_notify_queue_freeze (object, FALSE);
  ------------------
  |  |  814|   386k|#define	FALSE	(0)
  ------------------
 1124|   386k|    }
 1125|       |
 1126|  1.15M|  if (CLASS_HAS_CUSTOM_CONSTRUCTOR (class))
  ------------------
  |  |  145|  1.15M|    ((class)->constructor != g_object_constructor)
  |  |  ------------------
  |  |  |  Branch (145:5): [True: 0, False: 1.15M]
  |  |  ------------------
  ------------------
 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.15M|  GOBJECT_IF_DEBUG (OBJECTS,
  ------------------
  |  |   37|  1.15M|#define GOBJECT_IF_DEBUG(debug_type, code_block) \
  |  |  ------------------
  |  |  |  |  874|  1.15M|#define G_STMT_START  do
  |  |  ------------------
  |  |   38|  1.15M|G_STMT_START { \
  |  |   39|  1.15M|    if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type) \
  |  |  ------------------
  |  |  |  Branch (39:9): [True: 0, False: 1.15M]
  |  |  ------------------
  |  |   40|  1.15M|      { code_block; } \
  |  |   41|  1.15M|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.15M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.15M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1133|  1.15M|    {
 1134|  1.15M|      G_LOCK (debug_objects);
 1135|  1.15M|      debug_objects_count++;
 1136|  1.15M|      g_hash_table_add (debug_objects_ht, object);
 1137|  1.15M|      G_UNLOCK (debug_objects);
 1138|  1.15M|    });
 1139|  1.15M|}
gobject.c:g_object_notify_queue_freeze:
  274|   389k|{
  275|   389k|  GObjectNotifyQueue *nqueue;
  276|       |
  277|   389k|  G_LOCK(notify_lock);
  ------------------
  |  |  135|   389k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   389k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  278|   389k|  nqueue = g_datalist_id_get_data (&object->qdata, quark_notify_queue);
  279|   389k|  if (!nqueue)
  ------------------
  |  Branch (279:7): [True: 388k, False: 1.51k]
  ------------------
  280|   388k|    {
  281|   388k|      if (conditional)
  ------------------
  |  Branch (281:11): [True: 1.28k, False: 386k]
  ------------------
  282|  1.28k|        {
  283|  1.28k|          G_UNLOCK(notify_lock);
  ------------------
  |  |  136|  1.28k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|  1.28k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  284|  1.28k|          return NULL;
  285|  1.28k|        }
  286|       |
  287|   386k|      nqueue = g_slice_new0 (GObjectNotifyQueue);
  ------------------
  |  |   52|   386k|  (type *) (G_GNUC_EXTENSION ({                                 \
  |  |  ------------------
  |  |  |  |   54|   386k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   53|   386k|    gsize __s = sizeof (type);                                  \
  |  |   54|   386k|    gpointer __p;                                               \
  |  |   55|   386k|    __p = g_slice_alloc (__s);                                  \
  |  |   56|   386k|    memset (__p, 0, __s);                                       \
  |  |   57|   386k|    __p;                                                        \
  |  |   58|   386k|  }))
  ------------------
  288|   386k|      g_datalist_id_set_data_full (&object->qdata, quark_notify_queue,
  289|   386k|                                   nqueue, g_object_notify_queue_free);
  290|   386k|    }
  291|       |
  292|   388k|  if (nqueue->freeze_count >= 65535)
  ------------------
  |  Branch (292:7): [True: 0, False: 388k]
  ------------------
  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|   388k|               " called g_object_freeze_notify() too often."
  295|   388k|               " Forgot to call g_object_thaw_notify() or infinite loop",
  296|   388k|               G_OBJECT_TYPE_NAME (object), object);
  297|   388k|  else
  298|   388k|    nqueue->freeze_count++;
  299|   388k|  G_UNLOCK(notify_lock);
  ------------------
  |  |  136|   388k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   388k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  300|       |
  301|   388k|  return nqueue;
  302|   389k|}
gobject.c:g_object_notify_queue_free:
  264|   386k|{
  265|   386k|  GObjectNotifyQueue *nqueue = data;
  266|       |
  267|   386k|  g_slist_free (nqueue->pspecs);
  268|   386k|  g_slice_free (GObjectNotifyQueue, nqueue);
  ------------------
  |  |   79|   386k|#define g_slice_free(type, mem)                                 \
  |  |  ------------------
  |  |  |  |  874|   386k|#define G_STMT_START  do
  |  |  ------------------
  |  |   80|   386k|G_STMT_START {                                                  \
  |  |   81|   386k|  if (1) g_slice_free1 (sizeof (type), (mem));			\
  |  |  ------------------
  |  |  |  Branch (81:7): [True: 386k, Folded]
  |  |  ------------------
  |  |   82|   386k|  else   (void) ((type*) 0 == (mem)); 				\
  |  |   83|   386k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   386k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 386k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  269|   386k|}
gobject.c:g_object_notify_by_spec_internal:
 1279|  2.80k|{
 1280|  2.80k|  GParamSpec *notify_pspec;
 1281|       |
 1282|  2.80k|  notify_pspec = get_notify_pspec (pspec);
 1283|       |
 1284|  2.80k|  if (notify_pspec != NULL)
  ------------------
  |  Branch (1284:7): [True: 2.80k, False: 0]
  ------------------
 1285|  2.80k|    {
 1286|  2.80k|      GObjectNotifyQueue *nqueue;
 1287|       |
 1288|       |      /* conditional freeze: only increase freeze count if already frozen */
 1289|  2.80k|      nqueue = g_object_notify_queue_freeze (object, TRUE);
  ------------------
  |  |  818|  2.80k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  2.80k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1290|       |
 1291|  2.80k|      if (nqueue != NULL)
  ------------------
  |  Branch (1291:11): [True: 1.51k, False: 1.28k]
  ------------------
 1292|  1.51k|        {
 1293|       |          /* we're frozen, so add to the queue and release our freeze */
 1294|  1.51k|          g_object_notify_queue_add (object, nqueue, notify_pspec);
 1295|  1.51k|          g_object_notify_queue_thaw (object, nqueue);
 1296|  1.51k|        }
 1297|  1.28k|      else
 1298|       |        /* not frozen, so just dispatch the notification directly */
 1299|  1.28k|        G_OBJECT_GET_CLASS (object)
  ------------------
  |  |   91|  1.28k|#define G_OBJECT_GET_CLASS(object)  (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  527|  1.28k|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|  1.28k|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1300|  1.28k|          ->dispatch_properties_changed (object, 1, &notify_pspec);
 1301|  2.80k|    }
 1302|  2.80k|}
gobject.c:get_notify_pspec:
 1260|   392k|{
 1261|   392k|  GParamSpec *redirected;
 1262|       |
 1263|       |  /* we don't notify on non-READABLE parameters */
 1264|   392k|  if (~pspec->flags & G_PARAM_READABLE)
  ------------------
  |  Branch (1264:7): [True: 0, False: 392k]
  ------------------
 1265|      0|    return NULL;
 1266|       |
 1267|       |  /* if the paramspec is redirected, notify on the target */
 1268|   392k|  redirected = g_param_spec_get_redirect_target (pspec);
 1269|   392k|  if (redirected != NULL)
  ------------------
  |  Branch (1269:7): [True: 0, False: 392k]
  ------------------
 1270|      0|    return redirected;
 1271|       |
 1272|       |  /* else, notify normally */
 1273|   392k|  return pspec;
 1274|   392k|}
gobject.c:g_object_notify_queue_add:
  349|   391k|{
  350|   391k|  G_LOCK(notify_lock);
  ------------------
  |  |  135|   391k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   391k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  351|       |
  352|   391k|  g_assert (nqueue->n_pspecs < 65535);
  ------------------
  |  |  231|   391k|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   391k|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|   391k|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|   391k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   391k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   391k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   391k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   391k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 391k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   391k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   391k|   else                                         \
  |  |  |  |  |  | 1021|   391k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   391k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   391k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 391k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|   391k|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|   391k|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   391k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 391k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  353|       |
  354|   391k|  if (g_slist_find (nqueue->pspecs, pspec) == NULL)
  ------------------
  |  Branch (354:7): [True: 390k, False: 758]
  ------------------
  355|   390k|    {
  356|   390k|      nqueue->pspecs = g_slist_prepend (nqueue->pspecs, pspec);
  357|   390k|      nqueue->n_pspecs++;
  358|   390k|    }
  359|       |
  360|   391k|  G_UNLOCK(notify_lock);
  ------------------
  |  |  136|   391k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   391k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  361|   391k|}
gobject.c:g_object_notify_queue_thaw:
  307|   388k|{
  308|   388k|  GParamSpec *pspecs_mem[16], **pspecs, **free_me = NULL;
  309|   388k|  GSList *slist;
  310|   388k|  guint n_pspecs = 0;
  311|       |
  312|   388k|  g_return_if_fail (g_atomic_int_get(&object->ref_count) > 0);
  ------------------
  |  |  630|   388k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   388k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   388k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   388k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   388k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   388k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   388k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.16M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 388k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 388k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   388k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   388k|   else                                         \
  |  |  |  |  |  | 1021|   388k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   388k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   388k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 388k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   388k|      { } \
  |  |  633|   388k|    else \
  |  |  634|   388k|      { \
  |  |  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|   388k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   388k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 388k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  313|       |
  314|   388k|  G_LOCK(notify_lock);
  ------------------
  |  |  135|   388k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   388k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  315|       |
  316|       |  /* Just make sure we never get into some nasty race condition */
  317|   388k|  if (G_UNLIKELY(nqueue->freeze_count == 0)) {
  ------------------
  |  | 1025|   388k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   388k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   388k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   388k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   388k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 388k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   388k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   388k|   else                                         \
  |  |  |  | 1021|   388k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   388k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   388k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 388k]
  |  |  ------------------
  ------------------
  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|   388k|  nqueue->freeze_count--;
  325|   388k|  if (nqueue->freeze_count) {
  ------------------
  |  Branch (325:7): [True: 1.51k, False: 386k]
  ------------------
  326|  1.51k|    G_UNLOCK(notify_lock);
  ------------------
  |  |  136|  1.51k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|  1.51k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  327|  1.51k|    return;
  328|  1.51k|  }
  329|       |
  330|   386k|  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: 386k]
  ------------------
  331|       |
  332|   777k|  for (slist = nqueue->pspecs; slist; slist = slist->next)
  ------------------
  |  Branch (332:32): [True: 390k, False: 386k]
  ------------------
  333|   390k|    {
  334|   390k|      pspecs[n_pspecs++] = slist->data;
  335|   390k|    }
  336|   386k|  g_datalist_id_set_data (&object->qdata, quark_notify_queue, NULL);
  ------------------
  |  |   99|   386k|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
  337|       |
  338|   386k|  G_UNLOCK(notify_lock);
  ------------------
  |  |  136|   386k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|   386k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  339|       |
  340|   386k|  if (n_pspecs)
  ------------------
  |  Branch (340:7): [True: 386k, False: 0]
  ------------------
  341|   386k|    G_OBJECT_GET_CLASS (object)->dispatch_properties_changed (object, n_pspecs, pspecs);
  ------------------
  |  |   91|   386k|#define G_OBJECT_GET_CLASS(object)  (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  527|   386k|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|   386k|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  342|   386k|  g_free (free_me);
  343|   386k|}
gobject.c:g_object_new_internal:
 1932|  1.15M|{
 1933|  1.15M|  GObjectNotifyQueue *nqueue = NULL;
 1934|  1.15M|  GObject *object;
 1935|       |
 1936|  1.15M|  if G_UNLIKELY (CLASS_HAS_CUSTOM_CONSTRUCTOR (class))
  ------------------
  |  | 1025|  1.15M|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  1.15M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.15M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.15M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.15M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1.15M]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.15M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.15M|   else                                         \
  |  |  |  | 1021|  1.15M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.15M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.15M|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 1.15M]
  |  |  ------------------
  ------------------
 1937|      0|    return g_object_new_with_custom_constructor (class, params, n_params);
 1938|       |
 1939|  1.15M|  object = (GObject *) g_type_create_instance (class->g_type_class.g_type);
 1940|       |
 1941|  1.15M|  if (CLASS_HAS_PROPS (class))
  ------------------
  |  |  143|  1.15M|    ((class)->flags & CLASS_HAS_PROPS_FLAG)
  |  |  ------------------
  |  |  |  |  141|  1.15M|#define CLASS_HAS_PROPS_FLAG 0x1
  |  |  ------------------
  |  |  |  Branch (143:5): [True: 386k, False: 770k]
  |  |  ------------------
  ------------------
 1942|   386k|    {
 1943|   386k|      GSList *node;
 1944|       |
 1945|       |      /* This will have been setup in g_object_init() */
 1946|   386k|      nqueue = g_datalist_id_get_data (&object->qdata, quark_notify_queue);
 1947|   386k|      g_assert (nqueue != NULL);
  ------------------
  |  |  231|   386k|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   386k|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|   386k|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|   386k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   386k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   386k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   386k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   386k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 386k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   386k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   386k|   else                                         \
  |  |  |  |  |  | 1021|   386k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   386k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   386k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 386k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|   386k|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|   386k|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   386k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 386k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 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|   776k|      for (node = class->construct_properties; node; node = node->next)
  ------------------
  |  Branch (1953:48): [True: 389k, False: 386k]
  ------------------
 1954|   389k|        {
 1955|   389k|          const GValue *value;
 1956|   389k|          GParamSpec *pspec;
 1957|   389k|          guint j;
 1958|       |
 1959|   389k|          pspec = node->data;
 1960|   389k|          value = NULL; /* to silence gcc... */
 1961|       |
 1962|   389k|          for (j = 0; j < n_params; j++)
  ------------------
  |  Branch (1962:23): [True: 0, False: 389k]
  ------------------
 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|   389k|          if (value == NULL)
  ------------------
  |  Branch (1970:15): [True: 389k, False: 0]
  ------------------
 1971|   389k|            value = g_param_spec_get_default_value (pspec);
 1972|       |
 1973|   389k|          object_set_property (object, pspec, value, nqueue);
 1974|   389k|        }
 1975|   386k|    }
 1976|       |
 1977|       |  /* run 'constructed' handler if there is a custom one */
 1978|  1.15M|  if (CLASS_HAS_CUSTOM_CONSTRUCTED (class))
  ------------------
  |  |  147|  1.15M|    ((class)->constructed != g_object_constructed)
  |  |  ------------------
  |  |  |  Branch (147:5): [True: 386k, False: 770k]
  |  |  ------------------
  ------------------
 1979|   386k|    class->constructed (object);
 1980|       |
 1981|  1.15M|  if (nqueue)
  ------------------
  |  Branch (1981:7): [True: 386k, False: 770k]
  ------------------
 1982|   386k|    {
 1983|   386k|      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|   386k|      for (i = 0; i < n_params; i++)
  ------------------
  |  Branch (1989:19): [True: 0, False: 386k]
  ------------------
 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|   386k|      g_object_notify_queue_thaw (object, nqueue);
 1997|   386k|    }
 1998|       |
 1999|  1.15M|  return object;
 2000|  1.15M|}
gobject.c:object_set_property:
 1528|   389k|{
 1529|   389k|  GValue tmp_value = G_VALUE_INIT;
  ------------------
  |  |  202|   389k|#define G_VALUE_INIT  { 0, { { 0 } } }
  ------------------
 1530|   389k|  GObjectClass *class = g_type_class_peek (pspec->owner_type);
 1531|   389k|  guint param_id = PARAM_SPEC_PARAM_ID (pspec);
  ------------------
  |  |  133|   389k|#define PARAM_SPEC_PARAM_ID(pspec)		((pspec)->param_id)
  ------------------
 1532|   389k|  GParamSpec *redirect;
 1533|       |
 1534|   389k|  if (class == NULL)
  ------------------
  |  Branch (1534:7): [True: 0, False: 389k]
  ------------------
 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|   389k|  redirect = g_param_spec_get_redirect_target (pspec);
 1542|   389k|  if (redirect)
  ------------------
  |  Branch (1542:7): [True: 0, False: 389k]
  ------------------
 1543|      0|    pspec = redirect;
 1544|       |
 1545|       |  /* provide a copy to work from, convert (if necessary) and validate */
 1546|   389k|  g_value_init (&tmp_value, pspec->value_type);
 1547|   389k|  if (!g_value_transform (value, &tmp_value))
  ------------------
  |  Branch (1547:7): [True: 0, False: 389k]
  ------------------
 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|   389k|	       pspec->name,
 1550|   389k|	       g_type_name (pspec->value_type),
 1551|   389k|	       G_VALUE_TYPE_NAME (value));
 1552|   389k|  else if (g_param_value_validate (pspec, &tmp_value) && !(pspec->flags & G_PARAM_LAX_VALIDATION))
  ------------------
  |  Branch (1552:12): [True: 0, False: 389k]
  |  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|   389k|  else
 1564|   389k|    {
 1565|   389k|      class->set_property (object, param_id, &tmp_value, pspec);
 1566|       |
 1567|   389k|      if (~pspec->flags & G_PARAM_EXPLICIT_NOTIFY)
  ------------------
  |  Branch (1567:11): [True: 389k, False: 0]
  ------------------
 1568|   389k|        {
 1569|   389k|          GParamSpec *notify_pspec;
 1570|       |
 1571|   389k|          notify_pspec = get_notify_pspec (pspec);
 1572|       |
 1573|   389k|          if (notify_pspec != NULL)
  ------------------
  |  Branch (1573:15): [True: 389k, False: 0]
  ------------------
 1574|   389k|            g_object_notify_queue_add (object, nqueue, notify_pspec);
 1575|   389k|        }
 1576|   389k|    }
 1577|   389k|  g_value_unset (&tmp_value);
 1578|   389k|}
gobject.c:weak_refs_notify:
 2962|  17.5k|{
 2963|  17.5k|  WeakRefStack *wstack = data;
 2964|  17.5k|  guint i;
 2965|       |
 2966|   137k|  for (i = 0; i < wstack->n_weak_refs; i++)
  ------------------
  |  Branch (2966:15): [True: 120k, False: 17.5k]
  ------------------
 2967|   120k|    wstack->weak_refs[i].notify (wstack->weak_refs[i].data, wstack->object);
 2968|  17.5k|  g_free (wstack);
 2969|  17.5k|}
gobject.c:g_value_object_init:
 3972|   389k|{
 3973|       |  value->data[0].v_pointer = NULL;
 3974|   389k|}
gobject.c:g_value_object_free_value:
 3978|   779k|{
 3979|   779k|  if (value->data[0].v_pointer)
  ------------------
  |  Branch (3979:7): [True: 1.28k, False: 778k]
  ------------------
 3980|  1.28k|    g_object_unref (value->data[0].v_pointer);
 3981|   779k|}
gobject.c:g_value_object_copy_value:
 3986|   389k|{
 3987|   389k|  if (src_value->data[0].v_pointer)
  ------------------
  |  Branch (3987:7): [True: 0, False: 389k]
  ------------------
 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|   389k|  else
 3990|   389k|    dest_value->data[0].v_pointer = NULL;
 3991|   389k|}
gobject.c:g_value_object_peek_pointer:
 4005|  3.85k|{
 4006|  3.85k|  return value->data[0].v_pointer;
 4007|  3.85k|}

_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.32k|{
  215|  1.32k|  g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), NULL);
  ------------------
  |  |  643|  1.32k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.32k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  1.32k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.32k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.32k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.32k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.32k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.32k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.32k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.32k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.32k|   else                                         \
  |  |  |  |  |  | 1021|  1.32k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.32k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.32k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.32k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  1.32k|      { } \
  |  |  646|  1.32k|    else \
  |  |  647|  1.32k|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|  1.32k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.32k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.32k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  216|       |
  217|  1.32k|  g_atomic_int_inc ((int *)&pspec->ref_count);
  ------------------
  |  |  148|  1.32k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.32k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|  1.32k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.32k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|  1.32k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 1.32k]
  |  |  ------------------
  |  |  151|  1.32k|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|  1.32k|  }))
  ------------------
  218|       |
  219|  1.32k|  return pspec;
  220|  1.32k|}
g_param_spec_unref:
  230|  1.28k|{
  231|  1.28k|  gboolean is_zero;
  232|       |
  233|  1.28k|  g_return_if_fail (G_IS_PARAM_SPEC (pspec));
  ------------------
  |  |  630|  1.28k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.28k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.28k|      { } \
  |  |  633|  1.28k|    else \
  |  |  634|  1.28k|      { \
  |  |  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.28k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.28k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.28k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  234|       |
  235|  1.28k|  is_zero = g_atomic_int_dec_and_test ((int *)&pspec->ref_count);
  ------------------
  |  |  154|  1.28k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.28k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  155|  1.28k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.28k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  156|  1.28k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (156:13): [Folded, False: 1.28k]
  |  |  ------------------
  |  |  157|  1.28k|    __atomic_fetch_sub ((atomic), 1, __ATOMIC_SEQ_CST) == 1;                 \
  |  |  158|  1.28k|  }))
  ------------------
  236|       |
  237|  1.28k|  if (G_UNLIKELY (is_zero))
  ------------------
  |  | 1025|  1.28k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 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: 0, False: 1.28k]
  |  |  |  |  ------------------
  |  |  |  | 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 (1025:26): [True: 0, False: 1.28k]
  |  |  ------------------
  ------------------
  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.28k|}
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|   782k|{
  610|   782k|  GTypeInstance *inst = (GTypeInstance *)pspec;
  611|       |
  612|   782k|  if (inst && inst->g_class && inst->g_class->g_type == G_TYPE_PARAM_OVERRIDE)
  ------------------
  |  |  507|   782k|#define	G_TYPE_PARAM_OVERRIDE		   (g_param_spec_types[20])
  ------------------
  |  Branch (612:7): [True: 782k, False: 0]
  |  Branch (612:15): [True: 782k, False: 0]
  |  Branch (612:32): [True: 0, False: 782k]
  ------------------
  613|      0|    return ((GParamSpecOverride*)pspec)->overridden;
  614|   782k|  else
  615|   782k|    return NULL;
  616|   782k|}
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|   389k|{
  692|   389k|  g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), FALSE);
  ------------------
  |  |  643|   389k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   389k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   389k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   389k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   389k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   389k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   389k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   389k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 389k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   389k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   389k|   else                                         \
  |  |  |  |  |  | 1021|   389k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   389k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   389k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 389k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   389k|      { } \
  |  |  646|   389k|    else \
  |  |  647|   389k|      { \
  |  |  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|   389k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   389k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  693|   389k|  g_return_val_if_fail (G_IS_VALUE (value), FALSE);
  ------------------
  |  |  643|   389k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   389k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   389k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   389k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   389k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   389k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   389k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   389k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 389k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   389k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   389k|   else                                         \
  |  |  |  |  |  | 1021|   389k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   389k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   389k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 389k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   389k|      { } \
  |  |  646|   389k|    else \
  |  |  647|   389k|      { \
  |  |  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|   389k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   389k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  694|   389k|  g_return_val_if_fail (PSPEC_APPLIES_TO_VALUE (pspec, value), FALSE);
  ------------------
  |  |  643|   389k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   389k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   389k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   389k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   389k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   389k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   389k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.94M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 389k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 389k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 389k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   389k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   389k|   else                                         \
  |  |  |  |  |  | 1021|   389k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   389k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   389k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 389k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   389k|      { } \
  |  |  646|   389k|    else \
  |  |  647|   389k|      { \
  |  |  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|   389k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   389k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  695|       |
  696|   389k|  if (G_PARAM_SPEC_GET_CLASS (pspec)->value_validate)
  ------------------
  |  |   79|   389k|#define G_PARAM_SPEC_GET_CLASS(pspec)	(G_TYPE_INSTANCE_GET_CLASS ((pspec), G_TYPE_PARAM, GParamSpecClass))
  |  |  ------------------
  |  |  |  |  527|   389k|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|   389k|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (696:7): [True: 389k, False: 0]
  ------------------
  697|   389k|    {
  698|   389k|      GValue oval = *value;
  699|       |
  700|   389k|      if (G_PARAM_SPEC_GET_CLASS (pspec)->value_validate (pspec, value) ||
  ------------------
  |  |   79|   389k|#define G_PARAM_SPEC_GET_CLASS(pspec)	(G_TYPE_INSTANCE_GET_CLASS ((pspec), G_TYPE_PARAM, GParamSpecClass))
  |  |  ------------------
  |  |  |  |  527|   389k|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|   389k|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (700:11): [True: 0, False: 389k]
  ------------------
  701|   389k|	  memcmp (&oval.data, &value->data, sizeof (oval.data)))
  ------------------
  |  Branch (701:4): [True: 0, False: 389k]
  ------------------
  702|      0|	return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  703|   389k|    }
  704|       |
  705|   389k|  return FALSE;
  ------------------
  |  |  814|   389k|#define	FALSE	(0)
  ------------------
  706|   389k|}
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.87k|{
 1094|  2.87k|  GParamSpec *pspec;
 1095|  2.87k|  gchar *delim;
 1096|       |
 1097|  2.87k|  g_return_val_if_fail (pool != NULL, NULL);
  ------------------
  |  |  643|  2.87k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.87k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.87k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.87k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.87k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.87k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.87k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.87k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.87k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.87k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.87k|   else                                         \
  |  |  |  |  |  | 1021|  2.87k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.87k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.87k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.87k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.87k|      { } \
  |  |  646|  2.87k|    else \
  |  |  647|  2.87k|      { \
  |  |  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.87k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.87k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.87k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1098|  2.87k|  g_return_val_if_fail (param_name != NULL, NULL);
  ------------------
  |  |  643|  2.87k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.87k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.87k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.87k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.87k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.87k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.87k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.87k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.87k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.87k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.87k|   else                                         \
  |  |  |  |  |  | 1021|  2.87k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.87k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.87k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.87k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.87k|      { } \
  |  |  646|  2.87k|    else \
  |  |  647|  2.87k|      { \
  |  |  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.87k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.87k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.87k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1099|       |
 1100|  2.87k|  g_mutex_lock (&pool->mutex);
 1101|       |
 1102|  2.87k|  delim = pool->type_prefixing ? strchr (param_name, ':') : NULL;
  ------------------
  |  Branch (1102:11): [True: 2.87k, False: 0]
  ------------------
 1103|       |
 1104|       |  /* try quick and away, i.e. without prefix */
 1105|  2.87k|  if (!delim)
  ------------------
  |  Branch (1105:7): [True: 2.87k, False: 0]
  ------------------
 1106|  2.87k|    {
 1107|  2.87k|      pspec = param_spec_ht_lookup (pool->hash_table, param_name, owner_type, walk_ancestors);
 1108|  2.87k|      g_mutex_unlock (&pool->mutex);
 1109|       |
 1110|  2.87k|      return pspec;
 1111|  2.87k|    }
 1112|       |
 1113|       |  /* strip type prefix */
 1114|      0|  if (pool->type_prefixing && delim[1] == ':')
  ------------------
  |  Branch (1114:7): [True: 0, False: 0]
  |  Branch (1114:31): [True: 0, False: 0]
  ------------------
 1115|      0|    {
 1116|      0|      guint l = delim - param_name;
 1117|      0|      gchar stack_buffer[32], *buffer = l < 32 ? stack_buffer : g_new (gchar, l + 1);
  ------------------
  |  |  290|      0|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|      0|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      0|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      0|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      0|	  gpointer __p;						\
  |  |  |  |  239|      0|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  240|      0|	    __p = g_##func (__n);				\
  |  |  |  |  241|      0|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      0|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      0|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      0|	  else							\
  |  |  |  |  245|      0|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      0|	  __p;							\
  |  |  |  |  247|      0|	}))
  |  |  ------------------
  ------------------
  |  Branch (1117:41): [True: 0, False: 0]
  ------------------
 1118|      0|      GType type;
 1119|       |      
 1120|      0|      strncpy (buffer, param_name, delim - param_name);
 1121|      0|      buffer[l] = 0;
 1122|      0|      type = g_type_from_name (buffer);
 1123|      0|      if (l >= 32)
  ------------------
  |  Branch (1123:11): [True: 0, False: 0]
  ------------------
 1124|      0|	g_free (buffer);
 1125|      0|      if (type)		/* type==0 isn't a valid type pefix */
  ------------------
  |  Branch (1125:11): [True: 0, False: 0]
  ------------------
 1126|      0|	{
 1127|       |	  /* sanity check, these cases don't make a whole lot of sense */
 1128|      0|	  if ((!walk_ancestors && type != owner_type) || !g_type_is_a (owner_type, type))
  ------------------
  |  Branch (1128:9): [True: 0, False: 0]
  |  Branch (1128:28): [True: 0, False: 0]
  |  Branch (1128:51): [True: 0, False: 0]
  ------------------
 1129|      0|	    {
 1130|      0|	      g_mutex_unlock (&pool->mutex);
 1131|       |
 1132|      0|	      return NULL;
 1133|      0|	    }
 1134|      0|	  owner_type = type;
 1135|      0|	  param_name += l + 2;
 1136|      0|	  pspec = param_spec_ht_lookup (pool->hash_table, param_name, owner_type, walk_ancestors);
 1137|      0|	  g_mutex_unlock (&pool->mutex);
 1138|       |
 1139|      0|	  return pspec;
 1140|      0|	}
 1141|      0|    }
 1142|       |  /* malformed param_name */
 1143|       |
 1144|      0|  g_mutex_unlock (&pool->mutex);
 1145|       |
 1146|       |  return NULL;
 1147|      0|}
g_param_spec_pool_list:
 1309|     11|{
 1310|     11|  GParamSpec **pspecs, **p;
 1311|     11|  GSList **slists, *node;
 1312|     11|  gpointer data[4];
 1313|     11|  guint d, i;
 1314|     11|  int n_pspecs = 0;
 1315|       |
 1316|     11|  g_return_val_if_fail (pool != NULL, NULL);
  ------------------
  |  |  643|     11|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     11|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     11|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     11|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     11| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     11|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     11|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     11|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     11|   else                                         \
  |  |  |  |  |  | 1021|     11|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     11|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     11|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     11|      { } \
  |  |  646|     11|    else \
  |  |  647|     11|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     11|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     11|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1317|     11|  g_return_val_if_fail (owner_type > 0, NULL);
  ------------------
  |  |  643|     11|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     11|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     11|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     11|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     11| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     11|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     11|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     11|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     11|   else                                         \
  |  |  |  |  |  | 1021|     11|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     11|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     11|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     11|      { } \
  |  |  646|     11|    else \
  |  |  647|     11|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     11|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     11|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1318|     11|  g_return_val_if_fail (n_pspecs_p != NULL, NULL);
  ------------------
  |  |  643|     11|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     11|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     11|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     11|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     11| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     11|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     11|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     11|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     11|   else                                         \
  |  |  |  |  |  | 1021|     11|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     11|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     11|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     11|      { } \
  |  |  646|     11|    else \
  |  |  647|     11|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     11|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     11|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1319|       |  
 1320|     11|  g_mutex_lock (&pool->mutex);
 1321|     11|  d = g_type_depth (owner_type);
 1322|     11|  slists = g_new0 (GSList*, d);
  ------------------
  |  |  307|     11|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|     11|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|     11|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|     11|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|     11|	  gpointer __p;						\
  |  |  |  |  239|     11|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 11]
  |  |  |  |  ------------------
  |  |  |  |  240|     11|	    __p = g_##func (__n);				\
  |  |  |  |  241|     11|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 11]
  |  |  |  |  ------------------
  |  |  |  |  242|     11|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|     11|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|     11|	  else							\
  |  |  |  |  245|     11|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|     11|	  __p;							\
  |  |  |  |  247|     11|	}))
  |  |  ------------------
  ------------------
 1323|     11|  data[0] = slists;
 1324|     11|  data[1] = (gpointer) owner_type;
 1325|     11|  data[2] = pool->hash_table;
 1326|     11|  data[3] = &n_pspecs;
 1327|       |
 1328|     11|  g_hash_table_foreach (pool->hash_table,
 1329|     11|                        G_TYPE_IS_INTERFACE (owner_type) ?
  ------------------
  |  |  293|     11|#define G_TYPE_IS_INTERFACE(type)               (G_TYPE_FUNDAMENTAL (type) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   38|     11|#define G_TYPE_FUNDAMENTAL(type)	(g_type_fundamental (type))
  |  |  ------------------
  |  |               #define G_TYPE_IS_INTERFACE(type)               (G_TYPE_FUNDAMENTAL (type) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     11|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     11|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     11|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (293:49): [True: 11, False: 0]
  |  |  ------------------
  ------------------
 1330|     11|                          pool_depth_list_for_interface :
 1331|     11|                          pool_depth_list,
 1332|     11|                        &data);
 1333|       |
 1334|     11|  pspecs = g_new (GParamSpec*, n_pspecs + 1);
  ------------------
  |  |  290|     11|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|     11|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|     11|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|     11|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|     11|	  gpointer __p;						\
  |  |  |  |  239|     11|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 11]
  |  |  |  |  ------------------
  |  |  |  |  240|     11|	    __p = g_##func (__n);				\
  |  |  |  |  241|     11|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 11]
  |  |  |  |  ------------------
  |  |  |  |  242|     11|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|     11|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|     11|	  else							\
  |  |  |  |  245|     11|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|     11|	  __p;							\
  |  |  |  |  247|     11|	}))
  |  |  ------------------
  ------------------
 1335|     11|  p = pspecs;
 1336|     33|  for (i = 0; i < d; i++)
  ------------------
  |  Branch (1336:15): [True: 22, False: 11]
  ------------------
 1337|     22|    {
 1338|     22|      slists[i] = g_slist_sort (slists[i], pspec_compare_id);
 1339|     22|      for (node = slists[i]; node; node = node->next)
  ------------------
  |  Branch (1339:30): [True: 0, False: 22]
  ------------------
 1340|      0|	*p++ = node->data;
 1341|     22|      g_slist_free (slists[i]);
 1342|     22|    }
 1343|     11|  *p++ = NULL;
 1344|     11|  g_free (slists);
 1345|     11|  g_mutex_unlock (&pool->mutex);
 1346|       |
 1347|     11|  *n_pspecs_p = n_pspecs;
 1348|       |
 1349|     11|  return pspecs;
 1350|     11|}
g_param_type_register_static:
 1414|     46|{
 1415|     46|  GTypeInfo info = {
 1416|     46|    sizeof (GParamSpecClass),      /* class_size */
 1417|     46|    NULL,                          /* base_init */
 1418|     46|    NULL,                          /* base_destroy */
 1419|     46|    param_spec_generic_class_init, /* class_init */
 1420|     46|    NULL,                          /* class_destroy */
 1421|     46|    NULL,                          /* class_data */
 1422|     46|    0,                             /* instance_size */
 1423|     46|    16,                            /* n_preallocs */
 1424|     46|    NULL,                          /* instance_init */
 1425|     46|    NULL,                          /* value_table */
 1426|     46|  };
 1427|     46|  ParamSpecClassInfo *cinfo;
 1428|       |
 1429|     46|  g_return_val_if_fail (name != NULL, 0);
  ------------------
  |  |  643|     46|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     46|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     46|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     46|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     46| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     46|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     46|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     46|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 46, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     46|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     46|   else                                         \
  |  |  |  |  |  | 1021|     46|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     46|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     46|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 46, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     46|      { } \
  |  |  646|     46|    else \
  |  |  647|     46|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     46|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     46|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 46]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1430|     46|  g_return_val_if_fail (pspec_info != NULL, 0);
  ------------------
  |  |  643|     46|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     46|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     46|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     46|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     46| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     46|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     46|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     46|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 46, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     46|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     46|   else                                         \
  |  |  |  |  |  | 1021|     46|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     46|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     46|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 46, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     46|      { } \
  |  |  646|     46|    else \
  |  |  647|     46|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     46|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     46|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 46]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1431|     46|  g_return_val_if_fail (g_type_from_name (name) == 0, 0);
  ------------------
  |  |  643|     46|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     46|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     46|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     46|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     46| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     46|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     46|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     46|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 46, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     46|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     46|   else                                         \
  |  |  |  |  |  | 1021|     46|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     46|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     46|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 46, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     46|      { } \
  |  |  646|     46|    else \
  |  |  647|     46|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     46|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     46|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 46]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1432|     46|  g_return_val_if_fail (pspec_info->instance_size >= sizeof (GParamSpec), 0);
  ------------------
  |  |  643|     46|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     46|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     46|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     46|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     46| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     46|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     46|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     46|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 46, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     46|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     46|   else                                         \
  |  |  |  |  |  | 1021|     46|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     46|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     46|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 46, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     46|      { } \
  |  |  646|     46|    else \
  |  |  647|     46|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     46|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     46|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 46]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1433|     46|  g_return_val_if_fail (g_type_name (pspec_info->value_type) != NULL, 0);
  ------------------
  |  |  643|     46|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     46|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     46|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     46|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     46| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     46|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     46|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     46|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 46, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     46|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     46|   else                                         \
  |  |  |  |  |  | 1021|     46|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     46|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     46|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 46, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     46|      { } \
  |  |  646|     46|    else \
  |  |  647|     46|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     46|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     46|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 46]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1434|       |  /* default: g_return_val_if_fail (pspec_info->value_set_default != NULL, 0); */
 1435|       |  /* optional: g_return_val_if_fail (pspec_info->value_validate != NULL, 0); */
 1436|       |  /* default: g_return_val_if_fail (pspec_info->values_cmp != NULL, 0); */
 1437|       |
 1438|     46|  info.instance_size = pspec_info->instance_size;
 1439|     46|  info.n_preallocs = pspec_info->n_preallocs;
 1440|     46|  info.instance_init = (GInstanceInitFunc) pspec_info->instance_init;
 1441|     46|  cinfo = g_new (ParamSpecClassInfo, 1);
  ------------------
  |  |  290|     46|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|     46|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     46|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|     46|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|     46|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|     46|	  gpointer __p;						\
  |  |  |  |  239|     46|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 46]
  |  |  |  |  ------------------
  |  |  |  |  240|     46|	    __p = g_##func (__n);				\
  |  |  |  |  241|     46|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 46, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|     46|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|     46|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|     46|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 46]
  |  |  |  |  |  Branch (242:26): [True: 46, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|     46|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|     46|	  else							\
  |  |  |  |  245|     46|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|     46|	  __p;							\
  |  |  |  |  247|     46|	}))
  |  |  ------------------
  ------------------
 1442|     46|  cinfo->value_type = pspec_info->value_type;
 1443|     46|  cinfo->finalize = pspec_info->finalize;
 1444|     46|  cinfo->value_set_default = pspec_info->value_set_default ? pspec_info->value_set_default : default_value_set_default;
  ------------------
  |  Branch (1444:30): [True: 46, False: 0]
  ------------------
 1445|     46|  cinfo->value_validate = pspec_info->value_validate;
 1446|     46|  cinfo->values_cmp = pspec_info->values_cmp ? pspec_info->values_cmp : default_values_cmp;
  ------------------
  |  Branch (1446:23): [True: 46, False: 0]
  ------------------
 1447|     46|  info.class_data = cinfo;
 1448|       |
 1449|     46|  return g_type_register_static (G_TYPE_PARAM, name, &info, 0);
  ------------------
  |  |  172|     46|#define G_TYPE_PARAM			G_TYPE_MAKE_FUNDAMENTAL (19)
  |  |  ------------------
  |  |  |  |  221|     46|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|     46|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1450|     46|}
g_value_get_param:
 1524|  2.57k|{
 1525|  2.57k|  g_return_val_if_fail (G_VALUE_HOLDS_PARAM (value), NULL);
  ------------------
  |  |  643|  2.57k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.57k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  2.57k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.57k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.57k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.57k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.57k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  12.8k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.57k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 2.57k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.57k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.57k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.57k|   else                                         \
  |  |  |  |  |  | 1021|  2.57k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.57k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.57k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.57k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  2.57k|      { } \
  |  |  646|  2.57k|    else \
  |  |  647|  2.57k|      { \
  |  |  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.57k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.57k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.57k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1526|       |
 1527|  2.57k|  return value->data[0].v_pointer;
 1528|  2.57k|}
g_param_spec_get_default_value:
 1562|   389k|{
 1563|   389k|  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|   389k|  if (g_once_init_enter (&priv->default_value.g_type))
  ------------------
  |  |  257|   389k|  (G_GNUC_EXTENSION ({                                               \
  |  |  ------------------
  |  |  |  |   54|   389k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  |  Branch (257:3): [True: 6, False: 389k]
  |  |  ------------------
  |  |  258|   389k|    G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer));       \
  |  |  ------------------
  |  |  |  |  765|   389k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  259|   389k|    (void) (0 ? (gpointer) *(location) : NULL);                      \
  |  |  ------------------
  |  |  |  Branch (259:13): [Folded, False: 389k]
  |  |  ------------------
  |  |  260|   389k|    (!g_atomic_pointer_get (location) &&                             \
  |  |  ------------------
  |  |  |  |  113|   779k|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   389k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|   779k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|   389k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|   779k|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   389k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|   779k|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|   389k|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|   779k|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|   779k|    gapg_temp_newval;                                                      \
  |  |  |  |  119|   779k|  }))
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 6, False: 389k]
  |  |  ------------------
  |  |  261|   389k|     g_once_init_enter (location));                                  \
  |  |  ------------------
  |  |  |  Branch (261:6): [True: 6, False: 0]
  |  |  ------------------
  |  |  262|   389k|  }))
  ------------------
 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|   389k|  return &priv->default_value;
 1592|   389k|}
g_param_spec_get_name_quark:
 1606|   391k|{
 1607|   391k|  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|   391k|  return priv->name_quark;
 1615|   391k|}
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|   781k|{
   96|   781k|  return &G_STRUCT_MEMBER (GParamSpecPrivate, pspec, g_param_private_offset);
  ------------------
  |  |  862|   781k|    (*(member_type*) G_STRUCT_MEMBER_P ((struct_p), (struct_offset)))
  |  |  ------------------
  |  |  |  |  860|   781k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
   97|   781k|}
gparam.c:value_param_free_value:
  805|  1.28k|{
  806|  1.28k|  if (value->data[0].v_pointer)
  ------------------
  |  Branch (806:7): [True: 1.28k, False: 0]
  ------------------
  807|  1.28k|    g_param_spec_unref (value->data[0].v_pointer);
  808|  1.28k|}
gparam.c:value_param_collect_value:
  842|  1.28k|{
  843|  1.28k|  if (collect_values[0].v_pointer)
  ------------------
  |  Branch (843:7): [True: 1.28k, False: 0]
  ------------------
  844|  1.28k|    {
  845|  1.28k|      GParamSpec *param = collect_values[0].v_pointer;
  846|       |
  847|  1.28k|      if (param->g_type_instance.g_class == NULL)
  ------------------
  |  Branch (847:11): [True: 0, False: 1.28k]
  ------------------
  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.28k|      else if (!g_value_type_compatible (G_PARAM_SPEC_TYPE (param), G_VALUE_TYPE (value)))
  ------------------
  |  |   89|  1.28k|#define G_PARAM_SPEC_TYPE(pspec)	(G_TYPE_FROM_INSTANCE (pspec))
  |  |  ------------------
  |  |  |  |  602|  1.28k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|  1.28k|#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.28k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  |  Branch (852:16): [True: 0, False: 1.28k]
  ------------------
  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.28k|      value->data[0].v_pointer = g_param_spec_ref (param);
  860|  1.28k|    }
  861|      0|  else
  862|      0|    value->data[0].v_pointer = NULL;
  863|       |
  864|  1.28k|  return NULL;
  865|  1.28k|}
gparam.c:param_spec_pool_hash:
  906|  8.53k|{
  907|  8.53k|  const GParamSpec *key = key_spec;
  908|  8.53k|  const gchar *p;
  909|  8.53k|  guint h = key->owner_type;
  910|       |
  911|  46.3k|  for (p = key->name; *p; p++)
  ------------------
  |  Branch (911:23): [True: 37.7k, False: 8.53k]
  ------------------
  912|  37.7k|    h = (h << 5) - h + *p;
  913|       |
  914|  8.53k|  return h;
  915|  8.53k|}
gparam.c:param_spec_pool_equals:
  920|  2.80k|{
  921|  2.80k|  const GParamSpec *key1 = key_spec_1;
  922|  2.80k|  const GParamSpec *key2 = key_spec_2;
  923|       |
  924|  2.80k|  return (key1->owner_type == key2->owner_type &&
  ------------------
  |  Branch (924:11): [True: 2.80k, False: 0]
  ------------------
  925|  2.80k|	  strcmp (key1->name, key2->name) == 0);
  ------------------
  |  Branch (925:4): [True: 2.80k, False: 0]
  ------------------
  926|  2.80k|}
gparam.c:param_spec_ht_lookup:
 1026|  2.87k|{
 1027|  2.87k|  GParamSpec key, *pspec;
 1028|       |
 1029|  2.87k|  key.owner_type = owner_type;
 1030|  2.87k|  key.name = (gchar*) param_name;
 1031|  2.87k|  if (walk_ancestors)
  ------------------
  |  Branch (1031:7): [True: 2.83k, False: 35]
  ------------------
 1032|  2.83k|    do
 1033|  8.46k|      {
 1034|  8.46k|	pspec = g_hash_table_lookup (hash_table, &key);
 1035|  8.46k|	if (pspec)
  ------------------
  |  Branch (1035:6): [True: 2.80k, False: 5.66k]
  ------------------
 1036|  2.80k|	  return pspec;
 1037|  5.66k|	key.owner_type = g_type_parent (key.owner_type);
 1038|  5.66k|      }
 1039|  5.66k|    while (key.owner_type);
  ------------------
  |  Branch (1039:12): [True: 5.63k, False: 34]
  ------------------
 1040|     35|  else
 1041|     35|    pspec = g_hash_table_lookup (hash_table, &key);
 1042|       |
 1043|     69|  if (!pspec && !is_canonical (param_name))
  ------------------
  |  Branch (1043:7): [True: 69, False: 0]
  |  Branch (1043:17): [True: 0, False: 69]
  ------------------
 1044|      0|    {
 1045|      0|      gchar *canonical;
 1046|       |
 1047|      0|      canonical = g_strdup (key.name);
 1048|      0|      canonicalize_key (canonical);
 1049|       |
 1050|       |      /* try canonicalized form */
 1051|      0|      key.name = canonical;
 1052|      0|      key.owner_type = owner_type;
 1053|       |
 1054|      0|      if (walk_ancestors)
  ------------------
  |  Branch (1054:11): [True: 0, False: 0]
  ------------------
 1055|      0|        do
 1056|      0|          {
 1057|      0|            pspec = g_hash_table_lookup (hash_table, &key);
 1058|      0|            if (pspec)
  ------------------
  |  Branch (1058:17): [True: 0, False: 0]
  ------------------
 1059|      0|              {
 1060|      0|                g_free (canonical);
 1061|      0|                return pspec;
 1062|      0|              }
 1063|      0|            key.owner_type = g_type_parent (key.owner_type);
 1064|      0|          }
 1065|      0|        while (key.owner_type);
  ------------------
  |  Branch (1065:16): [True: 0, False: 0]
  ------------------
 1066|      0|      else
 1067|      0|        pspec = g_hash_table_lookup (hash_table, &key);
 1068|       |
 1069|      0|      g_free (canonical);
 1070|      0|    }
 1071|       |
 1072|     69|  return pspec;
 1073|     69|}
gparam.c:pool_depth_list_for_interface:
 1276|    363|{
 1277|    363|  GParamSpec *pspec = value;
 1278|    363|  gpointer *data = user_data;
 1279|    363|  GSList **slists = data[0];
 1280|    363|  GType owner_type = (GType) data[1];
 1281|    363|  GHashTable *ht = data[2];
 1282|    363|  int *count = data[3];
 1283|       |
 1284|    363|  if (pspec->owner_type == owner_type &&
  ------------------
  |  Branch (1284:7): [True: 0, False: 363]
  ------------------
 1285|      0|      should_list_pspec (pspec, owner_type, ht))
  ------------------
  |  Branch (1285:7): [True: 0, False: 0]
  ------------------
 1286|      0|    {
 1287|      0|      slists[0] = g_slist_prepend (slists[0], pspec);
 1288|      0|      *count = *count + 1;
 1289|      0|    }
 1290|    363|}
gparam.c:param_spec_generic_class_init:
 1370|      5|{
 1371|      5|  GParamSpecClass *class = g_class;
 1372|      5|  ParamSpecClassInfo *info = class_data;
 1373|       |
 1374|      5|  class->value_type = info->value_type;
 1375|      5|  if (info->finalize)
  ------------------
  |  Branch (1375:7): [True: 1, False: 4]
  ------------------
 1376|      1|    class->finalize = info->finalize;			/* optional */
 1377|      5|  class->value_set_default = info->value_set_default;
 1378|      5|  if (info->value_validate)
  ------------------
  |  Branch (1378:7): [True: 5, False: 0]
  ------------------
 1379|      5|    class->value_validate = info->value_validate;	/* optional */
 1380|      5|  class->values_cmp = info->values_cmp;
 1381|      5|  g_free (class_data);
 1382|      5|}

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

g_signal_is_valid_name:
  386|      5|{
  387|       |  /* FIXME: We allow this, against our own documentation (the leading `-` is
  388|       |   * invalid), because GTK has historically used this. */
  389|      5|  if (g_str_equal (name, "-gtk-private-changed"))
  ------------------
  |  Branch (389:7): [True: 0, False: 5]
  ------------------
  390|      0|    return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  391|       |
  392|      5|  return g_param_spec_is_valid_name (name);
  393|      5|}
_g_signal_init:
  926|      2|{
  927|      2|  SIGNAL_LOCK ();
  ------------------
  |  |  328|      2|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|      2|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      2|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  928|      2|  if (!g_n_signal_nodes)
  ------------------
  |  Branch (928:7): [True: 2, False: 0]
  ------------------
  929|      2|    {
  930|       |      /* setup handler list binary searchable array hash table (in german, that'd be one word ;) */
  931|      2|      g_handler_list_bsa_ht = g_hash_table_new (g_direct_hash, NULL);
  932|      2|      g_signal_key_bsa = g_bsearch_array_create (&g_signal_key_bconfig);
  933|       |      
  934|       |      /* invalid (0) signal_id */
  935|      2|      g_n_signal_nodes = 1;
  936|      2|      g_signal_nodes = g_renew (SignalNode*, g_signal_nodes, g_n_signal_nodes);
  ------------------
  |  |  321|      2|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|      2|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|      2|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|      2|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|      2|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|      2|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  254|      2|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|      2|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  256|      2|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      2|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      2|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (256:14): [True: 0, False: 2]
  |  |  |  |  |  Branch (256:26): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  257|      2|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|      2|	  else							\
  |  |  |  |  259|      2|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|      2|	  __p;							\
  |  |  |  |  261|      2|	}))
  |  |  ------------------
  ------------------
  937|      2|      g_signal_nodes[0] = NULL;
  938|      2|      g_handlers = g_hash_table_new (handler_hash, handler_equal);
  939|      2|    }
  940|      2|  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      2|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      2|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      2|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  941|      2|}
g_signal_new:
 1504|      5|{
 1505|      5|  va_list args;
 1506|      5|  guint signal_id;
 1507|       |
 1508|      5|  g_return_val_if_fail (signal_name != NULL, 0);
  ------------------
  |  |  643|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      5|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      5|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      5| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      5|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      5|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      5|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      5|   else                                         \
  |  |  |  |  |  | 1021|      5|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      5|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      5|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      5|      { } \
  |  |  646|      5|    else \
  |  |  647|      5|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      5|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1509|       |  
 1510|      5|  va_start (args, n_params);
 1511|       |
 1512|      5|  signal_id = g_signal_new_valist (signal_name, itype, signal_flags,
 1513|      5|                                   class_offset ? g_signal_type_cclosure_new (itype, class_offset) : NULL,
  ------------------
  |  Branch (1513:36): [True: 4, False: 1]
  ------------------
 1514|      5|				   accumulator, accu_data, c_marshaller,
 1515|      5|                                   return_type, n_params, args);
 1516|       |
 1517|      5|  va_end (args);
 1518|       |
 1519|      5|  return signal_id;
 1520|      5|}
g_signal_newv:
 1701|      5|{
 1702|      5|  const gchar *name;
 1703|      5|  gchar *signal_name_copy = NULL;
 1704|      5|  guint signal_id, i;
 1705|      5|  SignalNode *node;
 1706|      5|  GSignalCMarshaller builtin_c_marshaller;
 1707|      5|  GSignalCVaMarshaller builtin_va_marshaller;
 1708|      5|  GSignalCVaMarshaller va_marshaller;
 1709|       |  
 1710|      5|  g_return_val_if_fail (signal_name != NULL, 0);
  ------------------
  |  |  643|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      5|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      5|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      5| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      5|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      5|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      5|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      5|   else                                         \
  |  |  |  |  |  | 1021|      5|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      5|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      5|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      5|      { } \
  |  |  646|      5|    else \
  |  |  647|      5|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      5|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1711|      5|  g_return_val_if_fail (g_signal_is_valid_name (signal_name), 0);
  ------------------
  |  |  643|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      5|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      5|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      5| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      5|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      5|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      5|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      5|   else                                         \
  |  |  |  |  |  | 1021|      5|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      5|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      5|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      5|      { } \
  |  |  646|      5|    else \
  |  |  647|      5|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      5|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1712|      5|  g_return_val_if_fail (G_TYPE_IS_INSTANTIATABLE (itype) || G_TYPE_IS_INTERFACE (itype), 0);
  ------------------
  |  |  643|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      5|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      5|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      5| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      5|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     10|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      5|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      5|   else                                         \
  |  |  |  |  |  | 1021|      5|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      5|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      5|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      5|      { } \
  |  |  646|      5|    else \
  |  |  647|      5|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      5|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1713|      5|  if (n_params)
  ------------------
  |  Branch (1713:7): [True: 4, False: 1]
  ------------------
 1714|      5|    g_return_val_if_fail (param_types != NULL, 0);
  ------------------
  |  |  643|      4|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      4|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      4|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      4|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      4|   else                                         \
  |  |  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      4|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      4|      { } \
  |  |  646|      4|    else \
  |  |  647|      4|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      4|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      4|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1715|      5|  g_return_val_if_fail ((return_type & G_SIGNAL_TYPE_STATIC_SCOPE) == 0, 0);
  ------------------
  |  |  643|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      5|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      5|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      5| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      5|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      5|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      5|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      5|   else                                         \
  |  |  |  |  |  | 1021|      5|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      5|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      5|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      5|      { } \
  |  |  646|      5|    else \
  |  |  647|      5|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      5|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1716|      5|  if (return_type == (G_TYPE_NONE & ~G_SIGNAL_TYPE_STATIC_SCOPE))
  ------------------
  |  |   62|      5|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      5|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      5|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                if (return_type == (G_TYPE_NONE & ~G_SIGNAL_TYPE_STATIC_SCOPE))
  ------------------
  |  |  213|      5|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  ------------------
  |  |  |  | 2353|      5|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  ------------------
  ------------------
  |  Branch (1716:7): [True: 5, False: 0]
  ------------------
 1717|      5|    g_return_val_if_fail (accumulator == NULL, 0);
  ------------------
  |  |  643|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      5|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      5|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      5| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      5|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      5|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      5|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      5|   else                                         \
  |  |  |  |  |  | 1021|      5|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      5|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      5|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      5|      { } \
  |  |  646|      5|    else \
  |  |  647|      5|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      5|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1718|      5|  if (!accumulator)
  ------------------
  |  Branch (1718:7): [True: 5, False: 0]
  ------------------
 1719|      5|    g_return_val_if_fail (accu_data == NULL, 0);
  ------------------
  |  |  643|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      5|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      5|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      5| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      5|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      5|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      5|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      5|   else                                         \
  |  |  |  |  |  | 1021|      5|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      5|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      5|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      5|      { } \
  |  |  646|      5|    else \
  |  |  647|      5|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      5|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1720|      5|  g_return_val_if_fail ((signal_flags & G_SIGNAL_ACCUMULATOR_FIRST_RUN) == 0, 0);
  ------------------
  |  |  643|      5|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      5|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      5|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      5| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      5|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      5|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      5|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      5|   else                                         \
  |  |  |  |  |  | 1021|      5|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      5|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      5|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      5|      { } \
  |  |  646|      5|    else \
  |  |  647|      5|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      5|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1721|       |
 1722|      5|  if (!is_canonical (signal_name))
  ------------------
  |  Branch (1722:7): [True: 0, False: 5]
  ------------------
 1723|      0|    {
 1724|      0|      signal_name_copy = g_strdup (signal_name);
 1725|      0|      canonicalize_key (signal_name_copy);
 1726|      0|      name = signal_name_copy;
 1727|      0|    }
 1728|      5|  else
 1729|      5|    {
 1730|      5|      name = signal_name;
 1731|      5|    }
 1732|       |  
 1733|      5|  SIGNAL_LOCK ();
  ------------------
  |  |  328|      5|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|      5|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      5|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1734|       |  
 1735|      5|  signal_id = signal_id_lookup (name, itype);
 1736|      5|  node = LOOKUP_SIGNAL_NODE (signal_id);
 1737|      5|  if (node && !node->destroyed)
  ------------------
  |  Branch (1737:7): [True: 0, False: 5]
  |  Branch (1737:15): [True: 0, False: 0]
  ------------------
 1738|      0|    {
 1739|      0|      g_warning (G_STRLOC ": signal \"%s\" already exists in the '%s' %s",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (347:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1740|      0|                 name,
 1741|      0|                 type_debug_name (node->itype),
 1742|      0|                 G_TYPE_IS_INTERFACE (node->itype) ? "interface" : "class ancestry");
 1743|      0|      g_free (signal_name_copy);
 1744|      0|      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      0|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1745|      0|      return 0;
 1746|      0|    }
 1747|      5|  if (node && node->itype != itype)
  ------------------
  |  Branch (1747:7): [True: 0, False: 5]
  |  Branch (1747:15): [True: 0, False: 0]
  ------------------
 1748|      0|    {
 1749|      0|      g_warning (G_STRLOC ": signal \"%s\" for type '%s' was previously created for type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1750|      0|                 name,
 1751|      0|                 type_debug_name (itype),
 1752|      0|                 type_debug_name (node->itype));
 1753|      0|      g_free (signal_name_copy);
 1754|      0|      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      0|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1755|      0|      return 0;
 1756|      0|    }
 1757|      9|  for (i = 0; i < n_params; i++)
  ------------------
  |  Branch (1757:15): [True: 4, False: 5]
  ------------------
 1758|      4|    if (!G_TYPE_IS_VALUE (param_types[i] & ~G_SIGNAL_TYPE_STATIC_SCOPE))
  ------------------
  |  |   41|      4|#define	G_TYPE_IS_VALUE(type)		(g_type_check_is_value_type (type))
  ------------------
  |  Branch (1758:9): [True: 0, False: 4]
  ------------------
 1759|      0|      {
 1760|      0|	g_warning (G_STRLOC ": parameter %d of type '%s' for signal \"%s::%s\" is not a value type",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1761|      0|		   i + 1, type_debug_name (param_types[i]), type_debug_name (itype), name);
 1762|      0|	g_free (signal_name_copy);
 1763|      0|	SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      0|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1764|      0|	return 0;
 1765|      0|      }
 1766|      5|  if (return_type != G_TYPE_NONE && !G_TYPE_IS_VALUE (return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE))
  ------------------
  |  |   62|      5|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|     10|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      5|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                if (return_type != G_TYPE_NONE && !G_TYPE_IS_VALUE (return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE))
  ------------------
  |  |   41|      0|#define	G_TYPE_IS_VALUE(type)		(g_type_check_is_value_type (type))
  ------------------
  |  Branch (1766:7): [True: 0, False: 5]
  |  Branch (1766:37): [True: 0, False: 0]
  ------------------
 1767|      0|    {
 1768|      0|      g_warning (G_STRLOC ": return value of type '%s' for signal \"%s::%s\" is not a value type",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 1769|      0|		 type_debug_name (return_type), type_debug_name (itype), name);
 1770|      0|      g_free (signal_name_copy);
 1771|      0|      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      0|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      0|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      0|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1772|      0|      return 0;
 1773|      0|    }
 1774|       |  
 1775|       |  /* setup permanent portion of signal node */
 1776|      5|  if (!node)
  ------------------
  |  Branch (1776:7): [True: 5, False: 0]
  ------------------
 1777|      5|    {
 1778|      5|      SignalKey key;
 1779|       |      
 1780|      5|      signal_id = g_n_signal_nodes++;
 1781|      5|      node = g_new (SignalNode, 1);
  ------------------
  |  |  290|      5|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|      5|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      5|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      5|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      5|	  gpointer __p;						\
  |  |  |  |  239|      5|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  |  |  240|      5|	    __p = g_##func (__n);				\
  |  |  |  |  241|      5|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      5|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      5|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      5|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 5]
  |  |  |  |  |  Branch (242:26): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      5|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      5|	  else							\
  |  |  |  |  245|      5|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      5|	  __p;							\
  |  |  |  |  247|      5|	}))
  |  |  ------------------
  ------------------
 1782|      5|      node->signal_id = signal_id;
 1783|      5|      g_signal_nodes = g_renew (SignalNode*, g_signal_nodes, g_n_signal_nodes);
  ------------------
  |  |  321|      5|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|      5|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|      5|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|      5|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|      5|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|      5|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  |  |  254|      5|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|      5|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  |  |  256|      5|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (256:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (256:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  257|      5|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|      5|	  else							\
  |  |  |  |  259|      5|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|      5|	  __p;							\
  |  |  |  |  261|      5|	}))
  |  |  ------------------
  ------------------
 1784|      5|      g_signal_nodes[signal_id] = node;
 1785|      5|      node->itype = itype;
 1786|      5|      key.itype = itype;
 1787|      5|      key.signal_id = signal_id;
 1788|      5|      node->name = g_intern_string (name);
 1789|      5|      key.quark = g_quark_from_string (name);
 1790|      5|      g_signal_key_bsa = g_bsearch_array_insert (g_signal_key_bsa, &g_signal_key_bconfig, &key);
 1791|       |
 1792|      5|      TRACE(GOBJECT_SIGNAL_NEW(signal_id, name, itype));
 1793|      5|    }
 1794|      5|  node->destroyed = FALSE;
  ------------------
  |  |  814|      5|#define	FALSE	(0)
  ------------------
 1795|       |
 1796|       |  /* setup reinitializable portion */
 1797|      5|  node->single_va_closure_is_valid = FALSE;
  ------------------
  |  |  814|      5|#define	FALSE	(0)
  ------------------
 1798|      5|  node->flags = signal_flags & G_SIGNAL_FLAGS_MASK;
  ------------------
  |  |  149|      5|#define G_SIGNAL_FLAGS_MASK  0x1ff
  ------------------
 1799|      5|  node->n_params = n_params;
 1800|      5|  node->param_types = g_memdup2 (param_types, sizeof (GType) * n_params);
 1801|      5|  node->return_type = return_type;
 1802|      5|  node->class_closure_bsa = NULL;
 1803|      5|  if (accumulator)
  ------------------
  |  Branch (1803:7): [True: 0, False: 5]
  ------------------
 1804|      0|    {
 1805|      0|      node->accumulator = g_new (SignalAccumulator, 1);
  ------------------
  |  |  290|      0|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|      0|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      0|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      0|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      0|	  gpointer __p;						\
  |  |  |  |  239|      0|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  240|      0|	    __p = g_##func (__n);				\
  |  |  |  |  241|      0|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      0|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      0|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      0|	  else							\
  |  |  |  |  245|      0|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      0|	  __p;							\
  |  |  |  |  247|      0|	}))
  |  |  ------------------
  ------------------
 1806|      0|      node->accumulator->func = accumulator;
 1807|      0|      node->accumulator->data = accu_data;
 1808|      0|    }
 1809|      5|  else
 1810|      5|    node->accumulator = NULL;
 1811|       |
 1812|      5|  builtin_c_marshaller = NULL;
 1813|      5|  builtin_va_marshaller = NULL;
 1814|       |
 1815|       |  /* Pick up built-in va marshallers for standard types, and
 1816|       |     instead of generic marshaller if no marshaller specified */
 1817|      5|  if (n_params == 0 && return_type == G_TYPE_NONE)
  ------------------
  |  |   62|      1|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1817:7): [True: 1, False: 4]
  |  Branch (1817:24): [True: 1, False: 0]
  ------------------
 1818|      1|    {
 1819|      1|      builtin_c_marshaller = g_cclosure_marshal_VOID__VOID;
 1820|      1|      builtin_va_marshaller = g_cclosure_marshal_VOID__VOIDv;
 1821|      1|    }
 1822|      4|  else if (n_params == 1 && return_type == G_TYPE_NONE)
  ------------------
  |  |   62|      4|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1822:12): [True: 4, False: 0]
  |  Branch (1822:29): [True: 4, False: 0]
  ------------------
 1823|      4|    {
 1824|      4|#define ADD_CHECK(__type__) \
 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
 1826|      4|	{                                                                \
 1827|      4|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
 1828|      4|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
 1829|      4|	}
 1830|       |
 1831|      4|      if (0) {}
  ------------------
  |  Branch (1831:11): [Folded, False: 4]
  ------------------
 1832|      4|      ADD_CHECK (BOOLEAN)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |   88|      4|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1833|      4|      ADD_CHECK (CHAR)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |   76|      4|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1834|      4|      ADD_CHECK (UCHAR)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |   82|      4|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1835|      4|      ADD_CHECK (INT)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |   94|      4|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1836|      4|      ADD_CHECK (UINT)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  100|      4|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1837|      4|      ADD_CHECK (LONG)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  106|      4|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1838|      4|      ADD_CHECK (ULONG)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  112|      4|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1839|      4|      ADD_CHECK (ENUM)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  130|      4|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1840|      4|      ADD_CHECK (FLAGS)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  136|      4|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1841|      4|      ADD_CHECK (FLOAT)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  142|      4|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1842|      4|      ADD_CHECK (DOUBLE)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  148|      4|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1843|      4|      ADD_CHECK (STRING)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  154|      4|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 4]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1844|      4|      ADD_CHECK (PARAM)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      4|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      4|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  172|      4|#define G_TYPE_PARAM			G_TYPE_MAKE_FUNDAMENTAL (19)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      4|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      4|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 1, False: 3]
  |  |  ------------------
  |  | 1826|      4|	{                                                                \
  |  | 1827|      1|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      1|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      1|	}
  ------------------
 1845|      4|      ADD_CHECK (BOXED)
  ------------------
  |  | 1825|      4|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      3|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      3|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  166|      3|#define G_TYPE_BOXED			G_TYPE_MAKE_FUNDAMENTAL (18)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      3|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      3|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 3]
  |  |  ------------------
  |  | 1826|      3|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1846|      3|      ADD_CHECK (POINTER)
  ------------------
  |  | 1825|      3|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      3|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      3|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  160|      3|#define G_TYPE_POINTER			G_TYPE_MAKE_FUNDAMENTAL (17)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      3|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      3|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 3]
  |  |  ------------------
  |  | 1826|      3|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1847|      3|      ADD_CHECK (OBJECT)
  ------------------
  |  | 1825|      3|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      3|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      3|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  178|      3|#define G_TYPE_OBJECT			G_TYPE_MAKE_FUNDAMENTAL (20)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      3|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      3|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 3, False: 0]
  |  |  ------------------
  |  | 1826|      3|	{                                                                \
  |  | 1827|      3|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      3|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      3|	}
  ------------------
 1848|      3|      ADD_CHECK (VARIANT)
  ------------------
  |  | 1825|      3|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      0|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      0|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                     else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  196|      0|#define	G_TYPE_VARIANT                  G_TYPE_MAKE_FUNDAMENTAL (21)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      0|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      0|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 0]
  |  |  ------------------
  |  | 1826|      0|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1849|      4|    }
 1850|       |
 1851|      5|  if (c_marshaller == NULL)
  ------------------
  |  Branch (1851:7): [True: 1, False: 4]
  ------------------
 1852|      1|    {
 1853|      1|      if (builtin_c_marshaller)
  ------------------
  |  Branch (1853:11): [True: 1, False: 0]
  ------------------
 1854|      1|        {
 1855|      1|	  c_marshaller = builtin_c_marshaller;
 1856|      1|          va_marshaller = builtin_va_marshaller;
 1857|      1|        }
 1858|      0|      else
 1859|      0|	{
 1860|      0|	  c_marshaller = g_cclosure_marshal_generic;
 1861|      0|	  va_marshaller = g_cclosure_marshal_generic_va;
 1862|      0|	}
 1863|      1|    }
 1864|      4|  else
 1865|      4|    va_marshaller = NULL;
 1866|       |
 1867|      5|  node->c_marshaller = c_marshaller;
 1868|      5|  node->va_marshaller = va_marshaller;
 1869|      5|  node->emission_hooks = NULL;
 1870|      5|  if (class_closure)
  ------------------
  |  Branch (1870:7): [True: 4, False: 1]
  ------------------
 1871|      4|    signal_add_class_closure (node, 0, class_closure);
 1872|       |
 1873|      5|  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      5|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      5|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      5|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1874|       |
 1875|      5|  g_free (signal_name_copy);
 1876|       |
 1877|      5|  return signal_id;
 1878|      5|}
g_signal_new_valist:
 1960|      5|{
 1961|       |  /* Somewhat arbitrarily reserve 200 bytes. That should cover the majority
 1962|       |   * of cases where n_params is small and still be small enough for what we
 1963|       |   * want to put on the stack. */
 1964|      5|  GType param_types_stack[200 / sizeof (GType)];
 1965|      5|  GType *param_types_heap = NULL;
 1966|      5|  GType *param_types;
 1967|      5|  guint i;
 1968|      5|  guint signal_id;
 1969|       |
 1970|      5|  param_types = param_types_stack;
 1971|      5|  if (n_params > 0)
  ------------------
  |  Branch (1971:7): [True: 4, False: 1]
  ------------------
 1972|      4|    {
 1973|      4|      if (G_UNLIKELY (n_params > G_N_ELEMENTS (param_types_stack)))
  ------------------
  |  | 1025|      4|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      4| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      4|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      4|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      4|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 1019|      4|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      4|   else                                         \
  |  |  |  | 1021|      4|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      4|   _g_boolean_var_;                             \
  |  |  |  | 1023|      4|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 1974|      0|        {
 1975|      0|          param_types_heap = g_new (GType, n_params);
  ------------------
  |  |  290|      0|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|      0|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      0|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      0|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      0|	  gpointer __p;						\
  |  |  |  |  239|      0|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  240|      0|	    __p = g_##func (__n);				\
  |  |  |  |  241|      0|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      0|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      0|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      0|	  else							\
  |  |  |  |  245|      0|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      0|	  __p;							\
  |  |  |  |  247|      0|	}))
  |  |  ------------------
  ------------------
 1976|      0|          param_types = param_types_heap;
 1977|      0|        }
 1978|       |
 1979|      8|      for (i = 0; i < n_params; i++)
  ------------------
  |  Branch (1979:19): [True: 4, False: 4]
  ------------------
 1980|      4|        param_types[i] = va_arg (args, GType);
 1981|      4|    }
 1982|       |
 1983|      5|  signal_id = g_signal_newv (signal_name, itype, signal_flags,
 1984|      5|                             class_closure, accumulator, accu_data, c_marshaller,
 1985|      5|                             return_type, n_params, param_types);
 1986|      5|  g_free (param_types_heap);
 1987|       |
 1988|      5|  return signal_id;
 1989|      5|}
g_signal_connect_data:
 2564|  3.03k|{
 2565|  3.03k|  guint signal_id;
 2566|  3.03k|  gulong handler_seq_no = 0;
 2567|  3.03k|  GQuark detail = 0;
 2568|  3.03k|  GType itype;
 2569|  3.03k|  gboolean swapped, after;
 2570|       |  
 2571|  3.03k|  g_return_val_if_fail (G_TYPE_CHECK_INSTANCE (instance), 0);
  ------------------
  |  |  643|  3.03k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  3.03k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.03k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.03k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.03k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.03k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.03k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.03k|   else                                         \
  |  |  |  |  |  | 1021|  3.03k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.03k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.03k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.03k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  3.03k|      { } \
  |  |  646|  3.03k|    else \
  |  |  647|  3.03k|      { \
  |  |  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.03k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2572|  3.03k|  g_return_val_if_fail (detailed_signal != NULL, 0);
  ------------------
  |  |  643|  3.03k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  3.03k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.03k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.03k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.03k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.03k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.03k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.03k|   else                                         \
  |  |  |  |  |  | 1021|  3.03k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.03k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.03k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.03k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  3.03k|      { } \
  |  |  646|  3.03k|    else \
  |  |  647|  3.03k|      { \
  |  |  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.03k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2573|  3.03k|  g_return_val_if_fail (c_handler != NULL, 0);
  ------------------
  |  |  643|  3.03k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  3.03k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.03k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.03k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.03k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.03k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.03k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.03k|   else                                         \
  |  |  |  |  |  | 1021|  3.03k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.03k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.03k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.03k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  3.03k|      { } \
  |  |  646|  3.03k|    else \
  |  |  647|  3.03k|      { \
  |  |  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.03k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2574|       |
 2575|  3.03k|  swapped = (connect_flags & G_CONNECT_SWAPPED) != FALSE;
  ------------------
  |  |  814|  3.03k|#define	FALSE	(0)
  ------------------
 2576|  3.03k|  after = (connect_flags & G_CONNECT_AFTER) != FALSE;
  ------------------
  |  |  814|  3.03k|#define	FALSE	(0)
  ------------------
 2577|       |
 2578|  3.03k|  SIGNAL_LOCK ();
  ------------------
  |  |  328|  3.03k|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|  3.03k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  3.03k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2579|  3.03k|  itype = G_TYPE_FROM_INSTANCE (instance);
  ------------------
  |  |  602|  3.03k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|  3.03k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
 2580|  3.03k|  signal_id = signal_parse_name (detailed_signal, itype, &detail, TRUE);
  ------------------
  |  |  818|  3.03k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  3.03k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2581|  3.03k|  if (signal_id)
  ------------------
  |  Branch (2581:7): [True: 3.03k, False: 0]
  ------------------
 2582|  3.03k|    {
 2583|  3.03k|      SignalNode *node = LOOKUP_SIGNAL_NODE (signal_id);
 2584|       |
 2585|  3.03k|      node_check_deprecated (node);
 2586|       |
 2587|  3.03k|      if (detail && !(node->flags & G_SIGNAL_DETAILED))
  ------------------
  |  Branch (2587:11): [True: 3.03k, False: 0]
  |  Branch (2587:21): [True: 0, False: 3.03k]
  ------------------
 2588|      0|	g_warning ("%s: signal '%s' does not support details", G_STRLOC, detailed_signal);
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 2589|  3.03k|      else if (!g_type_is_a (itype, node->itype))
  ------------------
  |  Branch (2589:16): [True: 0, False: 3.03k]
  ------------------
 2590|      0|        g_warning ("%s: signal '%s' is invalid for instance '%p' of type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 2591|  3.03k|                   G_STRLOC, detailed_signal, instance, g_type_name (itype));
 2592|  3.03k|      else
 2593|  3.03k|	{
 2594|  3.03k|	  Handler *handler = handler_new (signal_id, instance, after);
 2595|       |
 2596|  3.03k|          if (G_TYPE_IS_OBJECT (node->itype))
  ------------------
  |  |   47|  3.03k|#define G_TYPE_IS_OBJECT(type)      (G_TYPE_FUNDAMENTAL (type) == G_TYPE_OBJECT)
  |  |  ------------------
  |  |  |  |   38|  3.03k|#define G_TYPE_FUNDAMENTAL(type)	(g_type_fundamental (type))
  |  |  ------------------
  |  |               #define G_TYPE_IS_OBJECT(type)      (G_TYPE_FUNDAMENTAL (type) == G_TYPE_OBJECT)
  |  |  ------------------
  |  |  |  |  178|  3.03k|#define G_TYPE_OBJECT			G_TYPE_MAKE_FUNDAMENTAL (20)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|  3.03k|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|  3.03k|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (47:37): [True: 3.03k, False: 0]
  |  |  ------------------
  ------------------
 2597|  3.03k|            _g_object_set_has_signal_handler ((GObject *)instance);
 2598|       |
 2599|  3.03k|	  handler_seq_no = handler->sequential_number;
 2600|  3.03k|	  handler->detail = detail;
 2601|  3.03k|	  handler->closure = g_closure_ref ((swapped ? g_cclosure_new_swap : g_cclosure_new) (c_handler, data, destroy_data));
  ------------------
  |  Branch (2601:39): [True: 0, False: 3.03k]
  ------------------
 2602|  3.03k|	  g_closure_sink (handler->closure);
 2603|  3.03k|	  handler_insert (signal_id, instance, handler);
 2604|  3.03k|	  if (node->c_marshaller && G_CLOSURE_NEEDS_MARSHAL (handler->closure))
  ------------------
  |  |   39|  3.03k|#define	G_CLOSURE_NEEDS_MARSHAL(closure) (((GClosure*) (closure))->marshal == NULL)
  |  |  ------------------
  |  |  |  Branch (39:42): [True: 3.03k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2604:8): [True: 3.03k, False: 0]
  ------------------
 2605|  3.03k|	    {
 2606|  3.03k|	      g_closure_set_marshal (handler->closure, node->c_marshaller);
 2607|  3.03k|	      if (node->va_marshaller)
  ------------------
  |  Branch (2607:12): [True: 3.03k, False: 0]
  ------------------
 2608|  3.03k|		_g_closure_set_va_marshal (handler->closure, node->va_marshaller);
 2609|  3.03k|	    }
 2610|  3.03k|        }
 2611|  3.03k|    }
 2612|      0|  else
 2613|      0|    g_warning ("%s: signal '%s' is invalid for instance '%p' of type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 2614|  3.03k|               G_STRLOC, detailed_signal, instance, g_type_name (itype));
 2615|  3.03k|  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  3.03k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  3.03k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  3.03k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2616|       |
 2617|  3.03k|  return handler_seq_no;
 2618|  3.03k|}
g_signal_handlers_destroy:
 2772|  2.31M|{
 2773|  2.31M|  GBSearchArray *hlbsa;
 2774|       |  
 2775|  2.31M|  g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance));
  ------------------
  |  |  630|  2.31M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  2.31M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  2.31M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  2.31M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  2.31M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  2.31M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  2.31M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  2.31M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2.31M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  2.31M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  2.31M|   else                                         \
  |  |  |  |  |  | 1021|  2.31M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  2.31M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  2.31M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 2.31M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  2.31M|      { } \
  |  |  633|  2.31M|    else \
  |  |  634|  2.31M|      { \
  |  |  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.31M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  2.31M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2.31M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2776|       |  
 2777|  2.31M|  SIGNAL_LOCK ();
  ------------------
  |  |  328|  2.31M|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|  2.31M|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  2.31M|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2778|  2.31M|  hlbsa = g_hash_table_lookup (g_handler_list_bsa_ht, instance);
 2779|  2.31M|  if (hlbsa)
  ------------------
  |  Branch (2779:7): [True: 758, False: 2.31M]
  ------------------
 2780|    758|    {
 2781|    758|      guint i;
 2782|       |      
 2783|       |      /* reentrancy caution, delete instance trace first */
 2784|    758|      g_hash_table_remove (g_handler_list_bsa_ht, instance);
 2785|       |      
 2786|  1.51k|      for (i = 0; i < hlbsa->n_nodes; i++)
  ------------------
  |  Branch (2786:19): [True: 758, False: 758]
  ------------------
 2787|    758|        {
 2788|    758|          HandlerList *hlist = g_bsearch_array_get_nth (hlbsa, &g_signal_hlbsa_bconfig, i);
 2789|    758|          Handler *handler = hlist->handlers;
 2790|       |	  
 2791|  3.79k|          while (handler)
  ------------------
  |  Branch (2791:18): [True: 3.03k, False: 758]
  ------------------
 2792|  3.03k|            {
 2793|  3.03k|              Handler *tmp = handler;
 2794|       |	      
 2795|  3.03k|              handler = tmp->next;
 2796|  3.03k|              tmp->block_count = 1;
 2797|       |              /* cruel unlink, this works because _all_ handlers vanish */
 2798|  3.03k|              tmp->next = NULL;
 2799|  3.03k|              tmp->prev = tmp;
 2800|  3.03k|              if (tmp->sequential_number)
  ------------------
  |  Branch (2800:19): [True: 3.03k, False: 0]
  ------------------
 2801|  3.03k|		{
 2802|  3.03k|                  g_hash_table_remove (g_handlers, tmp);
 2803|  3.03k|		  remove_invalid_closure_notify (tmp, instance);
 2804|  3.03k|		  tmp->sequential_number = 0;
 2805|  3.03k|		  handler_unref_R (0, NULL, tmp);
 2806|  3.03k|		}
 2807|  3.03k|            }
 2808|    758|        }
 2809|    758|      g_bsearch_array_free (hlbsa, &g_signal_hlbsa_bconfig);
 2810|    758|    }
 2811|  2.31M|  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  2.31M|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  2.31M|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  2.31M|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2812|  2.31M|}
g_signal_emit_valist:
 3269|   391k|{
 3270|   391k|  GValue *instance_and_params;
 3271|   391k|  GType signal_return_type;
 3272|   391k|  GValue *param_values;
 3273|   391k|  SignalNode *node;
 3274|   391k|  guint i, n_params;
 3275|       |
 3276|   391k|  g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance));
  ------------------
  |  |  630|   391k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   391k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   391k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   391k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   391k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   391k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   391k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   391k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 391k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   391k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   391k|   else                                         \
  |  |  |  |  |  | 1021|   391k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   391k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   391k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 391k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   391k|      { } \
  |  |  633|   391k|    else \
  |  |  634|   391k|      { \
  |  |  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|   391k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   391k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 391k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3277|   391k|  g_return_if_fail (signal_id > 0);
  ------------------
  |  |  630|   391k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   391k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   391k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   391k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   391k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   391k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   391k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   391k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 391k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   391k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   391k|   else                                         \
  |  |  |  |  |  | 1021|   391k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   391k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   391k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 391k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   391k|      { } \
  |  |  633|   391k|    else \
  |  |  634|   391k|      { \
  |  |  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|   391k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   391k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 391k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3278|       |
 3279|   391k|  SIGNAL_LOCK ();
  ------------------
  |  |  328|   391k|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|   391k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|   391k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3280|   391k|  node = LOOKUP_SIGNAL_NODE (signal_id);
 3281|   391k|  if (!node || !g_type_is_a (G_TYPE_FROM_INSTANCE (instance), node->itype))
  ------------------
  |  |  602|   391k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|   391k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
  |  Branch (3281:7): [True: 0, False: 391k]
  |  Branch (3281:16): [True: 0, False: 391k]
  ------------------
 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|   391k|#ifndef G_DISABLE_CHECKS
 3288|   391k|  if (detail && !(node->flags & G_SIGNAL_DETAILED))
  ------------------
  |  Branch (3288:7): [True: 391k, False: 0]
  |  Branch (3288:17): [True: 0, False: 391k]
  ------------------
 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|   391k|#endif  /* !G_DISABLE_CHECKS */
 3295|       |
 3296|   391k|  if (!node->single_va_closure_is_valid)
  ------------------
  |  Branch (3296:7): [True: 1, False: 391k]
  ------------------
 3297|      1|    node_update_single_va_closure (node);
 3298|       |
 3299|   391k|  if (node->single_va_closure != NULL)
  ------------------
  |  Branch (3299:7): [True: 391k, False: 0]
  ------------------
 3300|   391k|    {
 3301|   391k|      HandlerList* hlist;
 3302|   391k|      Handler *fastpath_handler = NULL;
 3303|   391k|      Handler *l;
 3304|   391k|      GClosure *closure = NULL;
 3305|   391k|      gboolean fastpath = TRUE;
  ------------------
  |  |  818|   391k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   391k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3306|   391k|      GSignalFlags run_type = G_SIGNAL_RUN_FIRST;
 3307|       |
 3308|   391k|      if (node->single_va_closure != SINGLE_VA_CLOSURE_EMPTY_MAGIC &&
  ------------------
  |  |  250|   391k|#define	SINGLE_VA_CLOSURE_EMPTY_MAGIC GINT_TO_POINTER(1)	/* indicates single_va_closure is valid but empty */
  |  |  ------------------
  |  |  |  |  101|   783k|#define GINT_TO_POINTER(i)	((gpointer) (glong) (i))
  |  |  ------------------
  ------------------
  |  Branch (3308:11): [True: 391k, False: 0]
  ------------------
 3309|   391k|	  !_g_closure_is_void (node->single_va_closure, instance))
  ------------------
  |  Branch (3309:4): [True: 0, False: 391k]
  ------------------
 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|   391k|      if (_g_object_has_signal_handler ((GObject *)instance))
  ------------------
  |  Branch (3324:11): [True: 5.83k, False: 386k]
  ------------------
 3325|  5.83k|        hlist = handler_list_lookup (node->signal_id, instance);
 3326|   386k|      else
 3327|   386k|        hlist = NULL;
 3328|       |
 3329|   413k|      for (l = hlist ? hlist->handlers : NULL; fastpath && l != NULL; l = l->next)
  ------------------
  |  Branch (3329:16): [True: 5.83k, False: 386k]
  |  Branch (3329:48): [True: 413k, False: 0]
  |  Branch (3329:60): [True: 22.7k, False: 390k]
  ------------------
 3330|  22.7k|	{
 3331|  22.7k|	  if (!l->block_count &&
  ------------------
  |  Branch (3331:8): [True: 22.7k, False: 0]
  ------------------
 3332|  22.7k|	      (!l->detail || l->detail == detail))
  ------------------
  |  Branch (3332:9): [True: 0, False: 22.7k]
  |  Branch (3332:23): [True: 2.57k, False: 20.1k]
  ------------------
 3333|  2.57k|	    {
 3334|  2.57k|	      if (closure != NULL || !_g_closure_supports_invoke_va (l->closure))
  ------------------
  |  Branch (3334:12): [True: 1.28k, False: 1.28k]
  |  Branch (3334:31): [True: 0, False: 1.28k]
  ------------------
 3335|  1.28k|		{
 3336|  1.28k|		  fastpath = FALSE;
  ------------------
  |  |  814|  1.28k|#define	FALSE	(0)
  ------------------
 3337|  1.28k|		  break;
 3338|  1.28k|		}
 3339|  1.28k|	      else
 3340|  1.28k|		{
 3341|  1.28k|                  fastpath_handler = l;
 3342|  1.28k|		  closure = l->closure;
 3343|  1.28k|		  if (l->after)
  ------------------
  |  Branch (3343:9): [True: 0, False: 1.28k]
  ------------------
 3344|      0|		    run_type = G_SIGNAL_RUN_LAST;
 3345|  1.28k|		  else
 3346|  1.28k|		    run_type = G_SIGNAL_RUN_FIRST;
 3347|  1.28k|		}
 3348|  2.57k|	    }
 3349|  22.7k|	}
 3350|       |
 3351|   391k|      if (fastpath && closure == NULL && node->return_type == G_TYPE_NONE)
  ------------------
  |  |   62|   390k|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|   390k|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|   390k|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3351:11): [True: 390k, False: 1.28k]
  |  Branch (3351:23): [True: 390k, False: 0]
  |  Branch (3351:42): [True: 390k, False: 0]
  ------------------
 3352|   390k|	{
 3353|   390k|	  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|   390k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|   390k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|   390k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3354|   390k|	  return;
 3355|   390k|	}
 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.28k|      if (closure != NULL && (node->flags & (G_SIGNAL_NO_RECURSE)) != 0)
  ------------------
  |  Branch (3359:11): [True: 1.28k, False: 0]
  |  Branch (3359:30): [True: 1.28k, False: 0]
  ------------------
 3360|  1.28k|	fastpath = FALSE;
  ------------------
  |  |  814|  1.28k|#define	FALSE	(0)
  ------------------
 3361|       |      
 3362|  1.28k|      if (fastpath)
  ------------------
  |  Branch (3362:11): [True: 0, False: 1.28k]
  ------------------
 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.28k|    }
 3461|  1.28k|  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  1.28k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  1.28k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  1.28k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3462|       |
 3463|  1.28k|  n_params = node->n_params;
 3464|  1.28k|  signal_return_type = node->return_type;
 3465|  1.28k|  instance_and_params = g_alloca (sizeof (GValue) * (n_params + 1));
  ------------------
  |  |   91|  1.28k|#define g_alloca(size)		 alloca (size)
  ------------------
 3466|  1.28k|  memset (instance_and_params, 0, sizeof (GValue) * (n_params + 1));
 3467|  1.28k|  param_values = instance_and_params + 1;
 3468|       |
 3469|  2.57k|  for (i = 0; i < node->n_params; i++)
  ------------------
  |  Branch (3469:15): [True: 1.28k, False: 1.28k]
  ------------------
 3470|  1.28k|    {
 3471|  1.28k|      gchar *error;
 3472|  1.28k|      GType ptype = node->param_types[i] & ~G_SIGNAL_TYPE_STATIC_SCOPE;
  ------------------
  |  |  213|  1.28k|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  ------------------
  |  |  |  | 2353|  1.28k|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  ------------------
  ------------------
 3473|  1.28k|      gboolean static_scope = node->param_types[i] & G_SIGNAL_TYPE_STATIC_SCOPE;
  ------------------
  |  |  213|  1.28k|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  ------------------
  |  |  |  | 2353|  1.28k|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  ------------------
  ------------------
 3474|       |
 3475|  1.28k|      G_VALUE_COLLECT_INIT (param_values + i, ptype,
  ------------------
  |  |   88|  1.28k|#define G_VALUE_COLLECT_INIT(value, _value_type, var_args, flags, __error)		\
  |  |  ------------------
  |  |  |  |  874|  1.28k|#define G_STMT_START  do
  |  |  ------------------
  |  |   89|  1.28k|G_STMT_START {										\
  |  |   90|  1.28k|  GValue *g_vci_val = (value);								\
  |  |   91|  2.57k|  guint g_vci_flags = (flags);								\
  |  |  ------------------
  |  |  |  Branch (91:24): [True: 0, False: 1.28k]
  |  |  ------------------
  |  |   92|  1.28k|  GTypeValueTable *g_vci_vtab = g_type_value_table_peek (_value_type);			\
  |  |   93|  1.28k|  const gchar *g_vci_collect_format = g_vci_vtab->collect_format;					\
  |  |   94|  1.28k|  GTypeCValue g_vci_cvalues[G_VALUE_COLLECT_FORMAT_MAX_LENGTH] = { { 0, }, };		\
  |  |   95|  1.28k|  guint g_vci_n_values = 0;									\
  |  |   96|  1.28k|                                                                                        \
  |  |   97|  1.28k|  g_vci_val->g_type = _value_type;		/* value_meminit() from gvalue.c */		\
  |  |   98|  2.57k|  while (*g_vci_collect_format)								\
  |  |  ------------------
  |  |  |  Branch (98:10): [True: 1.28k, False: 1.28k]
  |  |  ------------------
  |  |   99|  1.28k|    {											\
  |  |  100|  1.28k|      GTypeCValue *g_vci_cvalue = g_vci_cvalues + g_vci_n_values++;					\
  |  |  101|  1.28k|                                                                                        \
  |  |  102|  1.28k|      switch (*g_vci_collect_format++)							\
  |  |  103|  1.28k|	{										\
  |  |  104|      0|	case G_VALUE_COLLECT_INT:							\
  |  |  ------------------
  |  |  |  Branch (104:2): [True: 0, False: 1.28k]
  |  |  ------------------
  |  |  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.28k]
  |  |  ------------------
  |  |  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.28k]
  |  |  ------------------
  |  |  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.28k]
  |  |  ------------------
  |  |  114|      0|	  g_vci_cvalue->v_double = va_arg ((var_args), gdouble);				\
  |  |  115|      0|	  break;									\
  |  |  116|  1.28k|	case G_VALUE_COLLECT_POINTER:							\
  |  |  ------------------
  |  |  |  Branch (116:2): [True: 1.28k, False: 0]
  |  |  ------------------
  |  |  117|  1.28k|	  g_vci_cvalue->v_pointer = va_arg ((var_args), gpointer);				\
  |  |  118|  1.28k|	  break;									\
  |  |  119|      0|	default:									\
  |  |  ------------------
  |  |  |  Branch (119:2): [True: 0, False: 1.28k]
  |  |  ------------------
  |  |  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.28k|	}										\
  |  |  122|  1.28k|    }											\
  |  |  123|  1.28k|  *(__error) = g_vci_vtab->collect_value (g_vci_val,						\
  |  |  124|  1.28k|				       g_vci_n_values,					\
  |  |  125|  1.28k|				       g_vci_cvalues,					\
  |  |  126|  1.28k|				       g_vci_flags);						\
  |  |  127|  1.28k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.28k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.28k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3476|  1.28k|			    var_args,
 3477|  1.28k|			    static_scope ? G_VALUE_NOCOPY_CONTENTS : 0,
 3478|  1.28k|			    &error);
 3479|  1.28k|      if (error)
  ------------------
  |  Branch (3479:11): [True: 0, False: 1.28k]
  ------------------
 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.28k|    }
 3493|       |
 3494|  1.28k|  instance_and_params->g_type = 0;
 3495|  1.28k|  g_value_init_from_instance (instance_and_params, instance);
 3496|  1.28k|  if (signal_return_type == G_TYPE_NONE)
  ------------------
  |  |   62|  1.28k|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|  1.28k|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|  1.28k|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3496:7): [True: 1.28k, False: 0]
  ------------------
 3497|  1.28k|    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.57k|  for (i = 0; i < n_params; i++)
  ------------------
  |  Branch (3525:15): [True: 1.28k, False: 1.28k]
  ------------------
 3526|  1.28k|    g_value_unset (param_values + i);
 3527|  1.28k|  g_value_unset (instance_and_params);
 3528|  1.28k|}
g_signal_emit:
 3549|   391k|{
 3550|   391k|  va_list var_args;
 3551|       |
 3552|   391k|  va_start (var_args, detail);
 3553|   391k|  g_signal_emit_valist (instance, signal_id, detail, var_args);
 3554|       |  va_end (var_args);
 3555|   391k|}
gsignal.c:signal_key_cmp:
  915|  39.4k|{
  916|  39.4k|  const SignalKey *key1 = node1, *key2 = node2;
  917|       |  
  918|  39.4k|  if (key1->itype == key2->itype)
  ------------------
  |  Branch (918:7): [True: 12.1k, False: 27.3k]
  ------------------
  919|  12.1k|    return G_BSEARCH_ARRAY_CMP (key1->quark, key2->quark);
  ------------------
  |  |   34|  12.1k|#define G_BSEARCH_ARRAY_CMP(v1,v2) ((v1) > (v2) ? +1 : (v1) == (v2) ? 0 : -1)
  |  |  ------------------
  |  |  |  Branch (34:37): [True: 3, False: 12.1k]
  |  |  |  Branch (34:56): [True: 3.03k, False: 9.10k]
  |  |  ------------------
  ------------------
  920|  27.3k|  else
  921|  27.3k|    return G_BSEARCH_ARRAY_CMP (key1->itype, key2->itype);
  ------------------
  |  |   34|  27.3k|#define G_BSEARCH_ARRAY_CMP(v1,v2) ((v1) > (v2) ? +1 : (v1) == (v2) ? 0 : -1)
  |  |  ------------------
  |  |  |  Branch (34:37): [True: 15.1k, False: 12.1k]
  |  |  |  Branch (34:56): [True: 0, False: 12.1k]
  |  |  ------------------
  ------------------
  922|  39.4k|}
gsignal.c:handler_hash:
  517|  6.06k|{
  518|  6.06k|  return (guint)((Handler*)key)->sequential_number;
  519|  6.06k|}
gsignal.c:handler_equal:
  523|  3.03k|{
  524|  3.03k|  Handler *ha = (Handler *)a;
  525|  3.03k|  Handler *hb = (Handler *)b;
  526|  3.03k|  return (ha->sequential_number == hb->sequential_number) &&
  ------------------
  |  Branch (526:10): [True: 3.03k, False: 1]
  ------------------
  527|  3.03k|      (ha->instance  == hb->instance);
  ------------------
  |  Branch (527:7): [True: 3.03k, False: 0]
  ------------------
  528|  3.03k|}
gsignal.c:LOOKUP_SIGNAL_NODE:
  338|   394k|{
  339|   394k|  if (signal_id < g_n_signal_nodes)
  ------------------
  |  Branch (339:7): [True: 394k, False: 0]
  ------------------
  340|   394k|    return g_signal_nodes[signal_id];
  341|      0|  else
  342|      0|    return NULL;
  343|   394k|}
gsignal.c:emission_find:
  889|  1.28k|{
  890|  1.28k|  Emission *emission;
  891|       |  
  892|  1.28k|  for (emission = g_emissions; emission; emission = emission->next)
  ------------------
  |  Branch (892:32): [True: 0, False: 1.28k]
  ------------------
  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.28k|  return NULL;
  898|  1.28k|}
gsignal.c:signal_parse_name:
 1146|  3.03k|{
 1147|  3.03k|  const gchar *colon = strchr (name, ':');
 1148|  3.03k|  guint signal_id;
 1149|       |  
 1150|  3.03k|  if (!colon)
  ------------------
  |  Branch (1150:7): [True: 0, False: 3.03k]
  ------------------
 1151|      0|    {
 1152|      0|      signal_id = signal_id_lookup (name, itype);
 1153|      0|      if (signal_id && detail_p)
  ------------------
  |  Branch (1153:11): [True: 0, False: 0]
  |  Branch (1153:24): [True: 0, False: 0]
  ------------------
 1154|      0|	*detail_p = 0;
 1155|      0|    }
 1156|  3.03k|  else if (colon[1] == ':')
  ------------------
  |  Branch (1156:12): [True: 3.03k, False: 0]
  ------------------
 1157|  3.03k|    {
 1158|  3.03k|      gchar buffer[32];
 1159|  3.03k|      guint l = colon - name;
 1160|       |      
 1161|  3.03k|      if (colon[2] == '\0')
  ------------------
  |  Branch (1161:11): [True: 0, False: 3.03k]
  ------------------
 1162|      0|        return 0;
 1163|       |
 1164|  3.03k|      if (l < 32)
  ------------------
  |  Branch (1164:11): [True: 3.03k, False: 0]
  ------------------
 1165|  3.03k|	{
 1166|  3.03k|	  memcpy (buffer, name, l);
 1167|  3.03k|	  buffer[l] = 0;
 1168|  3.03k|	  signal_id = signal_id_lookup (buffer, itype);
 1169|  3.03k|	}
 1170|      0|      else
 1171|      0|	{
 1172|      0|	  gchar *signal = g_new (gchar, l + 1);
  ------------------
  |  |  290|      0|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|      0|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      0|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      0|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      0|	  gpointer __p;						\
  |  |  |  |  239|      0|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  240|      0|	    __p = g_##func (__n);				\
  |  |  |  |  241|      0|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      0|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 0]
  |  |  |  |  |  Branch (242:26): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      0|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      0|	  else							\
  |  |  |  |  245|      0|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      0|	  __p;							\
  |  |  |  |  247|      0|	}))
  |  |  ------------------
  ------------------
 1173|       |	  
 1174|      0|	  memcpy (signal, name, l);
 1175|      0|	  signal[l] = 0;
 1176|      0|	  signal_id = signal_id_lookup (signal, itype);
 1177|      0|	  g_free (signal);
 1178|      0|	}
 1179|       |      
 1180|  3.03k|      if (signal_id && detail_p)
  ------------------
  |  Branch (1180:11): [True: 3.03k, False: 0]
  |  Branch (1180:24): [True: 3.03k, False: 0]
  ------------------
 1181|  3.03k|        *detail_p = (force_quark ? g_quark_from_string : g_quark_try_string) (colon + 2);
  ------------------
  |  Branch (1181:22): [True: 3.03k, False: 0]
  ------------------
 1182|  3.03k|    }
 1183|      0|  else
 1184|      0|    signal_id = 0;
 1185|  3.03k|  return signal_id;
 1186|  3.03k|}
gsignal.c:signal_id_lookup:
  398|  3.03k|{
  399|  3.03k|  GQuark quark;
  400|  3.03k|  GType *ifaces, type = itype;
  401|  3.03k|  SignalKey key;
  402|  3.03k|  guint n_ifaces;
  403|       |
  404|  3.03k|  quark = g_quark_try_string (name);
  405|  3.03k|  key.quark = quark;
  406|       |
  407|       |  /* try looking up signals for this type and its ancestors */
  408|  3.03k|  do
  409|  13.6k|    {
  410|  13.6k|      SignalKey *signal_key;
  411|       |      
  412|  13.6k|      key.itype = type;
  413|  13.6k|      signal_key = g_bsearch_array_lookup (g_signal_key_bsa, &g_signal_key_bconfig, &key);
  ------------------
  |  |   97|  13.6k|    g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 0)
  ------------------
  414|       |      
  415|  13.6k|      if (signal_key)
  ------------------
  |  Branch (415:11): [True: 3.03k, False: 10.6k]
  ------------------
  416|  3.03k|	return signal_key->signal_id;
  417|       |      
  418|  10.6k|      type = g_type_parent (type);
  419|  10.6k|    }
  420|  10.6k|  while (type);
  ------------------
  |  Branch (420:10): [True: 10.6k, False: 5]
  ------------------
  421|       |
  422|       |  /* no luck, try interfaces it exports */
  423|      5|  ifaces = g_type_interfaces (itype, &n_ifaces);
  424|      9|  while (n_ifaces--)
  ------------------
  |  Branch (424:10): [True: 4, False: 5]
  ------------------
  425|      4|    {
  426|      4|      SignalKey *signal_key;
  427|       |
  428|      4|      key.itype = ifaces[n_ifaces];
  429|      4|      signal_key = g_bsearch_array_lookup (g_signal_key_bsa, &g_signal_key_bconfig, &key);
  ------------------
  |  |   97|      4|    g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 0)
  ------------------
  430|       |
  431|      4|      if (signal_key)
  ------------------
  |  Branch (431:11): [True: 0, False: 4]
  ------------------
  432|      0|	{
  433|      0|	  g_free (ifaces);
  434|      0|	  return signal_key->signal_id;
  435|      0|	}
  436|      4|    }
  437|      5|  g_free (ifaces);
  438|       |
  439|       |  /* If the @name is non-canonical, try again. This is the slow path — people
  440|       |   * should use canonical names in their queries if they want performance. */
  441|      5|  if (!is_canonical (name))
  ------------------
  |  Branch (441:7): [True: 0, False: 5]
  ------------------
  442|      0|    {
  443|      0|      guint signal_id;
  444|      0|      gchar *name_copy = g_strdup (name);
  445|      0|      canonicalize_key (name_copy);
  446|       |
  447|      0|      signal_id = signal_id_lookup (name_copy, itype);
  448|       |
  449|      0|      g_free (name_copy);
  450|       |
  451|      0|      return signal_id;
  452|      0|    }
  453|       |
  454|      5|  return 0;
  455|      5|}
gsignal.c:is_canonical:
  366|     10|{
  367|       |  return (strchr (key, '_') == NULL);
  368|     10|}
gsignal.c:signal_add_class_closure:
 1639|      4|{
 1640|      4|  ClassClosure key;
 1641|       |
 1642|      4|  node->single_va_closure_is_valid = FALSE;
  ------------------
  |  |  814|      4|#define	FALSE	(0)
  ------------------
 1643|       |
 1644|      4|  if (!node->class_closure_bsa)
  ------------------
  |  Branch (1644:7): [True: 4, False: 0]
  ------------------
 1645|      4|    node->class_closure_bsa = g_bsearch_array_create (&g_class_closure_bconfig);
 1646|      4|  key.instance_type = itype;
 1647|      4|  key.closure = g_closure_ref (closure);
 1648|      4|  node->class_closure_bsa = g_bsearch_array_insert (node->class_closure_bsa,
 1649|      4|						    &g_class_closure_bconfig,
 1650|      4|						    &key);
 1651|      4|  g_closure_sink (closure);
 1652|      4|  if (node->c_marshaller && closure && G_CLOSURE_NEEDS_MARSHAL (closure))
  ------------------
  |  |   39|      4|#define	G_CLOSURE_NEEDS_MARSHAL(closure) (((GClosure*) (closure))->marshal == NULL)
  |  |  ------------------
  |  |  |  Branch (39:42): [True: 4, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1652:7): [True: 4, False: 0]
  |  Branch (1652:29): [True: 4, False: 0]
  ------------------
 1653|      4|    {
 1654|      4|      g_closure_set_marshal (closure, node->c_marshaller);
 1655|      4|      if (node->va_marshaller)
  ------------------
  |  Branch (1655:11): [True: 1, False: 3]
  ------------------
 1656|      1|	_g_closure_set_va_marshal (closure, node->va_marshaller);
 1657|      4|    }
 1658|      4|}
gsignal.c:signal_find_class_closure:
 1595|  1.28k|{
 1596|  1.28k|  GBSearchArray *bsa = node->class_closure_bsa;
 1597|  1.28k|  ClassClosure *cc;
 1598|       |
 1599|  1.28k|  if (bsa)
  ------------------
  |  Branch (1599:7): [True: 1.28k, False: 0]
  ------------------
 1600|  1.28k|    {
 1601|  1.28k|      ClassClosure key;
 1602|       |
 1603|       |      /* cc->instance_type is 0 for default closure */
 1604|       |
 1605|  1.28k|      if (g_bsearch_array_get_n_nodes (bsa) == 1)
  ------------------
  |  |   91|  1.28k|#define g_bsearch_array_get_n_nodes(barray)     (((GBSearchArray*) (barray))->n_nodes)
  ------------------
  |  Branch (1605:11): [True: 1.28k, False: 0]
  ------------------
 1606|  1.28k|        {
 1607|  1.28k|          cc = g_bsearch_array_get_nth (bsa, &g_class_closure_bconfig, 0);
 1608|  1.28k|          if (cc && cc->instance_type == 0) /* check for default closure */
  ------------------
  |  Branch (1608:15): [True: 1.28k, False: 0]
  |  Branch (1608:21): [True: 1.28k, False: 0]
  ------------------
 1609|  1.28k|            return cc;
 1610|  1.28k|        }
 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.28k|}
gsignal.c:handler_new:
  685|  3.03k|{
  686|  3.03k|  Handler *handler = g_slice_new (Handler);
  ------------------
  |  |   46|  3.03k|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  ------------------
  687|  3.03k|#ifndef G_DISABLE_CHECKS
  688|  3.03k|  if (g_handler_sequential_number < 1)
  ------------------
  |  Branch (688:7): [True: 0, False: 3.03k]
  ------------------
  689|  3.03k|    g_error (G_STRLOC ": handler id overflow, %s", REPORT_BUG);
  ------------------
  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  337|      0|                        for (;;) ;                   \
  |  |  338|      0|                      } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  690|  3.03k|#endif
  691|       |  
  692|  3.03k|  handler->sequential_number = g_handler_sequential_number++;
  693|  3.03k|  handler->prev = NULL;
  694|  3.03k|  handler->next = NULL;
  695|  3.03k|  handler->detail = 0;
  696|  3.03k|  handler->signal_id = signal_id;
  697|  3.03k|  handler->instance = instance;
  698|  3.03k|  handler->ref_count = 1;
  699|  3.03k|  handler->block_count = 0;
  700|  3.03k|  handler->after = after != FALSE;
  ------------------
  |  |  814|  3.03k|#define	FALSE	(0)
  ------------------
  701|  3.03k|  handler->closure = NULL;
  702|  3.03k|  handler->has_invalid_closure_notify = 0;
  703|       |
  704|  3.03k|  g_hash_table_add (g_handlers, handler);
  705|       |  
  706|  3.03k|  return handler;
  707|  3.03k|}
gsignal.c:handler_insert:
  779|  3.03k|{
  780|  3.03k|  HandlerList *hlist;
  781|       |  
  782|  3.03k|  g_assert (handler->prev == NULL && handler->next == NULL); /* paranoid */
  ------------------
  |  |  231|  3.03k|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|  3.03k|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|  3.03k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.03k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.03k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  9.09k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.03k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.03k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.03k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.03k|   else                                         \
  |  |  |  |  |  | 1021|  3.03k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.03k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.03k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 3.03k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|  3.03k|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|  3.03k|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  783|       |
  784|  3.03k|  hlist = handler_list_ensure (signal_id, instance);
  785|  3.03k|  if (!hlist->handlers)
  ------------------
  |  Branch (785:7): [True: 758, False: 2.27k]
  ------------------
  786|    758|    {
  787|    758|      hlist->handlers = handler;
  788|    758|      if (!handler->after)
  ------------------
  |  Branch (788:11): [True: 758, False: 0]
  ------------------
  789|    758|        hlist->tail_before = handler;
  790|    758|    }
  791|  2.27k|  else if (handler->after)
  ------------------
  |  Branch (791:12): [True: 0, False: 2.27k]
  ------------------
  792|      0|    {
  793|      0|      handler->prev = hlist->tail_after;
  794|      0|      hlist->tail_after->next = handler;
  795|      0|    }
  796|  2.27k|  else
  797|  2.27k|    {
  798|  2.27k|      if (hlist->tail_before)
  ------------------
  |  Branch (798:11): [True: 2.27k, False: 0]
  ------------------
  799|  2.27k|        {
  800|  2.27k|          handler->next = hlist->tail_before->next;
  801|  2.27k|          if (handler->next)
  ------------------
  |  Branch (801:15): [True: 0, False: 2.27k]
  ------------------
  802|      0|            handler->next->prev = handler;
  803|  2.27k|          handler->prev = hlist->tail_before;
  804|  2.27k|          hlist->tail_before->next = handler;
  805|  2.27k|        }
  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.27k|      hlist->tail_before = handler;
  814|  2.27k|    }
  815|       |
  816|  3.03k|  if (!handler->next)
  ------------------
  |  Branch (816:7): [True: 3.03k, False: 0]
  ------------------
  817|  3.03k|    hlist->tail_after = handler;
  818|  3.03k|}
gsignal.c:handler_list_ensure:
  478|  3.03k|{
  479|  3.03k|  GBSearchArray *hlbsa = g_hash_table_lookup (g_handler_list_bsa_ht, instance);
  480|  3.03k|  HandlerList key;
  481|       |  
  482|  3.03k|  key.signal_id = signal_id;
  483|  3.03k|  key.handlers    = NULL;
  484|  3.03k|  key.tail_before = NULL;
  485|  3.03k|  key.tail_after  = NULL;
  486|  3.03k|  if (!hlbsa)
  ------------------
  |  Branch (486:7): [True: 758, False: 2.27k]
  ------------------
  487|    758|    {
  488|    758|      hlbsa = g_bsearch_array_create (&g_signal_hlbsa_bconfig);
  489|    758|      hlbsa = g_bsearch_array_insert (hlbsa, &g_signal_hlbsa_bconfig, &key);
  490|    758|      g_hash_table_insert (g_handler_list_bsa_ht, instance, hlbsa);
  491|    758|    }
  492|  2.27k|  else
  493|  2.27k|    {
  494|  2.27k|      GBSearchArray *o = hlbsa;
  495|       |
  496|  2.27k|      hlbsa = g_bsearch_array_insert (o, &g_signal_hlbsa_bconfig, &key);
  497|  2.27k|      if (hlbsa != o)
  ------------------
  |  Branch (497:11): [True: 0, False: 2.27k]
  ------------------
  498|      0|	g_hash_table_insert (g_handler_list_bsa_ht, instance, hlbsa);
  499|  2.27k|    }
  500|  3.03k|  return g_bsearch_array_lookup (hlbsa, &g_signal_hlbsa_bconfig, &key);
  ------------------
  |  |   97|  3.03k|    g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 0)
  ------------------
  501|  3.03k|}
gsignal.c:node_check_deprecated:
 2519|  3.03k|{
 2520|  3.03k|  static const gchar * g_enable_diagnostic = NULL;
 2521|       |
 2522|  3.03k|  if (G_UNLIKELY (!g_enable_diagnostic))
  ------------------
  |  | 1025|  3.03k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  3.03k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.03k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  3.03k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.03k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 1, False: 3.03k]
  |  |  |  |  ------------------
  |  |  |  | 1019|  3.03k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  3.03k|   else                                         \
  |  |  |  | 1021|  3.03k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  3.03k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  3.03k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 1, False: 3.03k]
  |  |  ------------------
  ------------------
 2523|      1|    {
 2524|      1|      g_enable_diagnostic = g_getenv ("G_ENABLE_DIAGNOSTIC");
 2525|      1|      if (!g_enable_diagnostic)
  ------------------
  |  Branch (2525:11): [True: 1, False: 0]
  ------------------
 2526|      1|        g_enable_diagnostic = "0";
 2527|      1|    }
 2528|       |
 2529|  3.03k|  if (g_enable_diagnostic[0] == '1')
  ------------------
  |  Branch (2529:7): [True: 0, False: 3.03k]
  ------------------
 2530|      0|    {
 2531|      0|      if (node->flags & G_SIGNAL_DEPRECATED)
  ------------------
  |  Branch (2531:11): [True: 0, False: 0]
  ------------------
 2532|      0|        {
 2533|      0|          g_warning ("The signal %s::%s is deprecated and shouldn't be used "
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 2534|      0|                     "anymore. It will be removed in a future version.",
 2535|      0|                     type_debug_name (node->itype), node->name);
 2536|      0|        }
 2537|      0|    }
 2538|  3.03k|}
gsignal.c:handler_unref_R:
  721|  10.7k|{
  722|  10.7k|  g_return_if_fail (handler->ref_count > 0);
  ------------------
  |  |  630|  10.7k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  10.7k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  10.7k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  10.7k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  10.7k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  10.7k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  10.7k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  10.7k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 10.7k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  10.7k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  10.7k|   else                                         \
  |  |  |  |  |  | 1021|  10.7k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  10.7k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  10.7k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 10.7k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  10.7k|      { } \
  |  |  633|  10.7k|    else \
  |  |  634|  10.7k|      { \
  |  |  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.7k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  10.7k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 10.7k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  723|       |
  724|  10.7k|  handler->ref_count--;
  725|       |
  726|  10.7k|  if (G_UNLIKELY (handler->ref_count == 0))
  ------------------
  |  | 1025|  10.7k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|  10.7k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  10.7k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  10.7k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  10.7k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 3.03k, False: 7.71k]
  |  |  |  |  ------------------
  |  |  |  | 1019|  10.7k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  10.7k|   else                                         \
  |  |  |  | 1021|  10.7k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  10.7k|   _g_boolean_var_;                             \
  |  |  |  | 1023|  10.7k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 3.03k, False: 7.71k]
  |  |  ------------------
  ------------------
  727|  3.03k|    {
  728|  3.03k|      HandlerList *hlist = NULL;
  729|       |
  730|  3.03k|      if (handler->next)
  ------------------
  |  Branch (730:11): [True: 0, False: 3.03k]
  ------------------
  731|      0|        handler->next->prev = handler->prev;
  732|  3.03k|      if (handler->prev)    /* watch out for g_signal_handlers_destroy()! */
  ------------------
  |  Branch (732:11): [True: 3.03k, False: 0]
  ------------------
  733|  3.03k|        handler->prev->next = handler->next;
  734|      0|      else
  735|      0|        {
  736|      0|          hlist = handler_list_lookup (signal_id, instance);
  737|      0|          g_assert (hlist != NULL);
  ------------------
  |  |  231|      0|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      0|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      0|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      0|   else                                         \
  |  |  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      0|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      0|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      0|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  738|      0|          hlist->handlers = handler->next;
  739|      0|        }
  740|       |
  741|  3.03k|      if (instance)
  ------------------
  |  Branch (741:11): [True: 0, False: 3.03k]
  ------------------
  742|      0|        {
  743|       |          /*  check if we are removing the handler pointed to by tail_before  */
  744|      0|          if (!handler->after && (!handler->next || handler->next->after))
  ------------------
  |  Branch (744:15): [True: 0, False: 0]
  |  Branch (744:35): [True: 0, False: 0]
  |  Branch (744:53): [True: 0, False: 0]
  ------------------
  745|      0|            {
  746|      0|              if (!hlist)
  ------------------
  |  Branch (746:19): [True: 0, False: 0]
  ------------------
  747|      0|                hlist = handler_list_lookup (signal_id, instance);
  748|      0|              if (hlist)
  ------------------
  |  Branch (748:19): [True: 0, False: 0]
  ------------------
  749|      0|                {
  750|      0|                  g_assert (hlist->tail_before == handler); /* paranoid */
  ------------------
  |  |  231|      0|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      0|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      0|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      0|   else                                         \
  |  |  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      0|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      0|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      0|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  751|      0|                  hlist->tail_before = handler->prev;
  752|      0|                }
  753|      0|            }
  754|       |
  755|       |          /*  check if we are removing the handler pointed to by tail_after  */
  756|      0|          if (!handler->next)
  ------------------
  |  Branch (756:15): [True: 0, False: 0]
  ------------------
  757|      0|            {
  758|      0|              if (!hlist)
  ------------------
  |  Branch (758:19): [True: 0, False: 0]
  ------------------
  759|      0|                hlist = handler_list_lookup (signal_id, instance);
  760|      0|              if (hlist)
  ------------------
  |  Branch (760:19): [True: 0, False: 0]
  ------------------
  761|      0|                {
  762|      0|                  g_assert (hlist->tail_after == handler); /* paranoid */
  ------------------
  |  |  231|      0|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      0|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      0|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      0|   else                                         \
  |  |  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      0|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      0|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      0|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  763|      0|                  hlist->tail_after = handler->prev;
  764|      0|                }
  765|      0|            }
  766|      0|        }
  767|       |
  768|  3.03k|      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  3.03k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  3.03k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  3.03k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  769|  3.03k|      g_closure_unref (handler->closure);
  770|  3.03k|      SIGNAL_LOCK ();
  ------------------
  |  |  328|  3.03k|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|  3.03k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  3.03k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  771|  3.03k|      g_slice_free (Handler, handler);
  ------------------
  |  |   79|  3.03k|#define g_slice_free(type, mem)                                 \
  |  |  ------------------
  |  |  |  |  874|  3.03k|#define G_STMT_START  do
  |  |  ------------------
  |  |   80|  3.03k|G_STMT_START {                                                  \
  |  |   81|  3.03k|  if (1) g_slice_free1 (sizeof (type), (mem));			\
  |  |  ------------------
  |  |  |  Branch (81:7): [True: 3.03k, Folded]
  |  |  ------------------
  |  |   82|  3.03k|  else   (void) ((type*) 0 == (mem)); 				\
  |  |   83|  3.03k|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.03k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.03k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  772|  3.03k|    }
  773|  10.7k|}
gsignal.c:handler_lists_cmp:
  469|  12.4k|{
  470|  12.4k|  const HandlerList *hlist1 = node1, *hlist2 = node2;
  471|       |  
  472|  12.4k|  return G_BSEARCH_ARRAY_CMP (hlist1->signal_id, hlist2->signal_id);
  ------------------
  |  |   34|  12.4k|#define G_BSEARCH_ARRAY_CMP(v1,v2) ((v1) > (v2) ? +1 : (v1) == (v2) ? 0 : -1)
  |  |  ------------------
  |  |  |  Branch (34:37): [True: 0, False: 12.4k]
  |  |  |  Branch (34:56): [True: 12.4k, False: 0]
  |  |  ------------------
  ------------------
  473|  12.4k|}
gsignal.c:node_update_single_va_closure:
  822|      1|{
  823|      1|  GClosure *closure = NULL;
  824|      1|  gboolean is_after = FALSE;
  ------------------
  |  |  814|      1|#define	FALSE	(0)
  ------------------
  825|       |
  826|       |  /* Fast path single-handler without boxing the arguments in GValues */
  827|      1|  if (G_TYPE_IS_OBJECT (node->itype) &&
  ------------------
  |  |   47|      2|#define G_TYPE_IS_OBJECT(type)      (G_TYPE_FUNDAMENTAL (type) == G_TYPE_OBJECT)
  |  |  ------------------
  |  |  |  |   38|      1|#define G_TYPE_FUNDAMENTAL(type)	(g_type_fundamental (type))
  |  |  ------------------
  |  |               #define G_TYPE_IS_OBJECT(type)      (G_TYPE_FUNDAMENTAL (type) == G_TYPE_OBJECT)
  |  |  ------------------
  |  |  |  |  178|      1|#define G_TYPE_OBJECT			G_TYPE_MAKE_FUNDAMENTAL (20)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (47:37): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  828|      1|      (node->flags & (G_SIGNAL_MUST_COLLECT)) == 0 &&
  ------------------
  |  Branch (828:7): [True: 1, False: 0]
  ------------------
  829|      1|      (node->emission_hooks == NULL || node->emission_hooks->hooks == NULL))
  ------------------
  |  Branch (829:8): [True: 1, False: 0]
  |  Branch (829:40): [True: 0, False: 0]
  ------------------
  830|      1|    {
  831|      1|      GSignalFlags run_type;
  832|      1|      ClassClosure * cc; 
  833|      1|      GBSearchArray *bsa = node->class_closure_bsa;
  834|       |
  835|      1|      if (bsa == NULL || bsa->n_nodes == 0)
  ------------------
  |  Branch (835:11): [True: 0, False: 1]
  |  Branch (835:26): [True: 0, False: 1]
  ------------------
  836|      0|	closure = SINGLE_VA_CLOSURE_EMPTY_MAGIC;
  ------------------
  |  |  250|      0|#define	SINGLE_VA_CLOSURE_EMPTY_MAGIC GINT_TO_POINTER(1)	/* indicates single_va_closure is valid but empty */
  |  |  ------------------
  |  |  |  |  101|      0|#define GINT_TO_POINTER(i)	((gpointer) (glong) (i))
  |  |  ------------------
  ------------------
  837|      1|      else if (bsa->n_nodes == 1)
  ------------------
  |  Branch (837:16): [True: 1, False: 0]
  ------------------
  838|      1|	{
  839|       |	  /* Look for default class closure (can't support non-default as it
  840|       |	     chains up using GValues */
  841|      1|	  cc = g_bsearch_array_get_nth (bsa, &g_class_closure_bconfig, 0);
  842|      1|	  if (cc->instance_type == 0)
  ------------------
  |  Branch (842:8): [True: 1, False: 0]
  ------------------
  843|      1|	    {
  844|      1|	      run_type = node->flags & (G_SIGNAL_RUN_FIRST|G_SIGNAL_RUN_LAST|G_SIGNAL_RUN_CLEANUP);
  845|       |	      /* Only support *one* of run-first or run-last, not multiple or cleanup */
  846|      1|	      if (run_type == G_SIGNAL_RUN_FIRST ||
  ------------------
  |  Branch (846:12): [True: 1, False: 0]
  ------------------
  847|      0|		  run_type == G_SIGNAL_RUN_LAST)
  ------------------
  |  Branch (847:5): [True: 0, False: 0]
  ------------------
  848|      1|		{
  849|      1|		  closure = cc->closure;
  850|      1|		  is_after = (run_type == G_SIGNAL_RUN_LAST);
  851|      1|		}
  852|      1|	    }
  853|      1|	}
  854|      1|    }
  855|       |
  856|      1|  node->single_va_closure_is_valid = TRUE;
  ------------------
  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  857|      1|  node->single_va_closure = closure;
  858|      1|  node->single_va_closure_is_after = is_after;
  859|      1|}
gsignal.c:handler_list_lookup:
  506|  7.12k|{
  507|  7.12k|  GBSearchArray *hlbsa = g_hash_table_lookup (g_handler_list_bsa_ht, instance);
  508|  7.12k|  HandlerList key;
  509|       |  
  510|  7.12k|  key.signal_id = signal_id;
  511|       |  
  512|  7.12k|  return hlbsa ? g_bsearch_array_lookup (hlbsa, &g_signal_hlbsa_bconfig, &key) : NULL;
  ------------------
  |  |   97|  7.12k|    g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 0)
  ------------------
  |  Branch (512:10): [True: 7.12k, False: 0]
  ------------------
  513|  7.12k|}
gsignal.c:emission_push:
  863|  1.28k|{
  864|  1.28k|  emission->next = g_emissions;
  865|  1.28k|  g_emissions = emission;
  866|  1.28k|}
gsignal.c:handler_ref:
  711|  7.71k|{
  712|  7.71k|  g_return_if_fail (handler->ref_count > 0);
  ------------------
  |  |  630|  7.71k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  7.71k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  7.71k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  7.71k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  7.71k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  7.71k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  7.71k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  7.71k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 7.71k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  7.71k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  7.71k|   else                                         \
  |  |  |  |  |  | 1021|  7.71k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  7.71k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  7.71k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 7.71k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  7.71k|      { } \
  |  |  633|  7.71k|    else \
  |  |  634|  7.71k|      { \
  |  |  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.71k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  7.71k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 7.71k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  713|       |  
  714|  7.71k|  handler->ref_count++;
  715|  7.71k|}
gsignal.c:accumulate:
 3235|  3.85k|{
 3236|  3.85k|  gboolean continue_emission;
 3237|       |
 3238|  3.85k|  if (!accumulator)
  ------------------
  |  Branch (3238:7): [True: 3.85k, False: 0]
  ------------------
 3239|  3.85k|    return TRUE;
  ------------------
  |  |  818|  3.85k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  3.85k|#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.85k|}
gsignal.c:emission_pop:
  870|  1.28k|{
  871|  1.28k|  Emission *node, *last = NULL;
  872|       |
  873|  1.28k|  for (node = g_emissions; node; last = node, node = last->next)
  ------------------
  |  Branch (873:28): [True: 1.28k, False: 0]
  ------------------
  874|  1.28k|    if (node == emission)
  ------------------
  |  Branch (874:9): [True: 1.28k, False: 0]
  ------------------
  875|  1.28k|      {
  876|  1.28k|	if (last)
  ------------------
  |  Branch (876:6): [True: 0, False: 1.28k]
  ------------------
  877|      0|	  last->next = node->next;
  878|  1.28k|	else
  879|  1.28k|	  g_emissions = node->next;
  880|  1.28k|	return;
  881|  1.28k|      }
  882|  1.28k|  g_assert_not_reached ();
  ------------------
  |  |  230|  1.28k|#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.28k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  883|      0|}
gsignal.c:signal_emit_unlocked_R:
 3607|  1.28k|{
 3608|  1.28k|  SignalAccumulator *accumulator;
 3609|  1.28k|  Emission emission;
 3610|  1.28k|  GClosure *class_closure;
 3611|  1.28k|  HandlerList *hlist;
 3612|  1.28k|  Handler *handler_list = NULL;
 3613|  1.28k|  GValue *return_accu, accu = G_VALUE_INIT;
  ------------------
  |  |  202|  1.28k|#define G_VALUE_INIT  { 0, { { 0 } } }
  ------------------
 3614|  1.28k|  guint signal_id;
 3615|  1.28k|  gulong max_sequential_handler_number;
 3616|  1.28k|  gboolean return_value_altered = FALSE;
  ------------------
  |  |  814|  1.28k|#define	FALSE	(0)
  ------------------
 3617|       |  
 3618|  1.28k|  TRACE(GOBJECT_SIGNAL_EMIT(node->signal_id, detail, instance, G_TYPE_FROM_INSTANCE (instance)));
 3619|       |
 3620|  1.28k|  SIGNAL_LOCK ();
  ------------------
  |  |  328|  1.28k|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|  1.28k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  1.28k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3621|  1.28k|  signal_id = node->signal_id;
 3622|       |
 3623|  1.28k|  if (node->flags & G_SIGNAL_NO_RECURSE)
  ------------------
  |  Branch (3623:7): [True: 1.28k, False: 0]
  ------------------
 3624|  1.28k|    {
 3625|  1.28k|      Emission *node = emission_find (signal_id, detail, instance);
 3626|       |      
 3627|  1.28k|      if (node)
  ------------------
  |  Branch (3627:11): [True: 0, False: 1.28k]
  ------------------
 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.28k|    }
 3634|  1.28k|  accumulator = node->accumulator;
 3635|  1.28k|  if (accumulator)
  ------------------
  |  Branch (3635:7): [True: 0, False: 1.28k]
  ------------------
 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.28k|  else
 3643|  1.28k|    return_accu = emission_return;
 3644|  1.28k|  emission.instance = instance;
 3645|  1.28k|  emission.ihint.signal_id = node->signal_id;
 3646|  1.28k|  emission.ihint.detail = detail;
 3647|  1.28k|  emission.ihint.run_type = 0;
 3648|  1.28k|  emission.state = 0;
 3649|  1.28k|  emission.chain_type = G_TYPE_NONE;
  ------------------
  |  |   62|  1.28k|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|  1.28k|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|  1.28k|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3650|  1.28k|  emission_push (&emission);
 3651|  1.28k|  class_closure = signal_lookup_closure (node, instance);
 3652|       |  
 3653|  1.28k| EMIT_RESTART:
 3654|       |  
 3655|  1.28k|  if (handler_list)
  ------------------
  |  Branch (3655:7): [True: 0, False: 1.28k]
  ------------------
 3656|      0|    handler_unref_R (signal_id, instance, handler_list);
 3657|  1.28k|  max_sequential_handler_number = g_handler_sequential_number;
 3658|  1.28k|  hlist = handler_list_lookup (signal_id, instance);
 3659|  1.28k|  handler_list = hlist ? hlist->handlers : NULL;
  ------------------
  |  Branch (3659:18): [True: 1.28k, False: 0]
  ------------------
 3660|  1.28k|  if (handler_list)
  ------------------
  |  Branch (3660:7): [True: 1.28k, False: 0]
  ------------------
 3661|  1.28k|    handler_ref (handler_list);
 3662|       |  
 3663|  1.28k|  emission.ihint.run_type = G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN;
 3664|       |  
 3665|  1.28k|  if ((node->flags & G_SIGNAL_RUN_FIRST) && class_closure)
  ------------------
  |  Branch (3665:7): [True: 1.28k, False: 0]
  |  Branch (3665:45): [True: 1.28k, False: 0]
  ------------------
 3666|  1.28k|    {
 3667|  1.28k|      emission.state = EMISSION_RUN;
 3668|       |
 3669|  1.28k|      emission.chain_type = G_TYPE_FROM_INSTANCE (instance);
  ------------------
  |  |  602|  1.28k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|  1.28k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
 3670|  1.28k|      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  1.28k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  1.28k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  1.28k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3671|  1.28k|      g_closure_invoke (class_closure,
 3672|  1.28k|			return_accu,
 3673|  1.28k|			node->n_params + 1,
 3674|  1.28k|			instance_and_params,
 3675|  1.28k|			&emission.ihint);
 3676|  1.28k|      if (!accumulate (&emission.ihint, emission_return, &accu, accumulator) &&
  ------------------
  |  Branch (3676:11): [True: 0, False: 1.28k]
  ------------------
 3677|      0|	  emission.state == EMISSION_RUN)
  ------------------
  |  Branch (3677:4): [True: 0, False: 0]
  ------------------
 3678|      0|	emission.state = EMISSION_STOP;
 3679|  1.28k|      SIGNAL_LOCK ();
  ------------------
  |  |  328|  1.28k|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|  1.28k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  1.28k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3680|  1.28k|      emission.chain_type = G_TYPE_NONE;
  ------------------
  |  |   62|  1.28k|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|  1.28k|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|  1.28k|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3681|  1.28k|      return_value_altered = TRUE;
  ------------------
  |  |  818|  1.28k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.28k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3682|       |      
 3683|  1.28k|      if (emission.state == EMISSION_STOP)
  ------------------
  |  Branch (3683:11): [True: 0, False: 1.28k]
  ------------------
 3684|      0|	goto EMIT_CLEANUP;
 3685|  1.28k|      else if (emission.state == EMISSION_RESTART)
  ------------------
  |  Branch (3685:16): [True: 0, False: 1.28k]
  ------------------
 3686|      0|	goto EMIT_RESTART;
 3687|  1.28k|    }
 3688|       |  
 3689|  1.28k|  if (node->emission_hooks)
  ------------------
  |  Branch (3689:7): [True: 0, False: 1.28k]
  ------------------
 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.28k|  if (handler_list)
  ------------------
  |  Branch (3721:7): [True: 1.28k, False: 0]
  ------------------
 3722|  1.28k|    {
 3723|  1.28k|      Handler *handler = handler_list;
 3724|       |      
 3725|  1.28k|      emission.state = EMISSION_RUN;
 3726|  1.28k|      handler_ref (handler);
 3727|  1.28k|      do
 3728|  5.14k|	{
 3729|  5.14k|	  Handler *tmp;
 3730|       |	  
 3731|  5.14k|	  if (handler->after)
  ------------------
  |  Branch (3731:8): [True: 0, False: 5.14k]
  ------------------
 3732|      0|	    {
 3733|      0|	      handler_unref_R (signal_id, instance, handler_list);
 3734|      0|	      handler_list = handler;
 3735|      0|	      break;
 3736|      0|	    }
 3737|  5.14k|	  else if (!handler->block_count && (!handler->detail || handler->detail == detail) &&
  ------------------
  |  Branch (3737:13): [True: 5.14k, False: 0]
  |  Branch (3737:39): [True: 0, False: 5.14k]
  |  Branch (3737:59): [True: 2.57k, False: 2.57k]
  ------------------
 3738|  2.57k|		   handler->sequential_number < max_sequential_handler_number)
  ------------------
  |  Branch (3738:6): [True: 2.57k, False: 0]
  ------------------
 3739|  2.57k|	    {
 3740|  2.57k|	      SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  2.57k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  2.57k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  2.57k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3741|  2.57k|	      g_closure_invoke (handler->closure,
 3742|  2.57k|				return_accu,
 3743|  2.57k|				node->n_params + 1,
 3744|  2.57k|				instance_and_params,
 3745|  2.57k|				&emission.ihint);
 3746|  2.57k|	      if (!accumulate (&emission.ihint, emission_return, &accu, accumulator) &&
  ------------------
  |  Branch (3746:12): [True: 0, False: 2.57k]
  ------------------
 3747|      0|		  emission.state == EMISSION_RUN)
  ------------------
  |  Branch (3747:5): [True: 0, False: 0]
  ------------------
 3748|      0|		emission.state = EMISSION_STOP;
 3749|  2.57k|	      SIGNAL_LOCK ();
  ------------------
  |  |  328|  2.57k|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|  2.57k|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  2.57k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3750|  2.57k|	      return_value_altered = TRUE;
  ------------------
  |  |  818|  2.57k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  2.57k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3751|       |	      
 3752|  2.57k|	      tmp = emission.state == EMISSION_RUN ? handler->next : NULL;
  ------------------
  |  Branch (3752:14): [True: 2.57k, False: 0]
  ------------------
 3753|  2.57k|	    }
 3754|  2.57k|	  else
 3755|  2.57k|	    tmp = handler->next;
 3756|       |	  
 3757|  5.14k|	  if (tmp)
  ------------------
  |  Branch (3757:8): [True: 3.85k, False: 1.28k]
  ------------------
 3758|  3.85k|	    handler_ref (tmp);
 3759|  5.14k|	  handler_unref_R (signal_id, instance, handler_list);
 3760|  5.14k|	  handler_list = handler;
 3761|  5.14k|	  handler = tmp;
 3762|  5.14k|	}
 3763|  5.14k|      while (handler);
  ------------------
  |  Branch (3763:14): [True: 3.85k, False: 1.28k]
  ------------------
 3764|       |      
 3765|  1.28k|      if (emission.state == EMISSION_STOP)
  ------------------
  |  Branch (3765:11): [True: 0, False: 1.28k]
  ------------------
 3766|      0|	goto EMIT_CLEANUP;
 3767|  1.28k|      else if (emission.state == EMISSION_RESTART)
  ------------------
  |  Branch (3767:16): [True: 0, False: 1.28k]
  ------------------
 3768|      0|	goto EMIT_RESTART;
 3769|  1.28k|    }
 3770|       |  
 3771|  1.28k|  emission.ihint.run_type &= ~G_SIGNAL_RUN_FIRST;
 3772|  1.28k|  emission.ihint.run_type |= G_SIGNAL_RUN_LAST;
 3773|       |  
 3774|  1.28k|  if ((node->flags & G_SIGNAL_RUN_LAST) && class_closure)
  ------------------
  |  Branch (3774:7): [True: 0, False: 1.28k]
  |  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.28k|  if (handler_list)
  ------------------
  |  Branch (3798:7): [True: 1.28k, False: 0]
  ------------------
 3799|  1.28k|    {
 3800|  1.28k|      Handler *handler = handler_list;
 3801|       |      
 3802|  1.28k|      emission.state = EMISSION_RUN;
 3803|  1.28k|      handler_ref (handler);
 3804|  1.28k|      do
 3805|  1.28k|	{
 3806|  1.28k|	  Handler *tmp;
 3807|       |	  
 3808|  1.28k|	  if (handler->after && !handler->block_count && (!handler->detail || handler->detail == detail) &&
  ------------------
  |  Branch (3808:8): [True: 0, False: 1.28k]
  |  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.28k|	  else
 3826|  1.28k|	    tmp = handler->next;
 3827|       |	  
 3828|  1.28k|	  if (tmp)
  ------------------
  |  Branch (3828:8): [True: 0, False: 1.28k]
  ------------------
 3829|      0|	    handler_ref (tmp);
 3830|  1.28k|	  handler_unref_R (signal_id, instance, handler);
 3831|  1.28k|	  handler = tmp;
 3832|  1.28k|	}
 3833|  1.28k|      while (handler);
  ------------------
  |  Branch (3833:14): [True: 0, False: 1.28k]
  ------------------
 3834|       |      
 3835|  1.28k|      if (emission.state == EMISSION_STOP)
  ------------------
  |  Branch (3835:11): [True: 0, False: 1.28k]
  ------------------
 3836|      0|	goto EMIT_CLEANUP;
 3837|  1.28k|      else if (emission.state == EMISSION_RESTART)
  ------------------
  |  Branch (3837:16): [True: 0, False: 1.28k]
  ------------------
 3838|      0|	goto EMIT_RESTART;
 3839|  1.28k|    }
 3840|       |  
 3841|  1.28k| EMIT_CLEANUP:
 3842|       |  
 3843|  1.28k|  emission.ihint.run_type &= ~G_SIGNAL_RUN_LAST;
 3844|  1.28k|  emission.ihint.run_type |= G_SIGNAL_RUN_CLEANUP;
 3845|       |  
 3846|  1.28k|  if ((node->flags & G_SIGNAL_RUN_CLEANUP) && class_closure)
  ------------------
  |  Branch (3846:7): [True: 0, False: 1.28k]
  |  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.28k|  if (handler_list)
  ------------------
  |  Branch (3878:7): [True: 1.28k, False: 0]
  ------------------
 3879|  1.28k|    handler_unref_R (signal_id, instance, handler_list);
 3880|       |  
 3881|  1.28k|  emission_pop (&emission);
 3882|  1.28k|  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|  1.28k|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|  1.28k|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|  1.28k|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3883|  1.28k|  if (accumulator)
  ------------------
  |  Branch (3883:7): [True: 0, False: 1.28k]
  ------------------
 3884|      0|    g_value_unset (&accu);
 3885|       |
 3886|  1.28k|  TRACE(GOBJECT_SIGNAL_EMIT_END(node->signal_id, detail, instance, G_TYPE_FROM_INSTANCE (instance)));
 3887|       |
 3888|  1.28k|  return return_value_altered;
 3889|  1.28k|}
gsignal.c:signal_lookup_closure:
 1628|  1.28k|{
 1629|  1.28k|  ClassClosure *cc;
 1630|       |
 1631|  1.28k|  cc = signal_find_class_closure (node, G_TYPE_FROM_INSTANCE (instance));
  ------------------
  |  |  602|  1.28k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|  1.28k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
 1632|  1.28k|  return cc ? cc->closure : NULL;
  ------------------
  |  Branch (1632:10): [True: 1.28k, False: 0]
  ------------------
 1633|  1.28k|}
gsignal.c:remove_invalid_closure_notify:
 3902|  3.03k|{
 3903|  3.03k|  if (handler->has_invalid_closure_notify)
  ------------------
  |  Branch (3903:7): [True: 0, False: 3.03k]
  ------------------
 3904|      0|    {
 3905|      0|      g_closure_remove_invalidate_notifier (handler->closure, instance, invalid_closure_notify);
 3906|      0|      handler->has_invalid_closure_notify = 0;
 3907|      0|    }
 3908|  3.03k|}

g_type_interface_add_prerequisite:
 1565|      6|{
 1566|      6|  TypeNode *iface, *prerequisite_node;
 1567|      6|  IFaceHolder *holders;
 1568|       |  
 1569|      6|  g_return_if_fail (G_TYPE_IS_INTERFACE (interface_type));	/* G_TYPE_IS_INTERFACE() is an external call: _U */
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1570|      6|  g_return_if_fail (!g_type_is_a (interface_type, prerequisite_type));
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1571|      6|  g_return_if_fail (!g_type_is_a (prerequisite_type, interface_type));
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1572|       |  
 1573|      6|  iface = lookup_type_node_I (interface_type);
 1574|      6|  prerequisite_node = lookup_type_node_I (prerequisite_type);
 1575|      6|  if (!iface || !prerequisite_node || !NODE_IS_IFACE (iface))
  ------------------
  |  |  258|      6|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|      6|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|      6|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      6|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      6|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1575:7): [True: 0, False: 6]
  |  Branch (1575:17): [True: 0, False: 6]
  |  Branch (1575:39): [True: 0, False: 6]
  ------------------
 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|      6|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      6|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 1583|      6|  holders = iface_node_get_holders_L (iface);
  ------------------
  |  |  263|      6|#define	iface_node_get_holders_L(node)		((IFaceHolder*) type_get_qdata_L ((node), static_quark_iface_holder))
  ------------------
 1584|      6|  if (holders)
  ------------------
  |  Branch (1584:7): [True: 0, False: 6]
  ------------------
 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|      6|  if (prerequisite_node->is_instantiatable)
  ------------------
  |  Branch (1593:7): [True: 6, False: 0]
  ------------------
 1594|      6|    {
 1595|      6|      guint i;
 1596|       |      
 1597|       |      /* can have at most one publicly installable instantiatable prerequisite */
 1598|      6|      for (i = 0; i < IFACE_NODE_N_PREREQUISITES (iface); i++)
  ------------------
  |  |  261|      6|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  |  Branch (1598:19): [True: 0, False: 6]
  ------------------
 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|     13|      for (i = 0; i < prerequisite_node->n_supers + 1u; i++)
  ------------------
  |  Branch (1613:19): [True: 7, False: 6]
  ------------------
 1614|      7|	type_iface_add_prerequisite_W (iface, lookup_type_node_I (prerequisite_node->supers[i]));
 1615|      6|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      6|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 1616|      6|    }
 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|      6|}
g_type_create_instance:
 1843|  1.15M|{
 1844|  1.15M|  TypeNode *node;
 1845|  1.15M|  GTypeInstance *instance;
 1846|  1.15M|  GTypeClass *class;
 1847|  1.15M|  gchar *allocated;
 1848|  1.15M|  gint private_size;
 1849|  1.15M|  gint ivar_size;
 1850|  1.15M|  guint i;
 1851|       |
 1852|  1.15M|  node = lookup_type_node_I (type);
 1853|  1.15M|  if (!node || !node->is_instantiatable)
  ------------------
  |  Branch (1853:7): [True: 0, False: 1.15M]
  |  Branch (1853:16): [True: 0, False: 1.15M]
  ------------------
 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.15M|  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.15M]
  ------------------
 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.15M|  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.15M|  private_size = node->data->instance.private_size;
 1885|  1.15M|  ivar_size = node->data->instance.instance_size;
 1886|       |
 1887|  1.15M|#ifdef ENABLE_VALGRIND
 1888|  1.15M|  if (private_size && RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|  1.15M|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|  1.15M|    __extension__                                                 \
  |  |  |  |  414|  1.15M|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|  1.15M|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|  1.15M|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|  1.15M|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|  1.15M|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|  1.15M|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|  1.15M|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|  1.15M|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|  1.15M|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|  1.15M|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|  1.15M|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|  1.15M|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|  1.15M|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|  1.15M|                     : "cc", "memory"                             \
  |  |  |  |  428|  1.15M|                    );                                            \
  |  |  |  |  429|  1.15M|    _zzq_result;                                                  \
  |  |  |  |  430|  1.15M|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 1.15M]
  |  |  ------------------
  ------------------
  |  Branch (1888:7): [True: 1.15M, False: 0]
  ------------------
 1889|      0|    {
 1890|      0|      private_size += ALIGN_STRUCT (1);
  ------------------
  |  |  161|      0|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 1891|       |
 1892|       |      /* Allocate one extra pointer size... */
 1893|      0|      allocated = g_slice_alloc0 (private_size + ivar_size + sizeof (gpointer));
 1894|       |      /* ... and point it back to the start of the private data. */
 1895|      0|      *(gpointer *) (allocated + private_size + ivar_size) = allocated + ALIGN_STRUCT (1);
  ------------------
  |  |  161|      0|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 1896|       |
 1897|       |      /* Tell valgrind that it should treat the object itself as such */
 1898|      0|      VALGRIND_MALLOCLIKE_BLOCK (allocated + private_size, ivar_size + sizeof (gpointer), 0, TRUE);
  ------------------
  |  | 6479|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MALLOCLIKE_BLOCK,       \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6480|      0|                                    addr, sizeB, rzB, is_zeroed, 0)
  ------------------
 1899|      0|      VALGRIND_MALLOCLIKE_BLOCK (allocated + ALIGN_STRUCT (1), private_size - ALIGN_STRUCT (1), 0, TRUE);
  ------------------
  |  | 6479|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MALLOCLIKE_BLOCK,       \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6480|      0|                                    addr, sizeB, rzB, is_zeroed, 0)
  ------------------
 1900|      0|    }
 1901|  1.15M|  else
 1902|  1.15M|#endif
 1903|  1.15M|    allocated = g_slice_alloc0 (private_size + ivar_size);
 1904|       |
 1905|  1.15M|  instance = (GTypeInstance *) (allocated + private_size);
 1906|       |
 1907|  3.73M|  for (i = node->n_supers; i > 0; i--)
  ------------------
  |  Branch (1907:28): [True: 2.58M, False: 1.15M]
  ------------------
 1908|  2.58M|    {
 1909|  2.58M|      TypeNode *pnode;
 1910|       |      
 1911|  2.58M|      pnode = lookup_type_node_I (node->supers[i]);
 1912|  2.58M|      if (pnode->data->instance.instance_init)
  ------------------
  |  Branch (1912:11): [True: 2.58M, False: 0]
  ------------------
 1913|  2.58M|	{
 1914|  2.58M|	  instance->g_class = pnode->data->instance.class;
 1915|  2.58M|	  pnode->data->instance.instance_init (instance, class);
 1916|  2.58M|	}
 1917|  2.58M|    }
 1918|       |
 1919|  1.15M|  instance->g_class = class;
 1920|  1.15M|  if (node->data->instance.instance_init)
  ------------------
  |  Branch (1920:7): [True: 1.15M, False: 0]
  ------------------
 1921|  1.15M|    node->data->instance.instance_init (instance, class);
 1922|       |
 1923|  1.15M|#ifdef	G_ENABLE_DEBUG
 1924|  1.15M|  IF_DEBUG (INSTANCE_COUNT)
  ------------------
  |  |   42|  1.15M|#define	IF_DEBUG(debug_type)	if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type)
  |  |  ------------------
  |  |  |  Branch (42:34): [True: 0, False: 1.15M]
  |  |  ------------------
  ------------------
 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.15M|#endif
 1929|       |
 1930|  1.15M|  TRACE(GOBJECT_OBJECT_NEW(instance, type));
 1931|       |
 1932|  1.15M|  return instance;
 1933|  1.15M|}
g_type_free_instance:
 1947|  1.15M|{
 1948|  1.15M|  TypeNode *node;
 1949|  1.15M|  GTypeClass *class;
 1950|  1.15M|  gchar *allocated;
 1951|  1.15M|  gint private_size;
 1952|  1.15M|  gint ivar_size;
 1953|       |
 1954|  1.15M|  g_return_if_fail (instance != NULL && instance->g_class != NULL);
  ------------------
  |  |  630|  1.15M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.15M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.15M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.15M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.15M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.15M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.15M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.47M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.15M, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.15M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.15M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.15M|   else                                         \
  |  |  |  |  |  | 1021|  1.15M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.15M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.15M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.15M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.15M|      { } \
  |  |  633|  1.15M|    else \
  |  |  634|  1.15M|      { \
  |  |  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.15M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.15M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.15M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1955|       |  
 1956|  1.15M|  class = instance->g_class;
 1957|  1.15M|  node = lookup_type_node_I (class->g_type);
 1958|  1.15M|  if (!node || !node->is_instantiatable || !node->data || node->data->class.class != (gpointer) class)
  ------------------
  |  Branch (1958:7): [True: 0, False: 1.15M]
  |  Branch (1958:16): [True: 0, False: 1.15M]
  |  Branch (1958:44): [True: 0, False: 1.15M]
  |  Branch (1958:59): [True: 0, False: 1.15M]
  ------------------
 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.15M|  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.15M]
  ------------------
 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.15M|  instance->g_class = NULL;
 1973|  1.15M|  private_size = node->data->instance.private_size;
 1974|  1.15M|  ivar_size = node->data->instance.instance_size;
 1975|  1.15M|  allocated = ((gchar *) instance) - private_size;
 1976|       |
 1977|  1.15M|#ifdef G_ENABLE_DEBUG
 1978|  1.15M|  memset (allocated, 0xaa, ivar_size + private_size);
 1979|  1.15M|#endif
 1980|       |
 1981|  1.15M|#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.15M|  if (private_size && RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|  1.15M|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|  1.15M|    __extension__                                                 \
  |  |  |  |  414|  1.15M|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|  1.15M|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|  1.15M|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|  1.15M|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|  1.15M|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|  1.15M|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|  1.15M|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|  1.15M|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|  1.15M|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|  1.15M|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|  1.15M|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|  1.15M|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|  1.15M|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|  1.15M|                     : "cc", "memory"                             \
  |  |  |  |  428|  1.15M|                    );                                            \
  |  |  |  |  429|  1.15M|    _zzq_result;                                                  \
  |  |  |  |  430|  1.15M|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 1.15M]
  |  |  ------------------
  ------------------
  |  Branch (1985:7): [True: 1.15M, False: 0]
  ------------------
 1986|      0|    {
 1987|      0|      private_size += ALIGN_STRUCT (1);
  ------------------
  |  |  161|      0|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 1988|      0|      allocated -= ALIGN_STRUCT (1);
  ------------------
  |  |  161|      0|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      0|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 1989|       |
 1990|       |      /* Clear out the extra pointer... */
 1991|      0|      *(gpointer *) (allocated + private_size + ivar_size) = NULL;
 1992|       |      /* ... and ensure we include it in the size we free. */
 1993|      0|      g_slice_free1 (private_size + ivar_size + sizeof (gpointer), allocated);
 1994|       |
 1995|      0|      VALGRIND_FREELIKE_BLOCK (allocated + ALIGN_STRUCT (1), 0);
  ------------------
  |  | 6493|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__FREELIKE_BLOCK,         \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6494|      0|                                    addr, rzB, 0, 0, 0)
  ------------------
 1996|      0|      VALGRIND_FREELIKE_BLOCK (instance, 0);
  ------------------
  |  | 6493|      0|    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__FREELIKE_BLOCK,         \
  |  |  ------------------
  |  |  |  |  203|      0|  do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  413|      0|    __extension__                                                 \
  |  |  |  |  |  |  414|      0|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  |  |  415|      0|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  |  |  416|      0|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  |  |  417|      0|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  |  |  418|      0|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  |  |  419|      0|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  |  |  420|      0|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  |  |  421|      0|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  |  |  422|      0|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  |  |  423|      0|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  |  |  424|      0|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  |  |  425|      0|                     : "=d" (_zzq_result)                         \
  |  |  |  |  |  |  426|      0|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  |  |  427|      0|                     : "cc", "memory"                             \
  |  |  |  |  |  |  428|      0|                    );                                            \
  |  |  |  |  |  |  429|      0|    _zzq_result;                                                  \
  |  |  |  |  |  |  430|      0|    })
  |  |  |  |  ------------------
  |  |  |  |  204|      0|                    (_zzq_request), (_zzq_arg1), (_zzq_arg2),           \
  |  |  |  |  205|      0|                    (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (205:70): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6494|      0|                                    addr, rzB, 0, 0, 0)
  ------------------
 1997|      0|    }
 1998|  1.15M|  else
 1999|  1.15M|#endif
 2000|  1.15M|    g_slice_free1 (private_size + ivar_size, allocated);
 2001|       |
 2002|  1.15M|#ifdef	G_ENABLE_DEBUG
 2003|  1.15M|  IF_DEBUG (INSTANCE_COUNT)
  ------------------
  |  |   42|  1.15M|#define	IF_DEBUG(debug_type)	if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type)
  |  |  ------------------
  |  |  |  Branch (42:34): [True: 0, False: 1.15M]
  |  |  ------------------
  ------------------
 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.15M|#endif
 2008|       |
 2009|  1.15M|  g_type_class_unref (class);
 2010|  1.15M|}
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|     26|{
 2754|     26|  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|     26|  g_return_val_if_fail (class_size <= G_MAXUINT16, G_TYPE_INVALID);
  ------------------
  |  |  643|     26|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     26|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     26|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     26|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     26| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     26|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     26|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     26|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 26, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     26|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     26|   else                                         \
  |  |  |  |  |  | 1021|     26|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     26|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     26|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 26, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     26|      { } \
  |  |  646|     26|    else \
  |  |  647|     26|      { \
  |  |  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|     26|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     26|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 26]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2760|     26|  g_return_val_if_fail (instance_size <= G_MAXUINT16, G_TYPE_INVALID);
  ------------------
  |  |  643|     26|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     26|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     26|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     26|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     26| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     26|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     26|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     26|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 26, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     26|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     26|   else                                         \
  |  |  |  |  |  | 1021|     26|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     26|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     26|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 26, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     26|      { } \
  |  |  646|     26|    else \
  |  |  647|     26|      { \
  |  |  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|     26|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     26|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 26]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2761|       |
 2762|     26|  info.class_size = class_size;
 2763|     26|  info.base_init = NULL;
 2764|     26|  info.base_finalize = NULL;
 2765|     26|  info.class_init = class_init;
 2766|     26|  info.class_finalize = NULL;
 2767|     26|  info.class_data = NULL;
 2768|     26|  info.instance_size = instance_size;
 2769|     26|  info.n_preallocs = 0;
 2770|     26|  info.instance_init = instance_init;
 2771|     26|  info.value_table = NULL;
 2772|       |
 2773|     26|  return g_type_register_static (parent_type, type_name, &info, flags);
 2774|     26|}
g_type_register_static:
 2796|     78|{
 2797|     78|  TypeNode *pnode, *node;
 2798|     78|  GType type = 0;
 2799|       |  
 2800|     78|  g_assert_type_system_initialized ();
  ------------------
  |  |  140|     78|  g_assert (static_quark_type_flags)
  |  |  ------------------
  |  |  |  |  231|     78|#define g_assert(expr)                  G_STMT_START { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|     78|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  232|     78|                                             if G_LIKELY (expr) ; else \
  |  |  |  |  ------------------
  |  |  |  |  |  | 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]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  233|     78|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  |  |  ------------------
  |  |  |  |  234|      0|                                                                         #expr); \
  |  |  |  |  235|     78|                                        } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|     78|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 78]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2801|     78|  g_return_val_if_fail (parent_type > 0, 0);
  ------------------
  |  |  643|     78|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     78|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     78|      { } \
  |  |  646|     78|    else \
  |  |  647|     78|      { \
  |  |  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|     78|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     78|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 78]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2802|     78|  g_return_val_if_fail (type_name != NULL, 0);
  ------------------
  |  |  643|     78|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     78|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     78|      { } \
  |  |  646|     78|    else \
  |  |  647|     78|      { \
  |  |  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|     78|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     78|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 78]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2803|     78|  g_return_val_if_fail (info != NULL, 0);
  ------------------
  |  |  643|     78|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     78|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     78|      { } \
  |  |  646|     78|    else \
  |  |  647|     78|      { \
  |  |  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|     78|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     78|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 78]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2804|       |  
 2805|     78|  if (!check_type_name_I (type_name) ||
  ------------------
  |  Branch (2805:7): [True: 0, False: 78]
  ------------------
 2806|     78|      !check_derivation_I (parent_type, type_name))
  ------------------
  |  Branch (2806:7): [True: 0, False: 78]
  ------------------
 2807|      0|    return 0;
 2808|     78|  if (info->class_finalize)
  ------------------
  |  Branch (2808:7): [True: 0, False: 78]
  ------------------
 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|     78|  pnode = lookup_type_node_I (parent_type);
 2816|     78|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|     78|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2817|     78|  type_data_ref_Wm (pnode);
 2818|     78|  if (check_type_info_I (pnode, NODE_FUNDAMENTAL_TYPE (pnode), type_name, info))
  ------------------
  |  |  254|     78|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  |  Branch (2818:7): [True: 78, False: 0]
  ------------------
 2819|     78|    {
 2820|     78|      node = type_node_new_W (pnode, type_name, NULL);
 2821|     78|      type_add_flags_W (node, flags);
 2822|     78|      type = NODE_TYPE (node);
  ------------------
  |  |  252|     78|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2823|     78|      type_data_make_W (node, info,
 2824|     78|			check_value_table_I (type_name, info->value_table) ? info->value_table : NULL);
  ------------------
  |  Branch (2824:4): [True: 2, False: 76]
  ------------------
 2825|     78|    }
 2826|     78|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|     78|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2827|       |  
 2828|     78|  return type;
 2829|     78|}
g_type_add_interface_static:
 2890|     15|{
 2891|       |  /* G_TYPE_IS_INSTANTIATABLE() is an external call: _U */
 2892|     15|  g_return_if_fail (G_TYPE_IS_INSTANTIATABLE (instance_type));
  ------------------
  |  |  630|     15|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     15|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     15|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     15|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     15| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     15|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     15|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     15|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 15, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     15|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     15|   else                                         \
  |  |  |  |  |  | 1021|     15|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     15|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     15|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 15, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     15|      { } \
  |  |  633|     15|    else \
  |  |  634|     15|      { \
  |  |  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|     15|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     15|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 15]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2893|     15|  g_return_if_fail (g_type_parent (interface_type) == G_TYPE_INTERFACE);
  ------------------
  |  |  630|     15|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     15|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     15|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     15|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     15| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     15|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     15|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     15|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 15, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     15|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     15|   else                                         \
  |  |  |  |  |  | 1021|     15|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     15|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     15|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 15, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     15|      { } \
  |  |  633|     15|    else \
  |  |  634|     15|      { \
  |  |  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|     15|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     15|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 15]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 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|     15|  g_rec_mutex_lock (&class_init_rec_mutex); /* required locking order: 1) class_init_rec_mutex, 2) type_rw_lock */
 2900|     15|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|     15|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2901|     15|  if (check_add_interface_L (instance_type, interface_type))
  ------------------
  |  Branch (2901:7): [True: 15, False: 0]
  ------------------
 2902|     15|    {
 2903|     15|      TypeNode *node = lookup_type_node_I (instance_type);
 2904|     15|      TypeNode *iface = lookup_type_node_I (interface_type);
 2905|     15|      if (check_interface_info_I (iface, NODE_TYPE (node), info))
  ------------------
  |  |  252|     15|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
  |  Branch (2905:11): [True: 15, False: 0]
  ------------------
 2906|     15|        type_add_interface_Wm (node, iface, info, NULL);
 2907|     15|    }
 2908|     15|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|     15|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2909|     15|  g_rec_mutex_unlock (&class_init_rec_mutex);
 2910|     15|}
g_type_class_ref:
 2963|  1.15M|{
 2964|  1.15M|  TypeNode *node;
 2965|  1.15M|  GType ptype;
 2966|  1.15M|  gboolean holds_ref;
 2967|  1.15M|  GTypeClass *pclass;
 2968|       |
 2969|       |  /* optimize for common code path */
 2970|  1.15M|  node = lookup_type_node_I (type);
 2971|  1.15M|  if (!node || !node->is_classed)
  ------------------
  |  Branch (2971:7): [True: 0, False: 1.15M]
  |  Branch (2971:16): [True: 0, False: 1.15M]
  ------------------
 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.15M|  if (G_LIKELY (type_data_ref_U (node)))
  ------------------
  |  | 1024|  1.15M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  1.15M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.15M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.15M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.15M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 1.15M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.15M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.15M|   else                                         \
  |  |  |  | 1021|  1.15M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.15M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.15M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 1.15M, False: 0]
  |  |  ------------------
  ------------------
 2979|  1.15M|    {
 2980|  1.15M|      if (G_LIKELY (g_atomic_int_get (&node->data->class.init_state) == INITIALIZED))
  ------------------
  |  | 1024|  1.15M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|  1.15M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.15M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|  1.15M|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.47M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [Folded, False: 1.15M]
  |  |  |  |  |  Branch (1018:8): [True: 1.15M, False: 31]
  |  |  |  |  ------------------
  |  |  |  | 1019|  1.15M|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|  1.15M|   else                                         \
  |  |  |  | 1021|  1.15M|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|  1.15M|   _g_boolean_var_;                             \
  |  |  |  | 1023|  1.15M|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 1.15M, False: 31]
  |  |  ------------------
  ------------------
 2981|  1.15M|        return node->data->class.class;
 2982|     31|      holds_ref = TRUE;
  ------------------
  |  |  818|     31|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     31|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2983|     31|    }
 2984|      0|  else
 2985|      0|    holds_ref = FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 2986|       |  
 2987|       |  /* here, we either have node->data->class.class == NULL, or a recursive
 2988|       |   * call to g_type_class_ref() with a partly initialized class, or
 2989|       |   * node->data->class.init_state == INITIALIZED, because any
 2990|       |   * concurrently running initialization was guarded by class_init_rec_mutex.
 2991|       |   */
 2992|     31|  g_rec_mutex_lock (&class_init_rec_mutex); /* required locking order: 1) class_init_rec_mutex, 2) type_rw_lock */
 2993|       |
 2994|       |  /* we need an initialized parent class for initializing derived classes */
 2995|     31|  ptype = NODE_PARENT_TYPE (node);
  ------------------
  |  |  253|     31|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 2996|     31|  pclass = ptype ? g_type_class_ref (ptype) : NULL;
  ------------------
  |  Branch (2996:12): [True: 29, False: 2]
  ------------------
 2997|       |
 2998|     31|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|     31|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2999|       |
 3000|     31|  if (!holds_ref)
  ------------------
  |  Branch (3000:7): [True: 0, False: 31]
  ------------------
 3001|      0|    type_data_ref_Wm (node);
 3002|       |
 3003|     31|  if (!node->data->class.class) /* class uninitialized */
  ------------------
  |  Branch (3003:7): [True: 20, False: 11]
  ------------------
 3004|     20|    type_class_init_Wm (node, pclass);
 3005|       |
 3006|     31|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|     31|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 3007|       |
 3008|     31|  if (pclass)
  ------------------
  |  Branch (3008:7): [True: 29, False: 2]
  ------------------
 3009|     29|    g_type_class_unref (pclass);
 3010|       |
 3011|     31|  g_rec_mutex_unlock (&class_init_rec_mutex);
 3012|       |
 3013|     31|  return node->data->class.class;
 3014|  1.15M|}
g_type_class_unref:
 3027|  1.15M|{
 3028|  1.15M|  TypeNode *node;
 3029|  1.15M|  GTypeClass *class = g_class;
 3030|       |  
 3031|  1.15M|  g_return_if_fail (g_class != NULL);
  ------------------
  |  |  630|  1.15M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.15M|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  1.15M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  1.15M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  1.15M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  1.15M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  1.15M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  1.15M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.15M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  1.15M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  1.15M|   else                                         \
  |  |  |  |  |  | 1021|  1.15M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  1.15M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  1.15M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 1.15M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.15M|      { } \
  |  |  633|  1.15M|    else \
  |  |  634|  1.15M|      { \
  |  |  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.15M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.15M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.15M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3032|       |  
 3033|  1.15M|  node = lookup_type_node_I (class->g_type);
 3034|  1.15M|  if (node && node->is_classed && NODE_REFCOUNT (node))
  ------------------
  |  |  256|  1.15M|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|  1.15M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.15M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|  1.15M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.15M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|  1.15M|    gint gaig_temp;                                                          \
  |  |  |  |   99|  1.15M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 1.15M]
  |  |  |  |  ------------------
  |  |  |  |  100|  1.15M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|  1.15M|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|  1.15M|  }))
  |  |  ------------------
  |  |  |  Branch (256:49): [True: 1.15M, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3034:7): [True: 1.15M, False: 0]
  |  Branch (3034:15): [True: 1.15M, False: 0]
  ------------------
 3035|  1.15M|    type_data_unref_U (node, FALSE);
  ------------------
  |  |  814|  1.15M|#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.15M|	       type_descriptive_name_I (class->g_type));
 3039|  1.15M|}
g_type_class_peek:
 3082|   389k|{
 3083|   389k|  TypeNode *node;
 3084|   389k|  gpointer class;
 3085|       |  
 3086|   389k|  node = lookup_type_node_I (type);
 3087|   389k|  if (node && node->is_classed && NODE_REFCOUNT (node) &&
  ------------------
  |  |  256|   779k|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|   389k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   389k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|   389k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|   389k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|   389k|    gint gaig_temp;                                                          \
  |  |  |  |   99|   389k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 389k]
  |  |  |  |  ------------------
  |  |  |  |  100|   389k|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|   389k|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|   389k|  }))
  |  |  ------------------
  |  |  |  Branch (256:49): [True: 389k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3087:7): [True: 389k, False: 0]
  |  Branch (3087:15): [True: 389k, False: 0]
  ------------------
 3088|   389k|      g_atomic_int_get (&node->data->class.init_state) == INITIALIZED)
  ------------------
  |  |   96|   389k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|   389k|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|   389k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|   389k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|   389k|    gint gaig_temp;                                                          \
  |  |   99|   389k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 389k]
  |  |  ------------------
  |  |  100|   389k|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|   389k|    (gint) gaig_temp;                                                        \
  |  |  102|   389k|  }))
  ------------------
  |  Branch (3088:7): [True: 389k, False: 0]
  ------------------
 3089|       |    /* ref_count _may_ be 0 */
 3090|   389k|    class = node->data->class.class;
 3091|      0|  else
 3092|      0|    class = NULL;
 3093|       |  
 3094|   389k|  return class;
 3095|   389k|}
g_type_class_peek_static:
 3112|  1.15M|{
 3113|  1.15M|  TypeNode *node;
 3114|  1.15M|  gpointer class;
 3115|       |  
 3116|  1.15M|  node = lookup_type_node_I (type);
 3117|  1.15M|  if (node && node->is_classed && NODE_REFCOUNT (node) &&
  ------------------
  |  |  256|  2.31M|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|  1.15M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.15M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|  1.15M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.15M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|  1.15M|    gint gaig_temp;                                                          \
  |  |  |  |   99|  1.15M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 1.15M]
  |  |  |  |  ------------------
  |  |  |  |  100|  1.15M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|  1.15M|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|  1.15M|  }))
  |  |  ------------------
  |  |  |  Branch (256:49): [True: 1.15M, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3117:7): [True: 1.15M, False: 0]
  |  Branch (3117:15): [True: 1.15M, False: 0]
  ------------------
 3118|  1.15M|      /* peek only static types: */ node->plugin == NULL &&
  ------------------
  |  Branch (3118:37): [True: 1.15M, False: 0]
  ------------------
 3119|  1.15M|      g_atomic_int_get (&node->data->class.init_state) == INITIALIZED)
  ------------------
  |  |   96|  1.15M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.15M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|  1.15M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.15M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|  1.15M|    gint gaig_temp;                                                          \
  |  |   99|  1.15M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 1.15M]
  |  |  ------------------
  |  |  100|  1.15M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|  1.15M|    (gint) gaig_temp;                                                        \
  |  |  102|  1.15M|  }))
  ------------------
  |  Branch (3119:7): [True: 1.15M, False: 7]
  ------------------
 3120|       |    /* ref_count _may_ be 0 */
 3121|  1.15M|    class = node->data->class.class;
 3122|      7|  else
 3123|      7|    class = NULL;
 3124|       |  
 3125|  1.15M|  return class;
 3126|  1.15M|}
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|  7.81M|{
 3185|  7.81M|  TypeNode *node;
 3186|  7.81M|  TypeNode *iface;
 3187|  7.81M|  gpointer vtable = NULL;
 3188|  7.81M|  GTypeClass *class = instance_class;
 3189|       |  
 3190|  7.81M|  g_return_val_if_fail (instance_class != NULL, NULL);
  ------------------
  |  |  643|  7.81M|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  7.81M|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  7.81M|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  7.81M|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  7.81M| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  7.81M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  7.81M|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  7.81M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 7.81M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  7.81M|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  7.81M|   else                                         \
  |  |  |  |  |  | 1021|  7.81M|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  7.81M|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  7.81M|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 7.81M, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  7.81M|      { } \
  |  |  646|  7.81M|    else \
  |  |  647|  7.81M|      { \
  |  |  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.81M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  7.81M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 7.81M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3191|       |  
 3192|  7.81M|  node = lookup_type_node_I (class->g_type);
 3193|  7.81M|  iface = lookup_type_node_I (iface_type);
 3194|  7.81M|  if (node && node->is_instantiatable && iface)
  ------------------
  |  Branch (3194:7): [True: 7.81M, False: 0]
  |  Branch (3194:15): [True: 7.81M, False: 0]
  |  Branch (3194:42): [True: 7.81M, False: 0]
  ------------------
 3195|  7.81M|    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|  7.81M|  return vtable;
 3200|  7.81M|}
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|    166|{
 3409|    166|  GType type = 0;
 3410|       |  
 3411|    166|  g_return_val_if_fail (name != NULL, 0);
  ------------------
  |  |  643|    166|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    166|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    166|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    166|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    166| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    166|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    166|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    166|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 166, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    166|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    166|   else                                         \
  |  |  |  |  |  | 1021|    166|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    166|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    166|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 166, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    166|      { } \
  |  |  646|    166|    else \
  |  |  647|    166|      { \
  |  |  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|    166|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    166|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 166]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3412|       |  
 3413|    166|  G_READ_LOCK (&type_rw_lock);
  ------------------
  |  |  126|    166|#define G_READ_LOCK(rw_lock)    g_rw_lock_reader_lock (rw_lock)
  ------------------
 3414|    166|  type = (GType) g_hash_table_lookup (static_type_nodes_ht, name);
 3415|    166|  G_READ_UNLOCK (&type_rw_lock);
  ------------------
  |  |  127|    166|#define G_READ_UNLOCK(rw_lock)  g_rw_lock_reader_unlock (rw_lock)
  ------------------
 3416|       |  
 3417|    166|  return type;
 3418|    166|}
g_type_parent:
 3431|  16.3k|{
 3432|  16.3k|  TypeNode *node;
 3433|       |  
 3434|  16.3k|  node = lookup_type_node_I (type);
 3435|       |  
 3436|  16.3k|  return node ? NODE_PARENT_TYPE (node) : 0;
  ------------------
  |  |  253|  16.3k|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
  |  Branch (3436:10): [True: 16.3k, False: 0]
  ------------------
 3437|  16.3k|}
g_type_depth:
 3450|     11|{
 3451|     11|  TypeNode *node;
 3452|       |  
 3453|     11|  node = lookup_type_node_I (type);
 3454|       |  
 3455|     11|  return node ? node->n_supers + 1 : 0;
  ------------------
  |  Branch (3455:10): [True: 11, False: 0]
  ------------------
 3456|     11|}
g_type_is_a:
 3571|   785k|{
 3572|   785k|  TypeNode *node, *iface_node;
 3573|   785k|  gboolean is_a;
 3574|       |
 3575|   785k|  if (type == iface_type)
  ------------------
  |  Branch (3575:7): [True: 1, False: 785k]
  ------------------
 3576|      1|    return TRUE;
  ------------------
  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3577|       |  
 3578|   785k|  node = lookup_type_node_I (type);
 3579|   785k|  iface_node = lookup_type_node_I (iface_type);
 3580|   785k|  is_a = node && iface_node && type_node_conforms_to_U (node, iface_node, TRUE, TRUE);
  ------------------
  |  |  818|   785k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   785k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
                is_a = node && iface_node && type_node_conforms_to_U (node, iface_node, TRUE, TRUE);
  ------------------
  |  |  818|   785k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   785k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  |  Branch (3580:10): [True: 785k, False: 0]
  |  Branch (3580:18): [True: 785k, False: 0]
  |  Branch (3580:32): [True: 785k, False: 69]
  ------------------
 3581|       |  
 3582|   785k|  return is_a;
 3583|   785k|}
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|     24|{
 3917|     24|  TypeNode *node;
 3918|     24|  gboolean result = FALSE;
  ------------------
  |  |  814|     24|#define	FALSE	(0)
  ------------------
 3919|       |  
 3920|     24|  node = lookup_type_node_I (type);
 3921|     24|  if (node)
  ------------------
  |  Branch (3921:7): [True: 24, False: 0]
  ------------------
 3922|     24|    {
 3923|     24|      guint fflags = flags & TYPE_FUNDAMENTAL_FLAG_MASK;
  ------------------
  |  |  142|     24|#define TYPE_FUNDAMENTAL_FLAG_MASK (G_TYPE_FLAG_CLASSED | \
  |  |  143|     24|				    G_TYPE_FLAG_INSTANTIATABLE | \
  |  |  144|     24|				    G_TYPE_FLAG_DERIVABLE | \
  |  |  145|     24|				    G_TYPE_FLAG_DEEP_DERIVABLE)
  ------------------
 3924|     24|      guint tflags = flags & TYPE_FLAG_MASK;
  ------------------
  |  |  146|     24|#define	TYPE_FLAG_MASK		   (G_TYPE_FLAG_ABSTRACT | G_TYPE_FLAG_VALUE_ABSTRACT)
  ------------------
 3925|       |      
 3926|     24|      if (fflags)
  ------------------
  |  Branch (3926:11): [True: 24, False: 0]
  ------------------
 3927|     24|	{
 3928|     24|	  GTypeFundamentalInfo *finfo = type_node_fundamental_info_I (node);
 3929|       |	  
 3930|     24|	  fflags = (finfo->type_flags & fflags) == fflags;
 3931|     24|	}
 3932|      0|      else
 3933|      0|	fflags = TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3934|       |      
 3935|     24|      if (tflags)
  ------------------
  |  Branch (3935:11): [True: 0, False: 24]
  ------------------
 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|     24|      else
 3942|     24|	tflags = TRUE;
  ------------------
  |  |  818|     24|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     24|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3943|       |      
 3944|     24|      result = tflags && fflags;
  ------------------
  |  Branch (3944:16): [True: 24, False: 0]
  |  Branch (3944:26): [True: 24, False: 0]
  ------------------
 3945|     24|    }
 3946|       |  
 3947|     24|  return result;
 3948|     24|}
g_type_fundamental:
 4052|  1.16M|{
 4053|  1.16M|  TypeNode *node = lookup_type_node_I (type_id);
 4054|       |  
 4055|  1.16M|  return node ? NODE_FUNDAMENTAL_TYPE (node) : 0;
  ------------------
  |  |  254|  1.16M|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  |  Branch (4055:10): [True: 1.16M, False: 0]
  ------------------
 4056|  1.16M|}
g_type_check_instance_is_a:
 4061|  21.5M|{
 4062|  21.5M|  TypeNode *node, *iface;
 4063|  21.5M|  gboolean check;
 4064|       |  
 4065|  21.5M|  if (!type_instance || !type_instance->g_class)
  ------------------
  |  Branch (4065:7): [True: 0, False: 21.5M]
  |  Branch (4065:25): [True: 0, False: 21.5M]
  ------------------
 4066|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 4067|       |  
 4068|  21.5M|  node = lookup_type_node_I (type_instance->g_class->g_type);
 4069|  21.5M|  iface = lookup_type_node_I (iface_type);
 4070|  21.5M|  check = node && node->is_instantiatable && iface && type_node_conforms_to_U (node, iface, TRUE, FALSE);
  ------------------
  |  |  818|  21.5M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  21.5M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
                check = node && node->is_instantiatable && iface && type_node_conforms_to_U (node, iface, TRUE, FALSE);
  ------------------
  |  |  814|  21.5M|#define	FALSE	(0)
  ------------------
  |  Branch (4070:11): [True: 21.5M, False: 0]
  |  Branch (4070:19): [True: 21.5M, False: 0]
  |  Branch (4070:46): [True: 21.5M, False: 0]
  |  Branch (4070:55): [True: 21.5M, False: 0]
  ------------------
 4071|       |  
 4072|  21.5M|  return check;
 4073|  21.5M|}
g_type_check_instance_is_fundamentally_a:
 4078|  3.91M|{
 4079|  3.91M|  TypeNode *node;
 4080|  3.91M|  if (!type_instance || !type_instance->g_class)
  ------------------
  |  Branch (4080:7): [True: 0, False: 3.91M]
  |  Branch (4080:25): [True: 0, False: 3.91M]
  ------------------
 4081|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 4082|  3.91M|  node = lookup_type_node_I (type_instance->g_class->g_type);
 4083|  3.91M|  return node && (NODE_FUNDAMENTAL_TYPE(node) == fundamental_type);
  ------------------
  |  |  254|  3.91M|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  |  Branch (4083:10): [True: 3.91M, False: 0]
  |  Branch (4083:18): [True: 3.91M, False: 0]
  ------------------
 4084|  3.91M|}
g_type_check_class_is_a:
 4089|     47|{
 4090|     47|  TypeNode *node, *iface;
 4091|     47|  gboolean check;
 4092|       |  
 4093|     47|  if (!type_class)
  ------------------
  |  Branch (4093:7): [True: 0, False: 47]
  ------------------
 4094|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 4095|       |  
 4096|     47|  node = lookup_type_node_I (type_class->g_type);
 4097|     47|  iface = lookup_type_node_I (is_a_type);
 4098|     47|  check = node && node->is_classed && iface && type_node_conforms_to_U (node, iface, FALSE, FALSE);
  ------------------
  |  |  814|     47|#define	FALSE	(0)
  ------------------
                check = node && node->is_classed && iface && type_node_conforms_to_U (node, iface, FALSE, FALSE);
  ------------------
  |  |  814|     47|#define	FALSE	(0)
  ------------------
  |  Branch (4098:11): [True: 47, False: 0]
  |  Branch (4098:19): [True: 47, False: 0]
  |  Branch (4098:39): [True: 47, False: 0]
  |  Branch (4098:48): [True: 47, False: 0]
  ------------------
 4099|       |  
 4100|     47|  return check;
 4101|     47|}
g_type_check_instance_cast:
 4106|  22.0M|{
 4107|  22.0M|  if (type_instance)
  ------------------
  |  Branch (4107:7): [True: 22.0M, False: 1.51k]
  ------------------
 4108|  22.0M|    {
 4109|  22.0M|      if (type_instance->g_class)
  ------------------
  |  Branch (4109:11): [True: 22.0M, False: 0]
  ------------------
 4110|  22.0M|	{
 4111|  22.0M|	  TypeNode *node, *iface;
 4112|  22.0M|	  gboolean is_instantiatable, check;
 4113|       |	  
 4114|  22.0M|	  node = lookup_type_node_I (type_instance->g_class->g_type);
 4115|  22.0M|	  is_instantiatable = node && node->is_instantiatable;
  ------------------
  |  Branch (4115:24): [True: 22.0M, False: 0]
  |  Branch (4115:32): [True: 22.0M, False: 0]
  ------------------
 4116|  22.0M|	  iface = lookup_type_node_I (iface_type);
 4117|  22.0M|	  check = is_instantiatable && iface && type_node_conforms_to_U (node, iface, TRUE, FALSE);
  ------------------
  |  |  818|  22.0M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  22.0M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
              	  check = is_instantiatable && iface && type_node_conforms_to_U (node, iface, TRUE, FALSE);
  ------------------
  |  |  814|  22.0M|#define	FALSE	(0)
  ------------------
  |  Branch (4117:12): [True: 22.0M, False: 0]
  |  Branch (4117:33): [True: 22.0M, False: 0]
  |  Branch (4117:42): [True: 22.0M, False: 0]
  ------------------
 4118|  22.0M|	  if (check)
  ------------------
  |  Branch (4118:8): [True: 22.0M, False: 0]
  ------------------
 4119|  22.0M|	    return type_instance;
 4120|       |	  
 4121|      0|	  if (is_instantiatable)
  ------------------
  |  Branch (4121:8): [True: 0, False: 0]
  ------------------
 4122|      0|	    g_warning ("invalid cast from '%s' to '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4123|      0|		       type_descriptive_name_I (type_instance->g_class->g_type),
 4124|      0|		       type_descriptive_name_I (iface_type));
 4125|      0|	  else
 4126|      0|	    g_warning ("invalid uninstantiatable type '%s' in cast to '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4127|      0|		       type_descriptive_name_I (type_instance->g_class->g_type),
 4128|      0|		       type_descriptive_name_I (iface_type));
 4129|      0|	}
 4130|      0|      else
 4131|      0|	g_warning ("invalid unclassed pointer in cast to '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4132|  22.0M|		   type_descriptive_name_I (iface_type));
 4133|  22.0M|    }
 4134|       |  
 4135|  1.51k|  return type_instance;
 4136|  22.0M|}
g_type_check_class_cast:
 4141|  2.50M|{
 4142|  2.50M|  if (type_class)
  ------------------
  |  Branch (4142:7): [True: 2.50M, False: 0]
  ------------------
 4143|  2.50M|    {
 4144|  2.50M|      TypeNode *node, *iface;
 4145|  2.50M|      gboolean is_classed, check;
 4146|       |      
 4147|  2.50M|      node = lookup_type_node_I (type_class->g_type);
 4148|  2.50M|      is_classed = node && node->is_classed;
  ------------------
  |  Branch (4148:20): [True: 2.50M, False: 0]
  |  Branch (4148:28): [True: 2.50M, False: 0]
  ------------------
 4149|  2.50M|      iface = lookup_type_node_I (is_a_type);
 4150|  2.50M|      check = is_classed && iface && type_node_conforms_to_U (node, iface, FALSE, FALSE);
  ------------------
  |  |  814|  2.50M|#define	FALSE	(0)
  ------------------
                    check = is_classed && iface && type_node_conforms_to_U (node, iface, FALSE, FALSE);
  ------------------
  |  |  814|  2.50M|#define	FALSE	(0)
  ------------------
  |  Branch (4150:15): [True: 2.50M, False: 0]
  |  Branch (4150:29): [True: 2.50M, False: 0]
  |  Branch (4150:38): [True: 2.50M, False: 0]
  ------------------
 4151|  2.50M|      if (check)
  ------------------
  |  Branch (4151:11): [True: 2.50M, False: 0]
  ------------------
 4152|  2.50M|	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.50M|	       type_descriptive_name_I (is_a_type));
 4166|      0|  return type_class;
 4167|  2.50M|}
g_type_check_instance:
 4180|  2.70M|{
 4181|       |  /* this function is just here to make the signal system
 4182|       |   * conveniently elaborated on instance checks
 4183|       |   */
 4184|  2.70M|  if (type_instance)
  ------------------
  |  Branch (4184:7): [True: 2.70M, False: 0]
  ------------------
 4185|  2.70M|    {
 4186|  2.70M|      if (type_instance->g_class)
  ------------------
  |  Branch (4186:11): [True: 2.70M, False: 0]
  ------------------
 4187|  2.70M|	{
 4188|  2.70M|	  TypeNode *node = lookup_type_node_I (type_instance->g_class->g_type);
 4189|       |	  
 4190|  2.70M|	  if (node && node->is_instantiatable)
  ------------------
  |  Branch (4190:8): [True: 2.70M, False: 0]
  |  Branch (4190:16): [True: 2.70M, False: 0]
  ------------------
 4191|  2.70M|	    return TRUE;
  ------------------
  |  |  818|  2.70M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  2.70M|#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.70M|    }
 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.70M|}
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|   389k|{
 4255|   389k|  return value && type_check_is_value_type_U (value->g_type);
  ------------------
  |  Branch (4255:10): [True: 389k, False: 0]
  |  Branch (4255:19): [True: 389k, False: 0]
  ------------------
 4256|   389k|}
g_type_check_value_holds:
 4261|   389k|{
 4262|   389k|  return value && type_check_is_value_type_U (value->g_type) && g_type_is_a (value->g_type, type);
  ------------------
  |  Branch (4262:10): [True: 389k, False: 0]
  |  Branch (4262:19): [True: 389k, False: 0]
  |  Branch (4262:65): [True: 389k, False: 0]
  ------------------
 4263|   389k|}
g_type_value_table_peek:
 4280|  1.17M|{
 4281|  1.17M|  GTypeValueTable *vtable = NULL;
 4282|  1.17M|  TypeNode *node = lookup_type_node_I (type);
 4283|  1.17M|  gboolean has_refed_data, has_table;
 4284|       |
 4285|  1.17M|  if (node && NODE_REFCOUNT (node) && node->mutatable_check_cache)
  ------------------
  |  |  256|  2.35M|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|  1.17M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.17M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|  1.17M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.17M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|  1.17M|    gint gaig_temp;                                                          \
  |  |  |  |   99|  1.17M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 1.17M]
  |  |  |  |  ------------------
  |  |  |  |  100|  1.17M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|  1.17M|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|  1.17M|  }))
  |  |  ------------------
  |  |  |  Branch (256:49): [True: 1.17M, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4285:7): [True: 1.17M, False: 0]
  |  Branch (4285:39): [True: 1.17M, False: 3.85k]
  ------------------
 4286|  1.17M|    return node->data->common.value_table;
 4287|       |
 4288|  3.85k|  G_READ_LOCK (&type_rw_lock);
  ------------------
  |  |  126|  3.85k|#define G_READ_LOCK(rw_lock)    g_rw_lock_reader_lock (rw_lock)
  ------------------
 4289|       |  
 4290|  3.85k| restart_table_peek:
 4291|  3.85k|  has_refed_data = node && node->data && NODE_REFCOUNT (node) > 0;
  ------------------
  |  |  256|  3.85k|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|  3.85k|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.85k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|  3.85k|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  3.85k|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|  3.85k|    gint gaig_temp;                                                          \
  |  |  |  |   99|  3.85k|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 3.85k]
  |  |  |  |  ------------------
  |  |  |  |  100|  3.85k|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|  3.85k|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|  3.85k|  }))
  |  |  ------------------
  ------------------
  |  Branch (4291:20): [True: 3.85k, False: 0]
  |  Branch (4291:28): [True: 3.85k, False: 0]
  |  Branch (4291:42): [True: 3.85k, False: 0]
  ------------------
 4292|  3.85k|  has_table = has_refed_data && node->data->common.value_table->value_init;
  ------------------
  |  Branch (4292:15): [True: 3.85k, False: 0]
  |  Branch (4292:33): [True: 3.85k, False: 0]
  ------------------
 4293|  3.85k|  if (has_refed_data)
  ------------------
  |  Branch (4293:7): [True: 3.85k, False: 0]
  ------------------
 4294|  3.85k|    {
 4295|  3.85k|      if (has_table)
  ------------------
  |  Branch (4295:11): [True: 3.85k, False: 0]
  ------------------
 4296|  3.85k|	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.85k|    }
 4315|       |  
 4316|  3.85k|  G_READ_UNLOCK (&type_rw_lock);
  ------------------
  |  |  127|  3.85k|#define G_READ_UNLOCK(rw_lock)  g_rw_lock_reader_unlock (rw_lock)
  ------------------
 4317|       |  
 4318|  3.85k|  if (vtable)
  ------------------
  |  Branch (4318:7): [True: 3.85k, False: 0]
  ------------------
 4319|  3.85k|    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.85k|}
_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|     16|{
 4668|     16|  TypeNode *node = lookup_type_node_I (class_gtype);
 4669|       |
 4670|     16|  g_return_val_if_fail (private_size > 0, 0);
  ------------------
  |  |  643|     16|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     16|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     16|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     16|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     16| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     16|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     16|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     16|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 16, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     16|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     16|   else                                         \
  |  |  |  |  |  | 1021|     16|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     16|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     16|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 16, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     16|      { } \
  |  |  646|     16|    else \
  |  |  647|     16|      { \
  |  |  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|     16|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     16|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4671|     16|  g_return_val_if_fail (private_size <= 0xffff, 0);
  ------------------
  |  |  643|     16|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     16|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     16|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     16|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     16| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     16|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     16|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     16|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 16, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     16|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     16|   else                                         \
  |  |  |  |  |  | 1021|     16|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     16|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     16|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 16, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     16|      { } \
  |  |  646|     16|    else \
  |  |  647|     16|      { \
  |  |  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|     16|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     16|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4672|       |
 4673|     16|  if (!node || !node->is_classed || !node->is_instantiatable || !node->data)
  ------------------
  |  Branch (4673:7): [True: 0, False: 16]
  |  Branch (4673:16): [True: 0, False: 16]
  |  Branch (4673:37): [True: 0, False: 16]
  |  Branch (4673:65): [True: 0, False: 16]
  ------------------
 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|     16|  if (node->plugin != NULL)
  ------------------
  |  Branch (4680:7): [True: 0, False: 16]
  ------------------
 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|     16|  return private_size;
 4718|     16|}
g_type_class_adjust_private_offset:
 4724|      8|{
 4725|      8|  GType class_gtype = ((GTypeClass *) g_class)->g_type;
 4726|      8|  TypeNode *node = lookup_type_node_I (class_gtype);
 4727|      8|  gssize private_size;
 4728|       |
 4729|      8|  g_return_if_fail (private_size_or_offset != NULL);
  ------------------
  |  |  630|      8|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      8|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      8|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      8|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      8| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      8|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      8|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      8|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 8, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      8|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      8|   else                                         \
  |  |  |  |  |  | 1021|      8|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      8|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      8|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 8, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      8|      { } \
  |  |  633|      8|    else \
  |  |  634|      8|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      8|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      8|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4730|       |
 4731|       |  /* if we have been passed the offset instead of the private data size,
 4732|       |   * then we consider this as a no-op, and just return the value. see the
 4733|       |   * comment in g_type_add_instance_private() for the full explanation.
 4734|       |   */
 4735|      8|  if (*private_size_or_offset > 0)
  ------------------
  |  Branch (4735:7): [True: 8, False: 0]
  ------------------
 4736|      8|    g_return_if_fail (*private_size_or_offset <= 0xffff);
  ------------------
  |  |  630|      8|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      8|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|      8|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      8|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      8| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      8|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      8|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      8|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 8, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      8|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      8|   else                                         \
  |  |  |  |  |  | 1021|      8|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      8|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      8|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 8, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|      8|      { } \
  |  |  633|      8|    else \
  |  |  634|      8|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|      8|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      8|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4737|      0|  else
 4738|      0|    return;
 4739|       |
 4740|      8|  if (!node || !node->is_classed || !node->is_instantiatable || !node->data)
  ------------------
  |  Branch (4740:7): [True: 0, False: 8]
  |  Branch (4740:16): [True: 0, False: 8]
  |  Branch (4740:37): [True: 0, False: 8]
  |  Branch (4740:65): [True: 0, False: 8]
  ------------------
 4741|      0|    {
 4742|      0|      g_warning ("cannot add private field to invalid (non-instantiatable) type '%s'",
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4743|      0|		 type_descriptive_name_I (class_gtype));
 4744|      0|      *private_size_or_offset = 0;
 4745|      0|      return;
 4746|      0|    }
 4747|       |
 4748|      8|  if (NODE_PARENT_TYPE (node))
  ------------------
  |  |  253|      8|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  |  |  ------------------
  |  |  |  Branch (253:34): [True: 7, False: 1]
  |  |  ------------------
  ------------------
 4749|      7|    {
 4750|      7|      TypeNode *pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|      7|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 4751|      7|      if (node->data->instance.private_size != pnode->data->instance.private_size)
  ------------------
  |  Branch (4751:11): [True: 0, False: 7]
  ------------------
 4752|      0|	{
 4753|      0|	  g_warning ("g_type_add_instance_private() called multiple times for the same type");
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 4754|      0|          *private_size_or_offset = 0;
 4755|      0|	  return;
 4756|      0|	}
 4757|      7|    }
 4758|       |
 4759|      8|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      8|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 4760|       |
 4761|      8|  private_size = ALIGN_STRUCT (node->data->instance.private_size + *private_size_or_offset);
  ------------------
  |  |  161|      8|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      8|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      8|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 4762|      8|  g_assert (private_size <= 0xffff);
  ------------------
  |  |  231|      8|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      8|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      8|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      8|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      8| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      8|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      8|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      8|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 8, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      8|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      8|   else                                         \
  |  |  |  |  |  | 1021|      8|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      8|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      8|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 8, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      8|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      8|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      8|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4763|      8|  node->data->instance.private_size = private_size;
 4764|       |
 4765|      8|  *private_size_or_offset = -(gint) node->data->instance.private_size;
 4766|       |
 4767|      8|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      8|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 4768|      8|}
g_type_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|   626k|{
 4893|   626k|  TypeNode *class_node;
 4894|   626k|  TypeNode *private_node;
 4895|   626k|  TypeNode *parent_node;
 4896|   626k|  gsize offset;
 4897|       |
 4898|   626k|  g_return_val_if_fail (klass != NULL, NULL);
  ------------------
  |  |  643|   626k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   626k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   626k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   626k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   626k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   626k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   626k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   626k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 626k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   626k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   626k|   else                                         \
  |  |  |  |  |  | 1021|   626k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   626k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   626k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 626k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   626k|      { } \
  |  |  646|   626k|    else \
  |  |  647|   626k|      { \
  |  |  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|   626k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   626k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 626k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4899|       |
 4900|   626k|  class_node = lookup_type_node_I (klass->g_type);
 4901|   626k|  if (G_UNLIKELY (!class_node || !class_node->is_classed))
  ------------------
  |  | 1025|   626k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   626k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   626k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   626k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.87M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 626k]
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 626k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   626k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   626k|   else                                         \
  |  |  |  | 1021|   626k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   626k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   626k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 626k]
  |  |  ------------------
  ------------------
 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|   626k|  private_node = lookup_type_node_I (private_type);
 4909|   626k|  if (G_UNLIKELY (!private_node || !NODE_IS_ANCESTOR (private_node, class_node)))
  ------------------
  |  | 1025|   626k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   626k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   626k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   626k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  3.13M|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 626k, False: 0]
  |  |  |  |  |  Branch (1018:8): [True: 626k, False: 0]
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 626k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   626k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   626k|   else                                         \
  |  |  |  | 1021|   626k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   626k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   626k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 626k]
  |  |  ------------------
  ------------------
 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|   626k|  offset = ALIGN_STRUCT (class_node->data->class.class_size);
  ------------------
  |  |  161|   626k|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|   626k|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|   626k|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 4917|       |
 4918|   626k|  if (NODE_PARENT_TYPE (private_node))
  ------------------
  |  |  253|   626k|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  |  |  ------------------
  |  |  |  Branch (253:34): [True: 626k, False: 0]
  |  |  ------------------
  ------------------
 4919|   626k|    {
 4920|   626k|      parent_node = lookup_type_node_I (NODE_PARENT_TYPE (private_node));
  ------------------
  |  |  253|   626k|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 4921|   626k|      g_assert (parent_node->data && NODE_REFCOUNT (parent_node) > 0);
  ------------------
  |  |  231|   626k|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   626k|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|   626k|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|   626k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   626k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   626k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   626k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.13M|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 626k]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 626k, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 626k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   626k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   626k|   else                                         \
  |  |  |  |  |  | 1021|   626k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   626k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   626k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 626k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|   626k|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|   626k|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   626k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 626k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4922|       |
 4923|   626k|      if (G_UNLIKELY (private_node->data->class.class_private_size == parent_node->data->class.class_private_size))
  ------------------
  |  | 1025|   626k|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|   626k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   626k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|   626k|   int _g_boolean_var_;                         \
  |  |  |  | 1018|   626k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 626k]
  |  |  |  |  ------------------
  |  |  |  | 1019|   626k|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|   626k|   else                                         \
  |  |  |  | 1021|   626k|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|   626k|   _g_boolean_var_;                             \
  |  |  |  | 1023|   626k|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 626k]
  |  |  ------------------
  ------------------
 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|   626k|      offset += ALIGN_STRUCT (parent_node->data->class.class_private_size);
  ------------------
  |  |  161|   626k|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|   626k|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|   626k|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 4930|   626k|    }
 4931|       |
 4932|   626k|  return G_STRUCT_MEMBER_P (klass, offset);
  ------------------
  |  |  860|   626k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 4933|   626k|}
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|   129M|{
  396|   129M|  if (utype > G_TYPE_FUNDAMENTAL_MAX)
  ------------------
  |  |   45|   129M|#define	G_TYPE_FUNDAMENTAL_MAX		(255 << G_TYPE_FUNDAMENTAL_SHIFT)
  |  |  ------------------
  |  |  |  |  210|   129M|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  ------------------
  ------------------
  |  Branch (396:7): [True: 122M, False: 7.03M]
  ------------------
  397|   122M|    return (TypeNode*) (utype & ~TYPE_ID_MASK);
  ------------------
  |  |  267|   122M|#define	TYPE_ID_MASK				((GType) ((1 << G_TYPE_FUNDAMENTAL_SHIFT) - 1))
  |  |  ------------------
  |  |  |  |  210|   122M|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  ------------------
  ------------------
  398|  7.03M|  else
  399|  7.03M|    return static_fundamental_type_nodes[utype >> G_TYPE_FUNDAMENTAL_SHIFT];
  ------------------
  |  |  210|  7.03M|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  ------------------
  400|   129M|}
gtype.c:type_iface_add_prerequisite_W:
 1508|      7|{
 1509|      7|  GType prerequisite_type = NODE_TYPE (prerequisite_node);
  ------------------
  |  |  252|      7|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 1510|      7|  GType *prerequisites, *dependants;
 1511|      7|  guint n_dependants, i;
 1512|       |  
 1513|      7|  g_assert (NODE_IS_IFACE (iface) &&
  ------------------
  |  |  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|     42|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 7, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 7, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 7, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1514|      7|	    IFACE_NODE_N_PREREQUISITES (iface) < MAX_N_PREREQUISITES &&
 1515|      7|	    (prerequisite_node->is_instantiatable || NODE_IS_IFACE (prerequisite_node)));
 1516|       |  
 1517|      7|  prerequisites = IFACE_NODE_PREREQUISITES (iface);
  ------------------
  |  |  262|      7|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
 1518|      7|  for (i = 0; i < IFACE_NODE_N_PREREQUISITES (iface); i++)
  ------------------
  |  |  261|      7|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  |  Branch (1518:15): [True: 1, False: 6]
  ------------------
 1519|      1|    if (prerequisites[i] == prerequisite_type)
  ------------------
  |  Branch (1519:9): [True: 0, False: 1]
  ------------------
 1520|      0|      return;			/* we already have that prerequisiste */
 1521|      1|    else if (prerequisites[i] > prerequisite_type)
  ------------------
  |  Branch (1521:14): [True: 1, False: 0]
  ------------------
 1522|      1|      break;
 1523|      7|  IFACE_NODE_N_PREREQUISITES (iface) += 1;
  ------------------
  |  |  261|      7|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
 1524|      7|  IFACE_NODE_PREREQUISITES (iface) = g_renew (GType,
  ------------------
  |  |  262|      7|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
                IFACE_NODE_PREREQUISITES (iface) = g_renew (GType,
  ------------------
  |  |  321|      7|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|      7|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      7|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|      7|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|      7|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|      7|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|      7|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  254|      7|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|      7|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  256|      7|	           (__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|      7|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|      7|	  else							\
  |  |  |  |  259|      7|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|      7|	  __p;							\
  |  |  |  |  261|      7|	}))
  |  |  ------------------
  ------------------
 1525|      7|					      IFACE_NODE_PREREQUISITES (iface),
 1526|      7|					      IFACE_NODE_N_PREREQUISITES (iface));
 1527|      7|  prerequisites = IFACE_NODE_PREREQUISITES (iface);
  ------------------
  |  |  262|      7|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
 1528|      7|  memmove (prerequisites + i + 1, prerequisites + i,
 1529|      7|           sizeof (prerequisites[0]) * (IFACE_NODE_N_PREREQUISITES (iface) - i - 1));
  ------------------
  |  |  261|      7|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
 1530|      7|  prerequisites[i] = prerequisite_type;
 1531|       |  
 1532|       |  /* we want to get notified when prerequisites get added to prerequisite_node */
 1533|      7|  if (NODE_IS_IFACE (prerequisite_node))
  ------------------
  |  |  258|      7|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|      7|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|      7|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      7|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      7|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 0, False: 7]
  |  |  ------------------
  ------------------
 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|      7|  dependants = iface_node_get_dependants_array_L (iface);
  ------------------
  |  |  265|      7|#define	iface_node_get_dependants_array_L(n)	((GType*) type_get_qdata_L ((n), static_quark_dependants_array))
  ------------------
 1546|      7|  n_dependants = dependants ? dependants[0] : 0;
  ------------------
  |  Branch (1546:18): [True: 0, False: 7]
  ------------------
 1547|      7|  for (i = 1; i <= n_dependants; i++)
  ------------------
  |  Branch (1547:15): [True: 0, False: 7]
  ------------------
 1548|      0|    type_iface_add_prerequisite_W (lookup_type_node_I (dependants[i]), prerequisite_node);
 1549|      7|}
gtype.c:check_type_name_I:
  743|    116|{
  744|    116|  static const gchar extra_chars[] = "-_+";
  745|    116|  const gchar *p = type_name;
  746|    116|  gboolean name_valid;
  747|       |  
  748|    116|  if (!type_name[0] || !type_name[1] || !type_name[2])
  ------------------
  |  Branch (748:7): [True: 0, False: 116]
  |  Branch (748:24): [True: 0, False: 116]
  |  Branch (748:41): [True: 0, False: 116]
  ------------------
  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|    116|  name_valid = (p[0] >= 'A' && p[0] <= 'Z') || (p[0] >= 'a' && p[0] <= 'z') || p[0] == '_';
  ------------------
  |  Branch (754:17): [True: 116, False: 0]
  |  Branch (754:32): [True: 90, 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.15k|  for (p = type_name + 1; *p; p++)
  ------------------
  |  Branch (755:27): [True: 1.03k, False: 116]
  ------------------
  756|  1.03k|    name_valid &= ((p[0] >= 'A' && p[0] <= 'Z') ||
  ------------------
  |  Branch (756:21): [True: 1.01k, False: 16]
  |  Branch (756:36): [True: 170, False: 848]
  ------------------
  757|    864|		   (p[0] >= 'a' && p[0] <= 'z') ||
  ------------------
  |  Branch (757:7): [True: 848, False: 16]
  |  Branch (757:22): [True: 848, 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|    116|  if (!name_valid)
  ------------------
  |  Branch (760:7): [True: 0, False: 116]
  ------------------
  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|    116|  if (g_type_from_name (type_name))
  ------------------
  |  Branch (765:7): [True: 0, False: 116]
  ------------------
  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|    116|  return TRUE;
  ------------------
  |  |  818|    116|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    116|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  772|    116|}
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|    120|{
  428|    120|  guint n_supers;
  429|    120|  GType type;
  430|    120|  TypeNode *node;
  431|    120|  guint i, node_size = 0;
  432|       |
  433|    120|  n_supers = pnode ? pnode->n_supers + 1 : 0;
  ------------------
  |  Branch (433:14): [True: 78, False: 42]
  ------------------
  434|       |  
  435|    120|  if (!pnode)
  ------------------
  |  Branch (435:7): [True: 42, False: 78]
  ------------------
  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|    120|  node_size += SIZEOF_BASE_TYPE_NODE ();	      /* TypeNode structure */
  ------------------
  |  |  247|    120|#define SIZEOF_BASE_TYPE_NODE()			(G_STRUCT_OFFSET (TypeNode, supers))
  |  |  ------------------
  |  |  |  |  853|    120|      ((glong) offsetof (struct_type, member))
  |  |  ------------------
  ------------------
  438|    120|  node_size += (sizeof (GType) * (1 + n_supers + 1)); /* self + ancestors + (0) for ->supers[] */
  439|    120|  node = g_malloc0 (node_size);
  440|    120|  if (!pnode)					      /* offset fundamental types */
  ------------------
  |  Branch (440:7): [True: 42, False: 78]
  ------------------
  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|     78|  else
  451|     78|    type = (GType) node;
  452|       |  
  453|    120|  g_assert ((type & TYPE_ID_MASK) == 0);
  ------------------
  |  |  231|    120|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    120|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|    120|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|    120|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    120| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    120|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    120|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    120|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 120, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    120|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    120|   else                                         \
  |  |  |  |  |  | 1021|    120|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    120|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    120|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|    120|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|    120|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    120|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 120]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  454|       |  
  455|    120|  node->n_supers = n_supers;
  456|    120|  if (!pnode)
  ------------------
  |  Branch (456:7): [True: 42, False: 78]
  ------------------
  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|     78|  else
  473|     78|    {
  474|     78|      node->supers[0] = type;
  475|     78|      memcpy (node->supers + 1, pnode->supers, sizeof (GType) * (1 + pnode->n_supers + 1));
  476|       |      
  477|     78|      node->is_classed = pnode->is_classed;
  478|     78|      node->is_instantiatable = pnode->is_instantiatable;
  479|       |      
  480|     78|      if (NODE_IS_IFACE (node))
  ------------------
  |  |  258|     78|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|     78|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     78|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     78|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     78|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 8, False: 70]
  |  |  ------------------
  ------------------
  481|      8|	{
  482|      8|	  IFACE_NODE_N_PREREQUISITES (node) = 0;
  ------------------
  |  |  261|      8|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  483|      8|	  IFACE_NODE_PREREQUISITES (node) = NULL;
  ------------------
  |  |  262|      8|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
  484|      8|	}
  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: 11, False: 59]
  ------------------
  494|     11|	    {
  495|     22|	      for (j = 0; j < IFACE_ENTRIES_N_ENTRIES (entries); j++)
  ------------------
  |  |  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 (495:20): [True: 11, False: 11]
  ------------------
  496|     11|		{
  497|     11|		  entries->entry[j].vtable = NULL;
  498|     11|		  entries->entry[j].init_state = UNINITIALIZED;
  499|     11|		}
  500|     11|	      _g_atomic_array_update (CLASSED_NODE_IFACES_ENTRIES (node),
  ------------------
  |  |  259|     11|#define	CLASSED_NODE_IFACES_ENTRIES(node)	(&(node)->_prot.iface_entries)
  ------------------
  501|     11|				      entries);
  502|     11|	    }
  503|     70|	}
  504|       |
  505|     78|      i = pnode->n_children++;
  506|     78|      pnode->children = g_renew (GType, pnode->children, pnode->n_children);
  ------------------
  |  |  321|     78|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|     78|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     78|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|     78|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|     78|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|     78|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|     78|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 78]
  |  |  |  |  ------------------
  |  |  |  |  254|     78|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|     78|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 0, False: 78]
  |  |  |  |  ------------------
  |  |  |  |  256|     78|	           (__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|     78|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|     78|	  else							\
  |  |  |  |  259|     78|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|     78|	  __p;							\
  |  |  |  |  261|     78|	}))
  |  |  ------------------
  ------------------
  507|     78|      pnode->children[i] = type;
  508|     78|    }
  509|       |
  510|    120|  TRACE(GOBJECT_TYPE_NEW(name, node->supers[1], type));
  511|       |
  512|    120|  node->plugin = plugin;
  513|    120|  node->n_children = 0;
  514|    120|  node->children = NULL;
  515|    120|  node->data = NULL;
  516|    120|  node->qname = g_quark_from_string (name);
  517|    120|  node->global_gdata = NULL;
  518|    120|  g_hash_table_insert (static_type_nodes_ht,
  519|    120|		       (gpointer) g_quark_to_string (node->qname),
  520|    120|		       (gpointer) type);
  521|       |
  522|    120|  g_atomic_int_inc ((gint *)&type_registration_serial);
  ------------------
  |  |  148|    120|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|    120|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|    120|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|    120|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|    120|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 120]
  |  |  ------------------
  |  |  151|    120|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|    120|  }))
  ------------------
  523|       |
  524|    120|  return node;
  525|    120|}
gtype.c:check_type_info_I:
  892|    116|{
  893|    116|  GTypeFundamentalInfo *finfo = type_node_fundamental_info_I (lookup_type_node_I (ftype));
  894|    116|  gboolean is_interface = ftype == G_TYPE_INTERFACE;
  ------------------
  |  |   68|    116|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  ------------------
  |  |  |  |  221|    116|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|    116|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  895|       |  
  896|    116|  g_assert (ftype <= G_TYPE_FUNDAMENTAL_MAX && !(ftype & TYPE_ID_MASK));
  ------------------
  |  |  231|    116|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    116|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|    116|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|    116|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    116| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    116|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    116|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    348|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 116, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 116, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    116|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    116|   else                                         \
  |  |  |  |  |  | 1021|    116|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    116|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    116|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 116, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|    116|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|    116|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    116|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 116]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  897|       |  
  898|       |  /* check instance members */
  899|    116|  if (!(finfo->type_flags & G_TYPE_FLAG_INSTANTIATABLE) &&
  ------------------
  |  Branch (899:7): [True: 46, False: 70]
  ------------------
  900|     46|      (info->instance_size || info->n_preallocs || info->instance_init))
  ------------------
  |  Branch (900:8): [True: 0, False: 46]
  |  Branch (900:31): [True: 0, False: 46]
  |  Branch (900:52): [True: 0, False: 46]
  ------------------
  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|    116|  if (!((finfo->type_flags & G_TYPE_FLAG_CLASSED) || is_interface) &&
  ------------------
  |  Branch (912:9): [True: 74, False: 42]
  |  Branch (912:54): [True: 8, 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|    116|  if (is_interface && info->class_size < sizeof (GTypeInterface))
  ------------------
  |  Branch (926:7): [True: 8, False: 108]
  |  Branch (926:23): [True: 0, False: 8]
  ------------------
  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|    116|  if (finfo->type_flags & G_TYPE_FLAG_CLASSED)
  ------------------
  |  Branch (933:7): [True: 74, False: 42]
  ------------------
  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|    116|  if (finfo->type_flags & G_TYPE_FLAG_INSTANTIATABLE)
  ------------------
  |  Branch (951:7): [True: 70, False: 46]
  ------------------
  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|    116|  return TRUE;
  ------------------
  |  |  818|    116|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    116|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  970|    116|}
gtype.c:type_data_make_W:
 1088|    118|{
 1089|    118|  TypeData *data;
 1090|    118|  GTypeValueTable *vtable = NULL;
 1091|    118|  guint vtable_size = 0;
 1092|       |  
 1093|    118|  g_assert (node->data == NULL && info != NULL);
  ------------------
  |  |  231|    118|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    118|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|    118|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|    118|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    118| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    118|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    118|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    354|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 118, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 118, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    118|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    118|   else                                         \
  |  |  |  |  |  | 1021|    118|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    118|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    118|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 118, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|    118|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|    118|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    118|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 118]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1094|       |  
 1095|    118|  if (!value_table)
  ------------------
  |  Branch (1095:7): [True: 80, False: 38]
  ------------------
 1096|     80|    {
 1097|     80|      TypeNode *pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|     80|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 1098|       |      
 1099|     80|      if (pnode)
  ------------------
  |  Branch (1099:11): [True: 76, False: 4]
  ------------------
 1100|     76|	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|     80|    }
 1108|    118|  if (value_table)
  ------------------
  |  Branch (1108:7): [True: 42, False: 76]
  ------------------
 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|    118|  if (node->is_instantiatable) /* careful, is_instantiatable is also is_classed */
  ------------------
  |  Branch (1119:7): [True: 70, False: 48]
  ------------------
 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|     48|  else if (node->is_classed) /* only classed */
  ------------------
  |  Branch (1145:12): [True: 4, False: 44]
  ------------------
 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|     44|  else if (NODE_IS_IFACE (node))
  ------------------
  |  |  258|     44|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|     44|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     44|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     44|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     44|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 10, False: 34]
  |  |  ------------------
  ------------------
 1165|     10|    {
 1166|     10|      data = g_malloc0 (sizeof (IFaceData) + vtable_size);
 1167|     10|      if (vtable_size)
  ------------------
  |  Branch (1167:11): [True: 2, False: 8]
  ------------------
 1168|      2|	vtable = G_STRUCT_MEMBER_P (data, sizeof (IFaceData));
  ------------------
  |  |  860|      2|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1169|     10|      data->iface.vtable_size = info->class_size;
 1170|     10|      data->iface.vtable_init_base = info->base_init;
 1171|     10|      data->iface.vtable_finalize_base = info->base_finalize;
 1172|     10|      data->iface.dflt_init = info->class_init;
 1173|     10|      data->iface.dflt_finalize = info->class_finalize;
 1174|     10|      data->iface.dflt_data = info->class_data;
 1175|     10|      data->iface.dflt_vtable = NULL;
 1176|     10|    }
 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|    118|  node->data = data;
 1191|       |  
 1192|    118|  if (vtable_size)
  ------------------
  |  Branch (1192:7): [True: 42, False: 76]
  ------------------
 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|    118|  node->data->common.value_table = vtable;
 1216|    118|  node->mutatable_check_cache = (node->data->common.value_table->value_init != NULL &&
  ------------------
  |  Branch (1216:34): [True: 106, False: 12]
  ------------------
 1217|    106|				 !((G_TYPE_FLAG_VALUE_ABSTRACT | G_TYPE_FLAG_ABSTRACT) &
  ------------------
  |  Branch (1217:6): [True: 99, False: 7]
  ------------------
 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|    118|  g_assert (node->data->common.value_table != NULL); /* paranoid */
  ------------------
  |  |  231|    118|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    118|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|    118|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|    118|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    118| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    118|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    118|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    118|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 118, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    118|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    118|   else                                         \
  |  |  |  |  |  | 1021|    118|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    118|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    118|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 118, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|    118|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|    118|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    118|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 118]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1221|       |
 1222|    118|  g_atomic_int_set ((int *) &node->ref_count, 1);
  ------------------
  |  |  104|    118|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|    118|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  105|    118|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|    118|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  106|    118|    gint gais_temp = (gint) (newval);                                        \
  |  |  107|    118|    (void) (0 ? *(atomic) ^ (newval) : 1);                                   \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 118]
  |  |  ------------------
  |  |  108|    118|    __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST);         \
  |  |  109|    118|  }))
  ------------------
 1223|    118|}
gtype.c:check_value_table_I:
  828|    116|{
  829|    116|  if (!value_table)
  ------------------
  |  Branch (829:7): [True: 78, False: 38]
  ------------------
  830|     78|    return FALSE;
  ------------------
  |  |  814|     78|#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|    116|}
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|     78|{
  778|     78|  TypeNode *pnode;
  779|     78|  GTypeFundamentalInfo* finfo;
  780|       |  
  781|     78|  pnode = lookup_type_node_I (parent_type);
  782|     78|  if (!pnode)
  ------------------
  |  Branch (782:7): [True: 0, False: 78]
  ------------------
  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|     78|  finfo = type_node_fundamental_info_I (pnode);
  790|       |  /* ensure flat derivability */
  791|     78|  if (!(finfo->type_flags & G_TYPE_FLAG_DERIVABLE))
  ------------------
  |  Branch (791:7): [True: 0, False: 78]
  ------------------
  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|     78|  if (parent_type != NODE_FUNDAMENTAL_TYPE (pnode) &&
  ------------------
  |  |  254|    156|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  |  Branch (799:7): [True: 13, False: 65]
  ------------------
  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|     78|  return TRUE;
  ------------------
  |  |  818|     78|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     78|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  809|     78|}
gtype.c:type_data_ref_Wm:
 1227|     78|{
 1228|     78|  if (!node->data)
  ------------------
  |  Branch (1228:7): [True: 0, False: 78]
  ------------------
 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|     78|  else
 1259|     78|    {
 1260|     78|      g_assert (NODE_REFCOUNT (node) > 0);
  ------------------
  |  |  231|     78|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     78|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     78|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 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|    234|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 78]
  |  |  |  |  |  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     78|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     78|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     78|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 78]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1261|       |      
 1262|     78|      g_atomic_int_inc ((int *) &node->ref_count);
  ------------------
  |  |  148|     78|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     78|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|     78|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|     78|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|     78|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 78]
  |  |  ------------------
  |  |  151|     78|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|     78|  }))
  ------------------
 1263|     78|    }
 1264|     78|}
gtype.c:type_node_new_W:
  567|     78|{
  568|     78|  g_assert (pnode);
  ------------------
  |  |  231|     78|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     78|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     78|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     78|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     78|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     78|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 78]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  569|     78|  g_assert (pnode->n_supers < MAX_N_SUPERS);
  ------------------
  |  |  231|     78|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     78|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     78|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     78|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     78|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     78|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 78]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  570|     78|  g_assert (pnode->n_children < MAX_N_CHILDREN);
  ------------------
  |  |  231|     78|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     78|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     78|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     78|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     78|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     78|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 78]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  571|       |  
  572|     78|  return type_node_any_new_W (pnode, NODE_FUNDAMENTAL_TYPE (pnode), name, plugin, 0);
  ------------------
  |  |  254|     78|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  573|     78|}
gtype.c:check_add_interface_L:
  991|     15|{
  992|     15|  TypeNode *node = lookup_type_node_I (instance_type);
  993|     15|  TypeNode *iface = lookup_type_node_I (iface_type);
  994|     15|  IFaceEntry *entry;
  995|     15|  TypeNode *tnode;
  996|     15|  GType *prerequisites;
  997|     15|  guint i;
  998|       |
  999|       |  
 1000|     15|  if (!node || !node->is_instantiatable)
  ------------------
  |  Branch (1000:7): [True: 0, False: 15]
  |  Branch (1000:16): [True: 0, False: 15]
  ------------------
 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|     15|  if (!iface || !NODE_IS_IFACE (iface))
  ------------------
  |  |  258|     15|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|     15|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     15|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     15|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     15|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1006:7): [True: 0, False: 15]
  |  Branch (1006:17): [True: 0, False: 15]
  ------------------
 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|     15|  if (node->data && node->data->class.class)
  ------------------
  |  Branch (1013:7): [True: 15, False: 0]
  |  Branch (1013:21): [True: 0, False: 15]
  ------------------
 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|     15|  tnode = lookup_type_node_I (NODE_PARENT_TYPE (iface));
  ------------------
  |  |  253|     15|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 1020|     15|  if (NODE_PARENT_TYPE (tnode) && !type_lookup_iface_entry_L (node, tnode))
  ------------------
  |  |  253|     30|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  |  |  ------------------
  |  |  |  Branch (253:34): [True: 0, False: 15]
  |  |  ------------------
  ------------------
  |  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|     15|  entry = type_lookup_iface_entry_L (node, iface);
 1031|     15|  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: 15]
  |  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|     15|  tnode = find_conforming_child_type_L (node, iface);  /* tnode is_a node */
 1043|     15|  if (tnode)
  ------------------
  |  Branch (1043:7): [True: 0, False: 15]
  ------------------
 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|     15|  prerequisites = IFACE_NODE_PREREQUISITES (iface);
  ------------------
  |  |  262|     15|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
 1052|     31|  for (i = 0; i < IFACE_NODE_N_PREREQUISITES (iface); i++)
  ------------------
  |  |  261|     31|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  |  Branch (1052:15): [True: 16, False: 15]
  ------------------
 1053|     16|    {
 1054|     16|      tnode = lookup_type_node_I (prerequisites[i]);
 1055|     16|      if (!type_node_is_a_L (node, tnode))
  ------------------
  |  Branch (1055:11): [True: 0, False: 16]
  ------------------
 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|     16|    }
 1064|     15|  return TRUE;
  ------------------
  |  |  818|     15|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     15|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1065|     15|}
gtype.c:type_lookup_iface_entry_L:
  619|     78|{
  620|     78|  if (!NODE_IS_IFACE (iface_node))
  ------------------
  |  |  258|     78|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|     78|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     78|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     78|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     78|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (620:7): [True: 0, False: 78]
  ------------------
  621|      0|    return NULL;
  622|       |
  623|     78|  return lookup_iface_entry_I (CLASSED_NODE_IFACES_ENTRIES_LOCKED (node),
  ------------------
  |  |  260|     78|#define	CLASSED_NODE_IFACES_ENTRIES_LOCKED(node)(G_ATOMIC_ARRAY_GET_LOCKED(CLASSED_NODE_IFACES_ENTRIES((node)), IFaceEntries))
  |  |  ------------------
  |  |  |  |   42|     78|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  |  |  ------------------
  ------------------
  624|     78|			       iface_node);
  625|     78|}
gtype.c:lookup_iface_entry_I:
  578|  25.2M|{
  579|  25.2M|  guint8 *offsets;
  580|  25.2M|  gsize offset_index;
  581|  25.2M|  IFaceEntry *check;
  582|  25.2M|  gsize index;
  583|  25.2M|  IFaceEntry *entry;
  584|       |
  585|  25.2M|  if (entries == NULL)
  ------------------
  |  Branch (585:7): [True: 26, False: 25.2M]
  ------------------
  586|     26|    return NULL;
  587|       |
  588|  25.2M|  G_ATOMIC_ARRAY_DO_TRANSACTION
  ------------------
  |  |   44|  25.2M|#define G_ATOMIC_ARRAY_DO_TRANSACTION(_array, _type, _C_) G_STMT_START {	\
  |  |  ------------------
  |  |  |  |  874|  25.2M|#define G_STMT_START  do
  |  |  ------------------
  |  |   45|  25.2M|    gpointer *_datap  = &(_array)->data;				\
  |  |   46|  25.2M|    _type *transaction_data, *__check;						\
  |  |   47|  25.2M|										\
  |  |   48|  25.2M|    __check = g_atomic_pointer_get (_datap);					\
  |  |  ------------------
  |  |  |  |  113|  25.2M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  25.2M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  25.2M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  25.2M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  25.2M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  25.2M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  25.2M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  25.2M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  25.2M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  25.2M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  25.2M|  }))
  |  |  ------------------
  |  |   49|  25.2M|    do {									\
  |  |   50|  25.2M|      transaction_data = __check;						\
  |  |   51|   252M|      {_C_;}									\
  |  |  ------------------
  |  |  |  Branch (51:8): [True: 25.2M, False: 6]
  |  |  |  Branch (51:8): [True: 25.2M, False: 2]
  |  |  |  Branch (51:8): [True: 25.2M, False: 2]
  |  |  |  Branch (51:8): [True: 25.2M, False: 11]
  |  |  |  Branch (51:8): [True: 25.2M, False: 0]
  |  |  ------------------
  |  |   52|  25.2M|      __check = g_atomic_pointer_get (_datap);					\
  |  |  ------------------
  |  |  |  |  113|  25.2M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  25.2M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  25.2M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  25.2M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  25.2M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  25.2M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  25.2M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  25.2M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  25.2M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  25.2M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  25.2M|  }))
  |  |  ------------------
  |  |   53|  25.2M|    } while (transaction_data != __check);					\
  |  |  ------------------
  |  |  |  Branch (53:14): [True: 0, False: 25.2M]
  |  |  ------------------
  |  |   54|  25.2M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  25.2M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 25.2M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  589|  25.2M|    (&iface_node->_prot.offsets, guint8,
  590|       |
  591|  25.2M|     entry = NULL;
  592|  25.2M|     offsets = transaction_data;
  593|  25.2M|     offset_index = entries->offset_index;
  594|  25.2M|     if (offsets != NULL &&
  595|  25.2M|	 offset_index < G_ATOMIC_ARRAY_DATA_SIZE(offsets))
  596|  25.2M|       {
  597|  25.2M|	 index = offsets[offset_index];
  598|  25.2M|	 if (index > 0)
  599|  25.2M|	   {
  600|       |	     /* zero means unset, subtract one to get real index */
  601|  25.2M|	     index -= 1;
  602|       |
  603|  25.2M|	     if (index < IFACE_ENTRIES_N_ENTRIES (entries))
  604|  25.2M|	       {
  605|  25.2M|		 check = (IFaceEntry *)&entries->entry[index];
  606|  25.2M|		 if (check->iface_type == NODE_TYPE (iface_node))
  607|  25.2M|		   entry = check;
  608|  25.2M|	       }
  609|  25.2M|	   }
  610|  25.2M|       }
  611|  25.2M|     );
  612|       |
  613|  25.2M| return entry;
  614|  25.2M|}
gtype.c:type_iface_peek_holder_L:
 1750|     30|{
 1751|     30|  IFaceHolder *iholder;
 1752|       |  
 1753|     30|  g_assert (NODE_IS_IFACE (iface));
  ------------------
  |  |  231|     30|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     30|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     30|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     30|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     30| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     30|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     30|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     30|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 30, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     30|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     30|   else                                         \
  |  |  |  |  |  | 1021|     30|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     30|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     30|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 30, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     30|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     30|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     30|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1754|       |  
 1755|     30|  iholder = iface_node_get_holders_L (iface);
  ------------------
  |  |  263|     30|#define	iface_node_get_holders_L(node)		((IFaceHolder*) type_get_qdata_L ((node), static_quark_iface_holder))
  ------------------
 1756|     47|  while (iholder && iholder->instance_type != instance_type)
  ------------------
  |  Branch (1756:10): [True: 39, False: 8]
  |  Branch (1756:21): [True: 17, False: 22]
  ------------------
 1757|     17|    iholder = iholder->next;
 1758|     30|  return iholder;
 1759|     30|}
gtype.c:find_conforming_child_type_L:
  975|     15|{
  976|     15|  TypeNode *node = NULL;
  977|     15|  guint i;
  978|       |  
  979|     15|  if (type_lookup_iface_entry_L (pnode, iface))
  ------------------
  |  Branch (979:7): [True: 0, False: 15]
  ------------------
  980|      0|    return pnode;
  981|       |  
  982|     15|  for (i = 0; i < pnode->n_children && !node; i++)
  ------------------
  |  Branch (982:15): [True: 0, False: 15]
  |  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|     15|  return node;
  986|     15|}
gtype.c:check_interface_info_I:
 1071|     15|{
 1072|     15|  if ((info->interface_finalize || info->interface_data) && !info->interface_init)
  ------------------
  |  Branch (1072:8): [True: 0, False: 15]
  |  Branch (1072:36): [True: 0, False: 15]
  |  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|     15|  return TRUE;
  ------------------
  |  |  818|     15|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     15|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1081|     15|}
gtype.c:type_add_interface_Wm:
 1469|     15|{
 1470|     15|  IFaceHolder *iholder = g_new0 (IFaceHolder, 1);
  ------------------
  |  |  307|     15|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|     15|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     15|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|     15|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|     15|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|     15|	  gpointer __p;						\
  |  |  |  |  239|     15|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 15]
  |  |  |  |  ------------------
  |  |  |  |  240|     15|	    __p = g_##func (__n);				\
  |  |  |  |  241|     15|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 15, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|     15|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|     15|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|     15|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 15]
  |  |  |  |  |  Branch (242:26): [True: 15, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|     15|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|     15|	  else							\
  |  |  |  |  245|     15|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|     15|	  __p;							\
  |  |  |  |  247|     15|	}))
  |  |  ------------------
  ------------------
 1471|     15|  IFaceEntry *entry;
 1472|     15|  guint i;
 1473|       |
 1474|     15|  g_assert (node->is_instantiatable && NODE_IS_IFACE (iface) && ((info && !plugin) || (!info && plugin)));
  ------------------
  |  |  231|     15|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     15|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     15|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     15|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     15| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     15|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     15|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    120|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 15, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 15, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 15, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 15, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     15|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     15|   else                                         \
  |  |  |  |  |  | 1021|     15|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     15|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     15|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 15, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     15|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     15|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     15|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 15]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1475|       |  
 1476|     15|  iholder->next = iface_node_get_holders_L (iface);
  ------------------
  |  |  263|     15|#define	iface_node_get_holders_L(node)		((IFaceHolder*) type_get_qdata_L ((node), static_quark_iface_holder))
  ------------------
 1477|     15|  iface_node_set_holders_W (iface, iholder);
  ------------------
  |  |  264|     15|#define	iface_node_set_holders_W(node, holders)	(type_set_qdata_W ((node), static_quark_iface_holder, (holders)))
  ------------------
 1478|     15|  iholder->instance_type = NODE_TYPE (node);
  ------------------
  |  |  252|     15|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 1479|     15|  iholder->info = info ? g_memdup2 (info, sizeof (*info)) : NULL;
  ------------------
  |  Branch (1479:19): [True: 15, False: 0]
  ------------------
 1480|     15|  iholder->plugin = plugin;
 1481|       |
 1482|       |  /* create an iface entry for this type */
 1483|     15|  type_node_add_iface_entry_W (node, NODE_TYPE (iface), NULL);
  ------------------
  |  |  252|     15|#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|     15|  if (node->data)
  ------------------
  |  Branch (1488:7): [True: 15, False: 0]
  ------------------
 1489|     15|    {
 1490|     15|      InitState class_state = g_atomic_int_get (&node->data->class.init_state);
  ------------------
  |  |   96|     15|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     15|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|     15|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|     15|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|     15|    gint gaig_temp;                                                          \
  |  |   99|     15|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 15]
  |  |  ------------------
  |  |  100|     15|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|     15|    (gint) gaig_temp;                                                        \
  |  |  102|     15|  }))
  ------------------
 1491|       |      
 1492|     15|      if (class_state >= BASE_IFACE_INIT)
  ------------------
  |  Branch (1492:11): [True: 0, False: 15]
  ------------------
 1493|      0|        type_iface_vtable_base_init_Wm (iface, node);
 1494|       |      
 1495|     15|      if (class_state >= IFACE_INIT)
  ------------------
  |  Branch (1495:11): [True: 0, False: 15]
  ------------------
 1496|      0|        type_iface_vtable_iface_init_Wm (iface, node);
 1497|     15|    }
 1498|       |  
 1499|       |  /* create iface entries for children of this type */
 1500|     15|  entry = type_lookup_iface_entry_L (node, iface);
 1501|     15|  for (i = 0; i < node->n_children; i++)
  ------------------
  |  Branch (1501:15): [True: 0, False: 15]
  ------------------
 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|     15|}
gtype.c:type_node_add_iface_entry_W:
 1369|     15|{
 1370|     15|  IFaceEntries *entries;
 1371|     15|  IFaceEntry *entry;
 1372|     15|  TypeNode *iface_node;
 1373|     15|  guint i, j;
 1374|     15|  guint num_entries;
 1375|       |
 1376|     15|  g_assert (node->is_instantiatable);
  ------------------
  |  |  231|     15|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     15|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     15|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     15|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     15| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     15|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     15|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     15|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 15, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     15|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     15|   else                                         \
  |  |  |  |  |  | 1021|     15|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     15|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     15|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 15, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     15|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     15|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     15|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 15]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1377|       |
 1378|     15|  entries = CLASSED_NODE_IFACES_ENTRIES_LOCKED (node);
  ------------------
  |  |  260|     15|#define	CLASSED_NODE_IFACES_ENTRIES_LOCKED(node)(G_ATOMIC_ARRAY_GET_LOCKED(CLASSED_NODE_IFACES_ENTRIES((node)), IFaceEntries))
  |  |  ------------------
  |  |  |  |   42|     15|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  |  |  ------------------
  ------------------
 1379|     15|  if (entries != NULL)
  ------------------
  |  Branch (1379:7): [True: 8, False: 7]
  ------------------
 1380|      8|    {
 1381|      8|      num_entries = IFACE_ENTRIES_N_ENTRIES (entries);
  ------------------
  |  |  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))
  |  |  ------------------
  ------------------
 1382|       |
 1383|      8|      g_assert (num_entries < MAX_N_INTERFACES);
  ------------------
  |  |  231|      8|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      8|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      8|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      8|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      8| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      8|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      8|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      8|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 8, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      8|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      8|   else                                         \
  |  |  |  |  |  | 1021|      8|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      8|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      8|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 8, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      8|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      8|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      8|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1384|       |
 1385|     16|      for (i = 0; i < num_entries; i++)
  ------------------
  |  Branch (1385:19): [True: 8, False: 8]
  ------------------
 1386|      8|	{
 1387|      8|	  entry = &entries->entry[i];
 1388|      8|	  if (entry->iface_type == iface_type)
  ------------------
  |  Branch (1388:8): [True: 0, False: 8]
  ------------------
 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|      8|	}
 1409|      8|    }
 1410|       |
 1411|     15|  entries = _g_atomic_array_copy (CLASSED_NODE_IFACES_ENTRIES (node),
  ------------------
  |  |  259|     15|#define	CLASSED_NODE_IFACES_ENTRIES(node)	(&(node)->_prot.iface_entries)
  ------------------
 1412|     15|				  IFACE_ENTRIES_HEADER_SIZE,
  ------------------
  |  |  293|     15|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  ------------------
 1413|     15|				  sizeof (IFaceEntry));
 1414|     15|  num_entries = IFACE_ENTRIES_N_ENTRIES (entries);
  ------------------
  |  |  294|     15|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|     15|#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|     15|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
 1415|     15|  i = num_entries - 1;
 1416|     15|  if (i == 0)
  ------------------
  |  Branch (1416:7): [True: 7, False: 8]
  ------------------
 1417|      7|    entries->offset_index = 0;
 1418|     15|  entries->entry[i].iface_type = iface_type;
 1419|     15|  entries->entry[i].vtable = NULL;
 1420|     15|  entries->entry[i].init_state = UNINITIALIZED;
 1421|       |
 1422|     15|  if (parent_entry)
  ------------------
  |  Branch (1422:7): [True: 0, False: 15]
  ------------------
 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|     15|  iface_node = lookup_type_node_I (iface_type);
 1433|       |
 1434|     15|  if (iface_node_has_available_offset_L (iface_node,
  ------------------
  |  Branch (1434:7): [True: 13, False: 2]
  ------------------
 1435|     15|					 entries->offset_index,
 1436|     15|					 i))
 1437|     13|    {
 1438|     13|      iface_node_set_offset_L (iface_node,
 1439|     13|			       entries->offset_index, i);
 1440|     13|    }
 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|     15|  _g_atomic_array_update (CLASSED_NODE_IFACES_ENTRIES (node), entries);
  ------------------
  |  |  259|     15|#define	CLASSED_NODE_IFACES_ENTRIES(node)	(&(node)->_prot.iface_entries)
  ------------------
 1456|       |
 1457|     15|  if (parent_entry)
  ------------------
  |  Branch (1457:7): [True: 0, False: 15]
  ------------------
 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|     15|}
gtype.c:iface_node_has_available_offset_L:
 1285|     21|{
 1286|     21|  guint8 *offsets;
 1287|       |
 1288|     21|  offsets = G_ATOMIC_ARRAY_GET_LOCKED (&iface_node->_prot.offsets, guint8);
  ------------------
  |  |   42|     21|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  ------------------
 1289|     21|  if (offsets == NULL)
  ------------------
  |  Branch (1289:7): [True: 6, False: 15]
  ------------------
 1290|      6|    return TRUE;
  ------------------
  |  |  818|      6|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      6|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1291|       |
 1292|     15|  if (G_ATOMIC_ARRAY_DATA_SIZE (offsets) <= offset)
  ------------------
  |  |   28|     15|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  ------------------
  |  Branch (1292:7): [True: 3, False: 12]
  ------------------
 1293|      3|    return TRUE;
  ------------------
  |  |  818|      3|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      3|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1294|       |
 1295|     12|  if (offsets[offset] == 0 ||
  ------------------
  |  Branch (1295:7): [True: 0, False: 12]
  ------------------
 1296|     12|      offsets[offset] == for_index+1)
  ------------------
  |  Branch (1296:7): [True: 8, False: 4]
  ------------------
 1297|      8|    return TRUE;
  ------------------
  |  |  818|      8|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      8|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1298|       |
 1299|      4|  return FALSE;
  ------------------
  |  |  814|      4|#define	FALSE	(0)
  ------------------
 1300|     12|}
gtype.c:iface_node_set_offset_L:
 1336|     16|{
 1337|     16|  guint8 *offsets, *old_offsets;
 1338|     16|  gsize new_size, old_size;
 1339|     16|  gsize i;
 1340|       |
 1341|     16|  old_offsets = G_ATOMIC_ARRAY_GET_LOCKED (&iface_node->_prot.offsets, guint8);
  ------------------
  |  |   42|     16|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  ------------------
 1342|     16|  if (old_offsets == NULL)
  ------------------
  |  Branch (1342:7): [True: 6, False: 10]
  ------------------
 1343|      6|    old_size = 0;
 1344|     10|  else
 1345|     10|    {
 1346|     10|      old_size = G_ATOMIC_ARRAY_DATA_SIZE (old_offsets);
  ------------------
  |  |   28|     10|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  ------------------
 1347|     10|      if (offset < old_size &&
  ------------------
  |  Branch (1347:11): [True: 7, False: 3]
  ------------------
 1348|      7|	  old_offsets[offset] == index + 1)
  ------------------
  |  Branch (1348:4): [True: 7, False: 0]
  ------------------
 1349|      7|	return; /* Already set to this index, return */
 1350|     10|    }
 1351|      9|  new_size = MAX (old_size, offset + 1);
  ------------------
  |  |  822|      9|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 0, False: 9]
  |  |  ------------------
  ------------------
 1352|       |
 1353|      9|  offsets = _g_atomic_array_copy (&iface_node->_prot.offsets,
 1354|      9|				  0, new_size - old_size);
 1355|       |
 1356|       |  /* Mark new area as unused */
 1357|     18|  for (i = old_size; i < new_size; i++)
  ------------------
  |  Branch (1357:22): [True: 9, False: 9]
  ------------------
 1358|      9|    offsets[i] = 0;
 1359|       |
 1360|      9|  offsets[offset] = index + 1;
 1361|       |
 1362|      9|  _g_atomic_array_update (&iface_node->_prot.offsets, offsets);
 1363|      9|}
gtype.c:find_free_iface_offset_L:
 1304|      2|{
 1305|      2|  IFaceEntry *entry;
 1306|      2|  TypeNode *iface_node;
 1307|      2|  gsize offset;
 1308|      2|  int i;
 1309|      2|  int n_entries;
 1310|       |
 1311|      2|  n_entries = IFACE_ENTRIES_N_ENTRIES (entries);
  ------------------
  |  |  294|      2|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|      2|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  |  |  ------------------
  |  |               #define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |  293|      2|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
 1312|      2|  offset = 0;
 1313|      2|  do
 1314|      4|    {
 1315|      8|      for (i = 0; i < n_entries; i++)
  ------------------
  |  Branch (1315:19): [True: 6, False: 2]
  ------------------
 1316|      6|	{
 1317|      6|	  entry = &entries->entry[i];
 1318|      6|	  iface_node = lookup_type_node_I (entry->iface_type);
 1319|       |
 1320|      6|	  if (!iface_node_has_available_offset_L (iface_node, offset, i))
  ------------------
  |  Branch (1320:8): [True: 2, False: 4]
  ------------------
 1321|      2|            {
 1322|      2|              offset++;
 1323|      2|              break;
 1324|      2|            }
 1325|      6|	}
 1326|      4|    }
 1327|      4|  while (i != n_entries);
  ------------------
  |  Branch (1327:10): [True: 2, False: 2]
  ------------------
 1328|       |
 1329|      2|  return offset;
 1330|      2|}
gtype.c:type_iface_vtable_base_init_Wm:
 2048|     19|{
 2049|     19|  IFaceEntry *entry;
 2050|     19|  IFaceHolder *iholder;
 2051|     19|  GTypeInterface *vtable = NULL;
 2052|     19|  TypeNode *pnode;
 2053|       |  
 2054|       |  /* type_iface_retrieve_holder_info_Wm() doesn't modify write lock for returning NULL */
 2055|     19|  iholder = type_iface_retrieve_holder_info_Wm (iface, NODE_TYPE (node), TRUE);
  ------------------
  |  |  252|     19|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
                iholder = type_iface_retrieve_holder_info_Wm (iface, NODE_TYPE (node), TRUE);
  ------------------
  |  |  818|     19|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     19|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2056|     19|  if (!iholder)
  ------------------
  |  Branch (2056:7): [True: 8, False: 11]
  ------------------
 2057|      8|    return FALSE;	/* we don't modify write lock upon FALSE */
  ------------------
  |  |  814|      8|#define	FALSE	(0)
  ------------------
 2058|       |
 2059|     11|  type_iface_ensure_dflt_vtable_Wm (iface);
 2060|       |
 2061|     11|  entry = type_lookup_iface_entry_L (node, iface);
 2062|       |
 2063|     11|  g_assert (iface->data && entry && entry->vtable == NULL && iholder && iholder->info);
  ------------------
  |  |  231|     11|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     11|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     11|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     11|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     11| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     11|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     99|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     11|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     11|   else                                         \
  |  |  |  |  |  | 1021|     11|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     11|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     11|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     11|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     11|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     11|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2064|       |  
 2065|     11|  entry->init_state = IFACE_INIT;
 2066|       |
 2067|     11|  pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|     11|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 2068|     11|  if (pnode)	/* want to copy over parent iface contents */
  ------------------
  |  Branch (2068:7): [True: 11, False: 0]
  ------------------
 2069|     11|    {
 2070|     11|      IFaceEntry *pentry = type_lookup_iface_entry_L (pnode, iface);
 2071|       |      
 2072|     11|      if (pentry)
  ------------------
  |  Branch (2072:11): [True: 0, False: 11]
  ------------------
 2073|      0|	vtable = g_memdup2 (pentry->vtable, iface->data->iface.vtable_size);
 2074|     11|    }
 2075|     11|  if (!vtable)
  ------------------
  |  Branch (2075:7): [True: 11, False: 0]
  ------------------
 2076|     11|    vtable = g_memdup2 (iface->data->iface.dflt_vtable, iface->data->iface.vtable_size);
 2077|     11|  entry->vtable = vtable;
 2078|     11|  vtable->g_type = NODE_TYPE (iface);
  ------------------
  |  |  252|     11|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2079|     11|  vtable->g_instance_type = NODE_TYPE (node);
  ------------------
  |  |  252|     11|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2080|       |  
 2081|     11|  if (iface->data->iface.vtable_init_base)
  ------------------
  |  Branch (2081:7): [True: 0, False: 11]
  ------------------
 2082|      0|    {
 2083|      0|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      0|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2084|      0|      iface->data->iface.vtable_init_base (vtable);
 2085|      0|      G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      0|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2086|      0|    }
 2087|     11|  return TRUE;	/* initialized the vtable */
  ------------------
  |  |  818|     11|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     11|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2088|     11|}
gtype.c:type_iface_retrieve_holder_info_Wm:
 1765|     19|{
 1766|     19|  IFaceHolder *iholder = type_iface_peek_holder_L (iface, instance_type);
 1767|       |  
 1768|     19|  if (iholder && !iholder->info && need_info)
  ------------------
  |  Branch (1768:7): [True: 11, False: 8]
  |  Branch (1768:18): [True: 0, False: 11]
  |  Branch (1768:36): [True: 0, False: 0]
  ------------------
 1769|      0|    {
 1770|      0|      GInterfaceInfo tmp_info;
 1771|       |      
 1772|      0|      g_assert (iholder->plugin != NULL);
  ------------------
  |  |  231|      0|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      0|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      0|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      0| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      0|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      0|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      0|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      0|   else                                         \
  |  |  |  |  |  | 1021|      0|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      0|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      0|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      0|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      0|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1773|       |      
 1774|      0|      type_data_ref_Wm (iface);
 1775|      0|      if (iholder->info)
  ------------------
  |  Branch (1775:11): [True: 0, False: 0]
  ------------------
 1776|      0|	INVALID_RECURSION ("g_type_plugin_*", iface->plugin, NODE_NAME (iface));
  ------------------
  |  |  131|      0|#define	INVALID_RECURSION(func, arg, type_name) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  132|      0|    static const gchar _action[] = " invalidly modified type ";  \
  |  |  133|      0|    gpointer _arg = (gpointer) (arg); const gchar *_tname = (type_name), *_fname = (func); \
  |  |  134|      0|    if (_arg) \
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  135|      0|      g_error ("%s(%p)%s'%s'", _fname, _arg, _action, _tname); \
  |  |  ------------------
  |  |  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  |  |  337|      0|                        for (;;) ;                   \
  |  |  |  |  338|      0|                      } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  136|      0|    else \
  |  |  137|      0|      g_error ("%s()%s'%s'", _fname, _action, _tname); \
  |  |  ------------------
  |  |  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  |  |  337|      0|                        for (;;) ;                   \
  |  |  |  |  338|      0|                      } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  138|      0|}G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1777|       |      
 1778|      0|      memset (&tmp_info, 0, sizeof (tmp_info));
 1779|       |      
 1780|      0|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      0|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 1781|      0|      g_type_plugin_use (iholder->plugin);
 1782|      0|      g_type_plugin_complete_interface_info (iholder->plugin, instance_type, NODE_TYPE (iface), &tmp_info);
  ------------------
  |  |  252|      0|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 1783|      0|      G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      0|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 1784|      0|      if (iholder->info)
  ------------------
  |  Branch (1784:11): [True: 0, False: 0]
  ------------------
 1785|      0|        INVALID_RECURSION ("g_type_plugin_*", iholder->plugin, NODE_NAME (iface));
  ------------------
  |  |  131|      0|#define	INVALID_RECURSION(func, arg, type_name) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |  132|      0|    static const gchar _action[] = " invalidly modified type ";  \
  |  |  133|      0|    gpointer _arg = (gpointer) (arg); const gchar *_tname = (type_name), *_fname = (func); \
  |  |  134|      0|    if (_arg) \
  |  |  ------------------
  |  |  |  Branch (134:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  135|      0|      g_error ("%s(%p)%s'%s'", _fname, _arg, _action, _tname); \
  |  |  ------------------
  |  |  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  |  |  337|      0|                        for (;;) ;                   \
  |  |  |  |  338|      0|                      } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  136|      0|    else \
  |  |  137|      0|      g_error ("%s()%s'%s'", _fname, _action, _tname); \
  |  |  ------------------
  |  |  |  |  333|      0|#define g_error(...)  G_STMT_START {                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  334|      0|                        g_log (G_LOG_DOMAIN,         \
  |  |  |  |  335|      0|                               G_LOG_LEVEL_ERROR,    \
  |  |  |  |  336|      0|                               __VA_ARGS__);         \
  |  |  |  |  337|      0|                        for (;;) ;                   \
  |  |  |  |  338|      0|                      } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  138|      0|}G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1786|       |      
 1787|      0|      check_interface_info_I (iface, instance_type, &tmp_info);
 1788|      0|      iholder->info = g_memdup2 (&tmp_info, sizeof (tmp_info));
 1789|      0|    }
 1790|       |  
 1791|     19|  return iholder;	/* we don't modify write lock upon returning NULL */
 1792|     19|}
gtype.c:type_iface_vtable_iface_init_Wm:
 2099|     11|{
 2100|     11|  IFaceEntry *entry = type_lookup_iface_entry_L (node, iface);
 2101|     11|  IFaceHolder *iholder = type_iface_peek_holder_L (iface, NODE_TYPE (node));
  ------------------
  |  |  252|     11|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2102|     11|  GTypeInterface *vtable = NULL;
 2103|     11|  guint i;
 2104|       |  
 2105|       |  /* iholder->info should have been filled in by type_iface_vtable_base_init_Wm() */
 2106|     11|  g_assert (iface->data && entry && iholder && iholder->info);
  ------------------
  |  |  231|     11|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     11|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     11|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     11|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     11| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     11|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     77|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     11|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     11|   else                                         \
  |  |  |  |  |  | 1021|     11|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     11|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     11|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     11|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     11|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     11|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2107|     11|  g_assert (entry->init_state == IFACE_INIT); /* assert prior base_init() */
  ------------------
  |  |  231|     11|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     11|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     11|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     11|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     11| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     11|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     11|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     11|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     11|   else                                         \
  |  |  |  |  |  | 1021|     11|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     11|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     11|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     11|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     11|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     11|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2108|       |  
 2109|     11|  entry->init_state = INITIALIZED;
 2110|       |      
 2111|     11|  vtable = entry->vtable;
 2112|       |
 2113|     11|  if (iholder->info->interface_init)
  ------------------
  |  Branch (2113:7): [True: 11, False: 0]
  ------------------
 2114|     11|    {
 2115|     11|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|     11|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2116|     11|      if (iholder->info->interface_init)
  ------------------
  |  Branch (2116:11): [True: 11, False: 0]
  ------------------
 2117|     11|	iholder->info->interface_init (vtable, iholder->info->interface_data);
 2118|     11|      G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|     11|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2119|     11|    }
 2120|       |  
 2121|     22|  for (i = 0; i < static_n_iface_check_funcs; i++)
  ------------------
  |  Branch (2121:15): [True: 11, False: 11]
  ------------------
 2122|     11|    {
 2123|     11|      GTypeInterfaceCheckFunc check_func = static_iface_check_funcs[i].check_func;
 2124|     11|      gpointer check_data = static_iface_check_funcs[i].check_data;
 2125|       |
 2126|     11|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|     11|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2127|     11|      check_func (check_data, (gpointer)vtable);
 2128|     11|      G_WRITE_LOCK (&type_rw_lock);      
  ------------------
  |  |  128|     11|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2129|     11|    }
 2130|     11|}
gtype.c:type_data_ref_U:
 1268|  1.15M|{
 1269|  1.15M|  guint current;
 1270|       |
 1271|  1.15M|  do {
 1272|  1.15M|    current = NODE_REFCOUNT (node);
  ------------------
  |  |  256|  1.15M|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|  1.15M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.15M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|  1.15M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.15M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|  1.15M|    gint gaig_temp;                                                          \
  |  |  |  |   99|  1.15M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 1.15M]
  |  |  |  |  ------------------
  |  |  |  |  100|  1.15M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|  1.15M|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|  1.15M|  }))
  |  |  ------------------
  ------------------
 1273|       |
 1274|  1.15M|    if (current < 1)
  ------------------
  |  Branch (1274:9): [True: 0, False: 1.15M]
  ------------------
 1275|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1276|  1.15M|  } while (!g_atomic_int_compare_and_exchange ((int *) &node->ref_count, current, current + 1));
  ------------------
  |  |  160|  1.15M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.15M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  161|  1.15M|    gint gaicae_oldval = (oldval);                                           \
  |  |  162|  1.15M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.15M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  163|  1.15M|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  ------------------
  |  |  |  Branch (163:13): [Folded, False: 1.15M]
  |  |  ------------------
  |  |  164|  1.15M|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|  1.15M|#define	FALSE	(0)
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  818|  1.15M|#define	TRUE	(!FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  1.15M|#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.15M, False: 0]
  |  |  ------------------
  |  |  165|  1.15M|  }))
  ------------------
  |  Branch (1276:12): [True: 0, False: 1.15M]
  ------------------
 1277|       |
 1278|  1.15M|  return TRUE;
  ------------------
  |  |  818|  1.15M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  1.15M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1279|  1.15M|}
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: 31, False: 8]
  ------------------
 2237|     31|	  i < IFACE_ENTRIES_N_ENTRIES (entries))
  ------------------
  |  |  294|     31|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|     31|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  |  |  ------------------
  |  |               #define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |  293|     31|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (2237:4): [True: 19, False: 12]
  ------------------
 2238|     19|    {
 2239|     19|      entry = &entries->entry[i];
 2240|     19|      while (i < IFACE_ENTRIES_N_ENTRIES (entries) &&
  ------------------
  |  |  294|     38|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|     19|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  |  |  ------------------
  |  |               #define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |  293|     19|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (2240:14): [True: 19, False: 0]
  ------------------
 2241|     19|	     entry->init_state == IFACE_INIT)
  ------------------
  |  Branch (2241:7): [True: 0, False: 19]
  ------------------
 2242|      0|	{
 2243|      0|	  entry++;
 2244|      0|	  i++;
 2245|      0|	}
 2246|       |
 2247|     19|      if (i == IFACE_ENTRIES_N_ENTRIES (entries))
  ------------------
  |  |  294|     19|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|     19|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  |  |  ------------------
  |  |               #define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |  293|     19|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (2247:11): [True: 0, False: 19]
  ------------------
 2248|      0|	break;
 2249|       |
 2250|     19|      if (!type_iface_vtable_base_init_Wm (lookup_type_node_I (entry->iface_type), node))
  ------------------
  |  Branch (2250:11): [True: 8, False: 11]
  ------------------
 2251|      8|	{
 2252|      8|	  guint j;
 2253|      8|	  IFaceEntries *pentries = CLASSED_NODE_IFACES_ENTRIES_LOCKED (pnode);
  ------------------
  |  |  260|      8|#define	CLASSED_NODE_IFACES_ENTRIES_LOCKED(node)(G_ATOMIC_ARRAY_GET_LOCKED(CLASSED_NODE_IFACES_ENTRIES((node)), IFaceEntries))
  |  |  ------------------
  |  |  |  |   42|      8|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  |  |  ------------------
  ------------------
 2254|       |	  
 2255|       |	  /* need to get this interface from parent, type_iface_vtable_base_init_Wm()
 2256|       |	   * doesn't modify write lock upon FALSE, so entry is still valid; 
 2257|       |	   */
 2258|      8|	  g_assert (pnode != NULL);
  ------------------
  |  |  231|      8|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      8|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      8|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      8|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      8| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      8|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      8|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      8|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 8, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      8|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      8|   else                                         \
  |  |  |  |  |  | 1021|      8|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      8|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      8|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 8, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      8|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      8|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      8|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2259|       |
 2260|      8|	  if (pentries)
  ------------------
  |  Branch (2260:8): [True: 8, False: 0]
  ------------------
 2261|      8|	    for (j = 0; j < IFACE_ENTRIES_N_ENTRIES (pentries); j++)
  ------------------
  |  |  294|      8|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|      8|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  |  |  ------------------
  |  |               #define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |  293|      8|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (2261:18): [True: 8, False: 0]
  ------------------
 2262|      8|	      {
 2263|      8|		IFaceEntry *pentry = &pentries->entry[j];
 2264|       |
 2265|      8|		if (pentry->iface_type == entry->iface_type)
  ------------------
  |  Branch (2265:7): [True: 8, False: 0]
  ------------------
 2266|      8|		  {
 2267|      8|		    entry->vtable = pentry->vtable;
 2268|      8|		    entry->init_state = INITIALIZED;
 2269|      8|		    break;
 2270|      8|		  }
 2271|      8|	      }
 2272|      8|	  g_assert (entry->vtable != NULL);
  ------------------
  |  |  231|      8|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      8|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      8|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      8|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      8| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      8|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      8|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      8|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 8, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      8|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      8|   else                                         \
  |  |  |  |  |  | 1021|      8|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      8|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      8|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 8, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      8|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      8|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      8|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2273|      8|	}
 2274|       |
 2275|       |      /* If the write lock was released, additional interface entries might
 2276|       |       * have been inserted into CLASSED_NODE_IFACES_ENTRIES (node); they'll
 2277|       |       * be base-initialized when inserted, so we don't have to worry that
 2278|       |       * we might miss them. Uninitialized entries can only be moved higher
 2279|       |       * when new ones are inserted.
 2280|       |       */
 2281|     19|      i++;
 2282|     19|    }
 2283|       |  
 2284|     20|  g_atomic_int_set (&node->data->class.init_state, CLASS_INIT);
  ------------------
  |  |  104|     20|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     20|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  105|     20|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|     20|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  106|     20|    gint gais_temp = (gint) (newval);                                        \
  |  |  107|     20|    (void) (0 ? *(atomic) ^ (newval) : 1);                                   \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 20]
  |  |  ------------------
  |  |  108|     20|    __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST);         \
  |  |  109|     20|  }))
  ------------------
 2285|       |  
 2286|     20|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|     20|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2287|       |
 2288|     20|  if (node->data->class.class_init)
  ------------------
  |  Branch (2288:7): [True: 20, False: 0]
  ------------------
 2289|     20|    node->data->class.class_init (class, (gpointer) node->data->class.class_data);
 2290|       |  
 2291|     20|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|     20|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2292|       |  
 2293|     20|  g_atomic_int_set (&node->data->class.init_state, IFACE_INIT);
  ------------------
  |  |  104|     20|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     20|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  105|     20|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|     20|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  106|     20|    gint gais_temp = (gint) (newval);                                        \
  |  |  107|     20|    (void) (0 ? *(atomic) ^ (newval) : 1);                                   \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 20]
  |  |  ------------------
  |  |  108|     20|    __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST);         \
  |  |  109|     20|  }))
  ------------------
 2294|       |  
 2295|       |  /* finish initializing the interfaces through our holder info.
 2296|       |   * inherited interfaces are already init_state == INITIALIZED, because
 2297|       |   * they either got setup in the above base_init loop, or during
 2298|       |   * class_init from within type_add_interface_Wm() for this or
 2299|       |   * an ancestor type.
 2300|       |   */
 2301|     20|  i = 0;
 2302|     31|  while ((entries = CLASSED_NODE_IFACES_ENTRIES_LOCKED (node)) != NULL)
  ------------------
  |  |  260|     31|#define	CLASSED_NODE_IFACES_ENTRIES_LOCKED(node)(G_ATOMIC_ARRAY_GET_LOCKED(CLASSED_NODE_IFACES_ENTRIES((node)), IFaceEntries))
  |  |  ------------------
  |  |  |  |   42|     31|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  |  |  ------------------
  ------------------
  |  Branch (2302:10): [True: 23, False: 8]
  ------------------
 2303|     23|    {
 2304|     23|      entry = &entries->entry[i];
 2305|     31|      while (i < IFACE_ENTRIES_N_ENTRIES (entries) &&
  ------------------
  |  |  294|     62|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|     31|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  |  |  ------------------
  |  |               #define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |  293|     31|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (2305:14): [True: 19, False: 12]
  ------------------
 2306|     19|	     entry->init_state == INITIALIZED)
  ------------------
  |  Branch (2306:7): [True: 8, False: 11]
  ------------------
 2307|      8|	{
 2308|      8|	  entry++;
 2309|      8|	  i++;
 2310|      8|	}
 2311|       |
 2312|     23|      if (i == IFACE_ENTRIES_N_ENTRIES (entries))
  ------------------
  |  |  294|     23|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|     23|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  |  |  ------------------
  |  |               #define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |  293|     23|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (2312:11): [True: 12, False: 11]
  ------------------
 2313|     12|	break;
 2314|       |
 2315|     11|      type_iface_vtable_iface_init_Wm (lookup_type_node_I (entry->iface_type), node);
 2316|       |      
 2317|       |      /* As in the loop above, additional initialized entries might be inserted
 2318|       |       * if the write lock is released, but that's harmless because the entries
 2319|       |       * we need to initialize only move higher in the list.
 2320|       |       */
 2321|     11|      i++;
 2322|     11|    }
 2323|       |  
 2324|     20|  g_atomic_int_set (&node->data->class.init_state, INITIALIZED);
  ------------------
  |  |  104|     20|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     20|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  105|     20|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|     20|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  106|     20|    gint gais_temp = (gint) (newval);                                        \
  |  |  107|     20|    (void) (0 ? *(atomic) ^ (newval) : 1);                                   \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 20]
  |  |  ------------------
  |  |  108|     20|    __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST);         \
  |  |  109|     20|  }))
  ------------------
 2325|     20|}
gtype.c:type_data_unref_U:
 2479|  1.15M|{
 2480|  1.15M|  guint current;
 2481|       |
 2482|  1.15M|  do {
 2483|  1.15M|    current = NODE_REFCOUNT (node);
  ------------------
  |  |  256|  1.15M|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|  1.15M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.15M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|  1.15M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  1.15M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|  1.15M|    gint gaig_temp;                                                          \
  |  |  |  |   99|  1.15M|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 1.15M]
  |  |  |  |  ------------------
  |  |  |  |  100|  1.15M|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|  1.15M|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|  1.15M|  }))
  |  |  ------------------
  ------------------
 2484|       |
 2485|  1.15M|    if (current <= 1)
  ------------------
  |  Branch (2485:9): [True: 0, False: 1.15M]
  ------------------
 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.15M|  } while (!g_atomic_int_compare_and_exchange ((int *) &node->ref_count, current, current - 1));
  ------------------
  |  |  160|  1.15M|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|  1.15M|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  161|  1.15M|    gint gaicae_oldval = (oldval);                                           \
  |  |  162|  1.15M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|  1.15M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  163|  1.15M|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  ------------------
  |  |  |  Branch (163:13): [Folded, False: 1.15M]
  |  |  ------------------
  |  |  164|  1.15M|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|  1.15M|#define	FALSE	(0)
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  818|  1.15M|#define	TRUE	(!FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|  1.15M|#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.15M, False: 0]
  |  |  ------------------
  |  |  165|  1.15M|  }))
  ------------------
  |  Branch (2511:12): [True: 0, False: 1.15M]
  ------------------
 2512|  1.15M|}
gtype.c:type_lookup_iface_vtable_I:
  632|  25.2M|{
  633|  25.2M|  IFaceEntry *entry;
  634|  25.2M|  gboolean res;
  635|       |
  636|  25.2M|  if (!NODE_IS_IFACE (iface_node))
  ------------------
  |  |  258|  25.2M|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|  25.2M|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|  25.2M|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|  25.2M|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|  25.2M|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (636:7): [True: 0, False: 25.2M]
  ------------------
  637|      0|    {
  638|      0|      if (vtable_ptr)
  ------------------
  |  Branch (638:11): [True: 0, False: 0]
  ------------------
  639|      0|	*vtable_ptr = NULL;
  640|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  641|      0|    }
  642|       |
  643|  25.2M|  G_ATOMIC_ARRAY_DO_TRANSACTION
  ------------------
  |  |   44|  25.2M|#define G_ATOMIC_ARRAY_DO_TRANSACTION(_array, _type, _C_) G_STMT_START {	\
  |  |  ------------------
  |  |  |  |  874|  25.2M|#define G_STMT_START  do
  |  |  ------------------
  |  |   45|  25.2M|    gpointer *_datap  = &(_array)->data;				\
  |  |   46|  25.2M|    _type *transaction_data, *__check;						\
  |  |   47|  25.2M|										\
  |  |   48|  25.2M|    __check = g_atomic_pointer_get (_datap);					\
  |  |  ------------------
  |  |  |  |  113|  25.2M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  25.2M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  25.2M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  25.2M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  25.2M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  25.2M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  25.2M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  25.2M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  25.2M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  25.2M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  25.2M|  }))
  |  |  ------------------
  |  |   49|  25.2M|    do {									\
  |  |   50|  25.2M|      transaction_data = __check;						\
  |  |   51|  48.6M|      {_C_;}									\
  |  |  ------------------
  |  |  |  Branch (51:8): [True: 7.81M, False: 0]
  |  |  |  Branch (51:8): [True: 7.81M, False: 17.3M]
  |  |  ------------------
  |  |   52|  25.2M|      __check = g_atomic_pointer_get (_datap);					\
  |  |  ------------------
  |  |  |  |  113|  25.2M|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  25.2M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|  25.2M|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|  25.2M|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|  25.2M|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  25.2M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|  25.2M|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|  25.2M|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|  25.2M|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|  25.2M|    gapg_temp_newval;                                                      \
  |  |  |  |  119|  25.2M|  }))
  |  |  ------------------
  |  |   53|  25.2M|    } while (transaction_data != __check);					\
  |  |  ------------------
  |  |  |  Branch (53:14): [True: 0, False: 25.2M]
  |  |  ------------------
  |  |   54|  25.2M|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  25.2M|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 25.2M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  644|  25.2M|    (CLASSED_NODE_IFACES_ENTRIES (node), IFaceEntries,
  645|       |
  646|  25.2M|     entry = lookup_iface_entry_I (transaction_data, iface_node);
  647|  25.2M|     res = entry != NULL;
  648|  25.2M|     if (vtable_ptr)
  649|  25.2M|       {
  650|  25.2M|	 if (entry)
  651|  25.2M|	   *vtable_ptr = entry->vtable;
  652|  25.2M|	 else
  653|  25.2M|	   *vtable_ptr = NULL;
  654|  25.2M|       }
  655|  25.2M|     );
  656|       |
  657|  25.2M|  return res;
  658|  25.2M|}
gtype.c:type_iface_ensure_dflt_vtable_Wm:
 2014|     11|{
 2015|     11|  g_assert (iface->data);
  ------------------
  |  |  231|     11|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     11|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     11|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     11|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     11| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     11|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     11|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     11|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 11, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     11|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     11|   else                                         \
  |  |  |  |  |  | 1021|     11|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     11|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     11|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     11|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     11|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     11|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2016|       |
 2017|     11|  if (!iface->data->iface.dflt_vtable)
  ------------------
  |  Branch (2017:7): [True: 4, False: 7]
  ------------------
 2018|      4|    {
 2019|      4|      GTypeInterface *vtable = g_malloc0 (iface->data->iface.vtable_size);
 2020|      4|      iface->data->iface.dflt_vtable = vtable;
 2021|      4|      vtable->g_type = NODE_TYPE (iface);
  ------------------
  |  |  252|      4|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2022|      4|      vtable->g_instance_type = 0;
 2023|      4|      if (iface->data->iface.vtable_init_base ||
  ------------------
  |  Branch (2023:11): [True: 0, False: 4]
  ------------------
 2024|      4|          iface->data->iface.dflt_init)
  ------------------
  |  Branch (2024:11): [True: 4, False: 0]
  ------------------
 2025|      4|        {
 2026|      4|          G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      4|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2027|      4|          if (iface->data->iface.vtable_init_base)
  ------------------
  |  Branch (2027:15): [True: 0, False: 4]
  ------------------
 2028|      0|            iface->data->iface.vtable_init_base (vtable);
 2029|      4|          if (iface->data->iface.dflt_init)
  ------------------
  |  Branch (2029:15): [True: 4, False: 0]
  ------------------
 2030|      4|            iface->data->iface.dflt_init (vtable, (gpointer) iface->data->iface.dflt_data);
 2031|      4|          G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      4|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2032|      4|        }
 2033|      4|    }
 2034|     11|}
gtype.c:type_node_is_a_L:
 3543|     16|{
 3544|     16|  return type_node_check_conformities_UorL (node, iface_node, TRUE, TRUE, TRUE);
  ------------------
  |  |  818|     16|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     16|#define	FALSE	(0)
  |  |  ------------------
  ------------------
                return type_node_check_conformities_UorL (node, iface_node, TRUE, TRUE, TRUE);
  ------------------
  |  |  818|     16|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     16|#define	FALSE	(0)
  |  |  ------------------
  ------------------
                return type_node_check_conformities_UorL (node, iface_node, TRUE, TRUE, TRUE);
  ------------------
  |  |  818|     16|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     16|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3545|     16|}
gtype.c:type_node_check_conformities_UorL:
 3504|  46.8M|{
 3505|  46.8M|  gboolean match;
 3506|       |
 3507|  46.8M|  if (/* support_inheritance && */
 3508|  46.8M|      NODE_IS_ANCESTOR (iface_node, node))
  ------------------
  |  |  270|  46.8M|        ((ancestor)->n_supers <= (node)->n_supers &&                                        \
  |  |  ------------------
  |  |  |  Branch (270:10): [True: 46.8M, False: 5]
  |  |  ------------------
  |  |  271|  46.8M|	 (node)->supers[(node)->n_supers - (ancestor)->n_supers] == NODE_TYPE (ancestor))
  |  |  ------------------
  |  |  |  |  252|  46.8M|#define NODE_TYPE(node)				(node->supers[0])
  |  |  ------------------
  |  |  |  Branch (271:3): [True: 29.4M, False: 17.3M]
  |  |  ------------------
  ------------------
 3509|  29.4M|    return TRUE;
  ------------------
  |  |  818|  29.4M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  29.4M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3510|       |
 3511|  17.3M|  support_interfaces = support_interfaces && node->is_instantiatable && NODE_IS_IFACE (iface_node);
  ------------------
  |  |  258|  34.7M|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|  17.3M|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|  17.3M|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|  17.3M|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|  17.3M|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 17.3M, False: 57]
  |  |  ------------------
  ------------------
  |  Branch (3511:24): [True: 17.3M, False: 0]
  |  Branch (3511:46): [True: 17.3M, False: 6]
  ------------------
 3512|  17.3M|  support_prerequisites = support_prerequisites && NODE_IS_IFACE (node);
  ------------------
  |  |  258|  17.3M|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|     69|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     69|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     69|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     69|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 6, False: 63]
  |  |  ------------------
  ------------------
  |  Branch (3512:27): [True: 69, False: 17.3M]
  ------------------
 3513|  17.3M|  match = FALSE;
  ------------------
  |  |  814|  17.3M|#define	FALSE	(0)
  ------------------
 3514|  17.3M|  if (support_interfaces)
  ------------------
  |  Branch (3514:7): [True: 17.3M, False: 63]
  ------------------
 3515|  17.3M|    {
 3516|  17.3M|      if (have_lock)
  ------------------
  |  Branch (3516:11): [True: 0, False: 17.3M]
  ------------------
 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|  17.3M|      else
 3522|  17.3M|	{
 3523|  17.3M|	  if (type_lookup_iface_vtable_I (node, iface_node, NULL))
  ------------------
  |  Branch (3523:8): [True: 17.3M, False: 6]
  ------------------
 3524|  17.3M|	    match = TRUE;
  ------------------
  |  |  818|  17.3M|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|  17.3M|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3525|  17.3M|	}
 3526|  17.3M|    }
 3527|  17.3M|  if (!match &&
  ------------------
  |  Branch (3527:7): [True: 69, False: 17.3M]
  ------------------
 3528|     69|      support_prerequisites)
  ------------------
  |  Branch (3528:7): [True: 6, False: 63]
  ------------------
 3529|      6|    {
 3530|      6|      if (!have_lock)
  ------------------
  |  Branch (3530:11): [True: 6, False: 0]
  ------------------
 3531|      6|	G_READ_LOCK (&type_rw_lock);
  ------------------
  |  |  126|      6|#define G_READ_LOCK(rw_lock)    g_rw_lock_reader_lock (rw_lock)
  ------------------
 3532|      6|      if (support_prerequisites && type_lookup_prerequisite_L (node, NODE_TYPE (iface_node)))
  ------------------
  |  |  252|      6|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
  |  Branch (3532:11): [True: 6, False: 0]
  |  Branch (3532:36): [True: 0, False: 6]
  ------------------
 3533|      0|	match = TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3534|      6|      if (!have_lock)
  ------------------
  |  Branch (3534:11): [True: 6, False: 0]
  ------------------
 3535|      6|	G_READ_UNLOCK (&type_rw_lock);
  ------------------
  |  |  127|      6|#define G_READ_UNLOCK(rw_lock)  g_rw_lock_reader_unlock (rw_lock)
  ------------------
 3536|      6|    }
 3537|  17.3M|  return match;
 3538|  46.8M|}
gtype.c:type_lookup_prerequisite_L:
  663|      6|{
  664|      6|  if (NODE_IS_IFACE (iface) && IFACE_NODE_N_PREREQUISITES (iface))
  ------------------
  |  |  258|     12|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|      6|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|      6|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      6|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      6|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 6, False: 0]
  |  |  ------------------
  ------------------
                if (NODE_IS_IFACE (iface) && IFACE_NODE_N_PREREQUISITES (iface))
  ------------------
  |  |  261|      6|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  |  |  ------------------
  |  |  |  Branch (261:42): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  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|      6|  return FALSE;
  ------------------
  |  |  814|      6|#define	FALSE	(0)
  ------------------
  689|      6|}
gtype.c:type_node_conforms_to_U:
 3552|  46.8M|{
 3553|  46.8M|  return type_node_check_conformities_UorL (node, iface_node, support_interfaces, support_prerequisites, FALSE);
  ------------------
  |  |  814|  46.8M|#define	FALSE	(0)
  ------------------
 3554|  46.8M|}
gtype.c:type_get_qdata_L:
 3699|    281|{
 3700|    281|  GData *gdata = node->global_gdata;
 3701|       |  
 3702|    281|  if (quark && gdata && gdata->n_qdatas)
  ------------------
  |  Branch (3702:7): [True: 281, False: 0]
  |  Branch (3702:16): [True: 165, False: 116]
  |  Branch (3702:25): [True: 165, False: 0]
  ------------------
 3703|    165|    {
 3704|    165|      QData *qdatas = gdata->qdatas - 1;
 3705|    165|      guint n_qdatas = gdata->n_qdatas;
 3706|       |      
 3707|    165|      do
 3708|    204|	{
 3709|    204|	  guint i;
 3710|    204|	  QData *check;
 3711|       |	  
 3712|    204|	  i = (n_qdatas + 1) / 2;
 3713|    204|	  check = qdatas + i;
 3714|    204|	  if (quark == check->quark)
  ------------------
  |  Branch (3714:8): [True: 146, False: 58]
  ------------------
 3715|    146|	    return check->data;
 3716|     58|	  else if (quark > check->quark)
  ------------------
  |  Branch (3716:13): [True: 58, False: 0]
  ------------------
 3717|     58|	    {
 3718|     58|	      n_qdatas -= i;
 3719|     58|	      qdatas = check;
 3720|     58|	    }
 3721|      0|	  else /* if (quark < check->quark) */
 3722|      0|	    n_qdatas = i - 1;
 3723|    204|	}
 3724|    165|      while (n_qdatas);
  ------------------
  |  Branch (3724:14): [True: 39, False: 19]
  ------------------
 3725|    165|    }
 3726|    135|  return NULL;
 3727|    281|}
gtype.c:type_set_qdata_W:
 3769|    131|{
 3770|    131|  GData *gdata;
 3771|    131|  QData *qdata;
 3772|    131|  guint i;
 3773|       |  
 3774|       |  /* setup qdata list if necessary */
 3775|    131|  if (!node->global_gdata)
  ------------------
  |  Branch (3775:7): [True: 116, False: 15]
  ------------------
 3776|    116|    node->global_gdata = g_new0 (GData, 1);
  ------------------
  |  |  307|    116|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|    116|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    116|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|    116|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|    116|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|    116|	  gpointer __p;						\
  |  |  |  |  239|    116|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 116]
  |  |  |  |  ------------------
  |  |  |  |  240|    116|	    __p = g_##func (__n);				\
  |  |  |  |  241|    116|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 116, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|    116|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|    116|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|    116|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 116]
  |  |  |  |  |  Branch (242:26): [True: 116, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|    116|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|    116|	  else							\
  |  |  |  |  245|    116|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|    116|	  __p;							\
  |  |  |  |  247|    116|	}))
  |  |  ------------------
  ------------------
 3777|    131|  gdata = node->global_gdata;
 3778|       |  
 3779|       |  /* try resetting old data */
 3780|    131|  qdata = gdata->qdatas;
 3781|    146|  for (i = 0; i < gdata->n_qdatas; i++)
  ------------------
  |  Branch (3781:15): [True: 24, False: 122]
  ------------------
 3782|     24|    if (qdata[i].quark == quark)
  ------------------
  |  Branch (3782:9): [True: 9, False: 15]
  ------------------
 3783|      9|      {
 3784|      9|	qdata[i].data = data;
 3785|      9|	return;
 3786|      9|      }
 3787|       |  
 3788|       |  /* add new entry */
 3789|    122|  gdata->n_qdatas++;
 3790|    122|  gdata->qdatas = g_renew (QData, gdata->qdatas, gdata->n_qdatas);
  ------------------
  |  |  321|    122|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|    122|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    122|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|    122|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|    122|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|    122|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|    122|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 122]
  |  |  |  |  ------------------
  |  |  |  |  254|    122|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|    122|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 0, False: 122]
  |  |  |  |  ------------------
  |  |  |  |  256|    122|	           (__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|    122|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|    122|	  else							\
  |  |  |  |  259|    122|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|    122|	  __p;							\
  |  |  |  |  261|    122|	}))
  |  |  ------------------
  ------------------
 3791|    122|  qdata = gdata->qdatas;
 3792|    128|  for (i = 0; i < gdata->n_qdatas - 1; i++)
  ------------------
  |  Branch (3792:15): [True: 6, False: 122]
  ------------------
 3793|      6|    if (qdata[i].quark > quark)
  ------------------
  |  Branch (3793:9): [True: 0, False: 6]
  ------------------
 3794|      0|      break;
 3795|    122|  memmove (qdata + i + 1, qdata + i, sizeof (qdata[0]) * (gdata->n_qdatas - i - 1));
 3796|    122|  qdata[i].quark = quark;
 3797|    122|  qdata[i].data = data;
 3798|    122|}
gtype.c:type_add_flags_W:
 3831|    116|{
 3832|    116|  guint dflags;
 3833|       |  
 3834|    116|  g_return_if_fail ((flags & ~TYPE_FLAG_MASK) == 0);
  ------------------
  |  |  630|    116|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    116|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    116|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    116|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    116| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    116|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    116|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    116|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 116, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    116|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    116|   else                                         \
  |  |  |  |  |  | 1021|    116|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    116|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    116|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 116, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    116|      { } \
  |  |  633|    116|    else \
  |  |  634|    116|      { \
  |  |  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|    116|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    116|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 116]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3835|    116|  g_return_if_fail (node != NULL);
  ------------------
  |  |  630|    116|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    116|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    116|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    116|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    116| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    116|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    116|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    116|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 116, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    116|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    116|   else                                         \
  |  |  |  |  |  | 1021|    116|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    116|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    116|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 116, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    116|      { } \
  |  |  633|    116|    else \
  |  |  634|    116|      { \
  |  |  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|    116|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    116|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 116]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3836|       |  
 3837|    116|  if ((flags & TYPE_FLAG_MASK) && node->is_classed && node->data && node->data->class.class)
  ------------------
  |  |  146|    116|#define	TYPE_FLAG_MASK		   (G_TYPE_FLAG_ABSTRACT | G_TYPE_FLAG_VALUE_ABSTRACT)
  ------------------
  |  Branch (3837:7): [True: 9, False: 107]
  |  Branch (3837:35): [True: 7, False: 2]
  |  Branch (3837:55): [True: 0, False: 7]
  |  Branch (3837:69): [True: 0, False: 0]
  ------------------
 3838|      0|    g_warning ("tagging type '%s' as abstract after class initialization", NODE_NAME (node));
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 3839|    116|  dflags = GPOINTER_TO_UINT (type_get_qdata_L (node, static_quark_type_flags));
  ------------------
  |  |   99|    116|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 3840|    116|  dflags |= flags;
 3841|    116|  type_set_qdata_W (node, static_quark_type_flags, GUINT_TO_POINTER (dflags));
  ------------------
  |  |  102|    116|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
 3842|    116|}
gtype.c:type_node_fundamental_info_I:
  529|    260|{
  530|    260|  GType ftype = NODE_FUNDAMENTAL_TYPE (node);
  ------------------
  |  |  254|    260|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  531|       |  
  532|    260|  if (ftype != NODE_TYPE (node))
  ------------------
  |  |  252|    260|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
  |  Branch (532:7): [True: 35, False: 225]
  ------------------
  533|     35|    node = lookup_type_node_I (ftype);
  534|       |  
  535|    260|  return node ? G_STRUCT_MEMBER_P (node, -SIZEOF_FUNDAMENTAL_INFO) : NULL;
  ------------------
  |  |  860|  1.04k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  |  |  |  Branch (860:50): [Folded, False: 260]
  |  |  |  Branch (860:50): [Folded, False: 0]
  |  |  |  Branch (860:50): [Folded, False: 260]
  |  |  ------------------
  ------------------
  |  Branch (535:10): [True: 260, False: 0]
  ------------------
  536|    260|}
gtype.c:type_check_is_value_type_U:
 4207|   778k|{
 4208|   778k|  GTypeFlags tflags = G_TYPE_FLAG_VALUE_ABSTRACT;
 4209|   778k|  TypeNode *node;
 4210|       |  
 4211|       |  /* common path speed up */
 4212|   778k|  node = lookup_type_node_I (type);
 4213|   778k|  if (node && node->mutatable_check_cache)
  ------------------
  |  Branch (4213:7): [True: 778k, False: 0]
  |  Branch (4213:15): [True: 778k, False: 1]
  ------------------
 4214|   778k|    return TRUE;
  ------------------
  |  |  818|   778k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   778k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 4215|       |  
 4216|      1|  G_READ_LOCK (&type_rw_lock);
  ------------------
  |  |  126|      1|#define G_READ_LOCK(rw_lock)    g_rw_lock_reader_lock (rw_lock)
  ------------------
 4217|      1| restart_check:
 4218|      1|  if (node)
  ------------------
  |  Branch (4218:7): [True: 1, False: 0]
  ------------------
 4219|      1|    {
 4220|      1|      if (node->data && NODE_REFCOUNT (node) > 0 &&
  ------------------
  |  |  256|      1|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|      1|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|      1|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|      1|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|      1|    gint gaig_temp;                                                          \
  |  |  |  |   99|      1|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  100|      1|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|      1|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|      1|  }))
  |  |  ------------------
  ------------------
  |  Branch (4220:11): [True: 1, False: 0]
  |  Branch (4220:25): [True: 1, False: 0]
  ------------------
 4221|      1|	  node->data->common.value_table->value_init)
  ------------------
  |  Branch (4221:4): [True: 1, False: 0]
  ------------------
 4222|      1|	tflags = GPOINTER_TO_UINT (type_get_qdata_L (node, static_quark_type_flags));
  ------------------
  |  |   99|      1|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 4223|      0|      else if (NODE_IS_IFACE (node))
  ------------------
  |  |  258|      0|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|      0|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|      0|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      0|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      0|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4224|      0|	{
 4225|      0|	  guint i;
 4226|       |	  
 4227|      0|	  for (i = 0; i < IFACE_NODE_N_PREREQUISITES (node); i++)
  ------------------
  |  |  261|      0|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  |  Branch (4227:16): [True: 0, False: 0]
  ------------------
 4228|      0|	    {
 4229|      0|	      GType prtype = IFACE_NODE_PREREQUISITES (node)[i];
  ------------------
  |  |  262|      0|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
 4230|      0|	      TypeNode *prnode = lookup_type_node_I (prtype);
 4231|       |	      
 4232|      0|	      if (prnode->is_instantiatable)
  ------------------
  |  Branch (4232:12): [True: 0, False: 0]
  ------------------
 4233|      0|		{
 4234|      0|		  type = prtype;
 4235|      0|		  node = lookup_type_node_I (type);
 4236|      0|		  goto restart_check;
 4237|      0|		}
 4238|      0|	    }
 4239|      0|	}
 4240|      1|    }
 4241|      1|  G_READ_UNLOCK (&type_rw_lock);
  ------------------
  |  |  127|      1|#define G_READ_UNLOCK(rw_lock)  g_rw_lock_reader_unlock (rw_lock)
  ------------------
 4242|       |  
 4243|      1|  return !(tflags & G_TYPE_FLAG_VALUE_ABSTRACT);
 4244|      1|}
gtype.c:gobject_init:
 4420|      2|{
 4421|      2|  const gchar *env_string;
 4422|      2|  GTypeInfo info;
 4423|      2|  TypeNode *node;
 4424|      2|  GType type G_GNUC_UNUSED  /* when compiling with G_DISABLE_ASSERT */;
 4425|       |
 4426|       |  /* Ensure GLib is initialized first, see
 4427|       |   * https://bugzilla.gnome.org/show_bug.cgi?id=756139
 4428|       |   */
 4429|      2|  GLIB_PRIVATE_CALL (glib_init) ();
  ------------------
  |  |   94|      2|#define GLIB_PRIVATE_CALL(symbol) (glib__private__()->symbol)
  ------------------
 4430|       |
 4431|      2|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      2|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 4432|       |
 4433|       |  /* setup GObject library wide debugging flags */
 4434|      2|  env_string = g_getenv ("GOBJECT_DEBUG");
 4435|      2|  if (env_string != NULL)
  ------------------
  |  Branch (4435:7): [True: 0, False: 2]
  ------------------
 4436|      0|    {
 4437|      0|      GDebugKey debug_keys[] = {
 4438|      0|        { "objects", G_TYPE_DEBUG_OBJECTS },
 4439|      0|        { "instance-count", G_TYPE_DEBUG_INSTANCE_COUNT },
 4440|      0|        { "signals", G_TYPE_DEBUG_SIGNALS },
 4441|      0|      };
 4442|       |
 4443|      0|      _g_type_debug_flags = g_parse_debug_string (env_string, debug_keys, G_N_ELEMENTS (debug_keys));
  ------------------
  |  |  840|      0|#define G_N_ELEMENTS(arr)		(sizeof (arr) / sizeof ((arr)[0]))
  ------------------
 4444|      0|    }
 4445|       |
 4446|       |  /* quarks */
 4447|      2|  static_quark_type_flags = g_quark_from_static_string ("-g-type-private--GTypeFlags");
 4448|      2|  static_quark_iface_holder = g_quark_from_static_string ("-g-type-private--IFaceHolder");
 4449|      2|  static_quark_dependants_array = g_quark_from_static_string ("-g-type-private--dependants-array");
 4450|       |
 4451|       |  /* type qname hash table */
 4452|      2|  static_type_nodes_ht = g_hash_table_new (g_str_hash, g_str_equal);
 4453|       |
 4454|       |  /* invalid type G_TYPE_INVALID (0)
 4455|       |   */
 4456|      2|  static_fundamental_type_nodes[0] = NULL;
 4457|       |
 4458|       |  /* void type G_TYPE_NONE
 4459|       |   */
 4460|      2|  node = type_node_fundamental_new_W (G_TYPE_NONE, g_intern_static_string ("void"), 0);
  ------------------
  |  |   62|      2|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4461|      2|  type = NODE_TYPE (node);
  ------------------
  |  |  252|      2|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 4462|      2|  g_assert (type == G_TYPE_NONE);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4463|       |
 4464|       |  /* interface fundamental type G_TYPE_INTERFACE (!classed)
 4465|       |   */
 4466|      2|  memset (&info, 0, sizeof (info));
 4467|      2|  node = type_node_fundamental_new_W (G_TYPE_INTERFACE, g_intern_static_string ("GInterface"), G_TYPE_FLAG_DERIVABLE);
  ------------------
  |  |   68|      2|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4468|      2|  type = NODE_TYPE (node);
  ------------------
  |  |  252|      2|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 4469|      2|  type_data_make_W (node, &info, NULL);
 4470|      2|  g_assert (type == G_TYPE_INTERFACE);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4471|       |
 4472|      2|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      2|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 4473|       |
 4474|      2|  _g_value_c_init ();
 4475|       |
 4476|       |  /* G_TYPE_TYPE_PLUGIN
 4477|       |   */
 4478|      2|  g_type_ensure (g_type_plugin_get_type ());
 4479|       |
 4480|       |  /* G_TYPE_* value types
 4481|       |   */
 4482|      2|  _g_value_types_init ();
 4483|       |
 4484|       |  /* G_TYPE_ENUM & G_TYPE_FLAGS
 4485|       |   */
 4486|      2|  _g_enum_types_init ();
 4487|       |
 4488|       |  /* G_TYPE_BOXED
 4489|       |   */
 4490|      2|  _g_boxed_type_init ();
 4491|       |
 4492|       |  /* G_TYPE_PARAM
 4493|       |   */
 4494|      2|  _g_param_type_init ();
 4495|       |
 4496|       |  /* G_TYPE_OBJECT
 4497|       |   */
 4498|      2|  _g_object_type_init ();
 4499|       |
 4500|       |  /* G_TYPE_PARAM_* pspec types
 4501|       |   */
 4502|      2|  _g_param_spec_types_init ();
 4503|       |
 4504|       |  /* Value Transformations
 4505|       |   */
 4506|      2|  _g_value_transforms_init ();
 4507|       |
 4508|       |  /* Signal system
 4509|       |   */
 4510|      2|  _g_signal_init ();
 4511|      2|}

ginputstream.c:g_input_stream_get_type_once:
 1762|      1|#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
ginputstream.c:g_input_stream_class_intern_init:
 1960|      1|static void     type_name##_class_intern_init (gpointer klass) \
 1961|      1|{ \
 1962|      1|  type_name##_parent_class = g_type_class_peek_parent (klass); \
 1963|      1|  if (TypeName##_private_offset != 0) \
  ------------------
  |  Branch (1963:7): [True: 1, False: 0]
  ------------------
 1964|      1|    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
 1965|      1|  type_name##_class_init ((TypeName##Class*) klass); \
 1966|      1|}
ginputstream.c:g_input_stream_get_instance_private:
 1990|   770k|type_name##_get_instance_private (TypeName *self) \
 1991|   770k|{ \
 1992|   770k|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|   770k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|   770k|} \
gmemoryinputstream.c:g_memory_input_stream_get_type_once:
 1618|      1|#define G_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, 0) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, 0) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
gmemoryinputstream.c:g_memory_input_stream_class_intern_init:
 1960|      1|static void     type_name##_class_intern_init (gpointer klass) \
 1961|      1|{ \
 1962|      1|  type_name##_parent_class = g_type_class_peek_parent (klass); \
 1963|      1|  if (TypeName##_private_offset != 0) \
  ------------------
  |  Branch (1963:7): [True: 1, False: 0]
  ------------------
 1964|      1|    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
 1965|      1|  type_name##_class_init ((TypeName##Class*) klass); \
 1966|      1|}
gmemoryinputstream.c:g_memory_input_stream_get_instance_private:
 1990|   386k|type_name##_get_instance_private (TypeName *self) \
 1991|   386k|{ \
 1992|   386k|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|   386k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|   386k|} \
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|   389k|{
  165|   389k|  GTypeValueTable *value_table;
  166|       |  /* g_return_val_if_fail (G_TYPE_IS_VALUE (g_type), NULL);	be more elaborate below */
  167|   389k|  g_return_val_if_fail (value != NULL, NULL);
  ------------------
  |  |  643|   389k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   389k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   389k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   389k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   389k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   389k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   389k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   389k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 389k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   389k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   389k|   else                                         \
  |  |  |  |  |  | 1021|   389k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   389k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   389k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 389k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   389k|      { } \
  |  |  646|   389k|    else \
  |  |  647|   389k|      { \
  |  |  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|   389k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   389k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  168|       |  /* g_return_val_if_fail (G_VALUE_TYPE (value) == 0, NULL);	be more elaborate below */
  169|       |
  170|   389k|  value_table = g_type_value_table_peek (g_type);
  171|       |
  172|   389k|  if (value_table && G_VALUE_TYPE (value) == 0)
  ------------------
  |  |   59|   389k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  |  Branch (172:7): [True: 389k, False: 0]
  |  Branch (172:22): [True: 389k, False: 0]
  ------------------
  173|   389k|    {
  174|       |      /* setup and init */
  175|   389k|      value_meminit (value, g_type);
  176|   389k|      value_table->value_init (value);
  177|   389k|    }
  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|   389k|               G_STRLOC,
  186|   389k|               g_type_name (g_type),
  187|   389k|               value_table ? "this type is abstract with regards to GValue use, use a more specific (derived) type" : "this type has no GTypeValueTable implementation");
  188|   389k|  return value;
  189|   389k|}
g_value_copy:
  201|   389k|{
  202|   389k|  g_return_if_fail (src_value);
  ------------------
  |  |  630|   389k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   389k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   389k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   389k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   389k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   389k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   389k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   389k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 389k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   389k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   389k|   else                                         \
  |  |  |  |  |  | 1021|   389k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   389k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   389k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 389k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   389k|      { } \
  |  |  633|   389k|    else \
  |  |  634|   389k|      { \
  |  |  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|   389k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   389k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  203|   389k|  g_return_if_fail (dest_value);
  ------------------
  |  |  630|   389k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   389k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   389k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   389k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   389k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   389k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   389k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   389k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 389k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   389k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   389k|   else                                         \
  |  |  |  |  |  | 1021|   389k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   389k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   389k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 389k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   389k|      { } \
  |  |  633|   389k|    else \
  |  |  634|   389k|      { \
  |  |  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|   389k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   389k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  204|   389k|  g_return_if_fail (g_value_type_compatible (G_VALUE_TYPE (src_value), G_VALUE_TYPE (dest_value)));
  ------------------
  |  |  630|   389k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   389k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   389k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   389k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   389k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   389k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   389k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   389k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 389k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   389k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   389k|   else                                         \
  |  |  |  |  |  | 1021|   389k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   389k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   389k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 389k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   389k|      { } \
  |  |  633|   389k|    else \
  |  |  634|   389k|      { \
  |  |  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|   389k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   389k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  205|       |  
  206|   389k|  if (src_value != dest_value)
  ------------------
  |  Branch (206:7): [True: 389k, False: 0]
  ------------------
  207|   389k|    {
  208|   389k|      GType dest_type = G_VALUE_TYPE (dest_value);
  ------------------
  |  |   59|   389k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  209|   389k|      GTypeValueTable *value_table = g_type_value_table_peek (dest_type);
  210|       |
  211|   389k|      g_return_if_fail (value_table);
  ------------------
  |  |  630|   389k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   389k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   389k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   389k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   389k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   389k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   389k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   389k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 389k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   389k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   389k|   else                                         \
  |  |  |  |  |  | 1021|   389k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   389k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   389k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 389k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   389k|      { } \
  |  |  633|   389k|    else \
  |  |  634|   389k|      { \
  |  |  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|   389k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   389k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  212|       |
  213|       |      /* make sure dest_value's value is free()d */
  214|   389k|      if (value_table->value_free)
  ------------------
  |  Branch (214:11): [True: 389k, False: 758]
  ------------------
  215|   389k|	value_table->value_free (dest_value);
  216|       |
  217|       |      /* setup and copy */
  218|   389k|      value_meminit (dest_value, dest_type);
  219|   389k|      value_table->value_copy (src_value, dest_value);
  220|   389k|    }
  221|   389k|}
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|   392k|{
  267|   392k|  GTypeValueTable *value_table;
  268|       |  
  269|   392k|  if (value->g_type == 0)
  ------------------
  |  Branch (269:7): [True: 0, False: 392k]
  ------------------
  270|      0|    return;
  271|       |
  272|   392k|  g_return_if_fail (value);
  ------------------
  |  |  630|   392k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   392k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   392k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   392k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   392k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   392k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   392k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   392k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 392k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   392k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   392k|   else                                         \
  |  |  |  |  |  | 1021|   392k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   392k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   392k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 392k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   392k|      { } \
  |  |  633|   392k|    else \
  |  |  634|   392k|      { \
  |  |  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|   392k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   392k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 392k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  273|       |
  274|   392k|  value_table = g_type_value_table_peek (G_VALUE_TYPE (value));
  ------------------
  |  |   59|   392k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  275|   392k|  g_return_if_fail (value_table);
  ------------------
  |  |  630|   392k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   392k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|   392k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   392k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   392k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   392k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   392k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   392k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 392k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   392k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   392k|   else                                         \
  |  |  |  |  |  | 1021|   392k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   392k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   392k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 392k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|   392k|      { } \
  |  |  633|   392k|    else \
  |  |  634|   392k|      { \
  |  |  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|   392k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   392k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 392k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  276|       |
  277|   392k|  if (value_table->value_free)
  ------------------
  |  Branch (277:7): [True: 391k, False: 758]
  ------------------
  278|   391k|    value_table->value_free (value);
  279|   392k|  memset (value, 0, sizeof (*value));
  280|   392k|}
g_value_peek_pointer:
  316|  3.85k|{
  317|  3.85k|  GTypeValueTable *value_table;
  318|       |
  319|  3.85k|  g_return_val_if_fail (value, NULL);
  ------------------
  |  |  643|  3.85k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.85k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  3.85k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.85k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.85k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.85k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.85k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.85k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.85k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.85k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.85k|   else                                         \
  |  |  |  |  |  | 1021|  3.85k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.85k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.85k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.85k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  3.85k|      { } \
  |  |  646|  3.85k|    else \
  |  |  647|  3.85k|      { \
  |  |  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.85k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.85k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.85k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  320|       |
  321|  3.85k|  value_table = g_type_value_table_peek (G_VALUE_TYPE (value));
  ------------------
  |  |   59|  3.85k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  322|  3.85k|  g_return_val_if_fail (value_table, NULL);
  ------------------
  |  |  643|  3.85k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  3.85k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|  3.85k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|  3.85k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|  3.85k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|  3.85k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|  3.85k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|  3.85k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3.85k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|  3.85k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|  3.85k|   else                                         \
  |  |  |  |  |  | 1021|  3.85k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|  3.85k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|  3.85k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 3.85k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|  3.85k|      { } \
  |  |  646|  3.85k|    else \
  |  |  647|  3.85k|      { \
  |  |  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.85k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  3.85k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3.85k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  323|       |
  324|  3.85k|  if (!value_table->value_peek_pointer)
  ------------------
  |  Branch (324:7): [True: 0, False: 3.85k]
  ------------------
  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.85k|  return value_table->value_peek_pointer (value);
  331|  3.85k|}
g_value_init_from_instance:
  404|  1.28k|{
  405|  1.28k|  g_return_if_fail (value != NULL && G_VALUE_TYPE(value) == 0);
  ------------------
  |  |  630|  1.28k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|  1.28k|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|  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|  3.85k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1.28k, False: 0]
  |  |  |  |  |  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|  1.28k|      { } \
  |  |  633|  1.28k|    else \
  |  |  634|  1.28k|      { \
  |  |  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.28k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|  1.28k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1.28k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  406|       |
  407|  1.28k|  if (G_IS_OBJECT (instance))
  ------------------
  |  |   71|  1.28k|#define G_IS_OBJECT(object)         (G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE ((object), G_TYPE_OBJECT))
  |  |  ------------------
  |  |  |  |  510|  1.28k|#define G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE(instance, g_type)            (_G_TYPE_CIFT ((instance), (g_type)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2311|  1.28k|#define _G_TYPE_CIFT(ip, ft)            (g_type_check_instance_is_fundamentally_a ((GTypeInstance*) ip, ft))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (71:37): [True: 1.28k, False: 0]
  |  |  ------------------
  ------------------
  408|  1.28k|    {
  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.28k|      value_meminit (value, G_TYPE_FROM_INSTANCE (instance));
  ------------------
  |  |  602|  1.28k|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|  1.28k|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
  415|  1.28k|      value->data[0].v_pointer = g_object_ref (instance);
  ------------------
  |  |  523|  1.28k|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
  416|  1.28k|    }
  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.28k|}
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|   781k|{
  583|   781k|  g_return_val_if_fail (src_type, FALSE);
  ------------------
  |  |  643|   781k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   781k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   781k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   781k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   781k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   781k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   781k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   781k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 781k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   781k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   781k|   else                                         \
  |  |  |  |  |  | 1021|   781k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   781k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   781k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 781k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   781k|      { } \
  |  |  646|   781k|    else \
  |  |  647|   781k|      { \
  |  |  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|   781k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   781k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 781k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  584|   781k|  g_return_val_if_fail (dest_type, FALSE);
  ------------------
  |  |  643|   781k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   781k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   781k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   781k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   781k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   781k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   781k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   781k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 781k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   781k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   781k|   else                                         \
  |  |  |  |  |  | 1021|   781k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   781k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   781k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 781k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   781k|      { } \
  |  |  646|   781k|    else \
  |  |  647|   781k|      { \
  |  |  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|   781k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   781k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 781k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  585|       |
  586|       |  /* Fast path */
  587|   781k|  if (src_type == dest_type)
  ------------------
  |  Branch (587:7): [True: 779k, False: 1.28k]
  ------------------
  588|   779k|    return TRUE;
  ------------------
  |  |  818|   779k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   779k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  589|       |
  590|  1.28k|  return (g_type_is_a (src_type, dest_type) &&
  ------------------
  |  Branch (590:11): [True: 1.28k, False: 0]
  ------------------
  591|  1.28k|	  g_type_value_table_peek (dest_type) == g_type_value_table_peek (src_type));
  ------------------
  |  Branch (591:4): [True: 1.28k, False: 0]
  ------------------
  592|   781k|}
g_value_transform:
  613|   389k|{
  614|   389k|  GType dest_type;
  615|       |
  616|   389k|  g_return_val_if_fail (src_value, FALSE);
  ------------------
  |  |  643|   389k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   389k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   389k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   389k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   389k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   389k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   389k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   389k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 389k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   389k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   389k|   else                                         \
  |  |  |  |  |  | 1021|   389k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   389k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   389k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 389k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   389k|      { } \
  |  |  646|   389k|    else \
  |  |  647|   389k|      { \
  |  |  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|   389k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   389k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  617|   389k|  g_return_val_if_fail (dest_value, FALSE);
  ------------------
  |  |  643|   389k|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|   389k|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|   389k|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|   389k|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|   389k| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|   389k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|   389k|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|   389k|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 389k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|   389k|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|   389k|   else                                         \
  |  |  |  |  |  | 1021|   389k|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|   389k|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|   389k|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 389k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|   389k|      { } \
  |  |  646|   389k|    else \
  |  |  647|   389k|      { \
  |  |  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|   389k|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|   389k|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  618|       |
  619|   389k|  dest_type = G_VALUE_TYPE (dest_value);
  ------------------
  |  |   59|   389k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  620|   389k|  if (g_value_type_compatible (G_VALUE_TYPE (src_value), dest_type))
  ------------------
  |  |   59|   389k|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  |  Branch (620:7): [True: 389k, False: 0]
  ------------------
  621|   389k|    {
  622|   389k|      g_value_copy (src_value, dest_value);
  623|       |      
  624|   389k|      return TRUE;
  ------------------
  |  |  818|   389k|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|   389k|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  625|   389k|    }
  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|   389k|}
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|   781k|{
  148|   781k|  value->g_type = value_type;
  149|   781k|  memset (value->data, 0, sizeof (value->data));
  150|   781k|}

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

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

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

fu-fuzzer-firmware.c:glib_autoptr_cleanup_GObject:
 1139|    758|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|    758|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-fuzzer-firmware.c:glib_autoptr_clear_GObject:
 1137|    758|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 758, False: 0]
  ------------------
fu-fuzzer-firmware.c:glib_autoptr_cleanup_GBytes:
 1139|    758|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|    758|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-fuzzer-firmware.c:glib_autoptr_clear_GBytes:
 1137|    758|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 758, False: 0]
  ------------------
fu-usb-struct.c:glib_autoptr_cleanup_FuUsbBaseHdr:
 1139|   694k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   694k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-struct.c:glib_autoptr_clear_FuUsbBaseHdr:
 1137|   694k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 243, False: 693k]
  ------------------
fu-usb-struct.c:glib_autoptr_cleanup_FuUsbDeviceHdr:
 1139|    753|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|    753|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-struct.c:glib_autoptr_clear_FuUsbDeviceHdr:
 1137|    753|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 60, False: 693]
  ------------------
fu-usb-struct.c:glib_autoptr_cleanup_FuUsbDescriptorHdr:
 1139|   151k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   151k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-struct.c:glib_autoptr_clear_FuUsbDescriptorHdr:
 1137|   151k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 32, False: 151k]
  ------------------
fu-usb-struct.c:glib_autoptr_cleanup_FuUsbHidDescriptorHdr:
 1139|  13.3k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  13.3k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-struct.c:glib_autoptr_clear_FuUsbHidDescriptorHdr:
 1137|  13.3k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 11, False: 13.3k]
  ------------------
fu-usb-struct.c:glib_autoptr_cleanup_FuUsbInterfaceHdr:
 1139|  74.5k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  74.5k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-struct.c:glib_autoptr_clear_FuUsbInterfaceHdr:
 1137|  74.5k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 48, False: 74.5k]
  ------------------
fu-usb-struct.c:glib_autoptr_cleanup_FuUsbEndpointHdr:
 1139|  26.7k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  26.7k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-struct.c:glib_autoptr_clear_FuUsbEndpointHdr:
 1137|  26.7k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 35, False: 26.6k]
  ------------------
fu-firmware.c:glib_autoptr_cleanup_GBytes:
 1139|   386k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   386k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-firmware.c:glib_autoptr_clear_GBytes:
 1137|   386k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 120k, False: 265k]
  ------------------
fu-firmware.c:glib_autoptr_cleanup_FuInputStream:
 1139|  1.15M|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  1.15M|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-firmware.c:glib_autoptr_clear_FuInputStream:
 1137|  1.15M|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 1.15M, False: 51]
  ------------------
fu-input-stream.c:glib_autoptr_cleanup_GByteArray:
 1139|   729k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   729k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-input-stream.c:glib_autoptr_clear_GByteArray:
 1137|   729k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 1, False: 729k]
  ------------------
fu-input-stream.c:glib_autoptr_cleanup_GError:
 1139|   609k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   609k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-input-stream.c:glib_autoptr_clear_GError:
 1137|   609k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 0, False: 609k]
  ------------------
fu-partial-input-stream.c:glib_autoptr_cleanup_FuPartialInputStream:
 1139|   384k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   384k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-partial-input-stream.c:glib_autoptr_clear_FuPartialInputStream:
 1137|   384k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 0, False: 384k]
  ------------------
fu-usb-config-descriptor.c:glib_autoptr_cleanup_FuUsbDescriptorHdr:
 1139|   151k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   151k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-config-descriptor.c:glib_autoptr_clear_FuUsbDescriptorHdr:
 1137|   151k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 151k, False: 32]
  ------------------
fu-usb-descriptor.c:glib_autoptr_cleanup_FuUsbBaseHdr:
 1139|   221k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   221k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-descriptor.c:glib_autoptr_clear_FuUsbBaseHdr:
 1137|   221k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 221k, False: 165]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_GError:
 1139|   472k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   472k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_GError:
 1137|   472k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 0, False: 472k]
  ------------------
fu-usb-device.c:glib_autoptr_clear_GObject:
 1137|   118k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 118k, False: 0]
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuFirmware:
 1137|   118k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 118k, False: 0]
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbDescriptor:
 1137|   118k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 118k, False: 0]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbConfigDescriptor:
 1139|   151k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   151k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbConfigDescriptor:
 1137|   151k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 32, False: 151k]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbHidDescriptor:
 1139|  13.3k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  13.3k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbHidDescriptor:
 1137|  13.3k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 688, False: 12.6k]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbDeviceHdr:
 1139|    758|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|    758|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbDeviceHdr:
 1137|    758|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 693, False: 65]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbBaseHdr:
 1139|   472k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   472k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbBaseHdr:
 1137|   472k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 472k, False: 78]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbDescriptor:
 1139|  16.1k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  16.1k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbEndpoint:
 1139|  26.7k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  26.7k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbEndpoint:
 1137|  26.7k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 26.7k, False: 0]
  ------------------
fu-usb-device.c:glib_autoptr_cleanup_FuUsbInterface:
 1139|  75.3k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  75.3k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-device.c:glib_autoptr_clear_FuUsbInterface:
 1137|  75.3k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 74.9k, False: 411]
  ------------------
fu-usb-endpoint.c:glib_autoptr_cleanup_FuUsbEndpointHdr:
 1139|  26.7k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  26.7k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-endpoint.c:glib_autoptr_clear_FuUsbEndpointHdr:
 1137|  26.7k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 26.6k, False: 35]
  ------------------
fu-usb-hid-descriptor.c:glib_autoptr_cleanup_FuUsbHidDescriptorHdr:
 1139|  13.3k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  13.3k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-hid-descriptor.c:glib_autoptr_clear_FuUsbHidDescriptorHdr:
 1137|  13.3k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 13.3k, False: 11]
  ------------------
fu-usb-interface.c:glib_autoptr_cleanup_FuUsbInterfaceHdr:
 1139|  74.5k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  74.5k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-interface.c:glib_autoptr_clear_FuUsbInterfaceHdr:
 1137|  74.5k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 74.5k, False: 48]
  ------------------
fu-usb-interface.c:glib_autoptr_cleanup_GByteArray:
 1139|  1.98k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  1.98k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-interface.c:glib_autoptr_clear_GByteArray:
 1137|  1.98k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 1.98k, False: 1]
  ------------------
fu-usb-interface.c:glib_autoptr_cleanup_GBytes:
 1139|  1.98k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|  1.98k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-usb-interface.c:glib_autoptr_clear_GBytes:
 1137|  1.98k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 1.98k, False: 0]
  ------------------
fu-usb-interface.c:glib_autoptr_clear_FuUsbDescriptor:
 1137|   104k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 104k, False: 0]
  ------------------
fu-usb-interface.c:glib_autoptr_clear_FuFirmware:
 1137|   104k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 104k, False: 0]
  ------------------
fu-usb-interface.c:glib_autoptr_clear_GObject:
 1137|   104k|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 104k, False: 0]
  ------------------
fu-usb-interface.c:glib_autoptr_cleanup_FuUsbDescriptor:
 1139|   104k|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|   104k|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------

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

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

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

fu-fuzzer-firmware.c:FU_FUZZER:
 1580|    758|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                         \
 1581|    758|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }               \
  ------------------
  |  |  484|    758|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|    758|    ((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|  6.06k|type_name##_get_instance_private (TypeName *self) \
 1991|  6.06k|{ \
 1992|  6.06k|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|  6.06k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|  6.06k|} \
fwupd-device.c:FWUPD_IS_DEVICE:
 1506|  4.54k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1507|  4.54k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  4.54k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  4.54k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  4.54k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  4.54k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  4.54k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 4.54k]
  |  |  |  |  ------------------
  |  |  |  | 2316|  4.54k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  4.54k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 4.54k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 0, False: 4.54k]
  |  |  |  |  ------------------
  |  |  |  | 2318|  4.54k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  4.54k|  else \
  |  |  |  | 2320|  4.54k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  4.54k|  __r; \
  |  |  |  | 2322|  4.54k|}))
  |  |  ------------------
  ------------------
fwupd-device.c:FWUPD_DEVICE:
 1502|    758|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|    758|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|    758|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|    758|    ((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.1k|type_name##_get_instance_private (TypeName *self) \
 1991|  18.1k|{ \
 1992|  18.1k|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|  18.1k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|  18.1k|} \
fu-device.c:FU_IS_DEVICE:
 1506|  12.5k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1507|  12.5k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  12.5k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  12.5k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  12.5k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  12.5k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  12.5k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 12.5k]
  |  |  |  |  ------------------
  |  |  |  | 2316|  12.5k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  12.5k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 12.5k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 0, False: 12.5k]
  |  |  |  |  ------------------
  |  |  |  | 2318|  12.5k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  12.5k|  else \
  |  |  |  | 2320|  12.5k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  12.5k|  __r; \
  |  |  |  | 2322|  12.5k|}))
  |  |  ------------------
  ------------------
fu-device.c:FU_DEVICE:
 1502|  5.30k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  5.30k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  5.30k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  5.30k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-device.c:FWUPD_DEVICE:
 1502|  4.54k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  4.54k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  4.54k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  4.54k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-device.c:FU_DEVICE_CLASS:
 1504|      1|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) {        \
 1505|      1|    return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }         \
  ------------------
  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  ------------------
  ------------------
fu-device.c:FU_IS_CONTEXT:
 1506|    758|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1507|    758|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|    758|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|    758|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    758|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|    758|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|    758|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 758, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2316|    758|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|    758|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|    758|  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|    758|  __r; \
  |  |  |  | 2322|    758|}))
  |  |  ------------------
  ------------------
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|  4.32M|type_name##_get_instance_private (TypeName *self) \
 1991|  4.32M|{ \
 1992|  4.32M|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|  4.32M|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|  4.32M|} \
fu-firmware.c:FU_IS_FIRMWARE:
 1506|  3.67M|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1507|  3.67M|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  3.67M|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  3.67M|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  3.67M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  3.67M|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  3.67M|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 3.67M]
  |  |  |  |  ------------------
  |  |  |  | 2316|  3.67M|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  3.67M|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 3.67M, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 0, False: 3.67M]
  |  |  |  |  ------------------
  |  |  |  | 2318|  3.67M|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  3.67M|  else \
  |  |  |  | 2320|  3.67M|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  3.67M|  __r; \
  |  |  |  | 2322|  3.67M|}))
  |  |  ------------------
  ------------------
fu-firmware.c:FU_FIRMWARE_GET_CLASS:
 1510|  1.78M|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_GET_CLASS (gpointer ptr) {    \
 1511|  1.78M|    return G_TYPE_INSTANCE_GET_CLASS (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }       \
  ------------------
  |  |  527|  1.78M|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2309|  1.78M|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  ------------------
  ------------------
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.15M|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  1.15M|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  1.15M|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  1.15M|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-fuzzer.c:FU_FUZZER_GET_IFACE:
 1584|    758|  G_GNUC_UNUSED static inline ModuleObjName##Interface * MODULE##_##OBJ_NAME##_GET_IFACE (gpointer ptr) {  \
 1585|    758|    return G_TYPE_INSTANCE_GET_INTERFACE (ptr, module_obj_name##_get_type (), ModuleObjName##Interface); } \
  ------------------
  |  |  540|    758|#define G_TYPE_INSTANCE_GET_INTERFACE(instance, g_type, c_type) (_G_TYPE_IGI ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2310|    758|#define _G_TYPE_IGI(ip, gt, ct)         ((ct*) g_type_interface_peek (((GTypeInstance*) ip)->g_class, gt))
  |  |  ------------------
  ------------------
fu-partial-input-stream.c:fu_partial_input_stream_get_type_once:
 1618|      1|#define G_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, 0) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, 0) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
fu-partial-input-stream.c:fu_partial_input_stream_class_intern_init:
 1960|      1|static void     type_name##_class_intern_init (gpointer klass) \
 1961|      1|{ \
 1962|      1|  type_name##_parent_class = g_type_class_peek_parent (klass); \
 1963|      1|  if (TypeName##_private_offset != 0) \
  ------------------
  |  Branch (1963:7): [True: 0, False: 1]
  ------------------
 1964|      1|    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
 1965|      1|  type_name##_class_init ((TypeName##Class*) klass); \
 1966|      1|}
fu-partial-input-stream.c:FU_PARTIAL_INPUT_STREAM:
 1410|  3.55M|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1411|  3.55M|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  3.55M|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  3.55M|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-partial-input-stream.c:FU_IS_PARTIAL_INPUT_STREAM:
 1412|  1.21M|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1413|  1.21M|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  1.21M|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  1.21M|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  1.21M|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  1.21M|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  1.21M|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 1.21M]
  |  |  |  |  ------------------
  |  |  |  | 2316|  1.21M|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  1.21M|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 1.21M, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 1.21M, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2318|  1.21M|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|  1.21M|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  1.21M|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  1.21M|  else \
  |  |  |  | 2320|  1.21M|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  1.21M|  __r; \
  |  |  |  | 2322|  1.21M|}))
  |  |  ------------------
  ------------------
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|  3.03k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  3.03k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  3.03k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  3.03k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-udev-device.c:fu_udev_device_get_instance_private:
 1990|  1.51k|type_name##_get_instance_private (TypeName *self) \
 1991|  1.51k|{ \
 1992|  1.51k|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|  1.51k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|  1.51k|} \
fu-udev-device.c:FU_UDEV_DEVICE:
 1502|    758|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|    758|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|    758|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|    758|    ((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|   302k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1411|   302k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|   302k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|   302k|    ((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.27k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  2.27k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  2.27k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  2.27k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-device.c:FU_FIRMWARE:
 1502|   330k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|   330k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|   330k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|   330k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-device.c:fu_usb_device_get_instance_private:
 1990|  77.3k|type_name##_get_instance_private (TypeName *self) \
 1991|  77.3k|{ \
 1992|  77.3k|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|  77.3k|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|  77.3k|} \
fu-usb-device.c:FU_DEVICE:
 1502|  4.41k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|  4.41k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  4.41k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  4.41k|    ((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|  26.7k|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) {        \
 1505|  26.7k|    return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }         \
  ------------------
  |  |  553|  26.7k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2302|  26.7k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  ------------------
  ------------------
fu-usb-endpoint.c:FU_IS_USB_ENDPOINT:
 1412|  10.3k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1413|  10.3k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  10.3k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  10.3k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  10.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  10.3k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  10.3k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 10.3k]
  |  |  |  |  ------------------
  |  |  |  | 2316|  10.3k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  10.3k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 10.3k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 10.3k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2318|  10.3k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|  10.3k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  10.3k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  10.3k|  else \
  |  |  |  | 2320|  10.3k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  10.3k|  __r; \
  |  |  |  | 2322|  10.3k|}))
  |  |  ------------------
  ------------------
fu-usb-endpoint.c:FU_USB_ENDPOINT:
 1410|  26.7k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1411|  26.7k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  26.7k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  26.7k|    ((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|  26.6k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1411|  26.6k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|  26.6k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|  26.6k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-hid-descriptor.c:FU_IS_USB_HID_DESCRIPTOR:
 1412|  12.6k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1413|  12.6k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  12.6k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  12.6k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  12.6k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  12.6k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  12.6k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 12.6k]
  |  |  |  |  ------------------
  |  |  |  | 2316|  12.6k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  12.6k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 12.6k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 12.6k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2318|  12.6k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|  12.6k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  12.6k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  12.6k|  else \
  |  |  |  | 2320|  12.6k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  12.6k|  __r; \
  |  |  |  | 2322|  12.6k|}))
  |  |  ------------------
  ------------------
fu-usb-interface.c:fu_usb_interface_get_type_once:
 1762|      1|#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
fu-usb-interface.c:fu_usb_interface_class_intern_init:
 1960|      1|static void     type_name##_class_intern_init (gpointer klass) \
 1961|      1|{ \
 1962|      1|  type_name##_parent_class = g_type_class_peek_parent (klass); \
 1963|      1|  if (TypeName##_private_offset != 0) \
  ------------------
  |  Branch (1963:7): [True: 0, False: 1]
  ------------------
 1964|      1|    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
 1965|      1|  type_name##_class_init ((TypeName##Class*) klass); \
 1966|      1|}
fu-usb-interface.c:FU_FIRMWARE_CLASS:
 1504|  74.5k|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) {        \
 1505|  74.5k|    return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }         \
  ------------------
  |  |  553|  74.5k|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2302|  74.5k|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  ------------------
  ------------------
fu-usb-interface.c:FU_FIRMWARE:
 1502|   490k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|   490k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|   490k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|   490k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-interface.c:FU_USB_INTERFACE:
 1410|   149k|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1411|   149k|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|   149k|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|   149k|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-usb-interface.c:FU_IS_USB_INTERFACE:
 1412|   103k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1413|   103k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|   103k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|   103k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|   103k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|   103k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|   103k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 103k]
  |  |  |  |  ------------------
  |  |  |  | 2316|   103k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|   103k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 103k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 103k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2318|   103k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|   103k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|   103k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|   103k|  else \
  |  |  |  | 2320|   103k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|   103k|  __r; \
  |  |  |  | 2322|   103k|}))
  |  |  ------------------
  ------------------
fu-usb-interface.c:FU_IS_USB_ENDPOINT:
 1412|  16.3k|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1413|  16.3k|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|  16.3k|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|  16.3k|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|  16.3k|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|  16.3k|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|  16.3k|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 16.3k]
  |  |  |  |  ------------------
  |  |  |  | 2316|  16.3k|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|  16.3k|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 16.3k, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 16.3k, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2318|  16.3k|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|  16.3k|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|  16.3k|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|  16.3k|  else \
  |  |  |  | 2320|  16.3k|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|  16.3k|  __r; \
  |  |  |  | 2322|  16.3k|}))
  |  |  ------------------
  ------------------

