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|     20|{
  146|     20|	static GQuark quark = 0;
  147|     20|	if (!quark) {
  ------------------
  |  Branch (147:6): [True: 1, False: 19]
  ------------------
  148|      1|		quark = g_quark_from_static_string("FwupdError");
  149|     23|		for (gint i = 0; i < FWUPD_ERROR_LAST; i++) {
  ------------------
  |  |  150|     23|#define FWUPD_ERROR_LAST 22
  ------------------
  |  Branch (149:20): [True: 22, False: 1]
  ------------------
  150|     22|			g_dbus_error_register_error(quark, i, fwupd_error_to_string(i));
  151|     22|		}
  152|      1|	}
  153|     20|	return quark;
  154|     20|}

fu_size_checked_add:
  112|     64|{
  113|     64|	gsize tmp = 0;
  114|     64|	if (!g_size_checked_add(&tmp, a, b))
  ------------------
  |  |  444|     64|    _GLIB_CHECKED_ADD_U64(dest, a, b)
  ------------------
  |  Branch (114:6): [True: 0, False: 64]
  ------------------
  115|      0|		return G_MAXSIZE;
  ------------------
  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
  116|     64|	return tmp;
  117|     64|}

fu_firmware_add_flag:
  108|      2|{
  109|      2|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|      2|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  110|      2|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  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, \
  |  |  ------------------
  |  |  |  |    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|      2|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  111|      2|	priv->flags |= flag;
  112|      2|}
fu_firmware_has_flag:
  127|      2|{
  128|      2|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|      2|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  129|      2|	g_return_val_if_fail(FU_IS_FIRMWARE(self), FALSE);
  ------------------
  |  |  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, \
  |  |  ------------------
  |  |  |  |    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|      2|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  130|      2|	return (priv->flags & flag) > 0;
  131|      2|}
fu_firmware_set_parent:
  449|      1|{
  450|      1|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|      1|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  451|      1|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  452|       |
  453|      1|	if (priv->parent != NULL)
  ------------------
  |  Branch (453:6): [True: 0, False: 1]
  ------------------
  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|      1|	if (parent != NULL)
  ------------------
  |  Branch (455:6): [True: 0, False: 1]
  ------------------
  456|      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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  457|      1|	priv->parent = parent;
  458|      1|}
fu_firmware_set_size_max:
  519|      2|{
  520|      2|	FuFirmwareClassPrivate *cpriv = fu_firmware_get_class_private(klass);
  521|      2|	cpriv->size_max = size_max;
  522|      2|}
fu_firmware_add_magic:
  858|      1|{
  859|      1|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|      1|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
  860|      1|	g_autofree FuFirmwarePatch *patch = g_new0(FuFirmwarePatch, 1);
  ------------------
  |  | 1167|      1|#define g_autofree _GLIB_CLEANUP(g_autoptr_cleanup_generic_gfree)
  |  |  ------------------
  |  |  |  | 1129|      1|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
              	g_autofree FuFirmwarePatch *patch = g_new0(FuFirmwarePatch, 1);
  ------------------
  |  |  307|      1|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  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|	}))
  |  |  ------------------
  ------------------
  861|       |
  862|      1|	g_return_if_fail(FU_IS_FIRMWARE(self));
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  863|      1|	g_return_if_fail(buf != 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, \
  |  |  ------------------
  |  |  |  |    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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  864|      1|	g_return_if_fail(bufsz != 0);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  865|       |
  866|      1|	if (priv->magic == NULL)
  ------------------
  |  Branch (866:6): [True: 1, False: 0]
  ------------------
  867|      1|		priv->magic =
  868|      1|		    g_ptr_array_new_with_free_func((GDestroyNotify)fu_firmware_patch_free);
  869|      1|	patch->blob = g_bytes_new(buf, bufsz);
  870|      1|	patch->offset = offset;
  871|      1|	g_ptr_array_add(priv->magic, g_steal_pointer(&patch));
  ------------------
  |  |  222|      1|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  872|      1|}
fu_firmware_parse_stream:
 1114|      1|{
 1115|      1|	FuFirmwareClass *klass = FU_FIRMWARE_GET_CLASS(self);
 1116|      1|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|      1|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 1117|      1|	gsize streamsz = 0;
 1118|      1|	g_autoptr(FuInputStream) partial_stream = NULL;
  ------------------
  |  | 1162|      1|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|      1|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1119|      1|	g_autoptr(FuInputStream) seekable_stream = NULL;
  ------------------
  |  | 1162|      1|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|      1|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1120|      1|	g_autoptr(GBytes) blob = NULL;
  ------------------
  |  | 1162|      1|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|      1|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1121|       |
 1122|      1|	g_return_val_if_fail(FU_IS_FIRMWARE(self), FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  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|      1|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1123|      1|	g_return_val_if_fail(FU_IS_INPUT_STREAM(stream), FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  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|      1|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1124|      1|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  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|      1|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1125|       |
 1126|       |	/* sanity check */
 1127|      1|	if (fu_firmware_has_flag(self, FU_FIRMWARE_FLAG_DONE_PARSE)) {
  ------------------
  |  Branch (1127:6): [True: 0, False: 1]
  ------------------
 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|      1|	if (!G_IS_SEEKABLE(stream) || !g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   34|      2|#define G_IS_SEEKABLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_SEEKABLE))
  |  |  ------------------
  |  |  |  |  497|      1|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2313|      1|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2314|      1|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  |  |  | 2315|      1|  if (!__inst) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2315:7): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2316|      1|    __r = FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2317|      1|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2317:12): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (2317:31): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2318|      1|    __r = TRUE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2319|      1|  else \
  |  |  |  |  |  | 2320|      1|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  |  |  | 2321|      1|  __r; \
  |  |  |  |  |  | 2322|      1|}))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (!G_IS_SEEKABLE(stream) || !g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   33|      1|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1136:6): [True: 0, False: 1]
  |  Branch (1136:32): [True: 0, False: 1]
  ------------------
 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|      1|	} else {
 1142|      1|		seekable_stream = g_object_ref(stream);
  ------------------
  |  |  523|      1|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
 1143|      1|	}
 1144|       |
 1145|       |	/* check size */
 1146|      1|	if (!fu_input_stream_size(seekable_stream, &streamsz, error))
  ------------------
  |  Branch (1146:6): [True: 0, False: 1]
  ------------------
 1147|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1148|      1|	if (streamsz <= offset) {
  ------------------
  |  Branch (1148:6): [True: 0, False: 1]
  ------------------
 1149|      0|		g_set_error(error,
 1150|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1151|      0|			    FWUPD_ERROR_NOT_SUPPORTED,
 1152|      0|			    "stream size 0x%x is smaller than offset 0x%x",
 1153|      0|			    (guint)streamsz,
 1154|      0|			    (guint)offset);
 1155|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1156|      0|	}
 1157|       |
 1158|       |	/* optional */
 1159|      1|	if (!fu_firmware_validate_for_offset(self, seekable_stream, offset, &offset, flags, error))
  ------------------
  |  Branch (1159:6): [True: 1, False: 0]
  ------------------
 1160|      1|		return FALSE;
  ------------------
  |  |  814|      1|#define	FALSE	(0)
  ------------------
 1161|      0|	fu_firmware_set_offset(self, offset);
 1162|       |
 1163|       |	/* validate offset hasn't been corrupted */
 1164|      0|	if (offset >= streamsz) {
  ------------------
  |  Branch (1164:6): [True: 0, False: 0]
  ------------------
 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|      0|	priv->streamsz = streamsz - offset;
 1176|      0|	if (priv->streamsz == 0) {
  ------------------
  |  Branch (1176:6): [True: 0, False: 0]
  ------------------
 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|      0|	{
 1184|      0|		FuFirmwareClassPrivate *cpriv =
 1185|      0|		    fu_firmware_get_class_private(FU_FIRMWARE_GET_CLASS(self));
 1186|      0|		if (cpriv->size_max > 0 && priv->streamsz > cpriv->size_max) {
  ------------------
  |  Branch (1186:7): [True: 0, False: 0]
  |  Branch (1186:30): [True: 0, False: 0]
  ------------------
 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|      0|#ifndef SUPPORTED_BUILD
 1200|       |		/* we want all firmware subclasses to set this now */
 1201|      0|		if (G_OBJECT_TYPE(self) != FU_TYPE_FIRMWARE &&
  ------------------
  |  |  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 (G_OBJECT_TYPE(self) != FU_TYPE_FIRMWARE &&
  ------------------
  |  |   18|      0|#define FU_TYPE_FIRMWARE (fu_firmware_get_type())
  ------------------
  |  Branch (1201:7): [True: 0, False: 0]
  ------------------
 1202|      0|		    cpriv->size_max == FU_FIRMWARE_SIZE_MAX_DEFAULT) {
  ------------------
  |  |   13|      0|#define FU_FIRMWARE_SIZE_MAX_DEFAULT ((100 * FU_MB) + 1)
  |  |  ------------------
  |  |  |  |   81|      0|#define FU_MB (1ull << 20)
  |  |  ------------------
  ------------------
  |  Branch (1202:7): [True: 0, False: 0]
  ------------------
 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|      0|#endif
 1208|      0|	}
 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|      0|	if (klass->check_compatible != NULL)
  ------------------
  |  Branch (1215:6): [True: 0, False: 0]
  ------------------
 1216|      0|		fu_firmware_add_flag(self, FU_FIRMWARE_FLAG_HAS_CHECK_COMPATIBLE);
 1217|       |
 1218|       |	/* save stream */
 1219|      0|	if (offset == 0) {
  ------------------
  |  Branch (1219:6): [True: 0, False: 0]
  ------------------
 1220|      0|		partial_stream = g_object_ref(seekable_stream);
  ------------------
  |  |  523|      0|#define g_object_ref(Obj) ((glib_typeof (Obj)) (g_object_ref) (Obj))
  ------------------
 1221|      0|	} else {
 1222|      0|		partial_stream =
 1223|      0|		    fu_partial_input_stream_new(seekable_stream, offset, priv->streamsz, error);
 1224|      0|		if (partial_stream == NULL) {
  ------------------
  |  Branch (1224:7): [True: 0, False: 0]
  ------------------
 1225|      0|			g_prefix_error_literal(error, "failed to cut firmware: ");
  ------------------
  |  |   13|      0|#define g_prefix_error_literal	  g_prefix_error
  ------------------
 1226|      0|			return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1227|      0|		}
 1228|      0|	}
 1229|       |
 1230|       |	/* cache */
 1231|      0|	if (flags & FU_FIRMWARE_PARSE_FLAG_CACHE_BLOB) {
  ------------------
  |  Branch (1231:6): [True: 0, False: 0]
  ------------------
 1232|      0|		if (blob == NULL) {
  ------------------
  |  Branch (1232:7): [True: 0, False: 0]
  ------------------
 1233|      0|			blob = fu_input_stream_read_bytes(partial_stream,
 1234|      0|							  0x0,
 1235|      0|							  priv->streamsz,
 1236|      0|							  NULL,
 1237|      0|							  error);
 1238|      0|			if (blob == NULL)
  ------------------
  |  Branch (1238:8): [True: 0, False: 0]
  ------------------
 1239|      0|				return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1240|      0|		}
 1241|      0|		fu_firmware_set_bytes(self, blob);
 1242|      0|	}
 1243|      0|	if (flags & FU_FIRMWARE_PARSE_FLAG_CACHE_STREAM)
  ------------------
  |  Branch (1243:6): [True: 0, False: 0]
  ------------------
 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|      0|  GLIB_AVAILABLE_MACRO_IN_2_44
  ------------------
 1245|       |
 1246|       |	/* optional */
 1247|      0|	if (klass->tokenize != NULL) {
  ------------------
  |  Branch (1247:6): [True: 0, False: 0]
  ------------------
 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|      0|	if (klass->parse_full != NULL)
  ------------------
  |  Branch (1253:6): [True: 0, False: 0]
  ------------------
 1254|      0|		return klass->parse_full(self, seekable_stream, offset, flags, error);
 1255|      0|	if (klass->parse != NULL)
  ------------------
  |  Branch (1255:6): [True: 0, False: 0]
  ------------------
 1256|      0|		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|      1|{
 1296|      1|	g_autoptr(FuInputStream) stream = NULL;
  ------------------
  |  | 1162|      1|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|      1|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1297|       |
 1298|      1|	g_return_val_if_fail(FU_IS_FIRMWARE(self), FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  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|      1|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1299|      1|	g_return_val_if_fail(fw != NULL, FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  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|      1|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1300|      1|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  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|      1|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1301|       |
 1302|      1|	stream = fu_memory_input_stream_new_from_bytes(fw);
 1303|      1|	return fu_firmware_parse_stream(self, stream, offset, flags, error);
 1304|      1|}
fu_firmware_add_image_gtype:
 1886|      2|{
 1887|      2|	FuFirmwareClassPrivate *cpriv = fu_firmware_get_class_private(klass);
 1888|       |
 1889|      2|	g_return_if_fail(FU_IS_FIRMWARE_CLASS(klass));
  ------------------
  |  |  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, \
  |  |  ------------------
  |  |  |  |    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|      2|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1890|      2|	g_return_if_fail(type != G_TYPE_INVALID);
  ------------------
  |  |  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, \
  |  |  ------------------
  |  |  |  |    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|      2|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1891|      2|	g_return_if_fail(cpriv->image_gtypes_cnt < FU_FIRMWARE_IMAGE_GTYPES_MAX);
  ------------------
  |  |  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, \
  |  |  ------------------
  |  |  |  |    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|      2|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1892|       |
 1893|      2|	g_type_ensure(type);
 1894|      2|	cpriv->image_gtypes[cpriv->image_gtypes_cnt++] = type;
 1895|      2|}
fu_firmware_set_images_max:
 2045|      1|{
 2046|      1|	FuFirmwareClassPrivate *cpriv = fu_firmware_get_class_private(klass);
 2047|      1|	cpriv->images_max = images_max;
 2048|      1|}
fu-firmware.c:fu_firmware_class_init:
 2784|      1|{
 2785|      1|	GObjectClass *object_class = G_OBJECT_CLASS(klass);
  ------------------
  |  |   63|      1|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2786|      1|	GParamSpec *pspec;
 2787|       |
 2788|      1|	object_class->finalize = fu_firmware_finalize;
 2789|      1|	object_class->get_property = fu_firmware_get_property;
 2790|      1|	object_class->set_property = fu_firmware_set_property;
 2791|      1|	object_class->constructed = fu_firmware_constructed;
 2792|      1|	fu_firmware_set_size_max(klass, FU_FIRMWARE_SIZE_MAX_DEFAULT);
  ------------------
  |  |   13|      1|#define FU_FIRMWARE_SIZE_MAX_DEFAULT ((100 * FU_MB) + 1)
  |  |  ------------------
  |  |  |  |   81|      1|#define FU_MB (1ull << 20)
  |  |  ------------------
  ------------------
 2793|       |
 2794|       |	/**
 2795|       |	 * FuFirmware:parent:
 2796|       |	 *
 2797|       |	 * The firmware parent.
 2798|       |	 *
 2799|       |	 * Since: 1.8.2
 2800|       |	 */
 2801|      1|	pspec = g_param_spec_object("parent",
 2802|      1|				    NULL,
 2803|      1|				    NULL,
 2804|      1|				    FU_TYPE_FIRMWARE,
  ------------------
  |  |   18|      1|#define FU_TYPE_FIRMWARE (fu_firmware_get_type())
  ------------------
 2805|      1|				    G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME);
 2806|      1|	g_object_class_install_property(object_class, PROP_PARENT, pspec);
 2807|      1|}
fu-firmware.c:fu_firmware_finalize:
 2760|      1|{
 2761|      1|	FuFirmware *self = FU_FIRMWARE(object);
 2762|      1|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|      1|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 2763|      1|	g_free(priv->version);
 2764|      1|	g_free(priv->id);
 2765|      1|	g_free(priv->filename);
 2766|      1|	if (priv->bytes != NULL)
  ------------------
  |  Branch (2766:6): [True: 0, False: 1]
  ------------------
 2767|      0|		g_bytes_unref(priv->bytes);
 2768|      1|	if (priv->stream != NULL)
  ------------------
  |  Branch (2768:6): [True: 0, False: 1]
  ------------------
 2769|      0|		g_object_unref(priv->stream);
 2770|      1|	if (priv->chunks != NULL)
  ------------------
  |  Branch (2770:6): [True: 0, False: 1]
  ------------------
 2771|      0|		g_ptr_array_unref(priv->chunks);
 2772|      1|	if (priv->patches != NULL)
  ------------------
  |  Branch (2772:6): [True: 0, False: 1]
  ------------------
 2773|      0|		g_ptr_array_unref(priv->patches);
 2774|      1|	if (priv->magic != NULL)
  ------------------
  |  Branch (2774:6): [True: 1, False: 0]
  ------------------
 2775|      1|		g_ptr_array_unref(priv->magic);
 2776|      1|	if (priv->parent != NULL)
  ------------------
  |  Branch (2776:6): [True: 0, False: 1]
  ------------------
 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|      1|	g_ptr_array_unref(priv->images);
 2779|      1|	G_OBJECT_CLASS(fu_firmware_parent_class)->finalize(object);
  ------------------
  |  |   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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2780|      1|}
fu-firmware.c:fu_firmware_set_property:
 2724|      1|{
 2725|      1|	FuFirmware *self = FU_FIRMWARE(object);
 2726|      1|	switch (prop_id) {
 2727|      1|	case PROP_PARENT:
  ------------------
  |  Branch (2727:2): [True: 1, False: 0]
  ------------------
 2728|      1|		fu_firmware_set_parent(self, g_value_get_object(value));
 2729|      1|		break;
 2730|      0|	default:
  ------------------
  |  Branch (2730:2): [True: 0, False: 1]
  ------------------
 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|      1|	}
 2734|      1|}
fu-firmware.c:fu_firmware_constructed:
 2745|      1|{
 2746|      1|	FuFirmware *self = FU_FIRMWARE(obj);
 2747|      1|	FuFirmwareClass *klass = FU_FIRMWARE_GET_CLASS(self);
 2748|      1|	if (klass->add_magic != NULL)
  ------------------
  |  Branch (2748:6): [True: 1, False: 0]
  ------------------
 2749|      1|		klass->add_magic(self);
 2750|      1|	if (G_TYPE_FROM_CLASS(klass) != FU_TYPE_FIRMWARE && klass->parse_full == NULL &&
  ------------------
  |  |  613|      1|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  ------------------
              	if (G_TYPE_FROM_CLASS(klass) != FU_TYPE_FIRMWARE && klass->parse_full == NULL &&
  ------------------
  |  |   18|      2|#define FU_TYPE_FIRMWARE (fu_firmware_get_type())
  ------------------
  |  Branch (2750:6): [True: 1, False: 0]
  |  Branch (2750:54): [True: 1, False: 0]
  ------------------
 2751|      1|	    klass->parse == NULL)
  ------------------
  |  Branch (2751:6): [True: 0, False: 1]
  ------------------
 2752|      0|		fu_firmware_add_flag(self, FU_FIRMWARE_FLAG_IS_ABSTRACT);
 2753|       |
 2754|       |	/* chain up to parent */
 2755|      1|	G_OBJECT_CLASS(fu_firmware_parent_class)->constructed(obj);
  ------------------
  |  |   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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2756|      1|}
fu-firmware.c:fu_firmware_init:
 2738|      1|{
 2739|      1|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|      1|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 2740|      1|	priv->images = g_ptr_array_new_with_free_func((GDestroyNotify)g_object_unref);
 2741|      1|}
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_fuzzer_test_input:
 3053|      1|{
 3054|      1|	FuFirmware *self = FU_FIRMWARE(fuzzer);
 3055|      1|	g_autoptr(GBytes) fw = NULL;
  ------------------
  |  | 1162|      1|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|      1|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 3056|       |
 3057|      1|	if (!fu_firmware_parse_bytes(self,
  ------------------
  |  Branch (3057:6): [True: 1, False: 0]
  ------------------
 3058|      1|				     blob,
 3059|      1|				     0x0,
 3060|      1|				     FU_FIRMWARE_PARSE_FLAG_NO_SEARCH |
 3061|      1|					 FU_FIRMWARE_PARSE_FLAG_IGNORE_VID_PID |
 3062|      1|					 FU_FIRMWARE_PARSE_FLAG_IGNORE_CHECKSUM,
 3063|      1|				     error))
 3064|      1|		return FALSE;
  ------------------
  |  |  814|      1|#define	FALSE	(0)
  ------------------
 3065|      0|	fw = fu_firmware_write(self, error);
 3066|      0|	if (fw == NULL)
  ------------------
  |  Branch (3066:6): [True: 0, False: 0]
  ------------------
 3067|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 3068|       |
 3069|       |	/* success */
 3070|      0|	return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3071|      0|}
fu-firmware.c:fu_firmware_get_class_private:
   77|      5|{
   78|      5|	return G_TYPE_CLASS_GET_PRIVATE(klass, FU_TYPE_FIRMWARE, FuFirmwareClassPrivate);
  ------------------
  |  |  660|      5|#define G_TYPE_CLASS_GET_PRIVATE(klass, g_type, c_type)   ((c_type*) g_type_class_get_private ((GTypeClass*) (klass), (g_type)))
  ------------------
   79|      5|}
fu-firmware.c:fu_firmware_patch_free:
   92|      1|{
   93|      1|	g_bytes_unref(ptch->blob);
   94|      1|	g_free(ptch);
   95|      1|}
fu-firmware.c:fu_firmware_validate_for_offset:
 1059|      1|{
 1060|      1|	FuFirmwareClass *klass = FU_FIRMWARE_GET_CLASS(self);
 1061|      1|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|      1|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 1062|      1|	gsize streamsz = 0;
 1063|       |
 1064|       |	/* not implemented */
 1065|      1|	if (klass->validate == NULL)
  ------------------
  |  Branch (1065:6): [True: 0, False: 1]
  ------------------
 1066|      0|		return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1067|       |
 1068|       |	/* fuzzing */
 1069|      1|	if (!fu_firmware_has_flag(self, FU_FIRMWARE_FLAG_ALWAYS_SEARCH) &&
  ------------------
  |  Branch (1069:6): [True: 0, False: 1]
  ------------------
 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|      1|	if (priv->magic != NULL)
  ------------------
  |  Branch (1075:6): [True: 1, False: 0]
  ------------------
 1076|      1|		return fu_firmware_validate_with_magic(self, stream, offset, offset_found, error);
 1077|       |
 1078|       |	/* limit the size of firmware we search as brute force is expensive */
 1079|      0|	if (!fu_input_stream_size(stream, &streamsz, error))
  ------------------
  |  Branch (1079:6): [True: 0, False: 0]
  ------------------
 1080|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1081|      0|	if (streamsz < FU_FIRMWARE_SEARCH_MAGIC_BUFSZ_MAX) {
  ------------------
  |  |   84|      0|#define FU_FIRMWARE_SEARCH_MAGIC_BUFSZ_MAX (64 * FU_KB)
  |  |  ------------------
  |  |  |  |   72|      0|#define FU_KB (1ull << 10)
  |  |  ------------------
  ------------------
  |  Branch (1081:6): [True: 0, False: 0]
  ------------------
 1082|      0|		for (gsize offset_tmp = offset; offset_tmp < streamsz; offset_tmp++) {
  ------------------
  |  Branch (1082:35): [True: 0, False: 0]
  ------------------
 1083|      0|			if (klass->validate(self, stream, offset_tmp, NULL)) {
  ------------------
  |  Branch (1083:8): [True: 0, False: 0]
  ------------------
 1084|      0|				*offset_found = offset_tmp;
 1085|      0|				return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1086|      0|			}
 1087|      0|		}
 1088|      0|	}
 1089|       |
 1090|       |	/* check in more detail */
 1091|      0|	return klass->validate(self, stream, offset, error);
 1092|      0|}
fu-firmware.c:fu_firmware_validate_with_magic:
 1001|      1|{
 1002|      1|	FuFirmwareClass *klass = FU_FIRMWARE_GET_CLASS(self);
 1003|      1|	FuFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   73|      1|#define GET_PRIVATE(o) (fu_firmware_get_instance_private(o))
  ------------------
 1004|      1|	gsize offset_lowest = G_MAXSIZE;
  ------------------
  |  |   84|      1|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|      1|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
 1005|       |
 1006|      2|	for (guint i = 0; i < priv->magic->len; i++) {
  ------------------
  |  Branch (1006:20): [True: 1, False: 1]
  ------------------
 1007|      1|		FuFirmwarePatch *patch = g_ptr_array_index(priv->magic, i);
  ------------------
  |  |  138|      1|#define    g_ptr_array_index(array,index_) ((array)->pdata)[index_]
  ------------------
 1008|      1|		gsize offset_tmp = 0;
 1009|      1|		g_autoptr(GError) error_local = NULL;
  ------------------
  |  | 1162|      1|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|      1|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
 1010|       |
 1011|      1|		g_debug("searching for 0x%zx bytes of magic", g_bytes_get_size(patch->blob));
  ------------------
  |  |  351|      1|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    7|      1|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  352|      1|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|      1|                               __VA_ARGS__)
  ------------------
 1012|      1|		if (!fu_input_stream_find(stream,
  ------------------
  |  Branch (1012:7): [True: 1, False: 0]
  ------------------
 1013|      1|					  g_bytes_get_data(patch->blob, NULL),
 1014|      1|					  g_bytes_get_size(patch->blob),
 1015|      1|					  offset,
 1016|      1|					  &offset_tmp,
 1017|      1|					  &error_local)) {
 1018|      1|			g_debug("ignoring: %s", error_local->message);
  ------------------
  |  |  351|      1|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    7|      1|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  352|      1|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|      1|                               __VA_ARGS__)
  ------------------
 1019|      1|			continue;
 1020|      1|		}
 1021|       |
 1022|       |		/* ensure magic found at or after expected offset */
 1023|      0|		if (offset_tmp < patch->offset) {
  ------------------
  |  Branch (1023:7): [True: 0, False: 0]
  ------------------
 1024|      0|			g_debug("magic at 0x%zx but expected >= 0x%zx", offset_tmp, patch->offset);
  ------------------
  |  |  351|      0|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  352|      0|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|      0|                               __VA_ARGS__)
  ------------------
 1025|      0|			continue;
 1026|      0|		}
 1027|      0|		offset_tmp -= patch->offset;
 1028|      0|		g_debug("found magic at 0x%zx", offset_tmp);
  ------------------
  |  |  351|      0|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  352|      0|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|      0|                               __VA_ARGS__)
  ------------------
 1029|      0|		if (!klass->validate(self, stream, offset_tmp, &error_local)) {
  ------------------
  |  Branch (1029:7): [True: 0, False: 0]
  ------------------
 1030|      0|			g_debug("ignoring: %s", error_local->message);
  ------------------
  |  |  351|      0|#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuFirmware"
  |  |  ------------------
  |  |  352|      0|                               G_LOG_LEVEL_DEBUG,    \
  |  |  353|      0|                               __VA_ARGS__)
  ------------------
 1031|      0|			continue;
 1032|      0|		}
 1033|       |
 1034|       |		/* any better? */
 1035|      0|		if (offset_tmp < offset_lowest)
  ------------------
  |  Branch (1035:7): [True: 0, False: 0]
  ------------------
 1036|      0|			offset_lowest = offset_tmp;
 1037|      0|	}
 1038|      1|	if (offset_lowest == G_MAXSIZE) {
  ------------------
  |  |   84|      1|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|      1|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
  |  Branch (1038:6): [True: 1, False: 0]
  ------------------
 1039|      1|		g_set_error_literal(error,
 1040|      1|				    FWUPD_ERROR,
  ------------------
  |  |   15|      1|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1041|      1|				    FWUPD_ERROR_INVALID_FILE,
 1042|      1|				    "failed to find magic bytes");
 1043|      1|		return FALSE;
  ------------------
  |  |  814|      1|#define	FALSE	(0)
  ------------------
 1044|      1|	}
 1045|       |
 1046|       |	/* success */
 1047|      0|	if (offset_found != NULL)
  ------------------
  |  Branch (1047:6): [True: 0, False: 0]
  ------------------
 1048|      0|		*offset_found = offset_lowest;
 1049|      0|	return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1050|      1|}

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

fu_input_stream_read:
  155|     33|{
  156|     33|	g_return_val_if_fail(FU_IS_INPUT_STREAM(stream), -1);
  ------------------
  |  |  643|     33|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     33|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     33|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     33|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     33| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     33|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     33|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     33|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 33, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     33|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     33|   else                                         \
  |  |  |  |  |  | 1021|     33|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     33|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     33|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 33, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     33|      { } \
  |  |  646|     33|    else \
  |  |  647|     33|      { \
  |  |  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|     33|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     33|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 33]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  157|     33|	g_return_val_if_fail(buffer != NULL, -1);
  ------------------
  |  |  643|     33|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     33|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     33|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     33|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     33| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     33|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     33|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     33|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 33, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     33|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     33|   else                                         \
  |  |  |  |  |  | 1021|     33|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     33|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     33|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 33, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     33|      { } \
  |  |  646|     33|    else \
  |  |  647|     33|      { \
  |  |  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|     33|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     33|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 33]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  158|     33|	g_return_val_if_fail(error == NULL || *error == NULL, -1);
  ------------------
  |  |  643|     33|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     33|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     33|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     33|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     33| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     33|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     33|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     99|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 33]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 33, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     33|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     33|   else                                         \
  |  |  |  |  |  | 1021|     33|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     33|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     33|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 33, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     33|      { } \
  |  |  646|     33|    else \
  |  |  647|     33|      { \
  |  |  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|     33|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     33|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 33]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  159|     33|	return FU_INPUT_STREAM_GET_CLASS(stream)->read_fn(stream,
  160|     33|							  buffer,
  161|     33|							  count,
  162|     33|							  cancellable,
  163|     33|							  error);
  164|     33|}
fu_input_stream_read_byte_array:
  479|     17|{
  480|     17|	guint8 tmp[0x8000]; /* nocheck:zero-init */
  481|     17|	g_autoptr(GByteArray) buf = g_byte_array_new();
  ------------------
  |  | 1162|     17|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|     17|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  482|     17|	g_autoptr(GError) error_local = NULL;
  ------------------
  |  | 1162|     17|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|     17|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  483|       |
  484|     17|	g_return_val_if_fail(FU_IS_INPUT_STREAM(stream), NULL);
  ------------------
  |  |  643|     17|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     17|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     17|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     17|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     17| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     17|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     17|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     17|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 17, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     17|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     17|   else                                         \
  |  |  |  |  |  | 1021|     17|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     17|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     17|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 17, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     17|      { } \
  |  |  646|     17|    else \
  |  |  647|     17|      { \
  |  |  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|     17|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     17|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 17]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  485|     17|	g_return_val_if_fail(progress == NULL || FU_IS_PROGRESS(progress), NULL);
  ------------------
  |  |  643|     17|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     17|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     17|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     17|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     17| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     17|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     17|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     34|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 17, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     17|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     17|   else                                         \
  |  |  |  |  |  | 1021|     17|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     17|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     17|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 17, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     17|      { } \
  |  |  646|     17|    else \
  |  |  647|     17|      { \
  |  |  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|     17|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     17|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 17]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  486|     17|	g_return_val_if_fail(error == NULL || *error == NULL, NULL);
  ------------------
  |  |  643|     17|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     17|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     17|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     17|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     17| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     17|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     17|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     51|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 17]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 17, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     17|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     17|   else                                         \
  |  |  |  |  |  | 1021|     17|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     17|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     17|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 17, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     17|      { } \
  |  |  646|     17|    else \
  |  |  647|     17|      { \
  |  |  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|     17|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     17|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 17]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  487|       |
  488|       |	/* this is invalid */
  489|     17|	if (count == 0) {
  ------------------
  |  Branch (489:6): [True: 0, False: 17]
  ------------------
  490|      0|		g_set_error_literal(error,
  491|      0|				    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  492|      0|				    FWUPD_ERROR_NOT_SUPPORTED,
  493|      0|				    "read size must be non-zero");
  494|      0|		return NULL;
  495|      0|	}
  496|       |
  497|       |	/* seek back to start */
  498|     17|	if (G_IS_SEEKABLE(stream) && g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   34|     34|#define G_IS_SEEKABLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_SEEKABLE))
  |  |  ------------------
  |  |  |  |  497|     17|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2313|     17|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     17|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2314|     17|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  |  |  | 2315|     17|  if (!__inst) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2315:7): [True: 0, False: 17]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2316|     17|    __r = FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2317|     17|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2317:12): [True: 17, False: 0]
  |  |  |  |  |  |  |  Branch (2317:31): [True: 0, False: 17]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2318|     17|    __r = TRUE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2319|     17|  else \
  |  |  |  |  |  | 2320|     17|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  |  |  | 2321|     17|  __r; \
  |  |  |  |  |  | 2322|     17|}))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (34:36): [True: 17, False: 0]
  |  |  ------------------
  ------------------
              	if (G_IS_SEEKABLE(stream) && g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   33|     17|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|     17|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|     17|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (498:31): [True: 17, False: 0]
  ------------------
  499|     17|		if (!g_seekable_seek(G_SEEKABLE(stream), offset, G_SEEK_SET, NULL, error))
  ------------------
  |  |   33|     17|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  484|     17|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2300|     17|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (499:7): [True: 0, False: 17]
  ------------------
  500|      0|			return NULL;
  501|     17|	}
  502|       |
  503|       |	/* read from stream in 32kB chunks */
  504|     33|	while (TRUE) {
  ------------------
  |  |  818|     33|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     33|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (818:14): [True: 33, Folded]
  |  |  ------------------
  ------------------
  505|     33|		gssize sz;
  506|     33|		sz = fu_input_stream_read(stream,
  507|     33|					  tmp,
  508|     33|					  MIN(count - buf->len, sizeof(tmp)),
  ------------------
  |  |  825|     33|#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (825:21): [True: 0, False: 33]
  |  |  ------------------
  ------------------
  509|     33|					  NULL,
  510|     33|					  &error_local);
  511|     33|		if (sz == 0)
  ------------------
  |  Branch (511:7): [True: 1, False: 32]
  ------------------
  512|      1|			break;
  513|     32|		if (sz < 0) {
  ------------------
  |  Branch (513:7): [True: 0, False: 32]
  ------------------
  514|      0|			g_set_error_literal(error,
  515|      0|					    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  516|      0|					    FWUPD_ERROR_INVALID_FILE,
  517|      0|					    error_local->message);
  518|      0|			return NULL;
  519|      0|		}
  520|       |
  521|       |		/* update progress */
  522|     32|		if (progress != NULL)
  ------------------
  |  Branch (522:7): [True: 0, False: 32]
  ------------------
  523|      0|			fu_progress_set_percentage_full(progress, buf->len, count);
  524|       |
  525|     32|		g_byte_array_append(buf, tmp, sz);
  526|     32|		if (buf->len >= count)
  ------------------
  |  Branch (526:7): [True: 16, False: 16]
  ------------------
  527|     16|			break;
  528|     32|	}
  529|       |
  530|       |	/* no data was read */
  531|     17|	if (buf->len == 0) {
  ------------------
  |  Branch (531:6): [True: 1, False: 16]
  ------------------
  532|      1|		g_set_error_literal(error,
  533|      1|				    FWUPD_ERROR,
  ------------------
  |  |   15|      1|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  534|      1|				    FWUPD_ERROR_INVALID_FILE,
  535|      1|				    "no data could be read");
  536|      1|		return NULL;
  537|      1|	}
  538|       |
  539|       |	/* success */
  540|     16|	return g_steal_pointer(&buf);
  ------------------
  |  |  222|     16|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  541|     17|}
fu_input_stream_size:
  626|      1|{
  627|      1|	g_return_val_if_fail(FU_IS_INPUT_STREAM(stream), FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      1|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  628|      1|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      1|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  629|       |
  630|       |	/* streaming from unseekable stream */
  631|      1|	if (!G_IS_SEEKABLE(stream) || !g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   34|      2|#define G_IS_SEEKABLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_SEEKABLE))
  |  |  ------------------
  |  |  |  |  497|      1|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2313|      1|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2314|      1|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  |  |  | 2315|      1|  if (!__inst) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2315:7): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2316|      1|    __r = FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2317|      1|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2317:12): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (2317:31): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2318|      1|    __r = TRUE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2319|      1|  else \
  |  |  |  |  |  | 2320|      1|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  |  |  | 2321|      1|  __r; \
  |  |  |  |  |  | 2322|      1|}))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              	if (!G_IS_SEEKABLE(stream) || !g_seekable_can_seek(G_SEEKABLE(stream))) {
  ------------------
  |  |   33|      1|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (631:6): [True: 0, False: 1]
  |  Branch (631:32): [True: 0, False: 1]
  ------------------
  632|      0|		if (val != NULL)
  ------------------
  |  Branch (632:7): [True: 0, False: 0]
  ------------------
  633|      0|			*val = G_MAXSIZE;
  ------------------
  |  |   84|      0|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|      0|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
  634|      0|		return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  635|      0|	}
  636|       |
  637|      1|	if (!g_seekable_seek(G_SEEKABLE(stream), 0, G_SEEK_END, NULL, error)) {
  ------------------
  |  |   33|      1|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (637:6): [True: 0, False: 1]
  ------------------
  638|      0|		g_prefix_error_literal(error, "seek to end: ");
  ------------------
  |  |   13|      0|#define g_prefix_error_literal	  g_prefix_error
  ------------------
  639|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  640|      0|	}
  641|      1|	if (val != NULL)
  ------------------
  |  Branch (641:6): [True: 1, False: 0]
  ------------------
  642|      1|		*val = g_seekable_tell(G_SEEKABLE(stream));
  ------------------
  |  |   33|      1|#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
  |  |  ------------------
  |  |  |  |  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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  643|       |
  644|       |	/* success */
  645|      1|	return TRUE;
  ------------------
  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  646|      1|}
fu_input_stream_find:
  958|      1|{
  959|      1|	g_autoptr(GByteArray) buf_acc = g_byte_array_new();
  ------------------
  |  | 1162|      1|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|      1|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  960|      1|	const gsize blocksz = 0x10000;
  961|      1|	gsize offset_add = 0;
  962|      1|	gsize offset_cur = offset;
  963|       |
  964|      1|	g_return_val_if_fail(FU_IS_INPUT_STREAM(stream), FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      1|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  965|      1|	g_return_val_if_fail(buf != NULL, FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      1|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  966|      1|	g_return_val_if_fail(bufsz != 0, FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      1|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  967|      1|	g_return_val_if_fail(bufsz < blocksz, FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      1|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  968|      1|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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|      3|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1]
  |  |  |  |  |  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuInputStream"
  |  |  ------------------
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      1|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  969|       |
  970|     17|	while (TRUE) {
  ------------------
  |  |  818|     17|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     17|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (818:14): [True: 17, Folded]
  |  |  ------------------
  ------------------
  971|     17|		g_autoptr(GByteArray) buf_tmp = NULL;
  ------------------
  |  | 1162|     17|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|     17|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  972|     17|		g_autoptr(GError) error_local = NULL;
  ------------------
  |  | 1162|     17|#define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  |  |  ------------------
  |  |  |  | 1129|     17|#define _GLIB_CLEANUP(func)               __attribute__((cleanup(func)))
  |  |  ------------------
  ------------------
  973|       |
  974|       |		/* read more data */
  975|     17|		buf_tmp = fu_input_stream_read_byte_array(stream,
  976|     17|							  offset_cur,
  977|     17|							  blocksz,
  978|     17|							  NULL,
  979|     17|							  &error_local);
  980|     17|		if (buf_tmp == NULL) {
  ------------------
  |  Branch (980:7): [True: 1, False: 16]
  ------------------
  981|      1|			if (g_error_matches(error_local, FWUPD_ERROR, FWUPD_ERROR_INVALID_FILE))
  ------------------
  |  |   15|      1|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  |  Branch (981:8): [True: 1, False: 0]
  ------------------
  982|      1|				break;
  983|      0|			g_propagate_error(error, g_steal_pointer(&error_local));
  ------------------
  |  |  222|      0|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
  984|      0|			return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  985|      1|		}
  986|     16|		g_byte_array_append(buf_acc, buf_tmp->data, buf_tmp->len);
  987|       |
  988|       |		/* we found something */
  989|     16|		if (fu_memmem_safe(buf_acc->data, buf_acc->len, buf, bufsz, offset_found, NULL)) {
  ------------------
  |  Branch (989:7): [True: 0, False: 16]
  ------------------
  990|      0|			if (offset_found != NULL)
  ------------------
  |  Branch (990:8): [True: 0, False: 0]
  ------------------
  991|      0|				*offset_found += offset + offset_add;
  992|      0|			return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  993|      0|		}
  994|       |
  995|       |		/* truncate the buffer */
  996|     16|		if (buf_acc->len > bufsz) {
  ------------------
  |  Branch (996:7): [True: 16, False: 0]
  ------------------
  997|     16|			offset_add += buf_acc->len - bufsz;
  998|     16|			g_byte_array_remove_range(buf_acc, 0, buf_acc->len - bufsz);
  999|     16|		}
 1000|       |
 1001|       |		/* move the offset */
 1002|     16|		offset_cur += buf_tmp->len;
 1003|     16|	}
 1004|      1|	g_set_error(error,
 1005|      1|		    FWUPD_ERROR,
  ------------------
  |  |   15|      1|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
 1006|      1|		    FWUPD_ERROR_NOT_FOUND,
 1007|      1|		    "failed to find buffer of size 0x%x",
 1008|      1|		    (guint)bufsz);
 1009|      1|	return FALSE;
  ------------------
  |  |  814|      1|#define	FALSE	(0)
  ------------------
 1010|      1|}
fu-input-stream.c:fu_input_stream_class_init:
  122|      1|{
  123|      1|	GObjectClass *object_class = G_OBJECT_CLASS(klass);
  ------------------
  |  |   63|      1|#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  124|      1|	object_class->constructed = fu_input_stream_constructed;
  125|      1|	klass->tell = fu_input_stream_default_tell;
  126|      1|	klass->can_seek = fu_input_stream_default_can_seek;
  127|      1|	klass->seek = fu_input_stream_default_seek;
  128|      1|}
fu-input-stream.c:fu_input_stream_constructed:
  111|      1|{
  112|      1|	FuInputStreamClass *klass = FU_INPUT_STREAM_GET_CLASS(object);
  113|       |
  114|      1|	G_OBJECT_CLASS(fu_input_stream_parent_class)->constructed(object);
  ------------------
  |  |   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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  115|       |
  116|       |	/* every FuInputStream subclass must implement read_fn */
  117|      1|	g_assert(klass->read_fn != NULL); /* nocheck:blocked */
  ------------------
  |  |  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, \
  |  |  ------------------
  |  |  |  |    7|      0|#define G_LOG_DOMAIN "FuInputStream"
  |  |  ------------------
  |  |                                                              g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      1|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  118|      1|}
fu-input-stream.c:fu_input_stream_init:
  132|      1|{
  133|      1|}
fu-input-stream.c:fu_input_stream_seekable_iface_init:
  101|      1|{
  102|      1|	iface->tell = fu_input_stream_seekable_tell;
  103|      1|	iface->can_seek = fu_input_stream_seekable_can_seek;
  104|      1|	iface->seek = fu_input_stream_seekable_seek;
  105|      1|	iface->can_truncate = fu_input_stream_seekable_can_truncate;
  106|      1|	iface->truncate_fn = fu_input_stream_seekable_truncate;
  107|      1|}
fu-input-stream.c:fu_input_stream_seekable_tell:
   54|      1|{
   55|      1|	FuInputStream *self = FU_INPUT_STREAM(seekable);
   56|      1|	FuInputStreamClass *klass = FU_INPUT_STREAM_GET_CLASS(self);
   57|      1|	return klass->tell(self);
   58|      1|}
fu-input-stream.c:fu_input_stream_seekable_can_seek:
   62|     19|{
   63|     19|	FuInputStream *self = FU_INPUT_STREAM(seekable);
   64|     19|	FuInputStreamClass *klass = FU_INPUT_STREAM_GET_CLASS(self);
   65|     19|	return klass->can_seek(self);
   66|     19|}
fu-input-stream.c:fu_input_stream_seekable_seek:
   74|     18|{
   75|     18|	FuInputStream *self = FU_INPUT_STREAM(seekable);
   76|     18|	FuInputStreamClass *klass = FU_INPUT_STREAM_GET_CLASS(self);
   77|     18|	return klass->seek(self, offset, type, cancellable, error);
   78|     18|}

fu_memchk_read:
  328|     32|{
  329|     32|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|     32|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     32|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     32|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     32|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     32| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     32|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     32|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     96|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 32]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 32, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     32|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     32|   else                                         \
  |  |  |  |  |  | 1021|     32|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     32|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     32|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 32, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     32|      { } \
  |  |  646|     32|    else \
  |  |  647|     32|      { \
  |  |  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|     32|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     32|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 32]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  330|     32|	if (n == 0)
  ------------------
  |  Branch (330:6): [True: 0, False: 32]
  ------------------
  331|      0|		return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  332|     32|	if (n > bufsz) {
  ------------------
  |  Branch (332:6): [True: 0, False: 32]
  ------------------
  333|      0|		g_set_error(error,
  334|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  335|      0|			    FWUPD_ERROR_READ,
  336|      0|			    "attempted to read 0x%02x bytes from buffer of 0x%02x",
  337|      0|			    (guint)n,
  338|      0|			    (guint)bufsz);
  339|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  340|      0|	}
  341|     32|	if (fu_size_checked_add(offset, n) == G_MAXSIZE) {
  ------------------
  |  |   84|     32|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|     32|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
  |  Branch (341:6): [True: 0, False: 32]
  ------------------
  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|     32|	if (offset > bufsz || n + offset > bufsz) {
  ------------------
  |  Branch (350:6): [True: 0, False: 32]
  |  Branch (350:24): [True: 0, False: 32]
  ------------------
  351|      0|		g_set_error(error,
  352|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  353|      0|			    FWUPD_ERROR_READ,
  354|      0|			    "attempted to read 0x%02x bytes at offset 0x%02x from buffer of 0x%02x",
  355|      0|			    (guint)n,
  356|      0|			    (guint)offset,
  357|      0|			    (guint)bufsz);
  358|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  359|      0|	}
  360|     32|	return TRUE;
  ------------------
  |  |  818|     32|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     32|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  361|     32|}
fu_memchk_write:
  383|     32|{
  384|     32|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|     32|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     32|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     32|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     32|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     32| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     32|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     32|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     96|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 32]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 32, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     32|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     32|   else                                         \
  |  |  |  |  |  | 1021|     32|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     32|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     32|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 32, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     32|      { } \
  |  |  646|     32|    else \
  |  |  647|     32|      { \
  |  |  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|     32|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     32|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 32]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  385|     32|	if (n == 0)
  ------------------
  |  Branch (385:6): [True: 0, False: 32]
  ------------------
  386|      0|		return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  387|     32|	if (n > bufsz) {
  ------------------
  |  Branch (387:6): [True: 0, False: 32]
  ------------------
  388|      0|		g_set_error(error,
  389|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  390|      0|			    FWUPD_ERROR_WRITE,
  391|      0|			    "attempted to write 0x%02x bytes to buffer of 0x%02x",
  392|      0|			    (guint)n,
  393|      0|			    (guint)bufsz);
  394|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  395|      0|	}
  396|     32|	if (fu_size_checked_add(offset, n) == G_MAXSIZE) {
  ------------------
  |  |   84|     32|#define G_MAXSIZE	G_MAXULONG
  |  |  ------------------
  |  |  |  |   38|     32|#define G_MAXULONG	ULONG_MAX
  |  |  ------------------
  ------------------
  |  Branch (396:6): [True: 0, False: 32]
  ------------------
  397|      0|		g_set_error(error,
  398|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  399|      0|			    FWUPD_ERROR_WRITE,
  400|      0|			    "offset 0x%02x + 0x%02x overflowed",
  401|      0|			    (guint)offset,
  402|      0|			    (guint)n);
  403|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  404|      0|	}
  405|     32|	if (offset > bufsz || n + offset > bufsz) {
  ------------------
  |  Branch (405:6): [True: 0, False: 32]
  |  Branch (405:24): [True: 0, False: 32]
  ------------------
  406|      0|		g_set_error(error,
  407|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  408|      0|			    FWUPD_ERROR_WRITE,
  409|      0|			    "attempted to write 0x%02x bytes at offset 0x%02x to buffer of 0x%02x",
  410|      0|			    (guint)n,
  411|      0|			    (guint)offset,
  412|      0|			    (guint)bufsz);
  413|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  414|      0|	}
  415|     32|	return TRUE;
  ------------------
  |  |  818|     32|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     32|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  416|     32|}
fu_memcpy_safe:
  453|     32|{
  454|     32|	g_return_val_if_fail(dst != NULL, FALSE);
  ------------------
  |  |  643|     32|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     32|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     32|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     32|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     32| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     32|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     32|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     32|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 32, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     32|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     32|   else                                         \
  |  |  |  |  |  | 1021|     32|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     32|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     32|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 32, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     32|      { } \
  |  |  646|     32|    else \
  |  |  647|     32|      { \
  |  |  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|     32|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     32|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 32]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  455|     32|	g_return_val_if_fail(src != NULL, FALSE);
  ------------------
  |  |  643|     32|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     32|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     32|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     32|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     32| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     32|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     32|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     32|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 32, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     32|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     32|   else                                         \
  |  |  |  |  |  | 1021|     32|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     32|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     32|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 32, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     32|      { } \
  |  |  646|     32|    else \
  |  |  647|     32|      { \
  |  |  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|     32|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     32|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 32]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  456|     32|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  643|     32|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     32|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     32|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     32|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     32| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     32|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     32|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     96|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 32]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 32, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     32|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     32|   else                                         \
  |  |  |  |  |  | 1021|     32|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     32|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     32|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 32, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     32|      { } \
  |  |  646|     32|    else \
  |  |  647|     32|      { \
  |  |  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|     32|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     32|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 32]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  457|       |
  458|     32|	if (!fu_memchk_read(src_sz, src_offset, n, error))
  ------------------
  |  Branch (458:6): [True: 0, False: 32]
  ------------------
  459|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  460|     32|	if (!fu_memchk_write(dst_sz, dst_offset, n, error))
  ------------------
  |  Branch (460:6): [True: 0, False: 32]
  ------------------
  461|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  462|     32|	memcpy(dst + dst_offset, src + src_offset, n); /* nocheck:blocked */
  463|     32|	return TRUE;
  ------------------
  |  |  818|     32|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     32|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  464|     32|}
fu_memmem_safe:
  488|     16|{
  489|       |#ifdef HAVE_MEMMEM
  490|       |	const guint8 *tmp;
  491|       |#endif
  492|     16|	g_return_val_if_fail(haystack != NULL, FALSE);
  ------------------
  |  |  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, \
  |  |  ------------------
  |  |  |  |    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|     16|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     16|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  493|     16|	g_return_val_if_fail(needle != NULL, FALSE);
  ------------------
  |  |  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, \
  |  |  ------------------
  |  |  |  |    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|     16|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     16|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  494|     16|	g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
  ------------------
  |  |  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|     32|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 16, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, 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, \
  |  |  ------------------
  |  |  |  |    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|     16|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     16|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  495|       |
  496|       |	/* nothing to find */
  497|     16|	if (needle_sz == 0) {
  ------------------
  |  Branch (497:6): [True: 0, False: 16]
  ------------------
  498|      0|		if (offset != NULL)
  ------------------
  |  Branch (498:7): [True: 0, False: 0]
  ------------------
  499|      0|			*offset = 0;
  500|      0|		return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  501|      0|	}
  502|       |
  503|       |	/* impossible */
  504|     16|	if (needle_sz > haystack_sz) {
  ------------------
  |  Branch (504:6): [True: 0, False: 16]
  ------------------
  505|      0|		g_set_error(error,
  506|      0|			    FWUPD_ERROR,
  ------------------
  |  |   15|      0|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  507|      0|			    FWUPD_ERROR_NOT_FOUND,
  508|      0|			    "needle of 0x%02x bytes is larger than haystack of 0x%02x bytes",
  509|      0|			    (guint)needle_sz,
  510|      0|			    (guint)haystack_sz);
  511|      0|		return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  512|      0|	}
  513|       |
  514|       |#ifdef HAVE_MEMMEM
  515|       |	/* trust glibc to do a binary or linear search as appropriate */
  516|       |	tmp = memmem(haystack, haystack_sz, needle, needle_sz);
  517|       |	if (tmp != NULL) {
  518|       |		if (offset != NULL)
  519|       |			*offset = tmp - haystack;
  520|       |		return TRUE;
  521|       |	}
  522|       |#else
  523|  1.04M|	for (gsize i = 0; i < haystack_sz - needle_sz; i++) {
  ------------------
  |  Branch (523:20): [True: 1.04M, False: 16]
  ------------------
  524|  1.04M|		if (memcmp(haystack + i, needle, needle_sz) == 0) {
  ------------------
  |  Branch (524:7): [True: 0, False: 1.04M]
  ------------------
  525|      0|			if (offset != NULL)
  ------------------
  |  Branch (525:8): [True: 0, False: 0]
  ------------------
  526|      0|				*offset = i;
  527|      0|			return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  528|      0|		}
  529|  1.04M|	}
  530|     16|#endif
  531|       |
  532|       |	/* not found */
  533|     16|	g_set_error(error,
  534|     16|		    FWUPD_ERROR,
  ------------------
  |  |   15|     16|#define FWUPD_ERROR fwupd_error_quark()
  ------------------
  535|     16|		    FWUPD_ERROR_NOT_FOUND,
  536|     16|		    "needle of 0x%02x bytes was not found in haystack of 0x%02x bytes",
  537|     16|		    (guint)needle_sz,
  538|     16|		    (guint)haystack_sz);
  539|     16|	return FALSE;
  ------------------
  |  |  814|     16|#define	FALSE	(0)
  ------------------
  540|     16|}

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

fu-uswid-firmware.c:fu_uswid_firmware_class_init:
  375|      1|{
  376|      1|	FuFirmwareClass *firmware_class = FU_FIRMWARE_CLASS(klass);
  377|      1|	fu_firmware_add_image_gtype(firmware_class, FU_TYPE_COSWID_FIRMWARE);
  ------------------
  |  |   13|      1|#define FU_TYPE_COSWID_FIRMWARE (fu_coswid_firmware_get_type())
  ------------------
  378|      1|	fu_firmware_add_image_gtype(firmware_class, FU_TYPE_FIRMWARE);
  ------------------
  |  |   18|      1|#define FU_TYPE_FIRMWARE (fu_firmware_get_type())
  ------------------
  379|      1|	firmware_class->validate = fu_uswid_firmware_validate;
  380|      1|	firmware_class->parse = fu_uswid_firmware_parse;
  381|      1|	firmware_class->write = fu_uswid_firmware_write;
  382|      1|	firmware_class->build = fu_uswid_firmware_build;
  383|      1|	firmware_class->export = fu_uswid_firmware_export;
  384|      1|	firmware_class->add_magic = fu_uswid_firmware_add_magic;
  385|      1|	fu_firmware_set_size_max(firmware_class, 16 * FU_MB);
  ------------------
  |  |   81|      1|#define FU_MB (1ull << 20)
  ------------------
  386|      1|	fu_firmware_set_images_max(firmware_class, 2000);
  387|      1|}
fu-uswid-firmware.c:fu_uswid_firmware_add_magic:
  355|      1|{
  356|      1|	fu_firmware_add_magic(firmware,
  357|      1|			      (const guint8 *)FU_STRUCT_USWID_DEFAULT_MAGIC,
  ------------------
  |  |  113|      1|#define FU_STRUCT_USWID_DEFAULT_MAGIC "\x53\x42\x4f\x4d\xd6\xba\x2e\xac\xa3\xe6\x7a\x52\xaa\xee\x3b\xaf"
  ------------------
  358|      1|			      sizeof(fwupd_guid_t),
  359|      1|			      0x0);
  360|      1|}
fu-uswid-firmware.c:fu_uswid_firmware_init:
  364|      1|{
  365|      1|	FuUswidFirmwarePrivate *priv = GET_PRIVATE(self);
  ------------------
  |  |   38|      1|#define GET_PRIVATE(o) (fu_uswid_firmware_get_instance_private(o))
  ------------------
  366|      1|	priv->hdrver = FU_USWID_FIRMWARE_MINIMUM_HDRVER;
  ------------------
  |  |   40|      1|#define FU_USWID_FIRMWARE_MINIMUM_HDRVER 1
  ------------------
  367|      1|	priv->compression = FU_USWID_PAYLOAD_COMPRESSION_NONE;
  368|      1|	priv->format = FU_USWID_PAYLOAD_FORMAT_COSWID;
  369|      1|	fu_firmware_add_flag(FU_FIRMWARE(self), FU_FIRMWARE_FLAG_HAS_STORED_SIZE);
  370|      1|	fu_firmware_add_flag(FU_FIRMWARE(self), FU_FIRMWARE_FLAG_ALWAYS_SEARCH);
  371|      1|}

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

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

g_array_sized_new:
  260|     18|{
  261|     18|  GRealArray *array;
  262|       |  
  263|     18|  g_return_val_if_fail (elt_size > 0, NULL);
  ------------------
  |  |  643|     18|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     18|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     18|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     18|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     18| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     18|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     18|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     18|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 18, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     18|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     18|   else                                         \
  |  |  |  |  |  | 1021|     18|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     18|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     18|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 18, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     18|      { } \
  |  |  646|     18|    else \
  |  |  647|     18|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     18|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     18|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 18]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  264|       |
  265|     18|  array = g_slice_new (GRealArray);
  ------------------
  |  |   46|     18|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  ------------------
  266|       |
  267|     18|  array->data            = NULL;
  268|     18|  array->len             = 0;
  269|     18|  array->alloc           = 0;
  270|     18|  array->zero_terminated = (zero_terminated ? 1 : 0);
  ------------------
  |  Branch (270:29): [True: 0, False: 18]
  ------------------
  271|     18|  array->clear           = (clear ? 1 : 0);
  ------------------
  |  Branch (271:29): [True: 0, False: 18]
  ------------------
  272|     18|  array->elt_size        = elt_size;
  273|     18|  array->clear_func      = NULL;
  274|       |
  275|     18|  g_atomic_ref_count_init (&array->ref_count);
  276|       |
  277|     18|  if (array->zero_terminated || reserved_size != 0)
  ------------------
  |  Branch (277:7): [True: 0, False: 18]
  |  Branch (277:33): [True: 0, False: 18]
  ------------------
  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|     18|  return (GArray*) array;
  284|     18|}
g_array_unref:
  358|     18|{
  359|     18|  GRealArray *rarray = (GRealArray*) array;
  360|     18|  g_return_if_fail (array);
  ------------------
  |  |  630|     18|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     18|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     18|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     18|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     18| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     18|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     18|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     18|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 18, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     18|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     18|   else                                         \
  |  |  |  |  |  | 1021|     18|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     18|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     18|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 18, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     18|      { } \
  |  |  633|     18|    else \
  |  |  634|     18|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|     18|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     18|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 18]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  361|       |
  362|     18|  if (g_atomic_ref_count_dec (&rarray->ref_count))
  ------------------
  |  Branch (362:7): [True: 18, False: 0]
  ------------------
  363|     18|    array_free (rarray, FREE_SEGMENT);
  364|     18|}
g_array_append_vals:
  491|     48|{
  492|     48|  GRealArray *array = (GRealArray*) farray;
  493|       |
  494|     48|  g_return_val_if_fail (array, NULL);
  ------------------
  |  |  643|     48|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     48|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     48|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     48|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     48| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     48|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     48|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     48|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 48, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     48|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     48|   else                                         \
  |  |  |  |  |  | 1021|     48|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     48|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     48|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 48, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     48|      { } \
  |  |  646|     48|    else \
  |  |  647|     48|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     48|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     48|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 48]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  495|       |
  496|     48|  if (len == 0)
  ------------------
  |  Branch (496:7): [True: 0, False: 48]
  ------------------
  497|      0|    return farray;
  498|       |
  499|     48|  g_array_maybe_expand (array, len);
  500|       |
  501|     48|  memcpy (g_array_elt_pos (array, array->len), data, 
  ------------------
  |  |  154|     48|#define g_array_elt_pos(array,i) ((array)->data + g_array_elt_len((array),(i)))
  |  |  ------------------
  |  |  |  |  153|     48|#define g_array_elt_len(array,i) ((array)->elt_size * (i))
  |  |  ------------------
  ------------------
  502|     48|          g_array_elt_len (array, len));
  ------------------
  |  |  153|     48|#define g_array_elt_len(array,i) ((array)->elt_size * (i))
  ------------------
  503|       |
  504|     48|  array->len += len;
  505|       |
  506|     48|  g_array_zero_terminate (array);
  ------------------
  |  |  157|     48|#define g_array_zero_terminate(array) G_STMT_START{                     \
  |  |  ------------------
  |  |  |  |  874|     48|#define G_STMT_START  do
  |  |  ------------------
  |  |  158|     48|  if ((array)->zero_terminated)                                         \
  |  |  ------------------
  |  |  |  Branch (158:7): [True: 0, False: 48]
  |  |  ------------------
  |  |  159|     48|    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|     48|}G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     48|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 48]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  507|       |
  508|     48|  return farray;
  509|     48|}
g_array_remove_range:
  775|     16|{
  776|     16|  GRealArray *array = (GRealArray*) farray;
  777|       |
  778|     16|  g_return_val_if_fail (array, NULL);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  779|     16|  g_return_val_if_fail (index_ <= array->len, NULL);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  780|     16|  g_return_val_if_fail (index_ + length <= array->len, NULL);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  781|       |
  782|     16|  if (array->clear_func != NULL)
  ------------------
  |  Branch (782:7): [True: 0, False: 16]
  ------------------
  783|      0|    {
  784|      0|      guint i;
  785|       |
  786|      0|      for (i = 0; i < length; i++)
  ------------------
  |  Branch (786:19): [True: 0, False: 0]
  ------------------
  787|      0|        array->clear_func (g_array_elt_pos (array, index_ + 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))
  |  |  ------------------
  ------------------
  788|      0|    }
  789|       |
  790|     16|  if (index_ + length != array->len)
  ------------------
  |  Branch (790:7): [True: 16, False: 0]
  ------------------
  791|     16|    memmove (g_array_elt_pos (array, index_),
  ------------------
  |  |  154|     16|#define g_array_elt_pos(array,i) ((array)->data + g_array_elt_len((array),(i)))
  |  |  ------------------
  |  |  |  |  153|     16|#define g_array_elt_len(array,i) ((array)->elt_size * (i))
  |  |  ------------------
  ------------------
  792|     16|             g_array_elt_pos (array, index_ + length),
  ------------------
  |  |  154|     16|#define g_array_elt_pos(array,i) ((array)->data + g_array_elt_len((array),(i)))
  |  |  ------------------
  |  |  |  |  153|     16|#define g_array_elt_len(array,i) ((array)->elt_size * (i))
  |  |  ------------------
  ------------------
  793|     16|             (array->len - (index_ + length)) * array->elt_size);
  794|       |
  795|     16|  array->len -= length;
  796|     16|  if (G_UNLIKELY (g_mem_gc_friendly))
  ------------------
  |  | 1025|     16|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 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: 0, False: 16]
  |  |  |  |  ------------------
  |  |  |  | 1019|     16|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     16|   else                                         \
  |  |  |  | 1021|     16|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     16|   _g_boolean_var_;                             \
  |  |  |  | 1023|     16|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 16]
  |  |  ------------------
  ------------------
  797|      0|    g_array_elt_zero (array, array->len, length);
  ------------------
  |  |  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))
  |  |  ------------------
  ------------------
  798|     16|  else
  799|     16|    g_array_zero_terminate (array);
  ------------------
  |  |  157|     16|#define g_array_zero_terminate(array) G_STMT_START{                     \
  |  |  ------------------
  |  |  |  |  874|     16|#define G_STMT_START  do
  |  |  ------------------
  |  |  158|     16|  if ((array)->zero_terminated)                                         \
  |  |  ------------------
  |  |  |  Branch (158:7): [True: 0, False: 16]
  |  |  ------------------
  |  |  159|     16|    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|     16|}G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     16|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  800|       |
  801|     16|  return farray;
  802|     16|}
g_ptr_array_new_with_free_func:
 1305|      2|{
 1306|      2|  return ptr_array_new (0, element_free_func);
 1307|      2|}
g_ptr_array_unref:
 1395|      2|{
 1396|      2|  GRealPtrArray *rarray = (GRealPtrArray *)array;
 1397|       |
 1398|      2|  g_return_if_fail (array);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1399|       |
 1400|      2|  if (g_atomic_ref_count_dec (&rarray->ref_count))
  ------------------
  |  Branch (1400:7): [True: 2, False: 0]
  ------------------
 1401|      2|    ptr_array_free (array, FREE_SEGMENT);
 1402|      2|}
g_ptr_array_add:
 1807|      1|{
 1808|      1|  GRealPtrArray *rarray = (GRealPtrArray *)array;
 1809|       |
 1810|      1|  g_return_if_fail (rarray);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1811|      1|  g_return_if_fail (rarray->len == 0 || (rarray->len != 0 && rarray->pdata != 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|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1812|       |
 1813|      1|  g_ptr_array_maybe_expand (rarray, 1);
 1814|       |
 1815|      1|  rarray->pdata[rarray->len++] = data;
 1816|      1|}
g_byte_array_new:
 2230|     18|{
 2231|     18|  return (GByteArray *)g_array_sized_new (FALSE, FALSE, 1, 0);
  ------------------
  |  |  814|     18|#define	FALSE	(0)
  ------------------
                return (GByteArray *)g_array_sized_new (FALSE, FALSE, 1, 0);
  ------------------
  |  |  814|     18|#define	FALSE	(0)
  ------------------
 2232|     18|}
g_byte_array_unref:
 2389|     18|{
 2390|     18|  g_array_unref ((GArray *)array);
 2391|     18|}
g_byte_array_append:
 2408|     48|{
 2409|     48|  g_array_append_vals ((GArray *)array, (guint8 *)data, len);
 2410|       |
 2411|     48|  return array;
 2412|     48|}
g_byte_array_remove_range:
 2510|     16|{
 2511|     16|  g_return_val_if_fail (array, NULL);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2512|     16|  g_return_val_if_fail (index_ <= array->len, NULL);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2513|     16|  g_return_val_if_fail (index_ + length <= array->len, NULL);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2514|       |
 2515|     16|  return (GByteArray *)g_array_remove_range ((GArray *)array, index_, length);
 2516|     16|}
garray.c:array_free:
  430|     18|{
  431|     18|  gchar *segment;
  432|       |
  433|     18|  if (flags & FREE_SEGMENT)
  ------------------
  |  Branch (433:7): [True: 18, False: 0]
  ------------------
  434|     18|    {
  435|     18|      if (array->clear_func != NULL)
  ------------------
  |  Branch (435:11): [True: 0, False: 18]
  ------------------
  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|     18|      g_free (array->data);
  444|     18|      segment = NULL;
  445|     18|    }
  446|      0|  else
  447|      0|    segment = (gchar*) array->data;
  448|       |
  449|     18|  if (flags & PRESERVE_WRAPPER)
  ------------------
  |  Branch (449:7): [True: 0, False: 18]
  ------------------
  450|      0|    {
  451|      0|      array->data            = NULL;
  452|      0|      array->len             = 0;
  453|      0|      array->alloc           = 0;
  454|      0|    }
  455|     18|  else
  456|     18|    {
  457|     18|      g_slice_free1 (sizeof (GRealArray), array);
  458|     18|    }
  459|       |
  460|     18|  return segment;
  461|     18|}
garray.c:g_array_maybe_expand:
  973|     48|{
  974|     48|  guint want_alloc;
  975|       |
  976|       |  /* Detect potential overflow */
  977|     48|  if G_UNLIKELY ((G_MAXUINT - array->len) < len)
  ------------------
  |  | 1025|     48|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|     48| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     48|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|     48|   int _g_boolean_var_;                         \
  |  |  |  | 1018|     48|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 48]
  |  |  |  |  ------------------
  |  |  |  | 1019|     48|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     48|   else                                         \
  |  |  |  | 1021|     48|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     48|   _g_boolean_var_;                             \
  |  |  |  | 1023|     48|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 48]
  |  |  ------------------
  ------------------
  978|     48|    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|     48|  want_alloc = g_array_elt_len (array, array->len + len +
  ------------------
  |  |  153|     48|#define g_array_elt_len(array,i) ((array)->elt_size * (i))
  ------------------
  981|     48|                                array->zero_terminated);
  982|       |
  983|     48|  if (want_alloc > array->alloc)
  ------------------
  |  Branch (983:7): [True: 34, False: 14]
  ------------------
  984|     34|    {
  985|     34|      want_alloc = g_nearest_pow (want_alloc);
  986|     34|      want_alloc = MAX (want_alloc, MIN_ARRAY_SIZE);
  ------------------
  |  |  822|     34|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 34, False: 0]
  |  |  ------------------
  ------------------
  987|       |
  988|     34|      array->data = g_realloc (array->data, want_alloc);
  989|       |
  990|     34|      if (G_UNLIKELY (g_mem_gc_friendly))
  ------------------
  |  | 1025|     34|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 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: 0, False: 34]
  |  |  |  |  ------------------
  |  |  |  | 1019|     34|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     34|   else                                         \
  |  |  |  | 1021|     34|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     34|   _g_boolean_var_;                             \
  |  |  |  | 1023|     34|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 34]
  |  |  ------------------
  ------------------
  991|      0|        memset (array->data + array->alloc, 0, want_alloc - array->alloc);
  992|       |
  993|     34|      array->alloc = want_alloc;
  994|     34|    }
  995|     48|}
garray.c:g_nearest_pow:
  953|     35|{
  954|     35|  guint n = num - 1;
  955|       |
  956|     35|  g_assert (num > 0);
  ------------------
  |  |  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|     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: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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  957|       |
  958|     35|  n |= n >> 1;
  959|     35|  n |= n >> 2;
  960|     35|  n |= n >> 4;
  961|     35|  n |= n >> 8;
  962|     35|  n |= n >> 16;
  963|       |#if SIZEOF_INT == 8
  964|       |  n |= n >> 32;
  965|       |#endif
  966|       |
  967|     35|  return n + 1;
  968|     35|}
garray.c:ptr_array_new:
 1083|      2|{
 1084|      2|  GRealPtrArray *array;
 1085|       |
 1086|      2|  array = g_slice_new (GRealPtrArray);
  ------------------
  |  |   46|      2|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  ------------------
 1087|       |
 1088|      2|  array->pdata = NULL;
 1089|      2|  array->len = 0;
 1090|      2|  array->alloc = 0;
 1091|      2|  array->element_free_func = element_free_func;
 1092|       |
 1093|      2|  g_atomic_ref_count_init (&array->ref_count);
 1094|       |
 1095|      2|  if (reserved_size != 0)
  ------------------
  |  Branch (1095:7): [True: 0, False: 2]
  ------------------
 1096|      0|    g_ptr_array_maybe_expand (array, reserved_size);
 1097|       |
 1098|      2|  return (GPtrArray *) array;
 1099|      2|}
garray.c:ptr_array_free:
 1450|      2|{
 1451|      2|  GRealPtrArray *rarray = (GRealPtrArray *)array;
 1452|      2|  gpointer *segment;
 1453|       |
 1454|      2|  if (flags & FREE_SEGMENT)
  ------------------
  |  Branch (1454:7): [True: 2, False: 0]
  ------------------
 1455|      2|    {
 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|      2|      gpointer *stolen_pdata = g_steal_pointer (&rarray->pdata);
  ------------------
  |  |  222|      2|#define g_steal_pointer(pp) ((glib_typeof (*pp)) (g_steal_pointer) (pp))
  ------------------
 1463|      2|      if (rarray->element_free_func != NULL)
  ------------------
  |  Branch (1463:11): [True: 2, False: 0]
  ------------------
 1464|      2|        {
 1465|      2|          guint i;
 1466|       |
 1467|      3|          for (i = 0; i < rarray->len; ++i)
  ------------------
  |  Branch (1467:23): [True: 1, False: 2]
  ------------------
 1468|      1|            rarray->element_free_func (stolen_pdata[i]);
 1469|      2|        }
 1470|       |
 1471|      2|      g_free (stolen_pdata);
 1472|      2|      segment = NULL;
 1473|      2|    }
 1474|      0|  else
 1475|      0|    segment = rarray->pdata;
 1476|       |
 1477|      2|  if (flags & PRESERVE_WRAPPER)
  ------------------
  |  Branch (1477:7): [True: 0, False: 2]
  ------------------
 1478|      0|    {
 1479|      0|      rarray->pdata = NULL;
 1480|      0|      rarray->len = 0;
 1481|      0|      rarray->alloc = 0;
 1482|      0|    }
 1483|      2|  else
 1484|      2|    {
 1485|      2|      g_slice_free1 (sizeof (GRealPtrArray), rarray);
 1486|      2|    }
 1487|       |
 1488|      2|  return segment;
 1489|      2|}
garray.c:g_ptr_array_maybe_expand:
 1494|      1|{
 1495|       |  /* Detect potential overflow */
 1496|      1|  if G_UNLIKELY ((G_MAXUINT - array->len) < len)
  ------------------
  |  | 1025|      1|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      1| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      1|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      1|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1019|      1|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      1|   else                                         \
  |  |  |  | 1021|      1|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      1|   _g_boolean_var_;                             \
  |  |  |  | 1023|      1|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1497|      1|    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|      1|  if ((array->len + len) > array->alloc)
  ------------------
  |  Branch (1499:7): [True: 1, False: 0]
  ------------------
 1500|      1|    {
 1501|      1|      guint old_alloc = array->alloc;
 1502|      1|      array->alloc = g_nearest_pow (array->len + len);
 1503|      1|      array->alloc = MAX (array->alloc, MIN_ARRAY_SIZE);
  ------------------
  |  |  822|      1|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1504|      1|      array->pdata = g_realloc (array->pdata, sizeof (gpointer) * array->alloc);
 1505|      1|      if (G_UNLIKELY (g_mem_gc_friendly))
  ------------------
  |  | 1025|      1|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      1| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      1|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      1|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1019|      1|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      1|   else                                         \
  |  |  |  | 1021|      1|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      1|   _g_boolean_var_;                             \
  |  |  |  | 1023|      1|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1506|      0|        for ( ; old_alloc < array->alloc; old_alloc++)
  ------------------
  |  Branch (1506:17): [True: 0, False: 0]
  ------------------
 1507|      0|          array->pdata [old_alloc] = NULL;
 1508|      1|    }
 1509|      1|}

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

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

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

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

g_getenv:
  252|      6|{
  253|      6|  g_return_val_if_fail (variable != NULL, 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  254|       |
  255|      6|  return getenv (variable);
  256|      6|}
g_setenv:
  293|      2|{
  294|      2|  gint result;
  295|       |#ifndef HAVE_SETENV
  296|       |  gchar *string;
  297|       |#endif
  298|       |
  299|      2|  g_return_val_if_fail (variable != NULL, FALSE);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  300|      2|  g_return_val_if_fail (strchr (variable, '=') == NULL, FALSE);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  301|      2|  g_return_val_if_fail (value != NULL, FALSE);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  302|       |
  303|      2|#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|      2|  if (g_thread_n_created () > 0)
  ------------------
  |  Branch (306:7): [True: 0, False: 2]
  ------------------
  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|      2|#endif
  309|       |
  310|      2|#ifdef HAVE_SETENV
  311|      2|  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|      2|  return result == 0;
  324|      2|}

g_error_init:
  516|      2|{
  517|      2|  error_domain_ht = g_hash_table_new (NULL, NULL);
  518|      2|}
g_error_new_valist:
  749|      1|{
  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|      1|  g_warn_if_fail (domain != 0);
  ------------------
  |  |  541|      1|  do { \
  |  |  542|      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:25): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  543|      1|    else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, #expr); \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  544|      1|  } while (0)
  |  |  ------------------
  |  |  |  Branch (544:12): [Folded, False: 1]
  |  |  ------------------
  ------------------
  756|      1|  g_warn_if_fail (format != NULL);
  ------------------
  |  |  541|      1|  do { \
  |  |  542|      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:25): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  543|      1|    else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, #expr); \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  544|      1|  } while (0)
  |  |  ------------------
  |  |  |  Branch (544:12): [Folded, False: 1]
  |  |  ------------------
  ------------------
  757|       |
  758|       |  return g_error_new_steal (domain, code, g_strdup_vprintf (format, args), NULL);
  759|      1|}
g_error_new_literal:
  809|      1|{
  810|      1|  g_return_val_if_fail (message != NULL, NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  811|      1|  g_return_val_if_fail (domain != 0, NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  812|       |
  813|      1|  return g_error_new_steal (domain, code, g_strdup (message), NULL);
  814|      1|}
g_error_free:
  824|      2|{
  825|      2|  gsize private_size;
  826|      2|  ErrorDomainInfo *info;
  827|      2|  guint8 *allocated;
  828|       |
  829|      2|  g_return_if_fail (error != NULL);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  830|       |
  831|      2|  g_rw_lock_reader_lock (&error_domain_global);
  832|      2|  info = error_domain_lookup (error->domain);
  833|      2|  if (info != NULL)
  ------------------
  |  Branch (833:7): [True: 0, False: 2]
  ------------------
  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|      2|  else
  842|      2|    {
  843|      2|      g_rw_lock_reader_unlock (&error_domain_global);
  844|      2|      private_size = 0;
  845|      2|    }
  846|       |
  847|      2|  g_free (error->message);
  848|      2|  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|      2|#ifdef ENABLE_VALGRIND
  853|      2|  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: 2]
  ------------------
  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|      2|  else
  863|      2|#endif
  864|      2|  g_slice_free1 (private_size + sizeof (GError), allocated);
  865|      2|}
g_error_matches:
  919|      1|{
  920|      1|  return error &&
  ------------------
  |  Branch (920:10): [True: 1, False: 0]
  ------------------
  921|      1|    error->domain == domain &&
  ------------------
  |  Branch (921:5): [True: 1, False: 0]
  ------------------
  922|      1|    error->code == code;
  ------------------
  |  Branch (922:5): [True: 1, False: 0]
  ------------------
  923|      1|}
g_set_error:
  946|     17|{
  947|     17|  GError *new;
  948|       |
  949|     17|  va_list args;
  950|       |
  951|     17|  if (err == NULL)
  ------------------
  |  Branch (951:7): [True: 16, False: 1]
  ------------------
  952|     16|    return;
  953|       |
  954|     17|  va_start (args, format);
  955|      1|  new = g_error_new_valist (domain, code, format, args);
  956|      1|  va_end (args);
  957|       |
  958|      1|  if (*err == NULL)
  ------------------
  |  Branch (958:7): [True: 1, False: 0]
  ------------------
  959|      1|    *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|      1|}
g_set_error_literal:
  987|      2|{
  988|      2|  if (err == NULL)
  ------------------
  |  Branch (988:7): [True: 1, False: 1]
  ------------------
  989|      1|    return;
  990|       |
  991|      1|  if (*err == NULL)
  ------------------
  |  Branch (991:7): [True: 1, False: 0]
  ------------------
  992|      1|    *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|      1|}
gerror.c:g_error_new_steal:
  714|      2|{
  715|      2|  ErrorDomainInfo info;
  716|      2|  GError *error = g_error_allocate (domain, &info);
  717|       |
  718|      2|  error->domain = domain;
  719|      2|  error->code = code;
  720|      2|  error->message = message;
  721|       |
  722|      2|  if (info.init != NULL)
  ------------------
  |  Branch (722:7): [True: 0, False: 2]
  ------------------
  723|      0|    info.init (error);
  724|      2|  if (out_info != NULL)
  ------------------
  |  Branch (724:7): [True: 0, False: 2]
  ------------------
  725|      0|    *out_info = info;
  726|       |
  727|      2|  return error;
  728|      2|}
gerror.c:g_error_allocate:
  666|      2|{
  667|      2|  guint8 *allocated;
  668|      2|  GError *error;
  669|      2|  ErrorDomainInfo *info;
  670|      2|  gsize private_size;
  671|       |
  672|      2|  g_rw_lock_reader_lock (&error_domain_global);
  673|      2|  info = error_domain_lookup (domain);
  674|      2|  if (info != NULL)
  ------------------
  |  Branch (674:7): [True: 0, False: 2]
  ------------------
  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|      2|  else
  682|      2|    {
  683|      2|      g_rw_lock_reader_unlock (&error_domain_global);
  684|      2|      if (out_info != NULL)
  ------------------
  |  Branch (684:11): [True: 2, False: 0]
  ------------------
  685|      2|        memset (out_info, 0, sizeof (*out_info));
  686|      2|      private_size = 0;
  687|      2|    }
  688|       |  /* See comments in g_type_create_instance in gtype.c to see what
  689|       |   * this magic is about.
  690|       |   */
  691|      2|#ifdef ENABLE_VALGRIND
  692|      2|  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: 2]
  ------------------
  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|      2|  else
  701|      2|#endif
  702|      2|    allocated = g_slice_alloc0 (private_size + sizeof (GError));
  703|       |
  704|      2|  error = (GError *) (allocated + private_size);
  705|      2|  return error;
  706|      2|}
gerror.c:error_domain_lookup:
  533|      4|{
  534|      4|  return g_hash_table_lookup (error_domain_ht,
  535|      4|                              GUINT_TO_POINTER (domain));
  ------------------
  |  |  102|      4|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
  536|      4|}

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|     13|{
 1069|     13|  GHashTable *hash_table;
 1070|       |
 1071|     13|  hash_table = g_slice_new (GHashTable);
  ------------------
  |  |   46|     13|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  ------------------
 1072|     13|  g_atomic_ref_count_init (&hash_table->ref_count);
 1073|     13|  hash_table->nnodes             = 0;
 1074|     13|  hash_table->noccupied          = 0;
 1075|     13|  hash_table->hash_func          = hash_func ? hash_func : g_direct_hash;
  ------------------
  |  Branch (1075:36): [True: 11, False: 2]
  ------------------
 1076|     13|  hash_table->key_equal_func     = key_equal_func;
 1077|     13|#ifndef G_DISABLE_ASSERT
 1078|     13|  hash_table->version            = 0;
 1079|     13|#endif
 1080|     13|  hash_table->key_destroy_func   = key_destroy_func;
 1081|     13|  hash_table->value_destroy_func = value_destroy_func;
 1082|       |
 1083|     13|  g_hash_table_setup_storage (hash_table);
 1084|       |
 1085|     13|  return hash_table;
 1086|     13|}
g_hash_table_lookup:
 1505|    431|{
 1506|    431|  guint node_index;
 1507|    431|  guint node_hash;
 1508|       |
 1509|    431|  g_return_val_if_fail (hash_table != NULL, NULL);
  ------------------
  |  |  643|    431|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    431|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    431|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    431|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    431| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    431|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    431|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    431|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 431, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    431|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    431|   else                                         \
  |  |  |  |  |  | 1021|    431|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    431|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    431|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 431, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    431|      { } \
  |  |  646|    431|    else \
  |  |  647|    431|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    431|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    431|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 431]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1510|       |
 1511|    431|  node_index = g_hash_table_lookup_node (hash_table, key, &node_hash);
 1512|       |
 1513|    431|  return HASH_IS_REAL (hash_table->hashes[node_index])
  ------------------
  |  |  242|    431|#define HASH_IS_REAL(h_) ((h_) >= 2)
  |  |  ------------------
  |  |  |  Branch (242:26): [True: 108, False: 323]
  |  |  ------------------
  ------------------
 1514|    431|    ? g_hash_table_fetch_key_or_value (hash_table->values, node_index, hash_table->have_big_values)
 1515|       |    : NULL;
 1516|    431|}
g_hash_table_insert:
 1628|    267|{
 1629|    267|  return g_hash_table_insert_internal (hash_table, key, value, FALSE);
  ------------------
  |  |  814|    267|#define	FALSE	(0)
  ------------------
 1630|    267|}
g_hash_table_add:
 1688|      1|{
 1689|      1|  return g_hash_table_insert_internal (hash_table, key, key, TRUE);
  ------------------
  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1690|      1|}
g_hash_table_foreach:
 2045|      2|{
 2046|      2|  gsize i;
 2047|      2|#ifndef G_DISABLE_ASSERT
 2048|      2|  gint version;
 2049|      2|#endif
 2050|       |
 2051|      2|  g_return_if_fail (hash_table != NULL);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2052|      2|  g_return_if_fail (func != NULL);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2053|       |
 2054|      2|#ifndef G_DISABLE_ASSERT
 2055|      2|  version = hash_table->version;
 2056|      2|#endif
 2057|       |
 2058|     18|  for (i = 0; i < hash_table->size; i++)
  ------------------
  |  Branch (2058:15): [True: 16, False: 2]
  ------------------
 2059|     16|    {
 2060|     16|      guint node_hash = hash_table->hashes[i];
 2061|     16|      gpointer node_key = g_hash_table_fetch_key_or_value (hash_table->keys, i, hash_table->have_big_keys);
 2062|     16|      gpointer node_value = g_hash_table_fetch_key_or_value (hash_table->values, i, hash_table->have_big_values);
 2063|       |
 2064|     16|      if (HASH_IS_REAL (node_hash))
  ------------------
  |  |  242|     16|#define HASH_IS_REAL(h_) ((h_) >= 2)
  |  |  ------------------
  |  |  |  Branch (242:26): [True: 2, False: 14]
  |  |  ------------------
  ------------------
 2065|      2|        (* func) (node_key, node_value, user_data);
 2066|       |
 2067|     16|#ifndef G_DISABLE_ASSERT
 2068|     16|      g_return_if_fail (version == hash_table->version);
  ------------------
  |  |  630|     16|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     16|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     16|      { } \
  |  |  633|     16|    else \
  |  |  634|     16|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|     16|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     16|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2069|     16|#endif
 2070|     16|    }
 2071|      2|}
g_str_equal:
 2299|    109|{
 2300|    109|  const gchar *string1 = v1;
 2301|    109|  const gchar *string2 = v2;
 2302|       |
 2303|    109|  return strcmp (string1, string2) == 0;
 2304|    109|}
g_str_hash:
 2329|    644|{
 2330|    644|  const signed char *p;
 2331|    644|  guint32 h = 5381;
 2332|       |
 2333|  8.23k|  for (p = v; *p != '\0'; p++)
  ------------------
  |  Branch (2333:15): [True: 7.58k, False: 644]
  ------------------
 2334|  7.58k|    h = (h << 5) + h + *p;
 2335|       |
 2336|    644|  return h;
 2337|    644|}
g_direct_hash:
 2355|      8|{
 2356|      8|  return GPOINTER_TO_UINT (v);
  ------------------
  |  |   99|      8|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 2357|      8|}
g_int_hash:
 2421|     44|{
 2422|     44|  return *(const gint*) v;
 2423|     44|}
ghash.c:g_hash_table_setup_storage:
  567|     13|{
  568|     13|  gboolean small = FALSE;
  ------------------
  |  |  814|     13|#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|     13|#ifdef USE_SMALL_ARRAYS
  576|     13|  small = TRUE;
  ------------------
  |  |  818|     13|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     13|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  577|       |
  578|     13|# ifdef ENABLE_VALGRIND
  579|     13|  if (RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|     13|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|     13|    __extension__                                                 \
  |  |  |  |  414|     13|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|     13|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|     13|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|     13|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|     13|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|     13|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|     13|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|     13|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|     13|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|     13|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|     13|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|     13|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|     13|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|     13|                     : "cc", "memory"                             \
  |  |  |  |  428|     13|                    );                                            \
  |  |  |  |  429|     13|    _zzq_result;                                                  \
  |  |  |  |  430|     13|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 13]
  |  |  ------------------
  |  | 6216|     13|                                    VG_USERREQ__RUNNING_ON_VALGRIND,  \
  |  | 6217|     13|                                    0, 0, 0, 0, 0)                    \
  ------------------
  580|      0|    small = FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  581|     13|# endif
  582|     13|#endif
  583|       |
  584|     13|  g_hash_table_set_shift (hash_table, HASH_TABLE_MIN_SHIFT);
  ------------------
  |  |  236|     13|#define HASH_TABLE_MIN_SHIFT 3  /* 1 << 3 == 8 buckets */
  ------------------
  585|       |
  586|     13|  hash_table->have_big_keys = !small;
  587|     13|  hash_table->have_big_values = !small;
  588|       |
  589|     13|  hash_table->keys   = g_hash_table_realloc_key_or_value_array (NULL, hash_table->size, hash_table->have_big_keys);
  590|     13|  hash_table->values = hash_table->keys;
  591|       |  hash_table->hashes = g_new0 (guint, hash_table->size);
  ------------------
  |  |  307|     13|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|     13|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     13|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|     13|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|     13|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|     13|	  gpointer __p;						\
  |  |  |  |  239|     13|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 13]
  |  |  |  |  ------------------
  |  |  |  |  240|     13|	    __p = g_##func (__n);				\
  |  |  |  |  241|     13|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 13]
  |  |  |  |  ------------------
  |  |  |  |  242|     13|	           (__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|     13|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|     13|	  else							\
  |  |  |  |  245|     13|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|     13|	  __p;							\
  |  |  |  |  247|     13|	}))
  |  |  ------------------
  ------------------
  592|     13|}
ghash.c:g_hash_table_set_shift:
  342|     30|{
  343|     30|  hash_table->size = 1 << shift;
  344|     30|  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|     30|  g_assert ((hash_table->size & (hash_table->size - 1)) == 0);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  351|     30|  hash_table->mask = hash_table->size - 1;
  352|     30|}
ghash.c:g_hash_table_realloc_key_or_value_array:
  378|     45|{
  379|     45|#ifdef USE_SMALL_ARRAYS
  380|     45|  return g_realloc (a, size * (is_big ? BIG_ENTRY_SIZE : SMALL_ENTRY_SIZE));
  ------------------
  |  |  249|     25|#define BIG_ENTRY_SIZE (SIZEOF_VOID_P)
  |  |  ------------------
  |  |  |  |  392|     25|#define SIZEOF_VOID_P 8
  |  |  ------------------
  ------------------
                return g_realloc (a, size * (is_big ? BIG_ENTRY_SIZE : SMALL_ENTRY_SIZE));
  ------------------
  |  |  250|     20|#define SMALL_ENTRY_SIZE (SIZEOF_INT)
  |  |  ------------------
  |  |  |  |  380|     20|#define SIZEOF_INT 4
  |  |  ------------------
  ------------------
  |  Branch (380:32): [True: 25, False: 20]
  ------------------
  381|       |#else
  382|       |  return g_renew (gpointer, a, size);
  383|       |#endif
  384|     45|}
ghash.c:g_hash_table_fetch_key_or_value:
  388|    248|{
  389|       |#ifndef USE_SMALL_ARRAYS
  390|       |  is_big = TRUE;
  391|       |#endif
  392|    248|  return is_big ? *(((gpointer *) a) + index) : GUINT_TO_POINTER (*(((guint *) a) + index));
  ------------------
  |  |  102|    108|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
  |  Branch (392:10): [True: 140, False: 108]
  ------------------
  393|    248|}
ghash.c:g_hash_table_insert_node:
 1272|    268|{
 1273|    268|  gboolean already_exists;
 1274|    268|  guint old_hash;
 1275|    268|  gpointer key_to_free = NULL;
 1276|    268|  gpointer key_to_keep = NULL;
 1277|    268|  gpointer value_to_free = NULL;
 1278|       |
 1279|    268|  old_hash = hash_table->hashes[node_index];
 1280|    268|  already_exists = HASH_IS_REAL (old_hash);
  ------------------
  |  |  242|    268|#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|    268|  if (already_exists)
  ------------------
  |  Branch (1300:7): [True: 0, False: 268]
  ------------------
 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|    268|  else
 1320|    268|    {
 1321|    268|      hash_table->hashes[node_index] = key_hash;
 1322|    268|      key_to_keep = new_key;
 1323|    268|    }
 1324|       |
 1325|       |  /* Resize key/value arrays and split table as necessary */
 1326|    268|  g_hash_table_ensure_keyval_fits (hash_table, key_to_keep, new_value);
 1327|    268|  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|    268|  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|    268|  if (!already_exists)
  ------------------
  |  Branch (1333:7): [True: 268, False: 0]
  ------------------
 1334|    268|    {
 1335|    268|      hash_table->nnodes++;
 1336|       |
 1337|    268|      if (HASH_IS_UNUSED (old_hash))
  ------------------
  |  |  240|    268|#define HASH_IS_UNUSED(h_) ((h_) == UNUSED_HASH_VALUE)
  |  |  ------------------
  |  |  |  |  238|    268|#define UNUSED_HASH_VALUE 0
  |  |  ------------------
  |  |  |  Branch (240:28): [True: 268, False: 0]
  |  |  ------------------
  ------------------
 1338|    268|        {
 1339|       |          /* We replaced an empty node, and not a tombstone */
 1340|    268|          hash_table->noccupied++;
 1341|    268|          g_hash_table_maybe_resize (hash_table);
 1342|    268|        }
 1343|       |
 1344|    268|#ifndef G_DISABLE_ASSERT
 1345|    268|      hash_table->version++;
 1346|    268|#endif
 1347|    268|    }
 1348|       |
 1349|    268|  if (already_exists)
  ------------------
  |  Branch (1349:7): [True: 0, False: 268]
  ------------------
 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|    268|  return !already_exists;
 1358|    268|}
ghash.c:g_hash_table_ensure_keyval_fits:
  954|    268|{
  955|    268|  gboolean is_a_set = (hash_table->keys == hash_table->values);
  956|       |
  957|    268|#ifdef USE_SMALL_ARRAYS
  958|       |
  959|       |  /* Convert from set to map? */
  960|    268|  if (is_a_set)
  ------------------
  |  Branch (960:7): [True: 28, False: 240]
  ------------------
  961|     28|    {
  962|     28|      if (hash_table->have_big_keys)
  ------------------
  |  Branch (962:11): [True: 21, False: 7]
  ------------------
  963|     21|        {
  964|     21|          if (key != value)
  ------------------
  |  Branch (964:15): [True: 0, False: 21]
  ------------------
  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|     21|          return;
  968|     21|        }
  969|      7|      else
  970|      7|        {
  971|      7|          if (key != value)
  ------------------
  |  Branch (971:15): [True: 5, False: 2]
  ------------------
  972|      5|            {
  973|      5|              hash_table->values = g_memdup2 (hash_table->keys, sizeof (guint) * hash_table->size);
  974|      5|              is_a_set = FALSE;
  ------------------
  |  |  814|      5|#define	FALSE	(0)
  ------------------
  975|      5|            }
  976|      7|        }
  977|     28|    }
  978|       |
  979|       |  /* Make keys big? */
  980|    247|  if (!hash_table->have_big_keys)
  ------------------
  |  Branch (980:7): [True: 7, False: 240]
  ------------------
  981|      7|    {
  982|      7|      hash_table->have_big_keys = g_hash_table_maybe_make_big_keys_or_values (&hash_table->keys, key, hash_table->size);
  983|       |
  984|      7|      if (is_a_set)
  ------------------
  |  Branch (984:11): [True: 2, False: 5]
  ------------------
  985|      2|        {
  986|      2|          hash_table->values = hash_table->keys;
  987|      2|          hash_table->have_big_values = hash_table->have_big_keys;
  988|      2|        }
  989|      7|    }
  990|       |
  991|       |  /* Make values big? */
  992|    247|  if (!is_a_set && !hash_table->have_big_values)
  ------------------
  |  Branch (992:7): [True: 245, False: 2]
  |  Branch (992:20): [True: 126, False: 119]
  ------------------
  993|    126|    {
  994|    126|      hash_table->have_big_values = g_hash_table_maybe_make_big_keys_or_values (&hash_table->values, value, hash_table->size);
  995|    126|    }
  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|    247|}
ghash.c:g_hash_table_maybe_make_big_keys_or_values:
  928|    133|{
  929|    133|  if (entry_is_big (v))
  ------------------
  |  Branch (929:7): [True: 10, False: 123]
  ------------------
  930|     10|    {
  931|     10|      guint *a = (guint *) *a_p;
  932|     10|      gpointer *a_new;
  933|     10|      gint i;
  934|       |
  935|     10|      a_new = g_new (gpointer, ht_size);
  ------------------
  |  |  290|     10|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|     10|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     10|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|     10|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|     10|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|     10|	  gpointer __p;						\
  |  |  |  |  239|     10|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 10]
  |  |  |  |  ------------------
  |  |  |  |  240|     10|	    __p = g_##func (__n);				\
  |  |  |  |  241|     10|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 10]
  |  |  |  |  ------------------
  |  |  |  |  242|     10|	           (__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|     10|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|     10|	  else							\
  |  |  |  |  245|     10|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|     10|	  __p;							\
  |  |  |  |  247|     10|	}))
  |  |  ------------------
  ------------------
  936|       |
  937|     90|      for (i = 0; i < ht_size; i++)
  ------------------
  |  Branch (937:19): [True: 80, False: 10]
  ------------------
  938|     80|        {
  939|     80|          a_new[i] = GUINT_TO_POINTER (a[i]);
  ------------------
  |  |  102|     80|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
  940|     80|        }
  941|       |
  942|     10|      g_free (a);
  943|     10|      *a_p = a_new;
  944|     10|      return TRUE;
  ------------------
  |  |  818|     10|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     10|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  945|     10|    }
  946|       |
  947|    123|  return FALSE;
  ------------------
  |  |  814|    123|#define	FALSE	(0)
  ------------------
  948|    133|}
ghash.c:entry_is_big:
  922|    133|{
  923|    133|  return (((guintptr) v) >> ((BIG_ENTRY_SIZE - SMALL_ENTRY_SIZE) * 8)) != 0;
  ------------------
  |  |  249|    133|#define BIG_ENTRY_SIZE (SIZEOF_VOID_P)
  |  |  ------------------
  |  |  |  |  392|    133|#define SIZEOF_VOID_P 8
  |  |  ------------------
  ------------------
                return (((guintptr) v) >> ((BIG_ENTRY_SIZE - SMALL_ENTRY_SIZE) * 8)) != 0;
  ------------------
  |  |  250|    133|#define SMALL_ENTRY_SIZE (SIZEOF_INT)
  |  |  ------------------
  |  |  |  |  380|    133|#define SIZEOF_INT 4
  |  |  ------------------
  ------------------
  924|    133|}
ghash.c:g_hash_table_lookup_node:
  464|    699|{
  465|    699|  guint node_index;
  466|    699|  guint node_hash;
  467|    699|  guint hash_value;
  468|    699|  guint first_tombstone = 0;
  469|    699|  gboolean have_tombstone = FALSE;
  ------------------
  |  |  814|    699|#define	FALSE	(0)
  ------------------
  470|    699|  guint step = 0;
  471|       |
  472|    699|  hash_value = hash_table->hash_func (key);
  473|    699|  if (G_UNLIKELY (!HASH_IS_REAL (hash_value)))
  ------------------
  |  | 1025|    699|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|    699| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    699|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|    699|   int _g_boolean_var_;                         \
  |  |  |  | 1018|    699|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 699]
  |  |  |  |  ------------------
  |  |  |  | 1019|    699|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|    699|   else                                         \
  |  |  |  | 1021|    699|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|    699|   _g_boolean_var_;                             \
  |  |  |  | 1023|    699|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 699]
  |  |  ------------------
  ------------------
  474|      0|    hash_value = 2;
  475|       |
  476|    699|  *hash_return = hash_value;
  477|       |
  478|    699|  node_index = g_hash_table_hash_to_index (hash_table, hash_value);
  479|    699|  node_hash = hash_table->hashes[node_index];
  480|       |
  481|  2.43k|  while (!HASH_IS_UNUSED (node_hash))
  ------------------
  |  |  240|  2.43k|#define HASH_IS_UNUSED(h_) ((h_) == UNUSED_HASH_VALUE)
  |  |  ------------------
  |  |  |  |  238|  2.43k|#define UNUSED_HASH_VALUE 0
  |  |  ------------------
  ------------------
  |  Branch (481:10): [True: 1.84k, False: 591]
  ------------------
  482|  1.84k|    {
  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|  1.84k|      if (node_hash == hash_value)
  ------------------
  |  Branch (487:11): [True: 108, False: 1.73k]
  ------------------
  488|    108|        {
  489|    108|          gpointer node_key = g_hash_table_fetch_key_or_value (hash_table->keys, node_index, hash_table->have_big_keys);
  490|       |
  491|    108|          if (hash_table->key_equal_func)
  ------------------
  |  Branch (491:15): [True: 108, False: 0]
  ------------------
  492|    108|            {
  493|    108|              if (hash_table->key_equal_func (node_key, key))
  ------------------
  |  Branch (493:19): [True: 108, False: 0]
  ------------------
  494|    108|                return node_index;
  495|    108|            }
  496|      0|          else if (node_key == key)
  ------------------
  |  Branch (496:20): [True: 0, False: 0]
  ------------------
  497|      0|            {
  498|      0|              return node_index;
  499|      0|            }
  500|    108|        }
  501|  1.73k|      else if (HASH_IS_TOMBSTONE (node_hash) && !have_tombstone)
  ------------------
  |  |  241|  3.46k|#define HASH_IS_TOMBSTONE(h_) ((h_) == TOMBSTONE_HASH_VALUE)
  |  |  ------------------
  |  |  |  |  239|  1.73k|#define TOMBSTONE_HASH_VALUE 1
  |  |  ------------------
  |  |  |  Branch (241:31): [True: 0, False: 1.73k]
  |  |  ------------------
  ------------------
  |  Branch (501:49): [True: 0, False: 0]
  ------------------
  502|      0|        {
  503|      0|          first_tombstone = node_index;
  504|      0|          have_tombstone = TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  505|      0|        }
  506|       |
  507|  1.73k|      step++;
  508|  1.73k|      node_index += step;
  509|  1.73k|      node_index &= hash_table->mask;
  510|  1.73k|      node_hash = hash_table->hashes[node_index];
  511|  1.73k|    }
  512|       |
  513|    591|  if (have_tombstone)
  ------------------
  |  Branch (513:7): [True: 0, False: 591]
  ------------------
  514|      0|    return first_tombstone;
  515|       |
  516|    591|  return node_index;
  517|    591|}
ghash.c:g_hash_table_hash_to_index:
  429|  1.02k|{
  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|  1.02k|  return (hash * 11) % hash_table->mod;
  435|  1.02k|}
ghash.c:g_hash_table_insert_internal:
 1592|    268|{
 1593|    268|  guint key_hash;
 1594|    268|  guint node_index;
 1595|       |
 1596|    268|  g_return_val_if_fail (hash_table != NULL, FALSE);
  ------------------
  |  |  643|    268|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    268|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    268|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    268|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    268| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    268|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    268|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    268|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 268, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    268|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    268|   else                                         \
  |  |  |  |  |  | 1021|    268|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    268|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    268|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 268, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    268|      { } \
  |  |  646|    268|    else \
  |  |  647|    268|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    268|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    268|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 268]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1597|       |
 1598|    268|  node_index = g_hash_table_lookup_node (hash_table, key, &key_hash);
 1599|       |
 1600|    268|  return g_hash_table_insert_node (hash_table, node_index, key_hash, key, value, keep_new_key, FALSE);
  ------------------
  |  |  814|    268|#define	FALSE	(0)
  ------------------
 1601|    268|}
ghash.c:g_hash_table_assign_key_or_value:
  397|  1.00k|{
  398|       |#ifndef USE_SMALL_ARRAYS
  399|       |  is_big = TRUE;
  400|       |#endif
  401|  1.00k|  if (is_big)
  ------------------
  |  Branch (401:7): [True: 752, False: 248]
  ------------------
  402|    752|    *(((gpointer *) a) + index) = v;
  403|    248|  else
  404|    248|    *(((guint *) a) + index) = GPOINTER_TO_UINT (v);
  ------------------
  |  |   99|    248|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
  405|  1.00k|}
ghash.c:g_hash_table_maybe_resize:
  909|    268|{
  910|    268|  gint noccupied = hash_table->noccupied;
  911|    268|  gint size = hash_table->size;
  912|       |
  913|    268|  if ((size > hash_table->nnodes * 4 && size > 1 << HASH_TABLE_MIN_SHIFT) ||
  ------------------
  |  |  236|      7|#define HASH_TABLE_MIN_SHIFT 3  /* 1 << 3 == 8 buckets */
  ------------------
  |  Branch (913:8): [True: 7, False: 261]
  |  Branch (913:41): [True: 0, False: 7]
  ------------------
  914|    268|      (size <= noccupied + (noccupied / 16)))
  ------------------
  |  Branch (914:7): [True: 17, False: 251]
  ------------------
  915|     17|    g_hash_table_resize (hash_table);
  916|    268|}
ghash.c:g_hash_table_resize:
  852|     17|{
  853|     17|  guint32 *reallocated_buckets_bitmap;
  854|     17|  gsize old_size;
  855|     17|  gboolean is_a_set;
  856|       |
  857|     17|  old_size = hash_table->size;
  858|     17|  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|     17|  g_hash_table_set_shift_from_size (hash_table, hash_table->nnodes * 1.333);
  872|       |
  873|     17|  if (hash_table->size > old_size)
  ------------------
  |  Branch (873:7): [True: 17, False: 0]
  ------------------
  874|     17|    {
  875|     17|      realloc_arrays (hash_table, is_a_set);
  876|     17|      memset (&hash_table->hashes[old_size], 0, (hash_table->size - old_size) * sizeof (guint));
  877|       |
  878|     17|      reallocated_buckets_bitmap = g_new0 (guint32, (hash_table->size + 31) / 32);
  ------------------
  |  |  307|     17|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|     17|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     17|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|     17|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|     17|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|     17|	  gpointer __p;						\
  |  |  |  |  239|     17|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 17]
  |  |  |  |  ------------------
  |  |  |  |  240|     17|	    __p = g_##func (__n);				\
  |  |  |  |  241|     17|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 0, False: 17]
  |  |  |  |  ------------------
  |  |  |  |  242|     17|	           (__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|     17|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|     17|	  else							\
  |  |  |  |  245|     17|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|     17|	  __p;							\
  |  |  |  |  247|     17|	}))
  |  |  ------------------
  ------------------
  879|     17|    }
  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|     17|  if (is_a_set)
  ------------------
  |  Branch (885:7): [True: 2, False: 15]
  ------------------
  886|      2|    resize_set (hash_table, old_size, reallocated_buckets_bitmap);
  887|     15|  else
  888|     15|    resize_map (hash_table, old_size, reallocated_buckets_bitmap);
  889|       |
  890|     17|  g_free (reallocated_buckets_bitmap);
  891|       |
  892|     17|  if (hash_table->size < old_size)
  ------------------
  |  Branch (892:7): [True: 0, False: 17]
  ------------------
  893|      0|    realloc_arrays (hash_table, is_a_set);
  894|       |
  895|     17|  hash_table->noccupied = hash_table->nnodes;
  896|     17|}
ghash.c:g_hash_table_set_shift_from_size:
  367|     17|{
  368|     17|  gint shift;
  369|       |
  370|     17|  shift = g_hash_table_find_closest_shift (size);
  371|     17|  shift = MAX (shift, HASH_TABLE_MIN_SHIFT);
  ------------------
  |  |  822|     17|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 17, False: 0]
  |  |  ------------------
  ------------------
  372|       |
  373|     17|  g_hash_table_set_shift (hash_table, shift);
  374|     17|}
ghash.c:g_hash_table_find_closest_shift:
  356|     17|{
  357|     17|  gint i;
  358|       |
  359|    102|  for (i = 0; n; i++)
  ------------------
  |  Branch (359:15): [True: 85, False: 17]
  ------------------
  360|     85|    n >>= 1;
  361|       |
  362|     17|  return i;
  363|     17|}
ghash.c:realloc_arrays:
  720|     17|{
  721|     17|  hash_table->hashes = g_renew (guint, hash_table->hashes, hash_table->size);
  ------------------
  |  |  321|     17|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|     17|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     17|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|     17|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|     17|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|     17|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|     17|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 17]
  |  |  |  |  ------------------
  |  |  |  |  254|     17|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|     17|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 0, False: 17]
  |  |  |  |  ------------------
  |  |  |  |  256|     17|	           (__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|     17|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|     17|	  else							\
  |  |  |  |  259|     17|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|     17|	  __p;							\
  |  |  |  |  261|     17|	}))
  |  |  ------------------
  ------------------
  722|     17|  hash_table->keys = g_hash_table_realloc_key_or_value_array (hash_table->keys, hash_table->size, hash_table->have_big_keys);
  723|       |
  724|     17|  if (is_a_set)
  ------------------
  |  Branch (724:7): [True: 2, False: 15]
  ------------------
  725|      2|    hash_table->values = hash_table->keys;
  726|     15|  else
  727|     15|    hash_table->values = g_hash_table_realloc_key_or_value_array (hash_table->values, hash_table->size, hash_table->have_big_values);
  728|     17|}
ghash.c:resize_set:
  755|      2|static void fname (GHashTable *hash_table, guint old_size, guint32 *reallocated_buckets_bitmap) \
  756|      2|{                                                                       \
  757|      2|  guint i;                                                              \
  758|      2|                                                                        \
  759|     26|  for (i = 0; i < old_size; i++)                                        \
  ------------------
  |  Branch (759:15): [True: 24, False: 2]
  ------------------
  760|     24|    {                                                                   \
  761|     24|      guint node_hash = hash_table->hashes[i];                          \
  762|     24|      gpointer key, value G_GNUC_UNUSED;                                \
  763|     24|                                                                        \
  764|     24|      if (!HASH_IS_REAL (node_hash))                                    \
  ------------------
  |  |  242|     24|#define HASH_IS_REAL(h_) ((h_) >= 2)
  ------------------
  |  Branch (764:11): [True: 0, False: 24]
  ------------------
  765|     24|        {                                                               \
  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|     24|                                                                        \
  771|     24|      /* Skip entries relocated through eviction */                     \
  772|     24|      if (get_status_bit (reallocated_buckets_bitmap, i))               \
  ------------------
  |  Branch (772:11): [True: 8, False: 16]
  ------------------
  773|     24|        continue;                                                       \
  774|     24|                                                                        \
  775|     24|      hash_table->hashes[i] = UNUSED_HASH_VALUE;                        \
  ------------------
  |  |  238|     16|#define UNUSED_HASH_VALUE 0
  ------------------
  776|     16|      EVICT_KEYVAL (hash_table, i, NULL, NULL, key, value);             \
  ------------------
  |  |  828|     16|#define EVICT_KEYVAL(ht, index, key, value, outkey, outvalue) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|     16|#define G_STMT_START  do
  |  |  ------------------
  |  |  829|     16|    (outkey) = g_hash_table_evict_key_or_value ((ht)->keys, (index), (ht)->have_big_keys, (key)); \
  |  |  830|     16|  }G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     16|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  777|     16|                                                                        \
  778|     16|      for (;;)                                                          \
  779|     24|        {                                                               \
  780|     24|          guint hash_val;                                               \
  781|     24|          guint replaced_hash;                                          \
  782|     24|          guint step = 0;                                               \
  783|     24|                                                                        \
  784|     24|          hash_val = g_hash_table_hash_to_index (hash_table, node_hash); \
  785|     24|                                                                        \
  786|     24|          while (get_status_bit (reallocated_buckets_bitmap, hash_val)) \
  ------------------
  |  Branch (786:18): [True: 0, False: 24]
  ------------------
  787|     24|            {                                                           \
  788|      0|              step++;                                                   \
  789|      0|              hash_val += step;                                         \
  790|      0|              hash_val &= hash_table->mask;                             \
  791|      0|            }                                                           \
  792|     24|                                                                        \
  793|     24|          set_status_bit (reallocated_buckets_bitmap, hash_val);        \
  794|     24|                                                                        \
  795|     24|          replaced_hash = hash_table->hashes[hash_val];                 \
  796|     24|          hash_table->hashes[hash_val] = node_hash;                     \
  797|     24|          if (!HASH_IS_REAL (replaced_hash))                            \
  ------------------
  |  |  242|     24|#define HASH_IS_REAL(h_) ((h_) >= 2)
  ------------------
  |  Branch (797:15): [True: 16, False: 8]
  ------------------
  798|     24|            {                                                           \
  799|     16|              ASSIGN_KEYVAL (hash_table, hash_val, key, value);         \
  ------------------
  |  |  824|     16|#define ASSIGN_KEYVAL(ht, index, key, value) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|     16|#define G_STMT_START  do
  |  |  ------------------
  |  |  825|     16|    g_hash_table_assign_key_or_value ((ht)->keys, (index), (ht)->have_big_keys, (key)); \
  |  |  826|     16|  }G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     16|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  800|     16|              break;                                                    \
  801|     16|            }                                                           \
  802|     24|                                                                        \
  803|     24|          node_hash = replaced_hash;                                    \
  804|      8|          EVICT_KEYVAL (hash_table, hash_val, key, value, key, value);  \
  ------------------
  |  |  828|      8|#define EVICT_KEYVAL(ht, index, key, value, outkey, outvalue) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|      8|#define G_STMT_START  do
  |  |  ------------------
  |  |  829|      8|    (outkey) = g_hash_table_evict_key_or_value ((ht)->keys, (index), (ht)->have_big_keys, (key)); \
  |  |  830|      8|  }G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      8|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  805|      8|        }                                                               \
  806|     16|    }                                                                   \
  807|      2|}
ghash.c:get_status_bit:
  740|    825|{
  741|    825|  return (bitmap[index / 32] >> (index % 32)) & 1;
  742|    825|}
ghash.c:g_hash_table_evict_key_or_value:
  409|    634|{
  410|       |#ifndef USE_SMALL_ARRAYS
  411|       |  is_big = TRUE;
  412|       |#endif
  413|    634|  if (is_big)
  ------------------
  |  Branch (413:7): [True: 463, False: 171]
  ------------------
  414|    463|    {
  415|    463|      gpointer r = *(((gpointer *) a) + index);
  416|    463|      *(((gpointer *) a) + index) = v;
  417|    463|      return r;
  418|    463|    }
  419|    171|  else
  420|    171|    {
  421|    171|      gpointer r = GUINT_TO_POINTER (*(((guint *) a) + index));
  ------------------
  |  |  102|    171|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
  422|    171|      *(((guint *) a) + index) = GPOINTER_TO_UINT (v);
  ------------------
  |  |   99|    171|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
  423|    171|      return r;
  424|    171|    }
  425|    634|}
ghash.c:set_status_bit:
  746|    329|{
  747|    329|  bitmap[index / 32] |= 1U << (index % 32);
  748|    329|}
ghash.c:resize_map:
  755|     15|static void fname (GHashTable *hash_table, guint old_size, guint32 *reallocated_buckets_bitmap) \
  756|     15|{                                                                       \
  757|     15|  guint i;                                                              \
  758|     15|                                                                        \
  759|    327|  for (i = 0; i < old_size; i++)                                        \
  ------------------
  |  Branch (759:15): [True: 312, False: 15]
  ------------------
  760|    312|    {                                                                   \
  761|    312|      guint node_hash = hash_table->hashes[i];                          \
  762|    312|      gpointer key, value G_GNUC_UNUSED;                                \
  763|    312|                                                                        \
  764|    312|      if (!HASH_IS_REAL (node_hash))                                    \
  ------------------
  |  |  242|    312|#define HASH_IS_REAL(h_) ((h_) >= 2)
  ------------------
  |  Branch (764:11): [True: 6, False: 306]
  ------------------
  765|    312|        {                                                               \
  766|      6|          /* Clear tombstones */                                        \
  767|      6|          hash_table->hashes[i] = UNUSED_HASH_VALUE;                    \
  ------------------
  |  |  238|      6|#define UNUSED_HASH_VALUE 0
  ------------------
  768|      6|          continue;                                                     \
  769|      6|        }                                                               \
  770|    312|                                                                        \
  771|    312|      /* Skip entries relocated through eviction */                     \
  772|    312|      if (get_status_bit (reallocated_buckets_bitmap, i))               \
  ------------------
  |  Branch (772:11): [True: 82, False: 224]
  ------------------
  773|    306|        continue;                                                       \
  774|    306|                                                                        \
  775|    306|      hash_table->hashes[i] = UNUSED_HASH_VALUE;                        \
  ------------------
  |  |  238|    224|#define UNUSED_HASH_VALUE 0
  ------------------
  776|    224|      EVICT_KEYVAL (hash_table, i, NULL, NULL, key, value);             \
  ------------------
  |  |  814|    224|#define EVICT_KEYVAL(ht, index, key, value, outkey, outvalue) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|    224|#define G_STMT_START  do
  |  |  ------------------
  |  |  815|    224|    (outkey) = g_hash_table_evict_key_or_value ((ht)->keys, (index), (ht)->have_big_keys, (key)); \
  |  |  816|    224|    (outvalue) = g_hash_table_evict_key_or_value ((ht)->values, (index), (ht)->have_big_values, (value)); \
  |  |  817|    224|  }G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    224|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 224]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  777|    224|                                                                        \
  778|    224|      for (;;)                                                          \
  779|    305|        {                                                               \
  780|    305|          guint hash_val;                                               \
  781|    305|          guint replaced_hash;                                          \
  782|    305|          guint step = 0;                                               \
  783|    305|                                                                        \
  784|    305|          hash_val = g_hash_table_hash_to_index (hash_table, node_hash); \
  785|    305|                                                                        \
  786|    471|          while (get_status_bit (reallocated_buckets_bitmap, hash_val)) \
  ------------------
  |  Branch (786:18): [True: 166, False: 305]
  ------------------
  787|    305|            {                                                           \
  788|    166|              step++;                                                   \
  789|    166|              hash_val += step;                                         \
  790|    166|              hash_val &= hash_table->mask;                             \
  791|    166|            }                                                           \
  792|    305|                                                                        \
  793|    305|          set_status_bit (reallocated_buckets_bitmap, hash_val);        \
  794|    305|                                                                        \
  795|    305|          replaced_hash = hash_table->hashes[hash_val];                 \
  796|    305|          hash_table->hashes[hash_val] = node_hash;                     \
  797|    305|          if (!HASH_IS_REAL (replaced_hash))                            \
  ------------------
  |  |  242|    305|#define HASH_IS_REAL(h_) ((h_) >= 2)
  ------------------
  |  Branch (797:15): [True: 224, False: 81]
  ------------------
  798|    305|            {                                                           \
  799|    224|              ASSIGN_KEYVAL (hash_table, hash_val, key, value);         \
  ------------------
  |  |  809|    224|#define ASSIGN_KEYVAL(ht, index, key, value) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|    224|#define G_STMT_START  do
  |  |  ------------------
  |  |  810|    224|    g_hash_table_assign_key_or_value ((ht)->keys, (index), (ht)->have_big_keys, (key)); \
  |  |  811|    224|    g_hash_table_assign_key_or_value ((ht)->values, (index), (ht)->have_big_values, (value)); \
  |  |  812|    224|  }G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    224|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 224]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  800|    224|              break;                                                    \
  801|    224|            }                                                           \
  802|    305|                                                                        \
  803|    305|          node_hash = replaced_hash;                                    \
  804|     81|          EVICT_KEYVAL (hash_table, hash_val, key, value, key, value);  \
  ------------------
  |  |  814|     81|#define EVICT_KEYVAL(ht, index, key, value, outkey, outvalue) G_STMT_START{ \
  |  |  ------------------
  |  |  |  |  874|     81|#define G_STMT_START  do
  |  |  ------------------
  |  |  815|     81|    (outkey) = g_hash_table_evict_key_or_value ((ht)->keys, (index), (ht)->have_big_keys, (key)); \
  |  |  816|     81|    (outvalue) = g_hash_table_evict_key_or_value ((ht)->values, (index), (ht)->have_big_values, (value)); \
  |  |  817|     81|  }G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     81|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 81]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  805|     81|        }                                                               \
  806|    224|    }                                                                   \
  807|     15|}

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|      2|{
 2821|      2|#ifndef G_OS_WIN32
 2822|      2|  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|      2|  gettimeofday (&r, NULL);
 2827|       |
 2828|      2|  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|      2|}

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

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

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

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

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

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

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

g_vasprintf:
  323|      3|{
  324|      3|  gint len;
  325|      3|  g_return_val_if_fail (string != NULL, -1);
  ------------------
  |  |  643|      3|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      3|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      3|      { } \
  |  |  646|      3|    else \
  |  |  647|      3|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      3|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  326|       |
  327|      3|#if !defined(USE_SYSTEM_PRINTF)
  328|       |
  329|      3|  len = _g_gnulib_vasprintf (string, format, args);
  330|      3|  if (len < 0)
  ------------------
  |  Branch (330:7): [True: 0, False: 3]
  ------------------
  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|      3|  return len;
  363|      3|}

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

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

g_slice_alloc:
 1035|     77|{
 1036|     77|  ThreadMemory *tmem;
 1037|     77|  gsize chunk_size;
 1038|     77|  gpointer mem;
 1039|     77|  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|     77|  tmem = thread_memory_from_self ();
 1048|       |
 1049|     77|  chunk_size = P2ALIGN (mem_size);
  ------------------
  |  |  207|     77|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  ------------------
 1050|     77|  acat = allocator_categorize (chunk_size);
 1051|     77|  if (G_LIKELY (acat == 1))     /* allocate through magazine layer */
  ------------------
  |  | 1024|     77|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|     77| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     77|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|     77|   int _g_boolean_var_;                         \
  |  |  |  | 1018|     77|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 77, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|     77|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     77|   else                                         \
  |  |  |  | 1021|     77|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     77|   _g_boolean_var_;                             \
  |  |  |  | 1023|     77|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 77, False: 0]
  |  |  ------------------
  ------------------
 1052|     77|    {
 1053|     77|      guint ix = SLAB_INDEX (allocator, chunk_size);
  ------------------
  |  |  199|     77|#define SLAB_INDEX(al, asize)   ((asize) / P2ALIGNMENT - 1)                     /* asize must be P2ALIGNMENT aligned */
  |  |  ------------------
  |  |  |  |  190|     77|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1054|     77|      if (G_UNLIKELY (thread_memory_magazine1_is_empty (tmem, ix)))
  ------------------
  |  | 1025|     77|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|     77| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     77|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|     77|   int _g_boolean_var_;                         \
  |  |  |  | 1018|     77|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 9, False: 68]
  |  |  |  |  ------------------
  |  |  |  | 1019|     77|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     77|   else                                         \
  |  |  |  | 1021|     77|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     77|   _g_boolean_var_;                             \
  |  |  |  | 1023|     77|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 9, False: 68]
  |  |  ------------------
  ------------------
 1055|      9|        {
 1056|      9|          thread_memory_swap_magazines (tmem, ix);
 1057|      9|          if (G_UNLIKELY (thread_memory_magazine1_is_empty (tmem, ix)))
  ------------------
  |  | 1025|      9|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      9| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      9|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      9|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      9|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 9, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|      9|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      9|   else                                         \
  |  |  |  | 1021|      9|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      9|   _g_boolean_var_;                             \
  |  |  |  | 1023|      9|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 9, False: 0]
  |  |  ------------------
  ------------------
 1058|      9|            thread_memory_magazine1_reload (tmem, ix);
 1059|      9|        }
 1060|     77|      mem = thread_memory_magazine1_alloc (tmem, ix);
 1061|     77|    }
 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|     77|  if (G_UNLIKELY (allocator->config.debug_blocks))
  ------------------
  |  | 1025|     77|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|     77| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     77|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|     77|   int _g_boolean_var_;                         \
  |  |  |  | 1018|     77|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 77]
  |  |  |  |  ------------------
  |  |  |  | 1019|     77|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     77|   else                                         \
  |  |  |  | 1021|     77|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     77|   _g_boolean_var_;                             \
  |  |  |  | 1023|     77|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 77]
  |  |  ------------------
  ------------------
 1071|      0|    smc_notify_alloc (mem, mem_size);
 1072|       |
 1073|     77|  TRACE (GLIB_SLICE_ALLOC((void*)mem, mem_size));
 1074|       |
 1075|     77|  return mem;
 1076|     77|}
g_slice_alloc0:
 1094|      5|{
 1095|      5|  gpointer mem = g_slice_alloc (mem_size);
 1096|      5|  if (mem)
  ------------------
  |  Branch (1096:7): [True: 5, False: 0]
  ------------------
 1097|      5|    memset (mem, 0, mem_size);
 1098|      5|  return mem;
 1099|      5|}
g_slice_free1:
 1146|     43|{
 1147|     43|  gsize chunk_size = P2ALIGN (mem_size);
  ------------------
  |  |  207|     43|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  ------------------
 1148|     43|  guint acat = allocator_categorize (chunk_size);
 1149|     43|  if (G_UNLIKELY (!mem_block))
  ------------------
  |  | 1025|     43|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|     43| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     43|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|     43|   int _g_boolean_var_;                         \
  |  |  |  | 1018|     43|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 43]
  |  |  |  |  ------------------
  |  |  |  | 1019|     43|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     43|   else                                         \
  |  |  |  | 1021|     43|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     43|   _g_boolean_var_;                             \
  |  |  |  | 1023|     43|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 43]
  |  |  ------------------
  ------------------
 1150|      0|    return;
 1151|     43|  if (G_UNLIKELY (allocator->config.debug_blocks) &&
  ------------------
  |  | 1025|     86|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|     43| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     43|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|     43|   int _g_boolean_var_;                         \
  |  |  |  | 1018|     43|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 43]
  |  |  |  |  ------------------
  |  |  |  | 1019|     43|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     43|   else                                         \
  |  |  |  | 1021|     43|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     43|   _g_boolean_var_;                             \
  |  |  |  | 1023|     43|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 43]
  |  |  ------------------
  ------------------
 1152|      0|      !smc_notify_free (mem_block, mem_size))
  ------------------
  |  Branch (1152:7): [True: 0, False: 0]
  ------------------
 1153|      0|    abort();
 1154|     43|  if (G_LIKELY (acat == 1))             /* allocate through magazine layer */
  ------------------
  |  | 1024|     43|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|     43| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     43|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|     43|   int _g_boolean_var_;                         \
  |  |  |  | 1018|     43|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 43, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|     43|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     43|   else                                         \
  |  |  |  | 1021|     43|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     43|   _g_boolean_var_;                             \
  |  |  |  | 1023|     43|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 43, False: 0]
  |  |  ------------------
  ------------------
 1155|     43|    {
 1156|     43|      ThreadMemory *tmem = thread_memory_from_self();
 1157|     43|      guint ix = SLAB_INDEX (allocator, chunk_size);
  ------------------
  |  |  199|     43|#define SLAB_INDEX(al, asize)   ((asize) / P2ALIGNMENT - 1)                     /* asize must be P2ALIGNMENT aligned */
  |  |  ------------------
  |  |  |  |  190|     43|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1158|     43|      if (G_UNLIKELY (thread_memory_magazine2_is_full (tmem, ix)))
  ------------------
  |  | 1025|     43|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|     43| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     43|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|     43|   int _g_boolean_var_;                         \
  |  |  |  | 1018|     43|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 43]
  |  |  |  |  ------------------
  |  |  |  | 1019|     43|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     43|   else                                         \
  |  |  |  | 1021|     43|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     43|   _g_boolean_var_;                             \
  |  |  |  | 1023|     43|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 43]
  |  |  ------------------
  ------------------
 1159|      0|        {
 1160|      0|          thread_memory_swap_magazines (tmem, ix);
 1161|      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]
  |  |  ------------------
  ------------------
 1162|      0|            thread_memory_magazine2_unload (tmem, ix);
 1163|      0|        }
 1164|     43|      if (G_UNLIKELY (g_mem_gc_friendly))
  ------------------
  |  | 1025|     43|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|     43| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     43|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|     43|   int _g_boolean_var_;                         \
  |  |  |  | 1018|     43|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 43]
  |  |  |  |  ------------------
  |  |  |  | 1019|     43|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     43|   else                                         \
  |  |  |  | 1021|     43|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     43|   _g_boolean_var_;                             \
  |  |  |  | 1023|     43|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 43]
  |  |  ------------------
  ------------------
 1165|      0|        memset (mem_block, 0, chunk_size);
 1166|     43|      thread_memory_magazine2_free (tmem, ix, mem_block);
 1167|     43|    }
 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|     43|  TRACE (GLIB_SLICE_FREE((void*)mem_block, mem_size));
 1183|     43|}
g_slice_free_chain_with_offset:
 1209|     12|{
 1210|     12|  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|     12|  gsize chunk_size = P2ALIGN (mem_size);
  ------------------
  |  |  207|     12|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  ------------------
 1227|     12|  guint acat = allocator_categorize (chunk_size);
 1228|     12|  if (G_LIKELY (acat == 1))             /* allocate through magazine layer */
  ------------------
  |  | 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]
  |  |  ------------------
  ------------------
 1229|     12|    {
 1230|     12|      ThreadMemory *tmem = thread_memory_from_self();
 1231|     12|      guint ix = SLAB_INDEX (allocator, chunk_size);
  ------------------
  |  |  199|     12|#define SLAB_INDEX(al, asize)   ((asize) / P2ALIGNMENT - 1)                     /* asize must be P2ALIGNMENT aligned */
  |  |  ------------------
  |  |  |  |  190|     12|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1232|     20|      while (slice)
  ------------------
  |  Branch (1232:14): [True: 8, False: 12]
  ------------------
 1233|      8|        {
 1234|      8|          guint8 *current = slice;
 1235|      8|          slice = *(gpointer*) (current + next_offset);
 1236|      8|          if (G_UNLIKELY (allocator->config.debug_blocks) &&
  ------------------
  |  | 1025|     16|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 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: 0, False: 8]
  |  |  |  |  ------------------
  |  |  |  | 1019|      8|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      8|   else                                         \
  |  |  |  | 1021|      8|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      8|   _g_boolean_var_;                             \
  |  |  |  | 1023|      8|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 8]
  |  |  ------------------
  ------------------
 1237|      0|              !smc_notify_free (current, mem_size))
  ------------------
  |  Branch (1237:15): [True: 0, False: 0]
  ------------------
 1238|      0|            abort();
 1239|      8|          if (G_UNLIKELY (thread_memory_magazine2_is_full (tmem, ix)))
  ------------------
  |  | 1025|      8|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 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: 0, False: 8]
  |  |  |  |  ------------------
  |  |  |  | 1019|      8|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      8|   else                                         \
  |  |  |  | 1021|      8|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      8|   _g_boolean_var_;                             \
  |  |  |  | 1023|      8|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 8]
  |  |  ------------------
  ------------------
 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|      8|          if (G_UNLIKELY (g_mem_gc_friendly))
  ------------------
  |  | 1025|      8|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 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: 0, False: 8]
  |  |  |  |  ------------------
  |  |  |  | 1019|      8|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      8|   else                                         \
  |  |  |  | 1021|      8|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      8|   _g_boolean_var_;                             \
  |  |  |  | 1023|      8|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 8]
  |  |  ------------------
  ------------------
 1246|      0|            memset (current, 0, chunk_size);
 1247|      8|          thread_memory_magazine2_free (tmem, ix, current);
 1248|      8|        }
 1249|     12|    }
 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|     12|}
gslice.c:allocator_get_magazine_threshold:
  615|     60|{
  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|     60|  gsize chunk_size = SLAB_CHUNK_SIZE (allocator, ix);
  ------------------
  |  |  200|     60|#define SLAB_CHUNK_SIZE(al, ix) (((ix) + 1) * P2ALIGNMENT)
  |  |  ------------------
  |  |  |  |  190|     60|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
  626|     60|  guint threshold = MAX (MIN_MAGAZINE_SIZE, allocator->max_page_size / MAX (5 * chunk_size, 5 * 32));
  ------------------
  |  |  822|    120|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 0, False: 60]
  |  |  |  Branch (822:29): [True: 29, False: 31]
  |  |  |  Branch (822:42): [True: 29, False: 31]
  |  |  ------------------
  ------------------
  627|     60|  guint contention_counter = allocator->contention_counters[ix];
  628|     60|  if (G_UNLIKELY (contention_counter))  /* single CPU bias */
  ------------------
  |  | 1025|     60|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|     60| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     60|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|     60|   int _g_boolean_var_;                         \
  |  |  |  | 1018|     60|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 60]
  |  |  |  |  ------------------
  |  |  |  | 1019|     60|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     60|   else                                         \
  |  |  |  | 1021|     60|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     60|   _g_boolean_var_;                             \
  |  |  |  | 1023|     60|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 60]
  |  |  ------------------
  ------------------
  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|     60|  return threshold;
  635|     60|}
gslice.c:thread_memory_from_self:
  551|    132|{
  552|    132|  ThreadMemory *tmem = g_private_get (&private_thread_memory);
  553|    132|  if (G_UNLIKELY (!tmem))
  ------------------
  |  | 1025|    132|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|    132| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    132|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|    132|   int _g_boolean_var_;                         \
  |  |  |  | 1018|    132|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 2, False: 130]
  |  |  |  |  ------------------
  |  |  |  | 1019|    132|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|    132|   else                                         \
  |  |  |  | 1021|    132|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|    132|   _g_boolean_var_;                             \
  |  |  |  | 1023|    132|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 2, False: 130]
  |  |  ------------------
  ------------------
  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|    132|  return tmem;
  569|    132|}
gslice.c:magazine_cache_update_stamp:
  640|      2|{
  641|      2|  if (allocator->stamp_counter >= MAX_STAMP_COUNTER)
  ------------------
  |  |  196|      2|#define MAX_STAMP_COUNTER       (7)                                             /* distributes the load of gettimeofday() */
  ------------------
  |  Branch (641:7): [True: 2, False: 0]
  ------------------
  642|      2|    {
  643|      2|      gint64 now_us = g_get_real_time ();
  644|      2|      allocator->last_stamp = now_us / 1000; /* milli seconds */
  645|      2|      allocator->stamp_counter = 0;
  646|      2|    }
  647|      0|  else
  648|      0|    allocator->stamp_counter++;
  649|      2|}
gslice.c:magazine_chain_pop_head:
  573|     77|{
  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|     77|  ChunkLink *chunk = (*magazine_chunks)->data;
  580|     77|  if (G_UNLIKELY (chunk))
  ------------------
  |  | 1025|     77|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|     77| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     77|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|     77|   int _g_boolean_var_;                         \
  |  |  |  | 1018|     77|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 77]
  |  |  |  |  ------------------
  |  |  |  | 1019|     77|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     77|   else                                         \
  |  |  |  | 1021|     77|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     77|   _g_boolean_var_;                             \
  |  |  |  | 1023|     77|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 77]
  |  |  ------------------
  ------------------
  581|      0|    {
  582|       |      /* allocating from freed list */
  583|      0|      (*magazine_chunks)->data = chunk->next;
  584|      0|    }
  585|     77|  else
  586|     77|    {
  587|     77|      chunk = *magazine_chunks;
  588|     77|      *magazine_chunks = chunk->next;
  589|     77|    }
  590|     77|  return chunk;
  591|     77|}
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|    132|{
  504|       |  /* speed up the likely path */
  505|    132|  if (G_LIKELY (aligned_chunk_size && aligned_chunk_size <= allocator->max_slab_chunk_size_for_magazine_cache))
  ------------------
  |  | 1024|    132|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|    132| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    132|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|    132|   int _g_boolean_var_;                         \
  |  |  |  | 1018|    396|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 132, False: 0]
  |  |  |  |  |  Branch (1018:8): [True: 132, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|    132|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|    132|   else                                         \
  |  |  |  | 1021|    132|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|    132|   _g_boolean_var_;                             \
  |  |  |  | 1023|    132|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 132, False: 0]
  |  |  ------------------
  ------------------
  506|    132|    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|     86|{
  871|       |  return tmem->magazine1[ix].chunks == NULL;
  872|     86|}
gslice.c:thread_memory_swap_magazines:
  861|      9|{
  862|      9|  Magazine xmag = tmem->magazine1[ix];
  863|      9|  tmem->magazine1[ix] = tmem->magazine2[ix];
  864|      9|  tmem->magazine2[ix] = xmag;
  865|      9|}
gslice.c:thread_memory_magazine1_reload:
  841|      9|{
  842|      9|  Magazine *mag = &tmem->magazine1[ix];
  843|      9|  mem_assert (mag->chunks == NULL); /* ensure that we may reset mag->count */
  ------------------
  |  |  214|      9|#define mem_assert(cond)    do { if (G_LIKELY (cond)) ; else mem_error ("assertion failed: %s", #cond); } while (0)
  |  |  ------------------
  |  |  |  | 1024|      9|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      9| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      9|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      9|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      9|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      9|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      9|   else                                         \
  |  |  |  |  |  | 1021|      9|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      9|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      9|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 9, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (214:114): [Folded, False: 9]
  |  |  ------------------
  ------------------
  844|      9|  mag->count = 0;
  845|      9|  mag->chunks = magazine_cache_pop_magazine (ix, &mag->count);
  846|      9|}
gslice.c:magazine_cache_pop_magazine:
  761|      9|{
  762|      9|  g_mutex_lock_a (&allocator->magazine_mutex, &allocator->contention_counters[ix]);
  763|      9|  if (!allocator->magazines[ix])
  ------------------
  |  Branch (763:7): [True: 9, False: 0]
  ------------------
  764|      9|    {
  765|      9|      guint magazine_threshold = allocator_get_magazine_threshold (allocator, ix);
  766|      9|      gsize i, chunk_size = SLAB_CHUNK_SIZE (allocator, ix);
  ------------------
  |  |  200|      9|#define SLAB_CHUNK_SIZE(al, ix) (((ix) + 1) * P2ALIGNMENT)
  |  |  ------------------
  |  |  |  |  190|      9|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
  767|      9|      ChunkLink *chunk, *head;
  768|      9|      g_mutex_unlock (&allocator->magazine_mutex);
  769|      9|      g_mutex_lock (&allocator->slab_mutex);
  770|      9|      head = slab_allocator_alloc_chunk (chunk_size);
  771|      9|      head->data = NULL;
  772|      9|      chunk = head;
  773|    276|      for (i = 1; i < magazine_threshold; i++)
  ------------------
  |  Branch (773:19): [True: 267, False: 9]
  ------------------
  774|    267|        {
  775|    267|          chunk->next = slab_allocator_alloc_chunk (chunk_size);
  776|    267|          chunk = chunk->next;
  777|    267|          chunk->data = NULL;
  778|    267|        }
  779|      9|      chunk->next = NULL;
  780|      9|      g_mutex_unlock (&allocator->slab_mutex);
  781|      9|      *countp = i;
  782|      9|      return head;
  783|      9|    }
  784|      0|  else
  785|      0|    {
  786|      0|      ChunkLink *current = allocator->magazines[ix];
  787|      0|      ChunkLink *prev = magazine_chain_prev (current);
  ------------------
  |  |  672|      0|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  788|      0|      ChunkLink *next = magazine_chain_next (current);
  ------------------
  |  |  675|      0|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  789|       |      /* unlink */
  790|      0|      magazine_chain_next (prev) = next;
  ------------------
  |  |  675|      0|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  791|      0|      magazine_chain_prev (next) = prev;
  ------------------
  |  |  672|      0|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  792|      0|      allocator->magazines[ix] = next == current ? NULL : next;
  ------------------
  |  Branch (792:34): [True: 0, False: 0]
  ------------------
  793|      0|      g_mutex_unlock (&allocator->magazine_mutex);
  794|       |      /* clear special fields and hand out */
  795|      0|      *countp = (gsize) magazine_chain_count (current);
  ------------------
  |  |  676|      0|#define magazine_chain_count(mc)        ((mc)->next->next->next->data)
  ------------------
  796|      0|      magazine_chain_prev (current) = NULL;
  ------------------
  |  |  672|      0|#define magazine_chain_prev(mc)         ((mc)->data)
  ------------------
  797|      0|      magazine_chain_next (current) = NULL;
  ------------------
  |  |  675|      0|#define magazine_chain_next(mc)         ((mc)->next->next->data)
  ------------------
  798|      0|      magazine_chain_count (current) = NULL;
  ------------------
  |  |  676|      0|#define magazine_chain_count(mc)        ((mc)->next->next->next->data)
  ------------------
  799|      0|      magazine_chain_stamp (current) = NULL;
  ------------------
  |  |  673|      0|#define magazine_chain_stamp(mc)        ((mc)->next->data)
  ------------------
  800|      0|      return current;
  801|      0|    }
  802|      9|}
gslice.c:g_mutex_lock_a:
  522|      9|{
  523|      9|  gboolean contention = FALSE;
  ------------------
  |  |  814|      9|#define	FALSE	(0)
  ------------------
  524|      9|  if (!g_mutex_trylock (mutex))
  ------------------
  |  Branch (524:7): [True: 0, False: 9]
  ------------------
  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|      9|  if (contention)
  ------------------
  |  Branch (529:7): [True: 0, False: 9]
  ------------------
  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|      9|  else /* !contention */
  539|      9|    {
  540|      9|      allocator->mutex_counter--;
  541|      9|      if (allocator->mutex_counter < -11)       /* moderately recover magazine sizes */
  ------------------
  |  Branch (541:11): [True: 0, False: 9]
  ------------------
  542|      0|        {
  543|      0|          allocator->mutex_counter = 0;
  544|      0|          *contention_counter = MAX (*contention_counter, 1) - 1;
  ------------------
  |  |  822|      0|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  545|      0|        }
  546|      9|    }
  547|      9|}
gslice.c:thread_memory_magazine1_alloc:
  884|     77|{
  885|     77|  Magazine *mag = &tmem->magazine1[ix];
  886|     77|  ChunkLink *chunk = magazine_chain_pop_head (&mag->chunks);
  887|     77|  if (G_LIKELY (mag->count > 0))
  ------------------
  |  | 1024|     77|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|     77| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     77|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|     77|   int _g_boolean_var_;                         \
  |  |  |  | 1018|     77|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 77, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|     77|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     77|   else                                         \
  |  |  |  | 1021|     77|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     77|   _g_boolean_var_;                             \
  |  |  |  | 1023|     77|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 77, False: 0]
  |  |  ------------------
  ------------------
  888|     77|    mag->count--;
  889|     77|  return chunk;
  890|     77|}
gslice.c:thread_memory_magazine2_is_full:
  877|     51|{
  878|     51|  return tmem->magazine2[ix].count >= allocator_get_magazine_threshold (allocator, ix);
  879|     51|}
gslice.c:thread_memory_magazine2_free:
  896|     51|{
  897|     51|  Magazine *mag = &tmem->magazine2[ix];
  898|     51|  ChunkLink *chunk = mem;
  899|       |  chunk->data = NULL;
  900|     51|  chunk->next = mag->chunks;
  901|     51|  mag->chunks = chunk;
  902|     51|  mag->count++;
  903|     51|}
gslice.c:slab_allocator_alloc_chunk:
 1369|    276|{
 1370|    276|  ChunkLink *chunk;
 1371|    276|  guint ix = SLAB_INDEX (allocator, chunk_size);
  ------------------
  |  |  199|    276|#define SLAB_INDEX(al, asize)   ((asize) / P2ALIGNMENT - 1)                     /* asize must be P2ALIGNMENT aligned */
  |  |  ------------------
  |  |  |  |  190|    276|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1372|       |  /* ensure non-empty slab */
 1373|    276|  if (!allocator->slab_stack[ix] || !allocator->slab_stack[ix]->chunks)
  ------------------
  |  Branch (1373:7): [True: 9, False: 267]
  |  Branch (1373:37): [True: 18, False: 249]
  ------------------
 1374|     27|    allocator_add_slab (allocator, ix, chunk_size);
 1375|       |  /* allocate chunk */
 1376|    276|  chunk = allocator->slab_stack[ix]->chunks;
 1377|    276|  allocator->slab_stack[ix]->chunks = chunk->next;
 1378|    276|  allocator->slab_stack[ix]->n_allocated++;
 1379|       |  /* rotate empty slabs */
 1380|    276|  if (!allocator->slab_stack[ix]->chunks)
  ------------------
  |  Branch (1380:7): [True: 18, False: 258]
  ------------------
 1381|     18|    allocator->slab_stack[ix] = allocator->slab_stack[ix]->next;
 1382|    276|  return chunk;
 1383|    276|}
gslice.c:allocator_add_slab:
 1316|     27|{
 1317|     27|  ChunkLink *chunk;
 1318|     27|  SlabInfo *sinfo;
 1319|     27|  gsize addr, padding, n_chunks, color = 0;
 1320|     27|  gsize page_size;
 1321|     27|  int errsv;
 1322|     27|  gpointer aligned_memory;
 1323|     27|  guint8 *mem;
 1324|     27|  guint i;
 1325|       |
 1326|     27|  page_size = allocator_aligned_page_size (allocator, SLAB_BPAGE_SIZE (allocator, chunk_size));
  ------------------
  |  |  201|     27|#define SLAB_BPAGE_SIZE(al,csz) (8 * (csz) + SLAB_INFO_SIZE)
  |  |  ------------------
  |  |  |  |  193|     27|#define SLAB_INFO_SIZE          P2ALIGN (sizeof (SlabInfo) + NATIVE_MALLOC_PADDING)
  |  |  |  |  ------------------
  |  |  |  |  |  |  207|     27|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1327|       |  /* allocate 1 page for the chunks and the slab */
 1328|     27|  aligned_memory = allocator_memalign (page_size, page_size - NATIVE_MALLOC_PADDING);
  ------------------
  |  |  192|     27|#define NATIVE_MALLOC_PADDING   P2ALIGNMENT                                     /* per-page padding left for native malloc(3) see [1] */
  |  |  ------------------
  |  |  |  |  190|     27|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  |  |  ------------------
  ------------------
 1329|     27|  errsv = errno;
 1330|     27|  mem = aligned_memory;
 1331|       |
 1332|     27|  if (!mem)
  ------------------
  |  Branch (1332:7): [True: 0, False: 27]
  ------------------
 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|     27|  addr = ((gsize) mem / page_size) * page_size;
 1340|       |  /* assert alignment */
 1341|     27|  mem_assert (aligned_memory == (gpointer) addr);
  ------------------
  |  |  214|     27|#define mem_assert(cond)    do { if (G_LIKELY (cond)) ; else mem_error ("assertion failed: %s", #cond); } while (0)
  |  |  ------------------
  |  |  |  | 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (214:114): [Folded, False: 27]
  |  |  ------------------
  ------------------
 1342|       |  /* basic slab info setup */
 1343|     27|  sinfo = (SlabInfo*) (mem + page_size - SLAB_INFO_SIZE);
  ------------------
  |  |  193|     27|#define SLAB_INFO_SIZE          P2ALIGN (sizeof (SlabInfo) + NATIVE_MALLOC_PADDING)
  |  |  ------------------
  |  |  |  |  207|     27|#define P2ALIGN(size)   (((size) + 0xf) & ~(gsize) 0xf)
  |  |  ------------------
  ------------------
 1344|     27|  sinfo->n_allocated = 0;
 1345|     27|  sinfo->chunks = NULL;
 1346|       |  /* figure cache colorization */
 1347|     27|  n_chunks = ((guint8*) sinfo - mem) / chunk_size;
 1348|     27|  padding = ((guint8*) sinfo - mem) - n_chunks * chunk_size;
 1349|     27|  if (padding)
  ------------------
  |  Branch (1349:7): [True: 19, False: 8]
  ------------------
 1350|     19|    {
 1351|     19|      color = (allocator->color_accu * P2ALIGNMENT) % padding;
  ------------------
  |  |  190|     19|#define P2ALIGNMENT             (2 * sizeof (gsize))                            /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
  ------------------
 1352|     19|      allocator->color_accu += allocator->config.color_increment;
 1353|     19|    }
 1354|       |  /* add chunks to free list */
 1355|     27|  chunk = (ChunkLink*) (mem + color);
 1356|     27|  sinfo->chunks = chunk;
 1357|    297|  for (i = 0; i < n_chunks - 1; i++)
  ------------------
  |  Branch (1357:15): [True: 270, False: 27]
  ------------------
 1358|    270|    {
 1359|    270|      chunk->next = (ChunkLink*) ((guint8*) chunk + chunk_size);
 1360|    270|      chunk = chunk->next;
 1361|    270|    }
 1362|     27|  chunk->next = NULL;   /* last chunk */
 1363|       |  /* add slab to slab ring */
 1364|     27|  allocator_slab_stack_push (allocator, ix, sinfo);
 1365|     27|}
gslice.c:allocator_aligned_page_size:
 1306|     27|{
 1307|     27|  gsize val = 1 << g_bit_storage (n_bytes - 1);
  ------------------
  |  |  370|     27|#define g_bit_storage(number)        g_bit_storage_impl(number)
  ------------------
 1308|     27|  val = MAX (val, allocator->min_page_size);
  ------------------
  |  |  822|     27|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 27, False: 0]
  |  |  ------------------
  ------------------
 1309|     27|  return val;
 1310|     27|}
gslice.c:allocator_memalign:
 1452|     27|{
 1453|     27|  gpointer aligned_memory = NULL;
 1454|     27|  gint err = ENOMEM;
 1455|     27|#if     HAVE_POSIX_MEMALIGN
 1456|     27|  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|     27|  if (!aligned_memory)
  ------------------
  |  Branch (1490:7): [True: 0, False: 27]
  ------------------
 1491|     27|    errno = err;
 1492|     27|  return aligned_memory;
 1493|     27|}
gslice.c:allocator_slab_stack_push:
 1285|     27|{
 1286|       |  /* insert slab at slab ring head */
 1287|     27|  if (!allocator->slab_stack[ix])
  ------------------
  |  Branch (1287:7): [True: 9, False: 18]
  ------------------
 1288|      9|    {
 1289|      9|      sinfo->next = sinfo;
 1290|      9|      sinfo->prev = sinfo;
 1291|      9|    }
 1292|     18|  else
 1293|     18|    {
 1294|     18|      SlabInfo *next = allocator->slab_stack[ix], *prev = next->prev;
 1295|     18|      next->prev = sinfo;
 1296|     18|      prev->next = sinfo;
 1297|     18|      sinfo->next = next;
 1298|     18|      sinfo->prev = prev;
 1299|     18|    }
 1300|     27|  allocator->slab_stack[ix] = sinfo;
 1301|     27|}

g_slist_free:
  148|     12|{
  149|       |  g_slice_free_chain (GSList, list, next);
  ------------------
  |  |   84|     12|#define g_slice_free_chain(type, mem_chain, next)               \
  |  |  ------------------
  |  |  |  |  874|     12|#define G_STMT_START  do
  |  |  ------------------
  |  |   85|     12|G_STMT_START {                                                  \
  |  |   86|     12|  if (1) g_slice_free_chain_with_offset (sizeof (type),		\
  |  |  ------------------
  |  |  |  Branch (86:7): [True: 12, Folded]
  |  |  ------------------
  |  |   87|     12|                 (mem_chain), G_STRUCT_OFFSET (type, next)); 	\
  |  |  ------------------
  |  |  |  |  853|     12|      ((glong) offsetof (struct_type, member))
  |  |  ------------------
  |  |   88|     12|  else   (void) ((type*) 0 == (mem_chain));			\
  |  |   89|     12|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     12|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  150|     12|}
g_slist_free_1:
  168|     15|{
  169|     15|  _g_slist_free1 (list);
  ------------------
  |  |  111|     15|#define _g_slist_free1(slist)   g_slice_free (GSList, slist)
  |  |  ------------------
  |  |  |  |   79|     15|#define g_slice_free(type, mem)                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|     15|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |   80|     15|G_STMT_START {                                                  \
  |  |  |  |   81|     15|  if (1) g_slice_free1 (sizeof (type), (mem));			\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (81:7): [True: 15, Folded]
  |  |  |  |  ------------------
  |  |  |  |   82|     15|  else   (void) ((type*) 0 == (mem)); 				\
  |  |  |  |   83|     15|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|     15|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 15]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  170|     15|}
g_slist_append:
  235|      1|{
  236|      1|  GSList *new_list;
  237|      1|  GSList *last;
  238|       |
  239|      1|  new_list = _g_slist_alloc ();
  ------------------
  |  |  110|      1|#define _g_slist_alloc()        g_slice_new (GSList)
  |  |  ------------------
  |  |  |  |   46|      1|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  |  |  ------------------
  ------------------
  240|      1|  new_list->data = data;
  241|      1|  new_list->next = NULL;
  242|       |
  243|      1|  if (list)
  ------------------
  |  Branch (243:7): [True: 0, False: 1]
  ------------------
  244|      0|    {
  245|      0|      last = g_slist_last (list);
  246|       |      /* g_assert (last != NULL); */
  247|      0|      last->next = new_list;
  248|       |
  249|      0|      return list;
  250|      0|    }
  251|      1|  else
  252|      1|    return new_list;
  253|      1|}
g_slist_prepend:
  277|     23|{
  278|     23|  GSList *new_list;
  279|       |
  280|     23|  new_list = _g_slist_alloc ();
  ------------------
  |  |  110|     23|#define _g_slist_alloc()        g_slice_new (GSList)
  |  |  ------------------
  |  |  |  |   46|     23|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  |  |  ------------------
  ------------------
  281|     23|  new_list->data = data;
  282|     23|  new_list->next = list;
  283|       |
  284|     23|  return new_list;
  285|     23|}
g_slist_remove:
  453|     15|{
  454|     15|  return _g_slist_remove_data (list, data, FALSE);
  ------------------
  |  |  814|     15|#define	FALSE	(0)
  ------------------
  455|     15|}
g_slist_copy:
  566|      4|{
  567|      4|  return g_slist_copy_deep (list, NULL, NULL);
  568|      4|}
g_slist_copy_deep:
  603|      4|{
  604|      4|  GSList *new_list = NULL;
  605|       |
  606|      4|  if (list)
  ------------------
  |  Branch (606:7): [True: 1, False: 3]
  ------------------
  607|      1|    {
  608|      1|      GSList *last;
  609|       |
  610|      1|      new_list = _g_slist_alloc ();
  ------------------
  |  |  110|      1|#define _g_slist_alloc()        g_slice_new (GSList)
  |  |  ------------------
  |  |  |  |   46|      1|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  |  |  ------------------
  ------------------
  611|      1|      if (func)
  ------------------
  |  Branch (611:11): [True: 0, False: 1]
  ------------------
  612|      0|        new_list->data = func (list->data, user_data);
  613|      1|      else
  614|      1|        new_list->data = list->data;
  615|      1|      last = new_list;
  616|      1|      list = list->next;
  617|      1|      while (list)
  ------------------
  |  Branch (617:14): [True: 0, False: 1]
  ------------------
  618|      0|        {
  619|      0|          last->next = _g_slist_alloc ();
  ------------------
  |  |  110|      0|#define _g_slist_alloc()        g_slice_new (GSList)
  |  |  ------------------
  |  |  |  |   46|      0|#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
  |  |  ------------------
  ------------------
  620|      0|          last = last->next;
  621|      0|          if (func)
  ------------------
  |  Branch (621:15): [True: 0, False: 0]
  ------------------
  622|      0|            last->data = func (list->data, user_data);
  623|      0|          else
  624|      0|            last->data = list->data;
  625|      0|          list = list->next;
  626|      0|        }
  627|      1|      last->next = NULL;
  628|      1|    }
  629|       |
  630|      4|  return new_list;
  631|      4|}
g_slist_find:
  713|     16|{
  714|     25|  while (list)
  ------------------
  |  Branch (714:10): [True: 9, False: 16]
  ------------------
  715|      9|    {
  716|      9|      if (list->data == data)
  ------------------
  |  Branch (716:11): [True: 0, False: 9]
  ------------------
  717|      0|        break;
  718|      9|      list = list->next;
  719|      9|    }
  720|       |
  721|     16|  return list;
  722|     16|}
g_slist_sort:
 1068|      4|{
 1069|       |  return g_slist_sort_real (list, (GFunc) compare_func, NULL);
 1070|      4|}
gslist.c:_g_slist_remove_data:
  417|     15|{
  418|     15|  GSList *tmp = NULL;
  419|     15|  GSList **previous_ptr = &list;
  420|       |
  421|     15|  while (*previous_ptr)
  ------------------
  |  Branch (421:10): [True: 15, False: 0]
  ------------------
  422|     15|    {
  423|     15|      tmp = *previous_ptr;
  424|     15|      if (tmp->data == data)
  ------------------
  |  Branch (424:11): [True: 15, False: 0]
  ------------------
  425|     15|        {
  426|     15|          *previous_ptr = tmp->next;
  427|     15|          g_slist_free_1 (tmp);
  428|     15|          if (!all)
  ------------------
  |  Branch (428:15): [True: 15, False: 0]
  ------------------
  429|     15|            break;
  430|     15|        }
  431|      0|      else
  432|      0|        {
  433|      0|          previous_ptr = &tmp->next;
  434|      0|        }
  435|     15|    }
  436|       |
  437|     15|  return list;
  438|     15|}
gslist.c:g_slist_sort_real:
 1025|      4|{
 1026|      4|  GSList *l1, *l2;
 1027|       |
 1028|      4|  if (!list)
  ------------------
  |  Branch (1028:7): [True: 4, False: 0]
  ------------------
 1029|      4|    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|     25|{
  358|     25|  gchar *new_str;
  359|     25|  gsize length;
  360|       |
  361|     25|  if (str)
  ------------------
  |  Branch (361:7): [True: 23, False: 2]
  ------------------
  362|     23|    {
  363|     23|      length = strlen (str) + 1;
  364|     23|      new_str = g_new (char, length);
  ------------------
  |  |  290|     23|#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
  |  |  ------------------
  |  |  |  |  235|     23|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     23|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|     23|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|     23|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|     23|	  gpointer __p;						\
  |  |  |  |  239|     23|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 23, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  240|     23|	    __p = g_##func (__n);				\
  |  |  |  |  241|     23|	  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|     23|	  __p;							\
  |  |  |  |  247|     23|	}))
  |  |  ------------------
  ------------------
  365|     23|      memcpy (new_str, str, length);
  366|     23|    }
  367|      2|  else
  368|      2|    new_str = NULL;
  369|       |
  370|     25|  return new_str;
  371|     25|}
g_memdup2:
  422|     13|{
  423|     13|  gpointer new_mem;
  424|       |
  425|     13|  if (mem && byte_size != 0)
  ------------------
  |  Branch (425:7): [True: 12, False: 1]
  |  Branch (425:14): [True: 12, False: 0]
  ------------------
  426|     12|    {
  427|     12|      new_mem = g_malloc (byte_size);
  428|     12|      memcpy (new_mem, mem, byte_size);
  429|     12|    }
  430|      1|  else
  431|      1|    new_mem = NULL;
  432|       |
  433|     13|  return new_mem;
  434|     13|}
g_strdup_vprintf:
  551|      3|{
  552|      3|  gchar *string = NULL;
  553|       |
  554|      3|  g_vasprintf (&string, format, args);
  555|       |
  556|      3|  return string;
  557|      3|}

g_rec_mutex_lock:
  394|     12|{
  395|     12|  pthread_mutex_lock (g_rec_mutex_get_impl (mutex));
  396|     12|}
g_rec_mutex_unlock:
  413|     12|{
  414|     12|  pthread_mutex_unlock (rec_mutex->p);
  415|     12|}
g_rw_lock_writer_lock:
  551|    143|{
  552|    143|  int retval = pthread_rwlock_wrlock (g_rw_lock_get_impl (rw_lock));
  553|       |
  554|    143|  if (retval != 0)
  ------------------
  |  Branch (554:7): [True: 0, False: 143]
  ------------------
  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|    143|}
g_rw_lock_writer_unlock:
  593|    143|{
  594|    143|  pthread_rwlock_unlock (g_rw_lock_get_impl (rw_lock));
  595|    143|}
g_rw_lock_reader_lock:
  621|    159|{
  622|    159|  int retval = pthread_rwlock_rdlock (g_rw_lock_get_impl (rw_lock));
  623|       |
  624|    159|  if (retval != 0)
  ------------------
  |  Branch (624:7): [True: 0, False: 159]
  ------------------
  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|    159|}
g_rw_lock_reader_unlock:
  662|    159|{
  663|    159|  pthread_rwlock_unlock (g_rw_lock_get_impl (rw_lock));
  664|    159|}
g_private_get:
 1080|    136|{
 1081|       |  /* quote POSIX: No errors are returned from pthread_getspecific(). */
 1082|    136|  return pthread_getspecific (*g_private_get_impl (key));
 1083|    136|}
g_private_set:
 1099|     10|{
 1100|     10|  gint status;
 1101|       |
 1102|     10|  if G_UNLIKELY ((status = pthread_setspecific (*g_private_get_impl (key), value)) != 0)
  ------------------
  |  | 1025|     10|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|     10| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     10|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|     10|   int _g_boolean_var_;                         \
  |  |  |  | 1018|     10|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 10]
  |  |  |  |  ------------------
  |  |  |  | 1019|     10|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     10|   else                                         \
  |  |  |  | 1021|     10|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     10|   _g_boolean_var_;                             \
  |  |  |  | 1023|     10|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 10]
  |  |  ------------------
  ------------------
 1103|      0|    g_thread_abort (status, "pthread_setspecific");
 1104|     10|}
g_mutex_lock:
 1513|    383|{
 1514|       |  /* 0 -> 1 and we're done.  Anything else, and we need to wait... */
 1515|    383|  if G_UNLIKELY (g_atomic_int_add (&mutex->i[0], 1) != 0)
  ------------------
  |  | 1025|    383|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|    383| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    383|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|    383|   int _g_boolean_var_;                         \
  |  |  |  | 1018|  1.14k|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [Folded, False: 383]
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 383]
  |  |  |  |  ------------------
  |  |  |  | 1019|    383|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|    383|   else                                         \
  |  |  |  | 1021|    383|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|    383|   _g_boolean_var_;                             \
  |  |  |  | 1023|    383|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 383]
  |  |  ------------------
  ------------------
 1516|      0|    g_mutex_lock_slowpath (mutex);
 1517|    383|}
g_mutex_unlock:
 1521|    392|{
 1522|    392|  guint prev;
 1523|       |
 1524|    392|  prev = exchange_release (&mutex->i[0], 0);
  ------------------
  |  | 1425|    392|  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|    392|  if G_UNLIKELY (prev != 1)
  ------------------
  |  | 1025|    392|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|    392| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    392|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|    392|   int _g_boolean_var_;                         \
  |  |  |  | 1018|    392|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 392]
  |  |  |  |  ------------------
  |  |  |  | 1019|    392|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|    392|   else                                         \
  |  |  |  | 1021|    392|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|    392|   _g_boolean_var_;                             \
  |  |  |  | 1023|    392|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 0, False: 392]
  |  |  ------------------
  ------------------
 1528|      0|    g_mutex_unlock_slowpath (mutex, prev);
 1529|    392|}
g_mutex_trylock:
 1533|      9|{
 1534|      9|  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|      9|  atomic_compare_exchange_strong_explicit((atomic_uint *) (ptr), (old), (new), \
  |  | 1422|      9|                                          __ATOMIC_ACQUIRE, __ATOMIC_RELAXED)
  ------------------
 1540|      9|}
g_cond_broadcast:
 1588|     15|{
 1589|     15|  g_atomic_int_inc (&cond->i[0]);
  ------------------
  |  |  148|     15|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     15|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|     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
  |  |  ------------------
  |  |  150|     15|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 15]
  |  |  ------------------
  |  |  151|     15|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|     15|  }))
  ------------------
 1590|       |
 1591|     15|  syscall (__NR_futex, &cond->i[0], (gsize) FUTEX_WAKE_PRIVATE, (gsize) INT_MAX, NULL);
 1592|     15|}
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|     12|{
  306|     12|  pthread_mutex_t *impl = g_atomic_pointer_get (&rec_mutex->p);
  ------------------
  |  |  113|     12|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|     12|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|     12|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|     12|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|     12|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|     12|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|     12|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|     12|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|     12|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|     12|    gapg_temp_newval;                                                      \
  |  |  119|     12|  }))
  ------------------
  307|       |
  308|     12|  if G_UNLIKELY (impl == NULL)
  ------------------
  |  | 1025|     12|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 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: 2, False: 10]
  |  |  |  |  ------------------
  |  |  |  | 1019|     12|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     12|   else                                         \
  |  |  |  | 1021|     12|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     12|   _g_boolean_var_;                             \
  |  |  |  | 1023|     12|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 2, False: 10]
  |  |  ------------------
  ------------------
  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|     12|  return impl;
  317|     12|}
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|    604|{
  466|    604|  pthread_rwlock_t *impl = g_atomic_pointer_get (&lock->p);
  ------------------
  |  |  113|    604|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|    604|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|    604|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|    604|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|    604|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|    604|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|    604|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|    604|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|    604|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|    604|    gapg_temp_newval;                                                      \
  |  |  119|    604|  }))
  ------------------
  467|       |
  468|    604|  if G_UNLIKELY (impl == NULL)
  ------------------
  |  | 1025|    604|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|    604| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    604|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|    604|   int _g_boolean_var_;                         \
  |  |  |  | 1018|    604|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 3, False: 601]
  |  |  |  |  ------------------
  |  |  |  | 1019|    604|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|    604|   else                                         \
  |  |  |  | 1021|    604|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|    604|   _g_boolean_var_;                             \
  |  |  |  | 1023|    604|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 3, False: 601]
  |  |  ------------------
  ------------------
  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|    604|  return impl;
  477|    604|}
gthread-posix.c:g_private_get_impl:
 1050|    146|{
 1051|    146|  pthread_key_t *impl = g_atomic_pointer_get (&key->p);
  ------------------
  |  |  113|    146|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|    146|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|    146|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|    146|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|    146|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|    146|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|    146|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|    146|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|    146|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|    146|    gapg_temp_newval;                                                      \
  |  |  119|    146|  }))
  ------------------
 1052|       |
 1053|    146|  if G_UNLIKELY (impl == NULL)
  ------------------
  |  | 1025|    146|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|    146| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    146|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|    146|   int _g_boolean_var_;                         \
  |  |  |  | 1018|    146|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 4, False: 142]
  |  |  |  |  ------------------
  |  |  |  | 1019|    146|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|    146|   else                                         \
  |  |  |  | 1021|    146|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|    146|   _g_boolean_var_;                             \
  |  |  |  | 1023|    146|})
  |  |  ------------------
  |  |  |  Branch (1025:27): [True: 4, False: 142]
  |  |  ------------------
  ------------------
 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|    146|  return impl;
 1064|    146|}
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|     15|{
  700|     15|  gsize *value_location = (gsize *) location;
  701|     15|  gboolean need_init = FALSE;
  ------------------
  |  |  814|     15|#define	FALSE	(0)
  ------------------
  702|     15|  g_mutex_lock (&g_once_mutex);
  703|     15|  if (g_atomic_pointer_get (value_location) == 0)
  ------------------
  |  |  113|     15|  (G_GNUC_EXTENSION ({                                                     \
  |  |  ------------------
  |  |  |  |   54|     15|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  114|     15|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  ------------------
  |  |  |  |  765|     15|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  115|     15|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  ------------------
  |  |  |  |  238|     15|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  116|     15|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  ------------------
  |  |  |  |  238|     15|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  117|     15|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  118|     15|    gapg_temp_newval;                                                      \
  |  |  119|     15|  }))
  ------------------
  |  Branch (703:7): [True: 15, False: 0]
  ------------------
  704|     15|    {
  705|     15|      if (!g_slist_find (g_once_init_list, (void*) value_location))
  ------------------
  |  Branch (705:11): [True: 15, False: 0]
  ------------------
  706|     15|        {
  707|     15|          need_init = TRUE;
  ------------------
  |  |  818|     15|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     15|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  708|     15|          g_once_init_list = g_slist_prepend (g_once_init_list, (void*) value_location);
  709|     15|        }
  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|     15|    }
  715|     15|  g_mutex_unlock (&g_once_mutex);
  716|     15|  return need_init;
  717|     15|}
g_once_init_leave:
  739|     15|{
  740|     15|  gsize *value_location = (gsize *) location;
  741|       |
  742|     15|  g_return_if_fail (g_atomic_pointer_get (value_location) == 0);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  743|     15|  g_return_if_fail (result != 0);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  744|       |
  745|     15|  g_atomic_pointer_set (value_location, result);
  ------------------
  |  |  121|     15|  (G_GNUC_EXTENSION ({                                                      \
  |  |  ------------------
  |  |  |  |   54|     15|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  122|     15|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                \
  |  |  ------------------
  |  |  |  |  765|     15|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  123|     15|    glib_typeof ((atomic)) gaps_temp_atomic = (atomic);                     \
  |  |  ------------------
  |  |  |  |  238|     15|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  124|     15|    glib_typeof (*(atomic)) gaps_temp_newval = (newval);                    \
  |  |  ------------------
  |  |  |  |  238|     15|#define glib_typeof(t) __typeof__ (t)
  |  |  ------------------
  |  |  125|     15|    (void) (0 ? (gpointer) * (atomic) : NULL);                              \
  |  |  ------------------
  |  |  |  Branch (125:13): [Folded, False: 15]
  |  |  ------------------
  |  |  126|     15|    __atomic_store (gaps_temp_atomic, &gaps_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  127|     15|  }))
  ------------------
  746|     15|  g_mutex_lock (&g_once_mutex);
  747|     15|  g_return_if_fail (g_once_init_list != NULL);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  748|     15|  g_once_init_list = g_slist_remove (g_once_init_list, (void*) value_location);
  749|     15|  g_cond_broadcast (&g_once_cond);
  750|     15|  g_mutex_unlock (&g_once_mutex);
  751|     15|}
g_thread_n_created:
  833|      2|{
  834|      2|  return g_atomic_int_get (&g_thread_n_created_counter);
  ------------------
  |  |   96|      2|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|      2|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|      2|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|      2|    gint gaig_temp;                                                          \
  |  |   99|      2|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 2]
  |  |  ------------------
  |  |  100|      2|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|      2|    (gint) gaig_temp;                                                        \
  |  |  102|      2|  }))
  ------------------
  835|      2|}

gsignal.c:g_bit_storage_impl:
  413|      4|{
  414|      4|#if defined(__GNUC__) && (__GNUC__ >= 4) && defined(__OPTIMIZE__)
  415|      4|  return G_LIKELY (number) ?
  ------------------
  |  | 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]
  |  |  ------------------
  ------------------
  416|      4|           ((GLIB_SIZEOF_LONG * 8U - 1) ^ (guint) __builtin_clzl(number)) + 1 : 1;
  ------------------
  |  |   73|      4|#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|      4|}
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|      4|{
  400|      4|  if (nth_bit < 0 || G_UNLIKELY (nth_bit > GLIB_SIZEOF_LONG * 8))
  ------------------
  |  | 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:26): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (400:7): [True: 2, False: 2]
  ------------------
  401|      2|    nth_bit = GLIB_SIZEOF_LONG * 8;
  ------------------
  |  |   73|      2|#define GLIB_SIZEOF_LONG   8
  ------------------
  402|    130|  while (nth_bit > 0)
  ------------------
  |  Branch (402:10): [True: 128, False: 2]
  ------------------
  403|    128|    {
  404|    128|      nth_bit--;
  405|    128|      if (mask & (1UL << nth_bit))
  ------------------
  |  Branch (405:11): [True: 2, False: 126]
  ------------------
  406|      2|        return nth_bit;
  407|    128|    }
  408|      2|  return -1;
  409|      4|}
gslice.c:g_bit_storage_impl:
  413|     27|{
  414|     27|#if defined(__GNUC__) && (__GNUC__ >= 4) && defined(__OPTIMIZE__)
  415|     27|  return G_LIKELY (number) ?
  ------------------
  |  | 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]
  |  |  ------------------
  ------------------
  416|     27|           ((GLIB_SIZEOF_LONG * 8U - 1) ^ (guint) __builtin_clzl(number)) + 1 : 1;
  ------------------
  |  |   73|     27|#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|     27|}

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

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

g_closure_new_simple:
  194|      1|{
  195|      1|  GClosure *closure;
  196|      1|  gint private_size;
  197|      1|  gchar *allocated;
  198|       |
  199|      1|  g_return_val_if_fail (sizeof_closure >= sizeof (GClosure), NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  200|       |
  201|      1|  private_size = sizeof (GRealClosure) - sizeof (GClosure);
  202|       |
  203|      1|#ifdef ENABLE_VALGRIND
  204|       |  /* See comments in gtype.c about what's going on here... */
  205|      1|  if (RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|      1|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|      1|    __extension__                                                 \
  |  |  |  |  414|      1|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|      1|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|      1|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|      1|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|      1|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|      1|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|      1|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|      1|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|      1|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|      1|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|      1|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|      1|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|      1|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|      1|                     : "cc", "memory"                             \
  |  |  |  |  428|      1|                    );                                            \
  |  |  |  |  429|      1|    _zzq_result;                                                  \
  |  |  |  |  430|      1|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 1]
  |  |  ------------------
  |  | 6216|      1|                                    VG_USERREQ__RUNNING_ON_VALGRIND,  \
  |  | 6217|      1|                                    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|      1|  else
  217|      1|#endif
  218|      1|    allocated = g_malloc0 (private_size + sizeof_closure);
  219|       |
  220|      1|  closure = (GClosure *) (allocated + private_size);
  221|       |
  222|      1|  SET (closure, ref_count, 1);
  ------------------
  |  |  122|      1|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|      1|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|      1|G_STMT_START {                                                                          \
  |  |  |  |  106|      1|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|      1|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|      1|  do                                                    		                \
  |  |  |  |  109|      1|    {                                                   		                \
  |  |  |  |  110|      1|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|      1|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|      1|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|      1|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|      1|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|      1|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|      1|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|      1|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|      1|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|      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
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|      1|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (164:5): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      1|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|      1|    }                                                   		                \
  |  |  |  |  118|      1|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 1]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|      1|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  223|      1|  SET (closure, floating, TRUE);
  ------------------
  |  |  122|      1|#define SET(_closure, _field, _value)           CHANGE_FIELD (_closure, _field, =, _value, TRUE,     (void),     (void) )
  |  |  ------------------
  |  |  |  |  104|      1|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|      1|G_STMT_START {                                                                          \
  |  |  |  |  106|      1|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|      1|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|      1|  do                                                    		                \
  |  |  |  |  109|      1|    {                                                   		                \
  |  |  |  |  110|      1|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|      1|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|      1|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|      1|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|      1|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|      1|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|      1|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|      1|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|      1|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|      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
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|      1|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (164:5): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      1|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|      1|    }                                                   		                \
  |  |  |  |  118|      1|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 1]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|      1|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  224|      1|  closure->data = data;
  225|       |
  226|      1|  return closure;
  227|      1|}
g_closure_set_meta_marshal:
  349|      1|{
  350|      1|  GRealClosure *real_closure;
  351|       |
  352|      1|  g_return_if_fail (closure != 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  353|      1|  g_return_if_fail (meta_marshal != 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  354|      1|  g_return_if_fail (closure->is_invalid == FALSE);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  355|      1|  g_return_if_fail (closure->in_marshal == FALSE);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  356|       |
  357|      1|  real_closure = G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|      1|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|      1|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
  358|       |
  359|      1|  g_return_if_fail (real_closure->meta_marshal == 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  360|       |
  361|      1|  real_closure->meta_marshal = meta_marshal;
  362|      1|  real_closure->meta_marshal_data = marshal_data;
  363|      1|}
g_closure_ref:
  545|      1|{
  546|      1|  guint new_ref_count;
  547|      1|  g_return_val_if_fail (closure != NULL, NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  548|      1|  g_return_val_if_fail (closure->ref_count > 0, NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  549|      1|  g_return_val_if_fail (closure->ref_count < CLOSURE_MAX_REF_COUNT, NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  550|       |
  551|      1|  INC_ASSIGN (closure, ref_count, &new_ref_count);
  ------------------
  |  |  124|      1|#define INC_ASSIGN(_closure, _field, _newv)     CHANGE_FIELD (_closure, _field, +=,     1, TRUE,     (void), *(_newv) = )
  |  |  ------------------
  |  |  |  |  104|      1|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|      1|G_STMT_START {                                                                          \
  |  |  |  |  106|      1|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|      1|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|      1|  do                                                    		                \
  |  |  |  |  109|      1|    {                                                   		                \
  |  |  |  |  110|      1|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|      1|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|      1|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|      1|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|      1|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|      1|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|      1|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|      1|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|      1|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|      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
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|      1|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (164:5): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      1|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|      1|    }                                                   		                \
  |  |  |  |  118|      1|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 1]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|      1|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  552|      1|  g_return_val_if_fail (new_ref_count > 1, NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  553|       |
  554|      1|  return closure;
  555|      1|}
g_closure_unref:
  602|      1|{
  603|      1|  guint new_ref_count;
  604|       |
  605|      1|  g_return_if_fail (closure != 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  606|      1|  g_return_if_fail (closure->ref_count > 0);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  607|       |
  608|      1|  if (closure->ref_count == 1)	/* last unref, invalidate first */
  ------------------
  |  Branch (608:7): [True: 0, False: 1]
  ------------------
  609|      0|    g_closure_invalidate (closure);
  610|       |
  611|      1|  DEC_ASSIGN (closure, ref_count, &new_ref_count);
  ------------------
  |  |  126|      1|#define DEC_ASSIGN(_closure, _field, _newv)     CHANGE_FIELD (_closure, _field, -=,     1, TRUE,     (void), *(_newv) = )
  |  |  ------------------
  |  |  |  |  104|      1|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|      1|G_STMT_START {                                                                          \
  |  |  |  |  106|      1|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|      1|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|      1|  do                                                    		                \
  |  |  |  |  109|      1|    {                                                   		                \
  |  |  |  |  110|      1|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|      1|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|      1|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|      1|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|      1|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|      1|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|      1|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|      1|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|      1|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|      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
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|      1|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (164:5): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      1|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|      1|    }                                                   		                \
  |  |  |  |  118|      1|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 1]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|      1|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  612|       |
  613|      1|  if (new_ref_count == 0)
  ------------------
  |  Branch (613:7): [True: 0, False: 1]
  ------------------
  614|      0|    {
  615|      0|      closure_invoke_notifiers (closure, FNOTIFY);
  616|      0|      g_free (closure->notifiers);
  617|       |
  618|      0|#ifdef ENABLE_VALGRIND
  619|       |      /* See comments in gtype.c about what's going on here... */
  620|      0|      if (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]
  |  |  ------------------
  |  | 6216|      0|                                    VG_USERREQ__RUNNING_ON_VALGRIND,  \
  |  | 6217|      0|                                    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|      0|      else
  633|      0|#endif
  634|      0|        g_free (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)))
  |  |  ------------------
  ------------------
  635|      0|    }
  636|      1|}
g_closure_sink:
  686|      1|{
  687|      1|  g_return_if_fail (closure != 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  688|      1|  g_return_if_fail (closure->ref_count > 0);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  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|      1|  if (closure->floating)
  ------------------
  |  Branch (695:7): [True: 1, False: 0]
  ------------------
  696|      1|    {
  697|      1|      gboolean was_floating;
  698|      1|      SWAP (closure, floating, FALSE, &was_floating);
  ------------------
  |  |  121|      1|#define SWAP(_closure, _field, _value, _oldv)   CHANGE_FIELD (_closure, _field, =, _value, TRUE, *(_oldv) =,     (void) )
  |  |  ------------------
  |  |  |  |  104|      1|#define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW)      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  105|      1|G_STMT_START {                                                                          \
  |  |  |  |  106|      1|  ClosureInt *cunion = (ClosureInt*) _closure;                 		                \
  |  |  |  |  107|      1|  gint new_int, old_int, success;                              		                \
  |  |  |  |  108|      1|  do                                                    		                \
  |  |  |  |  109|      1|    {                                                   		                \
  |  |  |  |  110|      1|      ClosureInt tmp;                                   		                \
  |  |  |  |  111|      1|      tmp.vint = old_int = cunion->vint;                		                \
  |  |  |  |  112|      1|      _SET_OLD tmp.closure._field;                                                      \
  |  |  |  |  113|      1|      tmp.closure._field _OP _value;                      		                \
  |  |  |  |  114|      1|      _SET_NEW tmp.closure._field;                                                      \
  |  |  |  |  115|      1|      new_int = tmp.vint;                               		                \
  |  |  |  |  116|      1|      success = g_atomic_int_compare_and_exchange (&cunion->vint, old_int, new_int);    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  160|      1|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  161|      1|    gint gaicae_oldval = (oldval);                                           \
  |  |  |  |  |  |  162|      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
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  163|      1|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (163:13): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  164|      1|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (164:5): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  165|      1|  }))
  |  |  |  |  ------------------
  |  |  |  |  117|      1|    }                                                   		                \
  |  |  |  |  118|      1|  while (!success && _must_set);                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:10): [True: 0, False: 1]
  |  |  |  |  |  Branch (118:22): [True: 0, Folded]
  |  |  |  |  ------------------
  |  |  |  |  119|      1|} G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  699|       |      /* unref floating flag only once */
  700|      1|      if (was_floating)
  ------------------
  |  Branch (700:11): [True: 1, False: 0]
  ------------------
  701|      1|        g_closure_unref (closure);
  702|      1|    }
  703|      1|}
g_closure_set_marshal:
  901|      1|{
  902|      1|  g_return_if_fail (closure != 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  903|      1|  g_return_if_fail (marshal != 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  904|       |
  905|      1|  if (closure->marshal && closure->marshal != marshal)
  ------------------
  |  Branch (905:7): [True: 0, False: 1]
  |  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|      1|	       closure->marshal, marshal);
  908|      1|  else
  909|      1|    closure->marshal = marshal;
  910|      1|}
_g_closure_set_va_marshal:
  915|      1|{
  916|      1|  GRealClosure *real_closure;
  917|       |
  918|      1|  g_return_if_fail (closure != 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  919|      1|  g_return_if_fail (marshal != 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  920|       |
  921|      1|  real_closure = G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|      1|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|      1|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
  922|       |
  923|      1|  if (real_closure->va_marshal && real_closure->va_marshal != marshal)
  ------------------
  |  Branch (923:7): [True: 0, False: 1]
  |  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|      1|	       real_closure->va_marshal, marshal);
  926|      1|  else
  927|      1|    real_closure->va_marshal = marshal;
  928|      1|}
_g_closure_is_void:
 1068|      1|{
 1069|      1|  GRealClosure *real_closure;
 1070|      1|  GTypeClass *class;
 1071|      1|  gpointer callback;
 1072|      1|  GType itype;
 1073|      1|  guint offset;
 1074|       |
 1075|      1|  if (closure->is_invalid)
  ------------------
  |  Branch (1075:7): [True: 0, False: 1]
  ------------------
 1076|      0|    return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1077|       |
 1078|      1|  real_closure = G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|      1|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|      1|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
 1079|       |
 1080|      1|  if (real_closure->meta_marshal == g_type_iface_meta_marshal)
  ------------------
  |  Branch (1080:7): [True: 0, False: 1]
  ------------------
 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|      1|  else if (real_closure->meta_marshal == g_type_class_meta_marshal)
  ------------------
  |  Branch (1089:12): [True: 1, False: 0]
  ------------------
 1090|      1|    {
 1091|      1|      offset = GPOINTER_TO_UINT (real_closure->meta_marshal_data);
  ------------------
  |  |   99|      1|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 1092|       |
 1093|      1|      class = G_TYPE_INSTANCE_GET_CLASS (instance, itype, GTypeClass);
  ------------------
  |  |  527|      1|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2309|      1|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  ------------------
  ------------------
 1094|      1|      callback = G_STRUCT_MEMBER (gpointer, class, offset);
  ------------------
  |  |  862|      1|    (*(member_type*) G_STRUCT_MEMBER_P ((struct_p), (struct_offset)))
  |  |  ------------------
  |  |  |  |  860|      1|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
 1095|      1|      return callback == NULL;
 1096|      1|    }
 1097|       |
 1098|      0|  return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1099|      1|}
g_signal_type_cclosure_new:
 1144|      1|{
 1145|      1|  GClosure *closure;
 1146|       |  
 1147|      1|  g_return_val_if_fail (G_TYPE_IS_CLASSED (itype) || G_TYPE_IS_INTERFACE (itype), NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1148|      1|  g_return_val_if_fail (struct_offset >= sizeof (GTypeClass), NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1149|       |  
 1150|      1|  closure = g_closure_new_simple (sizeof (GClosure), (gpointer) itype);
 1151|      1|  if (G_TYPE_IS_INTERFACE (itype))
  ------------------
  |  |  293|      1|#define G_TYPE_IS_INTERFACE(type)               (G_TYPE_FUNDAMENTAL (type) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   38|      1|#define G_TYPE_FUNDAMENTAL(type)	(g_type_fundamental (type))
  |  |  ------------------
  |  |               #define G_TYPE_IS_INTERFACE(type)               (G_TYPE_FUNDAMENTAL (type) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|      1|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (293:49): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 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|      1|  else
 1157|      1|    {
 1158|      1|      g_closure_set_meta_marshal (closure, GUINT_TO_POINTER (struct_offset), g_type_class_meta_marshal);
  ------------------
  |  |  102|      1|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
 1159|      1|      g_closure_set_meta_va_marshal (closure, g_type_class_meta_marshalv);
 1160|      1|    }
 1161|      1|  return closure;
 1162|      1|}
gclosure.c:g_closure_set_meta_va_marshal:
  308|      1|{
  309|      1|  GRealClosure *real_closure;
  310|       |
  311|      1|  g_return_if_fail (closure != 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  312|      1|  g_return_if_fail (va_meta_marshal != 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  313|      1|  g_return_if_fail (closure->is_invalid == FALSE);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  314|      1|  g_return_if_fail (closure->in_marshal == FALSE);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  315|       |
  316|      1|  real_closure = G_REAL_CLOSURE (closure);
  ------------------
  |  |   63|      1|  ((GRealClosure *)G_STRUCT_MEMBER_P ((_c), -G_STRUCT_OFFSET (GRealClosure, closure)))
  |  |  ------------------
  |  |  |  |  860|      1|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
  317|       |
  318|      1|  g_return_if_fail (real_closure->meta_marshal != 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  319|       |
  320|      1|  real_closure->va_meta_marshal = va_meta_marshal;
  321|      1|}

_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_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|      1|{
  657|      1|  GType oclass_type, parent_type;
  658|       |
  659|      1|  g_return_if_fail (G_IS_OBJECT_CLASS (class));
  ------------------
  |  |  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|      5|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1]
  |  |  |  |  |  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  660|      1|  g_return_if_fail (property_id > 0);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  661|       |
  662|      1|  oclass_type = G_OBJECT_CLASS_TYPE (class);
  ------------------
  |  |  119|      1|#define G_OBJECT_CLASS_TYPE(class)  (G_TYPE_FROM_CLASS (class))
  |  |  ------------------
  |  |  |  |  613|      1|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
  663|      1|  parent_type = g_type_parent (oclass_type);
  664|       |
  665|      1|  if (CLASS_HAS_DERIVED_CLASS (class))
  ------------------
  |  |  151|      1|    ((class)->flags & CLASS_HAS_DERIVED_CLASS_FLAG)
  |  |  ------------------
  |  |  |  |  149|      1|#define CLASS_HAS_DERIVED_CLASS_FLAG 0x2
  |  |  ------------------
  |  |  |  Branch (151:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  666|      1|    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|      1|  (void) validate_and_install_class_property (class,
  669|      1|                                              oclass_type,
  670|      1|                                              parent_type,
  671|      1|                                              property_id,
  672|      1|                                              pspec);
  673|      1|}
_g_object_has_signal_handler:
 1067|      1|{
 1068|      1|#ifdef HAVE_OPTIONAL_FLAGS
 1069|      1|  return (object_get_optional_flags (object) & OPTIONAL_FLAG_HAS_SIGNAL_HANDLER) != 0;
  ------------------
  |  |  166|      1|#define OPTIONAL_FLAG_HAS_SIGNAL_HANDLER 1<<1 /* Set if object ever had a signal handler */
  ------------------
 1070|       |#else
 1071|       |  return TRUE;
 1072|       |#endif
 1073|      1|}
g_object_new:
 1773|      2|{
 1774|      2|  GObject *object;
 1775|      2|  va_list var_args;
 1776|       |  
 1777|       |  /* short circuit for calls supplying no properties */
 1778|      2|  if (!first_property_name)
  ------------------
  |  Branch (1778:7): [True: 2, False: 0]
  ------------------
 1779|      2|    return g_object_new_with_properties (object_type, 0, NULL, NULL);
 1780|       |
 1781|      2|  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|      2|}
g_object_new_with_properties:
 2066|      2|{
 2067|      2|  GObjectClass *class, *unref_class = NULL;
 2068|      2|  GObject *object;
 2069|       |
 2070|      2|  g_return_val_if_fail (G_TYPE_IS_OBJECT (object_type), 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2071|       |
 2072|       |  /* Try to avoid thrashing the ref_count if we don't need to (since
 2073|       |   * it's a locked operation).
 2074|       |   */
 2075|      2|  class = g_type_class_peek_static (object_type);
 2076|       |
 2077|      2|  if (class == NULL)
  ------------------
  |  Branch (2077:7): [True: 2, False: 0]
  ------------------
 2078|      2|    class = unref_class = g_type_class_ref (object_type);
 2079|       |
 2080|      2|  if (n_properties > 0)
  ------------------
  |  Branch (2080:7): [True: 0, False: 2]
  ------------------
 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|      2|  else
 2108|      2|    object = g_object_new_internal (class, NULL, 0);
 2109|       |
 2110|      2|  if (unref_class != NULL)
  ------------------
  |  Branch (2110:7): [True: 2, False: 0]
  ------------------
 2111|      2|    g_type_class_unref (unref_class);
 2112|       |
 2113|      2|  return object;
 2114|      2|}
g_object_ref:
 3384|      1|{
 3385|      1|  GObject *object = _object;
 3386|      1|  gint old_val;
 3387|      1|  gboolean object_already_finalized;
 3388|       |
 3389|      1|  g_return_val_if_fail (G_IS_OBJECT (object), NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3390|       |  
 3391|      1|  old_val = g_atomic_int_add (&object->ref_count, 1);
  ------------------
  |  |  167|      1|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  168|      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
  |  |  ------------------
  |  |  169|      1|    (void) (0 ? *(atomic) ^ (val) : 1);                                      \
  |  |  ------------------
  |  |  |  Branch (169:13): [Folded, False: 1]
  |  |  ------------------
  |  |  170|      1|    (gint) __atomic_fetch_add ((atomic), (val), __ATOMIC_SEQ_CST);           \
  |  |  171|      1|  }))
  ------------------
 3392|      1|  object_already_finalized = (old_val <= 0);
 3393|      1|  g_return_val_if_fail (!object_already_finalized, NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3394|       |
 3395|      1|  if (old_val == 1 && OBJECT_HAS_TOGGLE_REF (object))
  ------------------
  |  |  138|      1|    ((g_datalist_get_flags (&(object)->qdata) & OBJECT_HAS_TOGGLE_REF_FLAG) != 0)
  |  |  ------------------
  |  |  |  |  136|      1|#define OBJECT_HAS_TOGGLE_REF_FLAG 0x1
  |  |  ------------------
  |  |  |  Branch (138:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (3395:7): [True: 1, False: 0]
  ------------------
 3396|      0|    toggle_refs_notify (object, FALSE);
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 3397|       |
 3398|      1|  TRACE (GOBJECT_OBJECT_REF(object,G_TYPE_FROM_INSTANCE(object),old_val));
 3399|       |
 3400|      1|  return object;
 3401|      1|}
g_object_unref:
 3417|      3|{
 3418|      3|  GObject *object = _object;
 3419|      3|  gint old_ref;
 3420|       |  
 3421|      3|  g_return_if_fail (G_IS_OBJECT (object));
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3422|       |  
 3423|       |  /* here we want to atomically do: if (ref_count>1) { ref_count--; return; } */
 3424|      3| retry_atomic_decrement1:
 3425|      3|  old_ref = g_atomic_int_get (&object->ref_count);
  ------------------
  |  |   96|      3|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      3|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|      3|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|      3|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|      3|    gint gaig_temp;                                                          \
  |  |   99|      3|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 3]
  |  |  ------------------
  |  |  100|      3|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|      3|    (gint) gaig_temp;                                                        \
  |  |  102|      3|  }))
  ------------------
 3426|      3|  if (old_ref > 1)
  ------------------
  |  Branch (3426:7): [True: 1, False: 2]
  ------------------
 3427|      1|    {
 3428|       |      /* valid if last 2 refs are owned by this call to unref and the toggle_ref */
 3429|      1|      gboolean has_toggle_ref = OBJECT_HAS_TOGGLE_REF (object);
  ------------------
  |  |  138|      1|    ((g_datalist_get_flags (&(object)->qdata) & OBJECT_HAS_TOGGLE_REF_FLAG) != 0)
  |  |  ------------------
  |  |  |  |  136|      1|#define OBJECT_HAS_TOGGLE_REF_FLAG 0x1
  |  |  ------------------
  ------------------
 3430|       |
 3431|      1|      if (!g_atomic_int_compare_and_exchange ((int *)&object->ref_count, old_ref, old_ref - 1))
  ------------------
  |  |  160|      1|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  161|      1|    gint gaicae_oldval = (oldval);                                           \
  |  |  162|      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
  |  |  ------------------
  |  |  163|      1|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  ------------------
  |  |  |  Branch (163:13): [Folded, False: 1]
  |  |  ------------------
  |  |  164|      1|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (164:5): [True: 1, False: 0]
  |  |  ------------------
  |  |  165|      1|  }))
  ------------------
  |  Branch (3431:11): [True: 0, False: 1]
  ------------------
 3432|      0|	goto retry_atomic_decrement1;
 3433|       |
 3434|      1|      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|      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: 1, False: 0]
  |  Branch (3437:27): [True: 0, False: 1]
  ------------------
 3438|      0|	toggle_refs_notify (object, TRUE);
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3439|      1|    }
 3440|      2|  else
 3441|      2|    {
 3442|      2|      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|      2|      weak_locations = g_datalist_id_get_data (&object->qdata, quark_weak_locations);
 3454|       |
 3455|      2|      if (weak_locations != NULL)
  ------------------
  |  Branch (3455:11): [True: 0, False: 2]
  ------------------
 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|      2|      TRACE (GOBJECT_OBJECT_DISPOSE(object,G_TYPE_FROM_INSTANCE(object), 1));
 3486|      2|      G_OBJECT_GET_CLASS (object)->dispose (object);
  ------------------
  |  |   91|      2|#define G_OBJECT_GET_CLASS(object)  (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  527|      2|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|      2|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3487|      2|      TRACE (GOBJECT_OBJECT_DISPOSE_END(object,G_TYPE_FROM_INSTANCE(object), 1));
 3488|       |
 3489|       |      /* may have been re-referenced meanwhile */
 3490|      2|    retry_atomic_decrement2:
 3491|      2|      old_ref = g_atomic_int_get ((int *)&object->ref_count);
  ------------------
  |  |   96|      2|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|      2|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|      2|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|      2|    gint gaig_temp;                                                          \
  |  |   99|      2|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 2]
  |  |  ------------------
  |  |  100|      2|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|      2|    (gint) gaig_temp;                                                        \
  |  |  102|      2|  }))
  ------------------
 3492|      2|      if (old_ref > 1)
  ------------------
  |  Branch (3492:11): [True: 0, False: 2]
  ------------------
 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|      2|      g_datalist_id_set_data (&object->qdata, quark_closure_array, NULL);
  ------------------
  |  |   99|      2|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
 3511|      2|      g_signal_handlers_destroy (object);
 3512|      2|      g_datalist_id_set_data (&object->qdata, quark_weak_refs, NULL);
  ------------------
  |  |   99|      2|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
 3513|       |      
 3514|       |      /* decrement the last reference */
 3515|      2|      old_ref = g_atomic_int_add (&object->ref_count, -1);
  ------------------
  |  |  167|      2|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  168|      2|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|      2|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  169|      2|    (void) (0 ? *(atomic) ^ (val) : 1);                                      \
  |  |  ------------------
  |  |  |  Branch (169:13): [Folded, False: 2]
  |  |  ------------------
  |  |  170|      2|    (gint) __atomic_fetch_add ((atomic), (val), __ATOMIC_SEQ_CST);           \
  |  |  171|      2|  }))
  ------------------
 3516|      2|      g_return_if_fail (old_ref > 0);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3517|       |
 3518|      2|      TRACE (GOBJECT_OBJECT_UNREF(object,G_TYPE_FROM_INSTANCE(object),old_ref));
 3519|       |
 3520|       |      /* may have been re-referenced meanwhile */
 3521|      2|      if (G_LIKELY (old_ref == 1))
  ------------------
  |  | 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]
  |  |  ------------------
  ------------------
 3522|      2|	{
 3523|      2|	  TRACE (GOBJECT_OBJECT_FINALIZE(object,G_TYPE_FROM_INSTANCE(object)));
 3524|      2|          G_OBJECT_GET_CLASS (object)->finalize (object);
  ------------------
  |  |   91|      2|#define G_OBJECT_GET_CLASS(object)  (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  527|      2|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|      2|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3525|       |
 3526|      2|	  TRACE (GOBJECT_OBJECT_FINALIZE_END(object,G_TYPE_FROM_INSTANCE(object)));
 3527|       |
 3528|      2|          GOBJECT_IF_DEBUG (OBJECTS,
  ------------------
  |  |   37|      2|#define GOBJECT_IF_DEBUG(debug_type, code_block) \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |   38|      2|G_STMT_START { \
  |  |   39|      2|    if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type) \
  |  |  ------------------
  |  |  |  Branch (39:9): [True: 0, False: 2]
  |  |  ------------------
  |  |   40|      2|      { code_block; } \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   41|      2|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3529|      2|	    {
 3530|      2|              gboolean was_present;
 3531|       |
 3532|       |              /* catch objects not chaining finalize handlers */
 3533|      2|              G_LOCK (debug_objects);
 3534|      2|              was_present = g_hash_table_remove (debug_objects_ht, object);
 3535|      2|              G_UNLOCK (debug_objects);
 3536|       |
 3537|      2|              if (was_present)
 3538|      2|                g_critical ("Object %p of type %s not finalized correctly.",
 3539|      2|                            object, G_OBJECT_TYPE_NAME (object));
 3540|      2|	    });
 3541|      2|          g_type_free_instance ((GTypeInstance*) object);
 3542|      2|	}
 3543|      2|    }
 3544|      3|}
g_value_get_object:
 4164|      1|{
 4165|      1|  g_return_val_if_fail (G_VALUE_HOLDS_OBJECT (value), NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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|      5|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1]
  |  |  |  |  |  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4166|       |  
 4167|      1|  return value->data[0].v_pointer;
 4168|      1|}
gobject.c:g_object_base_class_init:
  462|      5|{
  463|      5|  GObjectClass *pclass = g_type_class_peek_parent (class);
  464|       |
  465|       |  /* Don't inherit HAS_DERIVED_CLASS flag from parent class */
  466|      5|  class->flags &= ~CLASS_HAS_DERIVED_CLASS_FLAG;
  ------------------
  |  |  149|      5|#define CLASS_HAS_DERIVED_CLASS_FLAG 0x2
  ------------------
  467|       |
  468|      5|  if (pclass)
  ------------------
  |  Branch (468:7): [True: 4, False: 1]
  ------------------
  469|      4|    pclass->flags |= CLASS_HAS_DERIVED_CLASS_FLAG;
  ------------------
  |  |  149|      4|#define CLASS_HAS_DERIVED_CLASS_FLAG 0x2
  ------------------
  470|       |
  471|       |  /* reset instance specific fields and methods that don't get inherited */
  472|      5|  class->construct_properties = pclass ? g_slist_copy (pclass->construct_properties) : NULL;
  ------------------
  |  Branch (472:33): [True: 4, False: 1]
  ------------------
  473|      5|  class->get_property = NULL;
  474|       |  class->set_property = NULL;
  475|      5|}
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|      2|{
 2340|       |  /* empty default impl to allow unconditional upchaining */
 2341|      2|}
gobject.c:g_object_real_dispose:
 1171|      2|{
 1172|      2|  g_signal_handlers_destroy (object);
 1173|      2|  g_datalist_id_set_data (&object->qdata, quark_closure_array, NULL);
  ------------------
  |  |   99|      2|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
 1174|       |  g_datalist_id_set_data (&object->qdata, quark_weak_refs, NULL);
  ------------------
  |  |   99|      2|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
 1175|      2|}
gobject.c:g_object_finalize:
 1179|      2|{
 1180|      2|  if (object_in_construction (object))
  ------------------
  |  Branch (1180:7): [True: 0, False: 2]
  ------------------
 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|      2|  g_datalist_clear (&object->qdata);
 1187|       |  
 1188|      2|  GOBJECT_IF_DEBUG (OBJECTS,
  ------------------
  |  |   37|      2|#define GOBJECT_IF_DEBUG(debug_type, code_block) \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |   38|      2|G_STMT_START { \
  |  |   39|      2|    if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type) \
  |  |  ------------------
  |  |  |  Branch (39:9): [True: 0, False: 2]
  |  |  ------------------
  |  |   40|      2|      { code_block; } \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 0]
  |  |  |  Branch (40:9): [True: 0, False: 0]
  |  |  |  Branch (40:9): [Folded, False: 0]
  |  |  ------------------
  |  |   41|      2|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1189|      2|    {
 1190|      2|      G_LOCK (debug_objects);
 1191|      2|      g_assert (g_hash_table_contains (debug_objects_ht, object));
 1192|      2|      g_hash_table_remove (debug_objects_ht, object);
 1193|      2|      debug_objects_count--;
 1194|      2|      G_UNLOCK (debug_objects);
 1195|      2|    });
 1196|      2|}
gobject.c:object_in_construction:
 1085|      2|{
 1086|      2|#ifdef HAVE_OPTIONAL_FLAGS
 1087|      2|  return (object_get_optional_flags (object) & OPTIONAL_FLAG_IN_CONSTRUCTION) != 0;
  ------------------
  |  |  165|      2|#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|      2|}
gobject.c:g_object_dispatch_properties_changed:
 1202|      1|{
 1203|      1|  guint i;
 1204|       |
 1205|      2|  for (i = 0; i < n_pspecs; i++)
  ------------------
  |  Branch (1205:15): [True: 1, False: 1]
  ------------------
 1206|      1|    g_signal_emit (object, gobject_signals[NOTIFY], g_param_spec_get_name_quark (pspecs[i]), pspecs[i]);
 1207|      1|}
gobject.c:object_interface_check_properties:
 1583|      2|{
 1584|      2|  GTypeInterface *iface_class = g_iface;
 1585|      2|  GObjectClass *class;
 1586|      2|  GType iface_type = iface_class->g_type;
 1587|      2|  GParamSpec **pspecs;
 1588|      2|  guint n;
 1589|       |
 1590|      2|  class = g_type_class_ref (iface_class->g_instance_type);
 1591|       |
 1592|      2|  if (class == NULL)
  ------------------
  |  Branch (1592:7): [True: 0, False: 2]
  ------------------
 1593|      0|    return;
 1594|       |
 1595|      2|  if (!G_IS_OBJECT_CLASS (class))
  ------------------
  |  |   82|      2|#define G_IS_OBJECT_CLASS(class)    (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_OBJECT))
  |  |  ------------------
  |  |  |  |  566|      2|#define G_TYPE_CHECK_CLASS_TYPE(g_class, g_type)                (_G_TYPE_CCT ((g_class), (g_type)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2323|      2|#  define _G_TYPE_CCT(cp, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2324|      2|  GTypeClass *__class = (GTypeClass*) cp; GType __t = gt; gboolean __r; \
  |  |  |  |  |  | 2325|      2|  if (!__class) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2325:7): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2326|      2|    __r = FALSE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2327|      2|  else if (__class->g_type == __t) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2327:12): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2328|      2|    __r = TRUE; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 2329|      2|  else \
  |  |  |  |  |  | 2330|      2|    __r = g_type_check_class_is_a (__class, __t); \
  |  |  |  |  |  | 2331|      2|  __r; \
  |  |  |  |  |  | 2332|      2|}))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1595:7): [True: 0, False: 2]
  ------------------
 1596|      0|    goto out;
 1597|       |
 1598|      2|  pspecs = g_param_spec_pool_list (pspec_pool, iface_type, &n);
 1599|       |
 1600|      2|  while (n--)
  ------------------
  |  Branch (1600:10): [True: 0, False: 2]
  ------------------
 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|      2|  g_free (pspecs);
 1727|       |
 1728|      2| out:
 1729|      2|  g_type_class_unref (class);
 1730|      2|}
gobject.c:validate_and_install_class_property:
  607|      1|{
  608|      1|  if (!validate_pspec_to_install (pspec))
  ------------------
  |  Branch (608:7): [True: 0, False: 1]
  ------------------
  609|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  610|       |
  611|      1|  if (pspec->flags & G_PARAM_WRITABLE)
  ------------------
  |  Branch (611:7): [True: 1, False: 0]
  ------------------
  612|      1|    g_return_val_if_fail (class->set_property != NULL, FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  613|      1|  if (pspec->flags & G_PARAM_READABLE)
  ------------------
  |  Branch (613:7): [True: 1, False: 0]
  ------------------
  614|      1|    g_return_val_if_fail (class->get_property != NULL, FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  615|       |
  616|      1|  class->flags |= CLASS_HAS_PROPS_FLAG;
  ------------------
  |  |  141|      1|#define CLASS_HAS_PROPS_FLAG 0x1
  ------------------
  617|      1|  if (install_property_internal (oclass_type, property_id, pspec))
  ------------------
  |  Branch (617:7): [True: 1, False: 0]
  ------------------
  618|      1|    {
  619|      1|      if (pspec->flags & (G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY))
  ------------------
  |  Branch (619:11): [True: 1, False: 0]
  ------------------
  620|      1|        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|      1|      pspec = g_param_spec_pool_lookup (pspec_pool, pspec->name, parent_type, TRUE);
  ------------------
  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  626|      1|      if (pspec && pspec->flags & (G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY))
  ------------------
  |  Branch (626:11): [True: 0, False: 1]
  |  Branch (626:20): [True: 0, False: 0]
  ------------------
  627|      0|        class->construct_properties = g_slist_remove (class->construct_properties, pspec);
  628|       |
  629|      1|      return TRUE;
  ------------------
  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  630|      1|    }
  631|      0|  else
  632|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  633|      1|}
gobject.c:validate_pspec_to_install:
  586|      1|{
  587|      1|  g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  588|      1|  g_return_val_if_fail (PARAM_SPEC_PARAM_ID (pspec) == 0, FALSE);	/* paranoid */
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  589|       |
  590|      1|  g_return_val_if_fail (pspec->flags & (G_PARAM_READABLE | G_PARAM_WRITABLE), FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  591|       |
  592|      1|  if (pspec->flags & G_PARAM_CONSTRUCT)
  ------------------
  |  Branch (592:7): [True: 1, False: 0]
  ------------------
  593|      1|    g_return_val_if_fail ((pspec->flags & G_PARAM_CONSTRUCT_ONLY) == 0, FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  594|       |
  595|      1|  if (pspec->flags & (G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY))
  ------------------
  |  Branch (595:7): [True: 1, False: 0]
  ------------------
  596|      1|    g_return_val_if_fail (pspec->flags & G_PARAM_WRITABLE, FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  597|       |
  598|      1|  return TRUE;
  ------------------
  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  599|      1|}
gobject.c:install_property_internal:
  569|      1|{
  570|      1|  if (g_param_spec_pool_lookup (pspec_pool, pspec->name, g_type, FALSE))
  ------------------
  |  |  814|      1|#define	FALSE	(0)
  ------------------
  |  Branch (570:7): [True: 0, False: 1]
  ------------------
  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|      1|  g_param_spec_ref_sink (pspec);
  579|      1|  PARAM_SPEC_SET_PARAM_ID (pspec, property_id);
  ------------------
  |  |  134|      1|#define	PARAM_SPEC_SET_PARAM_ID(pspec, id)	((pspec)->param_id = (id))
  ------------------
  580|      1|  g_param_spec_pool_insert (pspec_pool, pspec, g_type);
  581|      1|  return TRUE;
  ------------------
  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  582|      1|}
gobject.c:object_get_optional_flags:
 1036|      3|{
 1037|      3|#ifdef HAVE_OPTIONAL_FLAGS
 1038|      3|  GObjectReal *real = (GObjectReal *)object;
 1039|      3|  return (guint)g_atomic_int_get (&real->optional_flags);
  ------------------
  |  |   96|      3|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      3|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|      3|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|      3|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|      3|    gint gaig_temp;                                                          \
  |  |   99|      3|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 3]
  |  |  ------------------
  |  |  100|      3|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|      3|    (gint) gaig_temp;                                                        \
  |  |  102|      3|  }))
  ------------------
 1040|       |#else
 1041|       |  return 0;
 1042|       |#endif
 1043|      3|}
gobject.c:g_object_init:
 1116|      2|{
 1117|      2|  object->ref_count = 1;
 1118|      2|  object->qdata = NULL;
 1119|       |
 1120|      2|  if (CLASS_HAS_PROPS (class))
  ------------------
  |  |  143|      2|    ((class)->flags & CLASS_HAS_PROPS_FLAG)
  |  |  ------------------
  |  |  |  |  141|      2|#define CLASS_HAS_PROPS_FLAG 0x1
  |  |  ------------------
  |  |  |  Branch (143:5): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 1121|      1|    {
 1122|       |      /* freeze object's notification queue, g_object_newv() preserves pairedness */
 1123|      1|      g_object_notify_queue_freeze (object, FALSE);
  ------------------
  |  |  814|      1|#define	FALSE	(0)
  ------------------
 1124|      1|    }
 1125|       |
 1126|      2|  if (CLASS_HAS_CUSTOM_CONSTRUCTOR (class))
  ------------------
  |  |  145|      2|    ((class)->constructor != g_object_constructor)
  |  |  ------------------
  |  |  |  Branch (145:5): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 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|      2|  GOBJECT_IF_DEBUG (OBJECTS,
  ------------------
  |  |   37|      2|#define GOBJECT_IF_DEBUG(debug_type, code_block) \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |   38|      2|G_STMT_START { \
  |  |   39|      2|    if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type) \
  |  |  ------------------
  |  |  |  Branch (39:9): [True: 0, False: 2]
  |  |  ------------------
  |  |   40|      2|      { code_block; } \
  |  |   41|      2|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1133|      2|    {
 1134|      2|      G_LOCK (debug_objects);
 1135|      2|      debug_objects_count++;
 1136|      2|      g_hash_table_add (debug_objects_ht, object);
 1137|      2|      G_UNLOCK (debug_objects);
 1138|      2|    });
 1139|      2|}
gobject.c:g_object_notify_queue_freeze:
  274|      1|{
  275|      1|  GObjectNotifyQueue *nqueue;
  276|       |
  277|      1|  G_LOCK(notify_lock);
  ------------------
  |  |  135|      1|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|      1|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  278|      1|  nqueue = g_datalist_id_get_data (&object->qdata, quark_notify_queue);
  279|      1|  if (!nqueue)
  ------------------
  |  Branch (279:7): [True: 1, False: 0]
  ------------------
  280|      1|    {
  281|      1|      if (conditional)
  ------------------
  |  Branch (281:11): [True: 0, False: 1]
  ------------------
  282|      0|        {
  283|      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
  |  |  ------------------
  ------------------
  284|      0|          return NULL;
  285|      0|        }
  286|       |
  287|      1|      nqueue = g_slice_new0 (GObjectNotifyQueue);
  ------------------
  |  |   52|      1|  (type *) (G_GNUC_EXTENSION ({                                 \
  |  |  ------------------
  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   53|      1|    gsize __s = sizeof (type);                                  \
  |  |   54|      1|    gpointer __p;                                               \
  |  |   55|      1|    __p = g_slice_alloc (__s);                                  \
  |  |   56|      1|    memset (__p, 0, __s);                                       \
  |  |   57|      1|    __p;                                                        \
  |  |   58|      1|  }))
  ------------------
  288|      1|      g_datalist_id_set_data_full (&object->qdata, quark_notify_queue,
  289|      1|                                   nqueue, g_object_notify_queue_free);
  290|      1|    }
  291|       |
  292|      1|  if (nqueue->freeze_count >= 65535)
  ------------------
  |  Branch (292:7): [True: 0, False: 1]
  ------------------
  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|      1|               " called g_object_freeze_notify() too often."
  295|      1|               " Forgot to call g_object_thaw_notify() or infinite loop",
  296|      1|               G_OBJECT_TYPE_NAME (object), object);
  297|      1|  else
  298|      1|    nqueue->freeze_count++;
  299|      1|  G_UNLOCK(notify_lock);
  ------------------
  |  |  136|      1|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|      1|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  300|       |
  301|      1|  return nqueue;
  302|      1|}
gobject.c:g_object_notify_queue_free:
  264|      1|{
  265|      1|  GObjectNotifyQueue *nqueue = data;
  266|       |
  267|      1|  g_slist_free (nqueue->pspecs);
  268|      1|  g_slice_free (GObjectNotifyQueue, nqueue);
  ------------------
  |  |   79|      1|#define g_slice_free(type, mem)                                 \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |   80|      1|G_STMT_START {                                                  \
  |  |   81|      1|  if (1) g_slice_free1 (sizeof (type), (mem));			\
  |  |  ------------------
  |  |  |  Branch (81:7): [True: 1, Folded]
  |  |  ------------------
  |  |   82|      1|  else   (void) ((type*) 0 == (mem)); 				\
  |  |   83|      1|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  269|      1|}
gobject.c:get_notify_pspec:
 1260|      1|{
 1261|      1|  GParamSpec *redirected;
 1262|       |
 1263|       |  /* we don't notify on non-READABLE parameters */
 1264|      1|  if (~pspec->flags & G_PARAM_READABLE)
  ------------------
  |  Branch (1264:7): [True: 0, False: 1]
  ------------------
 1265|      0|    return NULL;
 1266|       |
 1267|       |  /* if the paramspec is redirected, notify on the target */
 1268|      1|  redirected = g_param_spec_get_redirect_target (pspec);
 1269|      1|  if (redirected != NULL)
  ------------------
  |  Branch (1269:7): [True: 0, False: 1]
  ------------------
 1270|      0|    return redirected;
 1271|       |
 1272|       |  /* else, notify normally */
 1273|      1|  return pspec;
 1274|      1|}
gobject.c:g_object_notify_queue_add:
  349|      1|{
  350|      1|  G_LOCK(notify_lock);
  ------------------
  |  |  135|      1|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|      1|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  351|       |
  352|      1|  g_assert (nqueue->n_pspecs < 65535);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  353|       |
  354|      1|  if (g_slist_find (nqueue->pspecs, pspec) == NULL)
  ------------------
  |  Branch (354:7): [True: 1, False: 0]
  ------------------
  355|      1|    {
  356|      1|      nqueue->pspecs = g_slist_prepend (nqueue->pspecs, pspec);
  357|      1|      nqueue->n_pspecs++;
  358|      1|    }
  359|       |
  360|      1|  G_UNLOCK(notify_lock);
  ------------------
  |  |  136|      1|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|      1|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  361|      1|}
gobject.c:g_object_notify_queue_thaw:
  307|      1|{
  308|      1|  GParamSpec *pspecs_mem[16], **pspecs, **free_me = NULL;
  309|      1|  GSList *slist;
  310|      1|  guint n_pspecs = 0;
  311|       |
  312|      1|  g_return_if_fail (g_atomic_int_get(&object->ref_count) > 0);
  ------------------
  |  |  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|      3|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 1]
  |  |  |  |  |  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  313|       |
  314|      1|  G_LOCK(notify_lock);
  ------------------
  |  |  135|      1|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|      1|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  315|       |
  316|       |  /* Just make sure we never get into some nasty race condition */
  317|      1|  if (G_UNLIKELY(nqueue->freeze_count == 0)) {
  ------------------
  |  | 1025|      1|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      1| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      1|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      1|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1019|      1|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      1|   else                                         \
  |  |  |  | 1021|      1|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      1|   _g_boolean_var_;                             \
  |  |  |  | 1023|      1|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  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|      1|  nqueue->freeze_count--;
  325|      1|  if (nqueue->freeze_count) {
  ------------------
  |  Branch (325:7): [True: 0, False: 1]
  ------------------
  326|      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
  |  |  ------------------
  ------------------
  327|      0|    return;
  328|      0|  }
  329|       |
  330|      1|  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: 1]
  ------------------
  331|       |
  332|      2|  for (slist = nqueue->pspecs; slist; slist = slist->next)
  ------------------
  |  Branch (332:32): [True: 1, False: 1]
  ------------------
  333|      1|    {
  334|      1|      pspecs[n_pspecs++] = slist->data;
  335|      1|    }
  336|      1|  g_datalist_id_set_data (&object->qdata, quark_notify_queue, NULL);
  ------------------
  |  |   99|      1|     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
  ------------------
  337|       |
  338|      1|  G_UNLOCK(notify_lock);
  ------------------
  |  |  136|      1|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  ------------------
  |  |  |  |  109|      1|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  ------------------
  ------------------
  339|       |
  340|      1|  if (n_pspecs)
  ------------------
  |  Branch (340:7): [True: 1, False: 0]
  ------------------
  341|      1|    G_OBJECT_GET_CLASS (object)->dispatch_properties_changed (object, n_pspecs, pspecs);
  ------------------
  |  |   91|      1|#define G_OBJECT_GET_CLASS(object)  (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass))
  |  |  ------------------
  |  |  |  |  527|      1|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|      1|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  342|      1|  g_free (free_me);
  343|      1|}
gobject.c:g_object_new_internal:
 1932|      2|{
 1933|      2|  GObjectNotifyQueue *nqueue = NULL;
 1934|      2|  GObject *object;
 1935|       |
 1936|      2|  if G_UNLIKELY (CLASS_HAS_CUSTOM_CONSTRUCTOR (class))
  ------------------
  |  | 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]
  |  |  ------------------
  ------------------
 1937|      0|    return g_object_new_with_custom_constructor (class, params, n_params);
 1938|       |
 1939|      2|  object = (GObject *) g_type_create_instance (class->g_type_class.g_type);
 1940|       |
 1941|      2|  if (CLASS_HAS_PROPS (class))
  ------------------
  |  |  143|      2|    ((class)->flags & CLASS_HAS_PROPS_FLAG)
  |  |  ------------------
  |  |  |  |  141|      2|#define CLASS_HAS_PROPS_FLAG 0x1
  |  |  ------------------
  |  |  |  Branch (143:5): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 1942|      1|    {
 1943|      1|      GSList *node;
 1944|       |
 1945|       |      /* This will have been setup in g_object_init() */
 1946|      1|      nqueue = g_datalist_id_get_data (&object->qdata, quark_notify_queue);
 1947|      1|      g_assert (nqueue != NULL);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 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|      2|      for (node = class->construct_properties; node; node = node->next)
  ------------------
  |  Branch (1953:48): [True: 1, False: 1]
  ------------------
 1954|      1|        {
 1955|      1|          const GValue *value;
 1956|      1|          GParamSpec *pspec;
 1957|      1|          guint j;
 1958|       |
 1959|      1|          pspec = node->data;
 1960|      1|          value = NULL; /* to silence gcc... */
 1961|       |
 1962|      1|          for (j = 0; j < n_params; j++)
  ------------------
  |  Branch (1962:23): [True: 0, False: 1]
  ------------------
 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|      1|          if (value == NULL)
  ------------------
  |  Branch (1970:15): [True: 1, False: 0]
  ------------------
 1971|      1|            value = g_param_spec_get_default_value (pspec);
 1972|       |
 1973|      1|          object_set_property (object, pspec, value, nqueue);
 1974|      1|        }
 1975|      1|    }
 1976|       |
 1977|       |  /* run 'constructed' handler if there is a custom one */
 1978|      2|  if (CLASS_HAS_CUSTOM_CONSTRUCTED (class))
  ------------------
  |  |  147|      2|    ((class)->constructed != g_object_constructed)
  |  |  ------------------
  |  |  |  Branch (147:5): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 1979|      2|    class->constructed (object);
 1980|       |
 1981|      2|  if (nqueue)
  ------------------
  |  Branch (1981:7): [True: 1, False: 1]
  ------------------
 1982|      1|    {
 1983|      1|      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|      1|      for (i = 0; i < n_params; i++)
  ------------------
  |  Branch (1989:19): [True: 0, False: 1]
  ------------------
 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|      1|      g_object_notify_queue_thaw (object, nqueue);
 1997|      1|    }
 1998|       |
 1999|      2|  return object;
 2000|      2|}
gobject.c:object_set_property:
 1528|      1|{
 1529|      1|  GValue tmp_value = G_VALUE_INIT;
  ------------------
  |  |  202|      1|#define G_VALUE_INIT  { 0, { { 0 } } }
  ------------------
 1530|      1|  GObjectClass *class = g_type_class_peek (pspec->owner_type);
 1531|      1|  guint param_id = PARAM_SPEC_PARAM_ID (pspec);
  ------------------
  |  |  133|      1|#define PARAM_SPEC_PARAM_ID(pspec)		((pspec)->param_id)
  ------------------
 1532|      1|  GParamSpec *redirect;
 1533|       |
 1534|      1|  if (class == NULL)
  ------------------
  |  Branch (1534:7): [True: 0, False: 1]
  ------------------
 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|      1|  redirect = g_param_spec_get_redirect_target (pspec);
 1542|      1|  if (redirect)
  ------------------
  |  Branch (1542:7): [True: 0, False: 1]
  ------------------
 1543|      0|    pspec = redirect;
 1544|       |
 1545|       |  /* provide a copy to work from, convert (if necessary) and validate */
 1546|      1|  g_value_init (&tmp_value, pspec->value_type);
 1547|      1|  if (!g_value_transform (value, &tmp_value))
  ------------------
  |  Branch (1547:7): [True: 0, False: 1]
  ------------------
 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|      1|	       pspec->name,
 1550|      1|	       g_type_name (pspec->value_type),
 1551|      1|	       G_VALUE_TYPE_NAME (value));
 1552|      1|  else if (g_param_value_validate (pspec, &tmp_value) && !(pspec->flags & G_PARAM_LAX_VALIDATION))
  ------------------
  |  Branch (1552:12): [True: 0, False: 1]
  |  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|      1|  else
 1564|      1|    {
 1565|      1|      class->set_property (object, param_id, &tmp_value, pspec);
 1566|       |
 1567|      1|      if (~pspec->flags & G_PARAM_EXPLICIT_NOTIFY)
  ------------------
  |  Branch (1567:11): [True: 1, False: 0]
  ------------------
 1568|      1|        {
 1569|      1|          GParamSpec *notify_pspec;
 1570|       |
 1571|      1|          notify_pspec = get_notify_pspec (pspec);
 1572|       |
 1573|      1|          if (notify_pspec != NULL)
  ------------------
  |  Branch (1573:15): [True: 1, False: 0]
  ------------------
 1574|      1|            g_object_notify_queue_add (object, nqueue, notify_pspec);
 1575|      1|        }
 1576|      1|    }
 1577|      1|  g_value_unset (&tmp_value);
 1578|      1|}
gobject.c:g_value_object_init:
 3972|      3|{
 3973|       |  value->data[0].v_pointer = NULL;
 3974|      3|}
gobject.c:g_value_object_free_value:
 3978|      3|{
 3979|      3|  if (value->data[0].v_pointer)
  ------------------
  |  Branch (3979:7): [True: 0, False: 3]
  ------------------
 3980|      0|    g_object_unref (value->data[0].v_pointer);
 3981|      3|}
gobject.c:g_value_object_copy_value:
 3986|      1|{
 3987|      1|  if (src_value->data[0].v_pointer)
  ------------------
  |  Branch (3987:7): [True: 0, False: 1]
  ------------------
 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|      1|  else
 3990|      1|    dest_value->data[0].v_pointer = NULL;
 3991|      1|}

_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|{
  215|      1|  g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  216|       |
  217|      1|  g_atomic_int_inc ((int *)&pspec->ref_count);
  ------------------
  |  |  148|      1|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|      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
  |  |  ------------------
  |  |  150|      1|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 1]
  |  |  ------------------
  |  |  151|      1|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|      1|  }))
  ------------------
  218|       |
  219|      1|  return pspec;
  220|      1|}
g_param_spec_ref_sink:
  277|      1|{
  278|      1|  gsize oldvalue;
  279|      1|  g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  280|       |
  281|      1|  oldvalue = g_atomic_pointer_and (&pspec->qdata, ~(gsize)PARAM_FLOATING_FLAG);
  ------------------
  |  |  226|      1|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  227|      1|    gsize *gapa_atomic = (gsize *) (atomic);                                 \
  |  |  228|      1|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
  |  |  ------------------
  |  |  |  |  765|      1|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  229|      1|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize));                    \
  |  |  ------------------
  |  |  |  |  765|      1|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  230|      1|    (void) (0 ? (gpointer) *(atomic) : NULL);                                \
  |  |  ------------------
  |  |  |  Branch (230:13): [Folded, False: 1]
  |  |  ------------------
  |  |  231|      1|    (void) (0 ? (val) ^ (val) : 1);                                          \
  |  |  ------------------
  |  |  |  Branch (231:13): [Folded, False: 1]
  |  |  ------------------
  |  |  232|      1|    (gsize) __atomic_fetch_and (gapa_atomic, (val), __ATOMIC_SEQ_CST);       \
  |  |  233|      1|  }))
  ------------------
  282|      1|  if (!(oldvalue & PARAM_FLOATING_FLAG))
  ------------------
  |  |   56|      1|#define PARAM_FLOATING_FLAG                     0x2
  ------------------
  |  Branch (282:7): [True: 0, False: 1]
  ------------------
  283|      0|    g_param_spec_ref (pspec);
  284|       |
  285|      1|  return pspec;
  286|      1|}
g_param_spec_is_valid_name:
  400|      2|{
  401|      2|  const gchar *p;
  402|       |
  403|       |  /* First character must be a letter. */
  404|      2|  if ((name[0] < 'A' || name[0] > 'Z') &&
  ------------------
  |  Branch (404:8): [True: 0, False: 2]
  |  Branch (404:25): [True: 2, False: 0]
  ------------------
  405|      2|      (name[0] < 'a' || name[0] > 'z'))
  ------------------
  |  Branch (405:8): [True: 0, False: 2]
  |  Branch (405:25): [True: 0, False: 2]
  ------------------
  406|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  407|       |
  408|     14|  for (p = name; *p != 0; p++)
  ------------------
  |  Branch (408:18): [True: 12, False: 2]
  ------------------
  409|     12|    {
  410|     12|      const gchar c = *p;
  411|       |
  412|     12|      if (c != '-' && c != '_' &&
  ------------------
  |  Branch (412:11): [True: 12, False: 0]
  |  Branch (412:23): [True: 12, False: 0]
  ------------------
  413|     12|          (c < '0' || c > '9') &&
  ------------------
  |  Branch (413:12): [True: 0, False: 12]
  |  Branch (413:23): [True: 12, False: 0]
  ------------------
  414|     12|          (c < 'A' || c > 'Z') &&
  ------------------
  |  Branch (414:12): [True: 0, False: 12]
  |  Branch (414:23): [True: 12, False: 0]
  ------------------
  415|     12|          (c < 'a' || c > 'z'))
  ------------------
  |  Branch (415:12): [True: 0, False: 12]
  |  Branch (415:23): [True: 0, False: 12]
  ------------------
  416|      0|        return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
  417|     12|    }
  418|       |
  419|      2|  return TRUE;
  ------------------
  |  |  818|      2|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      2|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  420|      2|}
g_param_spec_internal:
  451|      1|{
  452|      1|  GParamSpec *pspec;
  453|      1|  GParamSpecPrivate *priv;
  454|       |  
  455|      1|  g_return_val_if_fail (G_TYPE_IS_PARAM (param_type) && param_type != G_TYPE_PARAM, NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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|      3|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1, False: 0]
  |  |  |  |  |  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  456|      1|  g_return_val_if_fail (name != NULL, NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  457|      1|  g_return_val_if_fail (g_param_spec_is_valid_name (name), NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  458|      1|  g_return_val_if_fail (!(flags & G_PARAM_STATIC_NAME) || is_canonical (name), NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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|      3|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1]
  |  |  |  |  |  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  459|       |  
  460|      1|  pspec = (gpointer) g_type_create_instance (param_type);
  461|       |
  462|      1|  if (flags & G_PARAM_STATIC_NAME)
  ------------------
  |  Branch (462:7): [True: 1, False: 0]
  ------------------
  463|      1|    {
  464|       |      /* pspec->name is not freed if (flags & G_PARAM_STATIC_NAME) */
  465|      1|      pspec->name = (gchar *) g_intern_static_string (name);
  466|      1|      if (!is_canonical (pspec->name))
  ------------------
  |  Branch (466:11): [True: 0, False: 1]
  ------------------
  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|      1|    }
  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|      1|  priv = g_param_spec_get_private (pspec);
  483|      1|  priv->name_quark = g_quark_from_string (pspec->name);
  484|       |
  485|      1|  if (flags & G_PARAM_STATIC_NICK)
  ------------------
  |  Branch (485:7): [True: 0, False: 1]
  ------------------
  486|      0|    pspec->_nick = (gchar*) nick;
  487|      1|  else
  488|      1|    pspec->_nick = g_strdup (nick);
  489|       |
  490|      1|  if (flags & G_PARAM_STATIC_BLURB)
  ------------------
  |  Branch (490:7): [True: 0, False: 1]
  ------------------
  491|      0|    pspec->_blurb = (gchar*) blurb;
  492|      1|  else
  493|      1|    pspec->_blurb = g_strdup (blurb);
  494|       |
  495|      1|  pspec->flags = (flags & G_PARAM_USER_MASK) | (flags & G_PARAM_MASK);
  ------------------
  |  |   57|      1|#define	G_PARAM_USER_MASK			(~0U << G_PARAM_USER_SHIFT)
  |  |  ------------------
  |  |  |  |  189|      1|#define	G_PARAM_USER_SHIFT	(8)
  |  |  ------------------
  ------------------
                pspec->flags = (flags & G_PARAM_USER_MASK) | (flags & G_PARAM_MASK);
  ------------------
  |  |  182|      1|#define	G_PARAM_MASK		(0x000000ff)
  ------------------
  496|       |  
  497|      1|  return pspec;
  498|      1|}
g_param_spec_get_redirect_target:
  609|      2|{
  610|      2|  GTypeInstance *inst = (GTypeInstance *)pspec;
  611|       |
  612|      2|  if (inst && inst->g_class && inst->g_class->g_type == G_TYPE_PARAM_OVERRIDE)
  ------------------
  |  |  507|      2|#define	G_TYPE_PARAM_OVERRIDE		   (g_param_spec_types[20])
  ------------------
  |  Branch (612:7): [True: 2, False: 0]
  |  Branch (612:15): [True: 2, False: 0]
  |  Branch (612:32): [True: 0, False: 2]
  ------------------
  613|      0|    return ((GParamSpecOverride*)pspec)->overridden;
  614|      2|  else
  615|      2|    return NULL;
  616|      2|}
g_param_value_set_default:
  629|      1|{
  630|      1|  g_return_if_fail (G_IS_PARAM_SPEC (pspec));
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  631|       |
  632|      1|  if (G_VALUE_TYPE (value) == G_TYPE_INVALID)
  ------------------
  |  |   59|      1|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
                if (G_VALUE_TYPE (value) == G_TYPE_INVALID)
  ------------------
  |  |   55|      1|#define G_TYPE_INVALID			G_TYPE_MAKE_FUNDAMENTAL (0)
  |  |  ------------------
  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (632:7): [True: 0, False: 1]
  ------------------
  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|      1|  else
  637|      1|    {
  638|      1|      g_return_if_fail (G_IS_VALUE (value));
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  639|      1|      g_return_if_fail (PSPEC_APPLIES_TO_VALUE (pspec, value));
  ------------------
  |  |  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|      5|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1]
  |  |  |  |  |  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  640|      1|      g_value_reset (value);
  641|      1|    }
  642|       |
  643|      1|  G_PARAM_SPEC_GET_CLASS (pspec)->value_set_default (pspec, value);
  ------------------
  |  |   79|      1|#define G_PARAM_SPEC_GET_CLASS(pspec)	(G_TYPE_INSTANCE_GET_CLASS ((pspec), G_TYPE_PARAM, GParamSpecClass))
  |  |  ------------------
  |  |  |  |  527|      1|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|      1|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  644|      1|}
g_param_value_validate:
  691|      1|{
  692|      1|  g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  693|      1|  g_return_val_if_fail (G_IS_VALUE (value), FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  694|      1|  g_return_val_if_fail (PSPEC_APPLIES_TO_VALUE (pspec, value), FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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|      5|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1]
  |  |  |  |  |  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  695|       |
  696|      1|  if (G_PARAM_SPEC_GET_CLASS (pspec)->value_validate)
  ------------------
  |  |   79|      1|#define G_PARAM_SPEC_GET_CLASS(pspec)	(G_TYPE_INSTANCE_GET_CLASS ((pspec), G_TYPE_PARAM, GParamSpecClass))
  |  |  ------------------
  |  |  |  |  527|      1|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|      1|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (696:7): [True: 1, False: 0]
  ------------------
  697|      1|    {
  698|      1|      GValue oval = *value;
  699|       |
  700|      1|      if (G_PARAM_SPEC_GET_CLASS (pspec)->value_validate (pspec, value) ||
  ------------------
  |  |   79|      1|#define G_PARAM_SPEC_GET_CLASS(pspec)	(G_TYPE_INSTANCE_GET_CLASS ((pspec), G_TYPE_PARAM, GParamSpecClass))
  |  |  ------------------
  |  |  |  |  527|      1|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2309|      1|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (700:11): [True: 0, False: 1]
  ------------------
  701|      1|	  memcmp (&oval.data, &value->data, sizeof (oval.data)))
  ------------------
  |  Branch (701:4): [True: 0, False: 1]
  ------------------
  702|      0|	return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  703|      1|    }
  704|       |
  705|      1|  return FALSE;
  ------------------
  |  |  814|      1|#define	FALSE	(0)
  ------------------
  706|      1|}
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|      1|{
  967|      1|  const gchar *p;
  968|       |  
  969|      1|  if (pool && pspec && owner_type > 0 && pspec->owner_type == 0)
  ------------------
  |  Branch (969:7): [True: 1, False: 0]
  |  Branch (969:15): [True: 1, False: 0]
  |  Branch (969:24): [True: 1, False: 0]
  |  Branch (969:42): [True: 1, False: 0]
  ------------------
  970|      1|    {
  971|      7|      for (p = pspec->name; *p; p++)
  ------------------
  |  Branch (971:29): [True: 6, False: 1]
  ------------------
  972|      6|	{
  973|      6|	  if (!strchr (G_CSET_A_2_Z G_CSET_a_2_z G_CSET_DIGITS "-_", *p))
  ------------------
  |  |   49|      6|#define G_CSET_A_2_Z	"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  ------------------
  |  Branch (973:8): [True: 0, False: 6]
  ------------------
  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|      6|	}
  979|      1|      g_mutex_lock (&pool->mutex);
  980|      1|      pspec->owner_type = owner_type;
  981|      1|      g_param_spec_ref (pspec);
  982|      1|      g_hash_table_add (pool->hash_table, pspec);
  983|      1|      g_mutex_unlock (&pool->mutex);
  984|      1|    }
  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|      1|}
g_param_spec_pool_lookup:
 1093|      2|{
 1094|      2|  GParamSpec *pspec;
 1095|      2|  gchar *delim;
 1096|       |
 1097|      2|  g_return_val_if_fail (pool != 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1098|      2|  g_return_val_if_fail (param_name != 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1099|       |
 1100|      2|  g_mutex_lock (&pool->mutex);
 1101|       |
 1102|      2|  delim = pool->type_prefixing ? strchr (param_name, ':') : NULL;
  ------------------
  |  Branch (1102:11): [True: 2, False: 0]
  ------------------
 1103|       |
 1104|       |  /* try quick and away, i.e. without prefix */
 1105|      2|  if (!delim)
  ------------------
  |  Branch (1105:7): [True: 2, False: 0]
  ------------------
 1106|      2|    {
 1107|      2|      pspec = param_spec_ht_lookup (pool->hash_table, param_name, owner_type, walk_ancestors);
 1108|      2|      g_mutex_unlock (&pool->mutex);
 1109|       |
 1110|      2|      return pspec;
 1111|      2|    }
 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|      2|{
 1310|      2|  GParamSpec **pspecs, **p;
 1311|      2|  GSList **slists, *node;
 1312|      2|  gpointer data[4];
 1313|      2|  guint d, i;
 1314|      2|  int n_pspecs = 0;
 1315|       |
 1316|      2|  g_return_val_if_fail (pool != 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1317|      2|  g_return_val_if_fail (owner_type > 0, 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1318|      2|  g_return_val_if_fail (n_pspecs_p != 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1319|       |  
 1320|      2|  g_mutex_lock (&pool->mutex);
 1321|      2|  d = g_type_depth (owner_type);
 1322|      2|  slists = g_new0 (GSList*, d);
  ------------------
  |  |  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|	}))
  |  |  ------------------
  ------------------
 1323|      2|  data[0] = slists;
 1324|      2|  data[1] = (gpointer) owner_type;
 1325|      2|  data[2] = pool->hash_table;
 1326|      2|  data[3] = &n_pspecs;
 1327|       |
 1328|      2|  g_hash_table_foreach (pool->hash_table,
 1329|      2|                        G_TYPE_IS_INTERFACE (owner_type) ?
  ------------------
  |  |  293|      2|#define G_TYPE_IS_INTERFACE(type)               (G_TYPE_FUNDAMENTAL (type) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   38|      2|#define G_TYPE_FUNDAMENTAL(type)	(g_type_fundamental (type))
  |  |  ------------------
  |  |               #define G_TYPE_IS_INTERFACE(type)               (G_TYPE_FUNDAMENTAL (type) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   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)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (293:49): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 1330|      2|                          pool_depth_list_for_interface :
 1331|      2|                          pool_depth_list,
 1332|      2|                        &data);
 1333|       |
 1334|      2|  pspecs = g_new (GParamSpec*, n_pspecs + 1);
  ------------------
  |  |  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: 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|	}))
  |  |  ------------------
  ------------------
 1335|      2|  p = pspecs;
 1336|      6|  for (i = 0; i < d; i++)
  ------------------
  |  Branch (1336:15): [True: 4, False: 2]
  ------------------
 1337|      4|    {
 1338|      4|      slists[i] = g_slist_sort (slists[i], pspec_compare_id);
 1339|      4|      for (node = slists[i]; node; node = node->next)
  ------------------
  |  Branch (1339:30): [True: 0, False: 4]
  ------------------
 1340|      0|	*p++ = node->data;
 1341|      4|      g_slist_free (slists[i]);
 1342|      4|    }
 1343|      2|  *p++ = NULL;
 1344|      2|  g_free (slists);
 1345|      2|  g_mutex_unlock (&pool->mutex);
 1346|       |
 1347|      2|  *n_pspecs_p = n_pspecs;
 1348|       |
 1349|      2|  return pspecs;
 1350|      2|}
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_param_spec_get_default_value:
 1562|      1|{
 1563|      1|  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|      1|  if (g_once_init_enter (&priv->default_value.g_type))
  ------------------
  |  |  257|      1|  (G_GNUC_EXTENSION ({                                               \
  |  |  ------------------
  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  |  Branch (257:3): [True: 1, False: 0]
  |  |  ------------------
  |  |  258|      1|    G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer));       \
  |  |  ------------------
  |  |  |  |  765|      1|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  259|      1|    (void) (0 ? (gpointer) *(location) : NULL);                      \
  |  |  ------------------
  |  |  |  Branch (259:13): [Folded, False: 1]
  |  |  ------------------
  |  |  260|      1|    (!g_atomic_pointer_get (location) &&                             \
  |  |  ------------------
  |  |  |  |  113|      2|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|      2|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|      1|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|      2|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|      1|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|      2|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|      1|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|      2|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|      2|    gapg_temp_newval;                                                      \
  |  |  |  |  119|      2|  }))
  |  |  ------------------
  |  |  |  Branch (260:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  261|      1|     g_once_init_enter (location));                                  \
  |  |  ------------------
  |  |  |  Branch (261:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  262|      1|  }))
  ------------------
 1579|      1|    {
 1580|      1|      GValue default_value = G_VALUE_INIT;
  ------------------
  |  |  202|      1|#define G_VALUE_INIT  { 0, { { 0 } } }
  ------------------
 1581|       |
 1582|      1|      g_value_init (&default_value, pspec->value_type);
 1583|      1|      g_param_value_set_default (pspec, &default_value);
 1584|       |
 1585|       |      /* store all but the type */
 1586|      1|      memcpy (priv->default_value.data, default_value.data, sizeof (default_value.data));
 1587|       |
 1588|      1|      g_once_init_leave (&priv->default_value.g_type, pspec->value_type);
  ------------------
  |  |  264|      1|  (G_GNUC_EXTENSION ({                                               \
  |  |  ------------------
  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  265|      1|    G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer));       \
  |  |  ------------------
  |  |  |  |  765|      1|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  266|      1|    0 ? (void) (*(location) = (result)) : (void) 0;                  \
  |  |  ------------------
  |  |  |  Branch (266:5): [Folded, False: 1]
  |  |  ------------------
  |  |  267|      1|    g_once_init_leave ((location), (gsize) (result));                \
  |  |  268|      1|  }))
  ------------------
 1589|      1|    }
 1590|       |
 1591|      1|  return &priv->default_value;
 1592|      1|}
g_param_spec_get_name_quark:
 1606|      1|{
 1607|      1|  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|      1|  return priv->name_quark;
 1615|      1|}
gparam.c:g_param_spec_class_base_init:
  148|      2|{
  149|      2|}
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|      1|{
  173|      1|  pspec->name = NULL;
  174|      1|  pspec->_nick = NULL;
  175|      1|  pspec->_blurb = NULL;
  176|      1|  pspec->flags = 0;
  177|      1|  pspec->value_type = class->value_type;
  178|      1|  pspec->owner_type = 0;
  179|      1|  pspec->qdata = NULL;
  180|      1|  g_datalist_set_flags (&pspec->qdata, PARAM_FLOATING_FLAG);
  ------------------
  |  |   56|      1|#define PARAM_FLOATING_FLAG                     0x2
  ------------------
  181|      1|  pspec->ref_count = 1;
  182|      1|  pspec->param_id = 0;
  183|      1|}
gparam.c:is_canonical:
  380|      4|{
  381|       |  return (strchr (key, '_') == NULL);
  382|      4|}
gparam.c:g_param_spec_get_private:
   95|      3|{
   96|      3|  return &G_STRUCT_MEMBER (GParamSpecPrivate, pspec, g_param_private_offset);
  ------------------
  |  |  862|      3|    (*(member_type*) G_STRUCT_MEMBER_P ((struct_p), (struct_offset)))
  |  |  ------------------
  |  |  |  |  860|      3|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  ------------------
   97|      3|}
gparam.c:param_spec_pool_hash:
  906|      3|{
  907|      3|  const GParamSpec *key = key_spec;
  908|      3|  const gchar *p;
  909|      3|  guint h = key->owner_type;
  910|       |
  911|     21|  for (p = key->name; *p; p++)
  ------------------
  |  Branch (911:23): [True: 18, False: 3]
  ------------------
  912|     18|    h = (h << 5) - h + *p;
  913|       |
  914|      3|  return h;
  915|      3|}
gparam.c:param_spec_ht_lookup:
 1026|      2|{
 1027|      2|  GParamSpec key, *pspec;
 1028|       |
 1029|      2|  key.owner_type = owner_type;
 1030|      2|  key.name = (gchar*) param_name;
 1031|      2|  if (walk_ancestors)
  ------------------
  |  Branch (1031:7): [True: 1, False: 1]
  ------------------
 1032|      1|    do
 1033|      1|      {
 1034|      1|	pspec = g_hash_table_lookup (hash_table, &key);
 1035|      1|	if (pspec)
  ------------------
  |  Branch (1035:6): [True: 0, False: 1]
  ------------------
 1036|      0|	  return pspec;
 1037|      1|	key.owner_type = g_type_parent (key.owner_type);
 1038|      1|      }
 1039|      1|    while (key.owner_type);
  ------------------
  |  Branch (1039:12): [True: 0, False: 1]
  ------------------
 1040|      1|  else
 1041|      1|    pspec = g_hash_table_lookup (hash_table, &key);
 1042|       |
 1043|      2|  if (!pspec && !is_canonical (param_name))
  ------------------
  |  Branch (1043:7): [True: 2, False: 0]
  |  Branch (1043:17): [True: 0, False: 2]
  ------------------
 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|      2|  return pspec;
 1073|      2|}
gparam.c:pool_depth_list_for_interface:
 1276|      2|{
 1277|      2|  GParamSpec *pspec = value;
 1278|      2|  gpointer *data = user_data;
 1279|      2|  GSList **slists = data[0];
 1280|      2|  GType owner_type = (GType) data[1];
 1281|      2|  GHashTable *ht = data[2];
 1282|      2|  int *count = data[3];
 1283|       |
 1284|      2|  if (pspec->owner_type == owner_type &&
  ------------------
  |  Branch (1284:7): [True: 0, False: 2]
  ------------------
 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|      2|}
gparam.c:param_spec_generic_class_init:
 1370|      1|{
 1371|      1|  GParamSpecClass *class = g_class;
 1372|      1|  ParamSpecClassInfo *info = class_data;
 1373|       |
 1374|      1|  class->value_type = info->value_type;
 1375|      1|  if (info->finalize)
  ------------------
  |  Branch (1375:7): [True: 0, False: 1]
  ------------------
 1376|      0|    class->finalize = info->finalize;			/* optional */
 1377|      1|  class->value_set_default = info->value_set_default;
 1378|      1|  if (info->value_validate)
  ------------------
  |  Branch (1378:7): [True: 1, False: 0]
  ------------------
 1379|      1|    class->value_validate = info->value_validate;	/* optional */
 1380|      1|  class->values_cmp = info->values_cmp;
 1381|      1|  g_free (class_data);
 1382|      1|}

_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_object:
 2508|      1|{
 2509|      1|  GParamSpecObject *ospec;
 2510|       |  
 2511|      1|  g_return_val_if_fail (g_type_is_a (object_type, G_TYPE_OBJECT), NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2512|       |  
 2513|      1|  ospec = g_param_spec_internal (G_TYPE_PARAM_OBJECT,
  ------------------
  |  |  482|      1|#define	G_TYPE_PARAM_OBJECT		   (g_param_spec_types[19])
  ------------------
 2514|      1|				 name,
 2515|      1|				 nick,
 2516|      1|				 blurb,
 2517|      1|				 flags);
 2518|      1|  if (ospec == NULL)
  ------------------
  |  Branch (2518:7): [True: 0, False: 1]
  ------------------
 2519|      0|    return NULL;
 2520|       |
 2521|      1|  G_PARAM_SPEC (ospec)->value_type = object_type;
  ------------------
  |  |   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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2522|       |  
 2523|      1|  return G_PARAM_SPEC (ospec);
  ------------------
  |  |   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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2524|      1|}
gparamspecs.c:param_object_init:
  973|      1|{
  974|       |  /* GParamSpecObject *ospec = G_PARAM_SPEC_OBJECT (pspec); */
  975|      1|}
gparamspecs.c:param_object_set_default:
  980|      1|{
  981|       |  value->data[0].v_pointer = NULL;
  982|      1|}
gparamspecs.c:param_object_validate:
  987|      1|{
  988|      1|  GParamSpecObject *ospec = G_PARAM_SPEC_OBJECT (pspec);
  ------------------
  |  |  498|      1|#define G_PARAM_SPEC_OBJECT(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_OBJECT, GParamSpecObject))
  |  |  ------------------
  |  |  |  |  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))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  989|      1|  GObject *object = value->data[0].v_pointer;
  990|      1|  guint changed = 0;
  991|       |  
  992|      1|  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: 1]
  |  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|      1|  return changed;
 1000|      1|}

g_signal_is_valid_name:
  386|      1|{
  387|       |  /* FIXME: We allow this, against our own documentation (the leading `-` is
  388|       |   * invalid), because GTK has historically used this. */
  389|      1|  if (g_str_equal (name, "-gtk-private-changed"))
  ------------------
  |  Branch (389:7): [True: 0, False: 1]
  ------------------
  390|      0|    return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  391|       |
  392|      1|  return g_param_spec_is_valid_name (name);
  393|      1|}
_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|      1|{
 1505|      1|  va_list args;
 1506|      1|  guint signal_id;
 1507|       |
 1508|      1|  g_return_val_if_fail (signal_name != NULL, 0);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1509|       |  
 1510|      1|  va_start (args, n_params);
 1511|       |
 1512|      1|  signal_id = g_signal_new_valist (signal_name, itype, signal_flags,
 1513|      1|                                   class_offset ? g_signal_type_cclosure_new (itype, class_offset) : NULL,
  ------------------
  |  Branch (1513:36): [True: 1, False: 0]
  ------------------
 1514|      1|				   accumulator, accu_data, c_marshaller,
 1515|      1|                                   return_type, n_params, args);
 1516|       |
 1517|      1|  va_end (args);
 1518|       |
 1519|      1|  return signal_id;
 1520|      1|}
g_signal_newv:
 1701|      1|{
 1702|      1|  const gchar *name;
 1703|      1|  gchar *signal_name_copy = NULL;
 1704|      1|  guint signal_id, i;
 1705|      1|  SignalNode *node;
 1706|      1|  GSignalCMarshaller builtin_c_marshaller;
 1707|      1|  GSignalCVaMarshaller builtin_va_marshaller;
 1708|      1|  GSignalCVaMarshaller va_marshaller;
 1709|       |  
 1710|      1|  g_return_val_if_fail (signal_name != NULL, 0);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1711|      1|  g_return_val_if_fail (g_signal_is_valid_name (signal_name), 0);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1712|      1|  g_return_val_if_fail (G_TYPE_IS_INSTANTIATABLE (itype) || G_TYPE_IS_INTERFACE (itype), 0);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, 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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1713|      1|  if (n_params)
  ------------------
  |  Branch (1713:7): [True: 1, False: 0]
  ------------------
 1714|      1|    g_return_val_if_fail (param_types != NULL, 0);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1715|      1|  g_return_val_if_fail ((return_type & G_SIGNAL_TYPE_STATIC_SCOPE) == 0, 0);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1716|      1|  if (return_type == (G_TYPE_NONE & ~G_SIGNAL_TYPE_STATIC_SCOPE))
  ------------------
  |  |   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)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                if (return_type == (G_TYPE_NONE & ~G_SIGNAL_TYPE_STATIC_SCOPE))
  ------------------
  |  |  213|      1|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  ------------------
  |  |  |  | 2353|      1|#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
  |  |  ------------------
  ------------------
  |  Branch (1716:7): [True: 1, False: 0]
  ------------------
 1717|      1|    g_return_val_if_fail (accumulator == NULL, 0);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1718|      1|  if (!accumulator)
  ------------------
  |  Branch (1718:7): [True: 1, False: 0]
  ------------------
 1719|      1|    g_return_val_if_fail (accu_data == NULL, 0);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1720|      1|  g_return_val_if_fail ((signal_flags & G_SIGNAL_ACCUMULATOR_FIRST_RUN) == 0, 0);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1721|       |
 1722|      1|  if (!is_canonical (signal_name))
  ------------------
  |  Branch (1722:7): [True: 0, False: 1]
  ------------------
 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|      1|  else
 1729|      1|    {
 1730|      1|      name = signal_name;
 1731|      1|    }
 1732|       |  
 1733|      1|  SIGNAL_LOCK ();
  ------------------
  |  |  328|      1|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|      1|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      1|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1734|       |  
 1735|      1|  signal_id = signal_id_lookup (name, itype);
 1736|      1|  node = LOOKUP_SIGNAL_NODE (signal_id);
 1737|      1|  if (node && !node->destroyed)
  ------------------
  |  Branch (1737:7): [True: 0, False: 1]
  |  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|      1|  if (node && node->itype != itype)
  ------------------
  |  Branch (1747:7): [True: 0, False: 1]
  |  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|      2|  for (i = 0; i < n_params; i++)
  ------------------
  |  Branch (1757:15): [True: 1, False: 1]
  ------------------
 1758|      1|    if (!G_TYPE_IS_VALUE (param_types[i] & ~G_SIGNAL_TYPE_STATIC_SCOPE))
  ------------------
  |  |   41|      1|#define	G_TYPE_IS_VALUE(type)		(g_type_check_is_value_type (type))
  ------------------
  |  Branch (1758:9): [True: 0, False: 1]
  ------------------
 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|      1|  if (return_type != G_TYPE_NONE && !G_TYPE_IS_VALUE (return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE))
  ------------------
  |  |   62|      1|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      1|#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: 1]
  |  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|      1|  if (!node)
  ------------------
  |  Branch (1776:7): [True: 1, False: 0]
  ------------------
 1777|      1|    {
 1778|      1|      SignalKey key;
 1779|       |      
 1780|      1|      signal_id = g_n_signal_nodes++;
 1781|      1|      node = g_new (SignalNode, 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|	}))
  |  |  ------------------
  ------------------
 1782|      1|      node->signal_id = signal_id;
 1783|      1|      g_signal_nodes = g_renew (SignalNode*, g_signal_nodes, g_n_signal_nodes);
  ------------------
  |  |  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|	}))
  |  |  ------------------
  ------------------
 1784|      1|      g_signal_nodes[signal_id] = node;
 1785|      1|      node->itype = itype;
 1786|      1|      key.itype = itype;
 1787|      1|      key.signal_id = signal_id;
 1788|      1|      node->name = g_intern_string (name);
 1789|      1|      key.quark = g_quark_from_string (name);
 1790|      1|      g_signal_key_bsa = g_bsearch_array_insert (g_signal_key_bsa, &g_signal_key_bconfig, &key);
 1791|       |
 1792|      1|      TRACE(GOBJECT_SIGNAL_NEW(signal_id, name, itype));
 1793|      1|    }
 1794|      1|  node->destroyed = FALSE;
  ------------------
  |  |  814|      1|#define	FALSE	(0)
  ------------------
 1795|       |
 1796|       |  /* setup reinitializable portion */
 1797|      1|  node->single_va_closure_is_valid = FALSE;
  ------------------
  |  |  814|      1|#define	FALSE	(0)
  ------------------
 1798|      1|  node->flags = signal_flags & G_SIGNAL_FLAGS_MASK;
  ------------------
  |  |  149|      1|#define G_SIGNAL_FLAGS_MASK  0x1ff
  ------------------
 1799|      1|  node->n_params = n_params;
 1800|      1|  node->param_types = g_memdup2 (param_types, sizeof (GType) * n_params);
 1801|      1|  node->return_type = return_type;
 1802|      1|  node->class_closure_bsa = NULL;
 1803|      1|  if (accumulator)
  ------------------
  |  Branch (1803:7): [True: 0, False: 1]
  ------------------
 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|      1|  else
 1810|      1|    node->accumulator = NULL;
 1811|       |
 1812|      1|  builtin_c_marshaller = NULL;
 1813|      1|  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|      1|  if (n_params == 0 && return_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)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1817:7): [True: 0, False: 1]
  |  Branch (1817:24): [True: 0, False: 0]
  ------------------
 1818|      0|    {
 1819|      0|      builtin_c_marshaller = g_cclosure_marshal_VOID__VOID;
 1820|      0|      builtin_va_marshaller = g_cclosure_marshal_VOID__VOIDv;
 1821|      0|    }
 1822|      1|  else if (n_params == 1 && 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 (1822:12): [True: 1, False: 0]
  |  Branch (1822:29): [True: 1, False: 0]
  ------------------
 1823|      1|    {
 1824|      1|#define ADD_CHECK(__type__) \
 1825|      1|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
 1826|      1|	{                                                                \
 1827|      1|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
 1828|      1|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
 1829|      1|	}
 1830|       |
 1831|      1|      if (0) {}
  ------------------
  |  Branch (1831:11): [Folded, False: 1]
  ------------------
 1832|      1|      ADD_CHECK (BOOLEAN)
  ------------------
  |  | 1825|      1|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      1|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      1|#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|      1|#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 1]
  |  |  ------------------
  |  | 1826|      1|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1833|      1|      ADD_CHECK (CHAR)
  ------------------
  |  | 1825|      1|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      1|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      1|#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|      1|#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 1]
  |  |  ------------------
  |  | 1826|      1|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1834|      1|      ADD_CHECK (UCHAR)
  ------------------
  |  | 1825|      1|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      1|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      1|#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|      1|#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 1]
  |  |  ------------------
  |  | 1826|      1|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1835|      1|      ADD_CHECK (INT)
  ------------------
  |  | 1825|      1|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      1|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      1|#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|      1|#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 1]
  |  |  ------------------
  |  | 1826|      1|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1836|      1|      ADD_CHECK (UINT)
  ------------------
  |  | 1825|      1|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      1|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      1|#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|      1|#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 1]
  |  |  ------------------
  |  | 1826|      1|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1837|      1|      ADD_CHECK (LONG)
  ------------------
  |  | 1825|      1|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      1|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      1|#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|      1|#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 1]
  |  |  ------------------
  |  | 1826|      1|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1838|      1|      ADD_CHECK (ULONG)
  ------------------
  |  | 1825|      1|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      1|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      1|#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|      1|#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 1]
  |  |  ------------------
  |  | 1826|      1|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1839|      1|      ADD_CHECK (ENUM)
  ------------------
  |  | 1825|      1|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      1|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      1|#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|      1|#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 1]
  |  |  ------------------
  |  | 1826|      1|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1840|      1|      ADD_CHECK (FLAGS)
  ------------------
  |  | 1825|      1|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      1|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      1|#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|      1|#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 1]
  |  |  ------------------
  |  | 1826|      1|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1841|      1|      ADD_CHECK (FLOAT)
  ------------------
  |  | 1825|      1|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      1|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      1|#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|      1|#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 1]
  |  |  ------------------
  |  | 1826|      1|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1842|      1|      ADD_CHECK (DOUBLE)
  ------------------
  |  | 1825|      1|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      1|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      1|#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|      1|#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 1]
  |  |  ------------------
  |  | 1826|      1|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1843|      1|      ADD_CHECK (STRING)
  ------------------
  |  | 1825|      1|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      1|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      1|#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|      1|#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      1|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      1|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 0, False: 1]
  |  |  ------------------
  |  | 1826|      1|	{                                                                \
  |  | 1827|      0|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      0|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      0|	}
  ------------------
 1844|      1|      ADD_CHECK (PARAM)
  ------------------
  |  | 1825|      1|      else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__))         \
  |  |  ------------------
  |  |  |  |  213|      1|#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2353|      1|#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|      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)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1825:16): [True: 1, False: 0]
  |  |  ------------------
  |  | 1826|      1|	{                                                                \
  |  | 1827|      1|	  builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__;  \
  |  | 1828|      1|	  builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v;     \
  |  | 1829|      1|	}
  ------------------
 1845|      1|      ADD_CHECK (BOXED)
  ------------------
  |  | 1825|      1|      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__))         \
  |  |  ------------------
  |  |  |  |  166|      0|#define G_TYPE_BOXED			G_TYPE_MAKE_FUNDAMENTAL (18)
  |  |  |  |  ------------------
  |  |  |  |  |  |  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|	}
  ------------------
 1846|      0|      ADD_CHECK (POINTER)
  ------------------
  |  | 1825|      0|      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__))         \
  |  |  ------------------
  |  |  |  |  160|      0|#define G_TYPE_POINTER			G_TYPE_MAKE_FUNDAMENTAL (17)
  |  |  |  |  ------------------
  |  |  |  |  |  |  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|	}
  ------------------
 1847|      0|      ADD_CHECK (OBJECT)
  ------------------
  |  | 1825|      0|      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__))         \
  |  |  ------------------
  |  |  |  |  178|      0|#define G_TYPE_OBJECT			G_TYPE_MAKE_FUNDAMENTAL (20)
  |  |  |  |  ------------------
  |  |  |  |  |  |  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|	}
  ------------------
 1848|      0|      ADD_CHECK (VARIANT)
  ------------------
  |  | 1825|      0|      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|      1|    }
 1850|       |
 1851|      1|  if (c_marshaller == NULL)
  ------------------
  |  Branch (1851:7): [True: 1, False: 0]
  ------------------
 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|      0|  else
 1865|      0|    va_marshaller = NULL;
 1866|       |
 1867|      1|  node->c_marshaller = c_marshaller;
 1868|      1|  node->va_marshaller = va_marshaller;
 1869|      1|  node->emission_hooks = NULL;
 1870|      1|  if (class_closure)
  ------------------
  |  Branch (1870:7): [True: 1, False: 0]
  ------------------
 1871|      1|    signal_add_class_closure (node, 0, class_closure);
 1872|       |
 1873|      1|  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      1|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      1|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      1|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1874|       |
 1875|      1|  g_free (signal_name_copy);
 1876|       |
 1877|      1|  return signal_id;
 1878|      1|}
g_signal_new_valist:
 1960|      1|{
 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|      1|  GType param_types_stack[200 / sizeof (GType)];
 1965|      1|  GType *param_types_heap = NULL;
 1966|      1|  GType *param_types;
 1967|      1|  guint i;
 1968|      1|  guint signal_id;
 1969|       |
 1970|      1|  param_types = param_types_stack;
 1971|      1|  if (n_params > 0)
  ------------------
  |  Branch (1971:7): [True: 1, False: 0]
  ------------------
 1972|      1|    {
 1973|      1|      if (G_UNLIKELY (n_params > G_N_ELEMENTS (param_types_stack)))
  ------------------
  |  | 1025|      1|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 1016|      1| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|      1|   int _g_boolean_var_;                         \
  |  |  |  | 1018|      1|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 1019|      1|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      1|   else                                         \
  |  |  |  | 1021|      1|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      1|   _g_boolean_var_;                             \
  |  |  |  | 1023|      1|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 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|      2|      for (i = 0; i < n_params; i++)
  ------------------
  |  Branch (1979:19): [True: 1, False: 1]
  ------------------
 1980|      1|        param_types[i] = va_arg (args, GType);
 1981|      1|    }
 1982|       |
 1983|      1|  signal_id = g_signal_newv (signal_name, itype, signal_flags,
 1984|      1|                             class_closure, accumulator, accu_data, c_marshaller,
 1985|      1|                             return_type, n_params, param_types);
 1986|      1|  g_free (param_types_heap);
 1987|       |
 1988|      1|  return signal_id;
 1989|      1|}
g_signal_handlers_destroy:
 2772|      4|{
 2773|      4|  GBSearchArray *hlbsa;
 2774|       |  
 2775|      4|  g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance));
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2776|       |  
 2777|      4|  SIGNAL_LOCK ();
  ------------------
  |  |  328|      4|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|      4|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      4|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2778|      4|  hlbsa = g_hash_table_lookup (g_handler_list_bsa_ht, instance);
 2779|      4|  if (hlbsa)
  ------------------
  |  Branch (2779:7): [True: 0, False: 4]
  ------------------
 2780|      0|    {
 2781|      0|      guint i;
 2782|       |      
 2783|       |      /* reentrancy caution, delete instance trace first */
 2784|      0|      g_hash_table_remove (g_handler_list_bsa_ht, instance);
 2785|       |      
 2786|      0|      for (i = 0; i < hlbsa->n_nodes; i++)
  ------------------
  |  Branch (2786:19): [True: 0, False: 0]
  ------------------
 2787|      0|        {
 2788|      0|          HandlerList *hlist = g_bsearch_array_get_nth (hlbsa, &g_signal_hlbsa_bconfig, i);
 2789|      0|          Handler *handler = hlist->handlers;
 2790|       |	  
 2791|      0|          while (handler)
  ------------------
  |  Branch (2791:18): [True: 0, False: 0]
  ------------------
 2792|      0|            {
 2793|      0|              Handler *tmp = handler;
 2794|       |	      
 2795|      0|              handler = tmp->next;
 2796|      0|              tmp->block_count = 1;
 2797|       |              /* cruel unlink, this works because _all_ handlers vanish */
 2798|      0|              tmp->next = NULL;
 2799|      0|              tmp->prev = tmp;
 2800|      0|              if (tmp->sequential_number)
  ------------------
  |  Branch (2800:19): [True: 0, False: 0]
  ------------------
 2801|      0|		{
 2802|      0|                  g_hash_table_remove (g_handlers, tmp);
 2803|      0|		  remove_invalid_closure_notify (tmp, instance);
 2804|      0|		  tmp->sequential_number = 0;
 2805|      0|		  handler_unref_R (0, NULL, tmp);
 2806|      0|		}
 2807|      0|            }
 2808|      0|        }
 2809|      0|      g_bsearch_array_free (hlbsa, &g_signal_hlbsa_bconfig);
 2810|      0|    }
 2811|      4|  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      4|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      4|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      4|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2812|      4|}
g_signal_emit_valist:
 3269|      1|{
 3270|      1|  GValue *instance_and_params;
 3271|      1|  GType signal_return_type;
 3272|      1|  GValue *param_values;
 3273|      1|  SignalNode *node;
 3274|      1|  guint i, n_params;
 3275|       |
 3276|      1|  g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance));
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3277|      1|  g_return_if_fail (signal_id > 0);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3278|       |
 3279|      1|  SIGNAL_LOCK ();
  ------------------
  |  |  328|      1|#define	SIGNAL_LOCK()		G_LOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  135|      1|#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      1|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3280|      1|  node = LOOKUP_SIGNAL_NODE (signal_id);
 3281|      1|  if (!node || !g_type_is_a (G_TYPE_FROM_INSTANCE (instance), node->itype))
  ------------------
  |  |  602|      1|#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
  |  |  ------------------
  |  |  |  |  613|      1|#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
  |  |  ------------------
  ------------------
  |  Branch (3281:7): [True: 0, False: 1]
  |  Branch (3281:16): [True: 0, False: 1]
  ------------------
 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|      1|#ifndef G_DISABLE_CHECKS
 3288|      1|  if (detail && !(node->flags & G_SIGNAL_DETAILED))
  ------------------
  |  Branch (3288:7): [True: 1, False: 0]
  |  Branch (3288:17): [True: 0, False: 1]
  ------------------
 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|      1|#endif  /* !G_DISABLE_CHECKS */
 3295|       |
 3296|      1|  if (!node->single_va_closure_is_valid)
  ------------------
  |  Branch (3296:7): [True: 1, False: 0]
  ------------------
 3297|      1|    node_update_single_va_closure (node);
 3298|       |
 3299|      1|  if (node->single_va_closure != NULL)
  ------------------
  |  Branch (3299:7): [True: 1, False: 0]
  ------------------
 3300|      1|    {
 3301|      1|      HandlerList* hlist;
 3302|      1|      Handler *fastpath_handler = NULL;
 3303|      1|      Handler *l;
 3304|      1|      GClosure *closure = NULL;
 3305|      1|      gboolean fastpath = TRUE;
  ------------------
  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3306|      1|      GSignalFlags run_type = G_SIGNAL_RUN_FIRST;
 3307|       |
 3308|      1|      if (node->single_va_closure != SINGLE_VA_CLOSURE_EMPTY_MAGIC &&
  ------------------
  |  |  250|      1|#define	SINGLE_VA_CLOSURE_EMPTY_MAGIC GINT_TO_POINTER(1)	/* indicates single_va_closure is valid but empty */
  |  |  ------------------
  |  |  |  |  101|      2|#define GINT_TO_POINTER(i)	((gpointer) (glong) (i))
  |  |  ------------------
  ------------------
  |  Branch (3308:11): [True: 1, False: 0]
  ------------------
 3309|      1|	  !_g_closure_is_void (node->single_va_closure, instance))
  ------------------
  |  Branch (3309:4): [True: 0, False: 1]
  ------------------
 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|      1|      if (_g_object_has_signal_handler ((GObject *)instance))
  ------------------
  |  Branch (3324:11): [True: 0, False: 1]
  ------------------
 3325|      0|        hlist = handler_list_lookup (node->signal_id, instance);
 3326|      1|      else
 3327|      1|        hlist = NULL;
 3328|       |
 3329|      1|      for (l = hlist ? hlist->handlers : NULL; fastpath && l != NULL; l = l->next)
  ------------------
  |  Branch (3329:16): [True: 0, False: 1]
  |  Branch (3329:48): [True: 1, False: 0]
  |  Branch (3329:60): [True: 0, False: 1]
  ------------------
 3330|      0|	{
 3331|      0|	  if (!l->block_count &&
  ------------------
  |  Branch (3331:8): [True: 0, False: 0]
  ------------------
 3332|      0|	      (!l->detail || l->detail == detail))
  ------------------
  |  Branch (3332:9): [True: 0, False: 0]
  |  Branch (3332:23): [True: 0, False: 0]
  ------------------
 3333|      0|	    {
 3334|      0|	      if (closure != NULL || !_g_closure_supports_invoke_va (l->closure))
  ------------------
  |  Branch (3334:12): [True: 0, False: 0]
  |  Branch (3334:31): [True: 0, False: 0]
  ------------------
 3335|      0|		{
 3336|      0|		  fastpath = FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 3337|      0|		  break;
 3338|      0|		}
 3339|      0|	      else
 3340|      0|		{
 3341|      0|                  fastpath_handler = l;
 3342|      0|		  closure = l->closure;
 3343|      0|		  if (l->after)
  ------------------
  |  Branch (3343:9): [True: 0, False: 0]
  ------------------
 3344|      0|		    run_type = G_SIGNAL_RUN_LAST;
 3345|      0|		  else
 3346|      0|		    run_type = G_SIGNAL_RUN_FIRST;
 3347|      0|		}
 3348|      0|	    }
 3349|      0|	}
 3350|       |
 3351|      1|      if (fastpath && closure == NULL && node->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 (3351:11): [True: 1, False: 0]
  |  Branch (3351:23): [True: 1, False: 0]
  |  Branch (3351:42): [True: 1, False: 0]
  ------------------
 3352|      1|	{
 3353|      1|	  SIGNAL_UNLOCK ();
  ------------------
  |  |  329|      1|#define	SIGNAL_UNLOCK()		G_UNLOCK (g_signal_mutex)
  |  |  ------------------
  |  |  |  |  136|      1|#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
  |  |  |  |  ------------------
  |  |  |  |  |  |  109|      1|#define G_LOCK_NAME(name)             g__ ## name ## _lock
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3354|      1|	  return;
 3355|      1|	}
 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|      0|      if (closure != NULL && (node->flags & (G_SIGNAL_NO_RECURSE)) != 0)
  ------------------
  |  Branch (3359:11): [True: 0, False: 0]
  |  Branch (3359:30): [True: 0, False: 0]
  ------------------
 3360|      0|	fastpath = FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 3361|       |      
 3362|      0|      if (fastpath)
  ------------------
  |  Branch (3362:11): [True: 0, False: 0]
  ------------------
 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|      0|    }
 3461|      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
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3462|       |
 3463|      0|  n_params = node->n_params;
 3464|      0|  signal_return_type = node->return_type;
 3465|      0|  instance_and_params = g_alloca (sizeof (GValue) * (n_params + 1));
  ------------------
  |  |   91|      0|#define g_alloca(size)		 alloca (size)
  ------------------
 3466|      0|  memset (instance_and_params, 0, sizeof (GValue) * (n_params + 1));
 3467|      0|  param_values = instance_and_params + 1;
 3468|       |
 3469|      0|  for (i = 0; i < node->n_params; i++)
  ------------------
  |  Branch (3469:15): [True: 0, False: 0]
  ------------------
 3470|      0|    {
 3471|      0|      gchar *error;
 3472|      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))
  |  |  ------------------
  ------------------
 3473|      0|      gboolean static_scope = 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))
  |  |  ------------------
  ------------------
 3474|       |
 3475|      0|      G_VALUE_COLLECT_INIT (param_values + i, ptype,
  ------------------
  |  |   88|      0|#define G_VALUE_COLLECT_INIT(value, _value_type, var_args, flags, __error)		\
  |  |  ------------------
  |  |  |  |  874|      0|#define G_STMT_START  do
  |  |  ------------------
  |  |   89|      0|G_STMT_START {										\
  |  |   90|      0|  GValue *g_vci_val = (value);								\
  |  |   91|      0|  guint g_vci_flags = (flags);								\
  |  |  ------------------
  |  |  |  Branch (91:24): [True: 0, False: 0]
  |  |  ------------------
  |  |   92|      0|  GTypeValueTable *g_vci_vtab = g_type_value_table_peek (_value_type);			\
  |  |   93|      0|  const gchar *g_vci_collect_format = g_vci_vtab->collect_format;					\
  |  |   94|      0|  GTypeCValue g_vci_cvalues[G_VALUE_COLLECT_FORMAT_MAX_LENGTH] = { { 0, }, };		\
  |  |   95|      0|  guint g_vci_n_values = 0;									\
  |  |   96|      0|                                                                                        \
  |  |   97|      0|  g_vci_val->g_type = _value_type;		/* value_meminit() from gvalue.c */		\
  |  |   98|      0|  while (*g_vci_collect_format)								\
  |  |  ------------------
  |  |  |  Branch (98:10): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|    {											\
  |  |  100|      0|      GTypeCValue *g_vci_cvalue = g_vci_cvalues + g_vci_n_values++;					\
  |  |  101|      0|                                                                                        \
  |  |  102|      0|      switch (*g_vci_collect_format++)							\
  |  |  103|      0|	{										\
  |  |  104|      0|	case G_VALUE_COLLECT_INT:							\
  |  |  ------------------
  |  |  |  Branch (104:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  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: 0]
  |  |  ------------------
  |  |  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: 0]
  |  |  ------------------
  |  |  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: 0]
  |  |  ------------------
  |  |  114|      0|	  g_vci_cvalue->v_double = va_arg ((var_args), gdouble);				\
  |  |  115|      0|	  break;									\
  |  |  116|      0|	case G_VALUE_COLLECT_POINTER:							\
  |  |  ------------------
  |  |  |  Branch (116:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  117|      0|	  g_vci_cvalue->v_pointer = va_arg ((var_args), gpointer);				\
  |  |  118|      0|	  break;									\
  |  |  119|      0|	default:									\
  |  |  ------------------
  |  |  |  Branch (119:2): [True: 0, False: 0]
  |  |  ------------------
  |  |  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|      0|	}										\
  |  |  122|      0|    }											\
  |  |  123|      0|  *(__error) = g_vci_vtab->collect_value (g_vci_val,						\
  |  |  124|      0|				       g_vci_n_values,					\
  |  |  125|      0|				       g_vci_cvalues,					\
  |  |  126|      0|				       g_vci_flags);						\
  |  |  127|      0|} G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      0|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3476|      0|			    var_args,
 3477|      0|			    static_scope ? G_VALUE_NOCOPY_CONTENTS : 0,
 3478|      0|			    &error);
 3479|      0|      if (error)
  ------------------
  |  Branch (3479:11): [True: 0, False: 0]
  ------------------
 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|      0|    }
 3493|       |
 3494|      0|  instance_and_params->g_type = 0;
 3495|      0|  g_value_init_from_instance (instance_and_params, instance);
 3496|      0|  if (signal_return_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)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3496:7): [True: 0, False: 0]
  ------------------
 3497|      0|    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|      0|  for (i = 0; i < n_params; i++)
  ------------------
  |  Branch (3525:15): [True: 0, False: 0]
  ------------------
 3526|      0|    g_value_unset (param_values + i);
 3527|      0|  g_value_unset (instance_and_params);
 3528|      0|}
g_signal_emit:
 3549|      1|{
 3550|      1|  va_list var_args;
 3551|       |
 3552|      1|  va_start (var_args, detail);
 3553|      1|  g_signal_emit_valist (instance, signal_id, detail, var_args);
 3554|       |  va_end (var_args);
 3555|      1|}
gsignal.c:LOOKUP_SIGNAL_NODE:
  338|      2|{
  339|      2|  if (signal_id < g_n_signal_nodes)
  ------------------
  |  Branch (339:7): [True: 2, False: 0]
  ------------------
  340|      2|    return g_signal_nodes[signal_id];
  341|      0|  else
  342|      0|    return NULL;
  343|      2|}
gsignal.c:signal_id_lookup:
  398|      1|{
  399|      1|  GQuark quark;
  400|      1|  GType *ifaces, type = itype;
  401|      1|  SignalKey key;
  402|      1|  guint n_ifaces;
  403|       |
  404|      1|  quark = g_quark_try_string (name);
  405|      1|  key.quark = quark;
  406|       |
  407|       |  /* try looking up signals for this type and its ancestors */
  408|      1|  do
  409|      1|    {
  410|      1|      SignalKey *signal_key;
  411|       |      
  412|      1|      key.itype = type;
  413|      1|      signal_key = g_bsearch_array_lookup (g_signal_key_bsa, &g_signal_key_bconfig, &key);
  ------------------
  |  |   97|      1|    g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 0)
  ------------------
  414|       |      
  415|      1|      if (signal_key)
  ------------------
  |  Branch (415:11): [True: 0, False: 1]
  ------------------
  416|      0|	return signal_key->signal_id;
  417|       |      
  418|      1|      type = g_type_parent (type);
  419|      1|    }
  420|      1|  while (type);
  ------------------
  |  Branch (420:10): [True: 0, False: 1]
  ------------------
  421|       |
  422|       |  /* no luck, try interfaces it exports */
  423|      1|  ifaces = g_type_interfaces (itype, &n_ifaces);
  424|      1|  while (n_ifaces--)
  ------------------
  |  Branch (424:10): [True: 0, False: 1]
  ------------------
  425|      0|    {
  426|      0|      SignalKey *signal_key;
  427|       |
  428|      0|      key.itype = ifaces[n_ifaces];
  429|      0|      signal_key = g_bsearch_array_lookup (g_signal_key_bsa, &g_signal_key_bconfig, &key);
  ------------------
  |  |   97|      0|    g_bsearch_array_lookup_fuzzy ((barray), (bconfig), (key_node), 0)
  ------------------
  430|       |
  431|      0|      if (signal_key)
  ------------------
  |  Branch (431:11): [True: 0, False: 0]
  ------------------
  432|      0|	{
  433|      0|	  g_free (ifaces);
  434|      0|	  return signal_key->signal_id;
  435|      0|	}
  436|      0|    }
  437|      1|  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|      1|  if (!is_canonical (name))
  ------------------
  |  Branch (441:7): [True: 0, False: 1]
  ------------------
  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|      1|  return 0;
  455|      1|}
gsignal.c:is_canonical:
  366|      2|{
  367|       |  return (strchr (key, '_') == NULL);
  368|      2|}
gsignal.c:signal_add_class_closure:
 1639|      1|{
 1640|      1|  ClassClosure key;
 1641|       |
 1642|      1|  node->single_va_closure_is_valid = FALSE;
  ------------------
  |  |  814|      1|#define	FALSE	(0)
  ------------------
 1643|       |
 1644|      1|  if (!node->class_closure_bsa)
  ------------------
  |  Branch (1644:7): [True: 1, False: 0]
  ------------------
 1645|      1|    node->class_closure_bsa = g_bsearch_array_create (&g_class_closure_bconfig);
 1646|      1|  key.instance_type = itype;
 1647|      1|  key.closure = g_closure_ref (closure);
 1648|      1|  node->class_closure_bsa = g_bsearch_array_insert (node->class_closure_bsa,
 1649|      1|						    &g_class_closure_bconfig,
 1650|      1|						    &key);
 1651|      1|  g_closure_sink (closure);
 1652|      1|  if (node->c_marshaller && closure && G_CLOSURE_NEEDS_MARSHAL (closure))
  ------------------
  |  |   39|      1|#define	G_CLOSURE_NEEDS_MARSHAL(closure) (((GClosure*) (closure))->marshal == NULL)
  |  |  ------------------
  |  |  |  Branch (39:42): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1652:7): [True: 1, False: 0]
  |  Branch (1652:29): [True: 1, False: 0]
  ------------------
 1653|      1|    {
 1654|      1|      g_closure_set_marshal (closure, node->c_marshaller);
 1655|      1|      if (node->va_marshaller)
  ------------------
  |  Branch (1655:11): [True: 1, False: 0]
  ------------------
 1656|      1|	_g_closure_set_va_marshal (closure, node->va_marshaller);
 1657|      1|    }
 1658|      1|}
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|}

g_type_interface_add_prerequisite:
 1565|      3|{
 1566|      3|  TypeNode *iface, *prerequisite_node;
 1567|      3|  IFaceHolder *holders;
 1568|       |  
 1569|      3|  g_return_if_fail (G_TYPE_IS_INTERFACE (interface_type));	/* G_TYPE_IS_INTERFACE() is an external call: _U */
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1570|      3|  g_return_if_fail (!g_type_is_a (interface_type, prerequisite_type));
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1571|      3|  g_return_if_fail (!g_type_is_a (prerequisite_type, interface_type));
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1572|       |  
 1573|      3|  iface = lookup_type_node_I (interface_type);
 1574|      3|  prerequisite_node = lookup_type_node_I (prerequisite_type);
 1575|      3|  if (!iface || !prerequisite_node || !NODE_IS_IFACE (iface))
  ------------------
  |  |  258|      3|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|      3|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|      3|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      3|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      3|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1575:7): [True: 0, False: 3]
  |  Branch (1575:17): [True: 0, False: 3]
  |  Branch (1575:39): [True: 0, False: 3]
  ------------------
 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|      3|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      3|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 1583|      3|  holders = iface_node_get_holders_L (iface);
  ------------------
  |  |  263|      3|#define	iface_node_get_holders_L(node)		((IFaceHolder*) type_get_qdata_L ((node), static_quark_iface_holder))
  ------------------
 1584|      3|  if (holders)
  ------------------
  |  Branch (1584:7): [True: 0, False: 3]
  ------------------
 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|      3|  if (prerequisite_node->is_instantiatable)
  ------------------
  |  Branch (1593:7): [True: 3, False: 0]
  ------------------
 1594|      3|    {
 1595|      3|      guint i;
 1596|       |      
 1597|       |      /* can have at most one publicly installable instantiatable prerequisite */
 1598|      3|      for (i = 0; i < IFACE_NODE_N_PREREQUISITES (iface); i++)
  ------------------
  |  |  261|      3|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  |  Branch (1598:19): [True: 0, False: 3]
  ------------------
 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|      6|      for (i = 0; i < prerequisite_node->n_supers + 1u; i++)
  ------------------
  |  Branch (1613:19): [True: 3, False: 3]
  ------------------
 1614|      3|	type_iface_add_prerequisite_W (iface, lookup_type_node_I (prerequisite_node->supers[i]));
 1615|      3|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      3|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 1616|      3|    }
 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|      3|}
g_type_create_instance:
 1843|      3|{
 1844|      3|  TypeNode *node;
 1845|      3|  GTypeInstance *instance;
 1846|      3|  GTypeClass *class;
 1847|      3|  gchar *allocated;
 1848|      3|  gint private_size;
 1849|      3|  gint ivar_size;
 1850|      3|  guint i;
 1851|       |
 1852|      3|  node = lookup_type_node_I (type);
 1853|      3|  if (!node || !node->is_instantiatable)
  ------------------
  |  Branch (1853:7): [True: 0, False: 3]
  |  Branch (1853:16): [True: 0, False: 3]
  ------------------
 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|      3|  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: 3]
  ------------------
 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|      3|  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|      3|  private_size = node->data->instance.private_size;
 1885|      3|  ivar_size = node->data->instance.instance_size;
 1886|       |
 1887|      3|#ifdef ENABLE_VALGRIND
 1888|      3|  if (private_size && 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]
  |  |  ------------------
  ------------------
  |  Branch (1888:7): [True: 2, False: 1]
  ------------------
 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|      3|  else
 1902|      3|#endif
 1903|      3|    allocated = g_slice_alloc0 (private_size + ivar_size);
 1904|       |
 1905|      3|  instance = (GTypeInstance *) (allocated + private_size);
 1906|       |
 1907|      8|  for (i = node->n_supers; i > 0; i--)
  ------------------
  |  Branch (1907:28): [True: 5, False: 3]
  ------------------
 1908|      5|    {
 1909|      5|      TypeNode *pnode;
 1910|       |      
 1911|      5|      pnode = lookup_type_node_I (node->supers[i]);
 1912|      5|      if (pnode->data->instance.instance_init)
  ------------------
  |  Branch (1912:11): [True: 5, False: 0]
  ------------------
 1913|      5|	{
 1914|      5|	  instance->g_class = pnode->data->instance.class;
 1915|      5|	  pnode->data->instance.instance_init (instance, class);
 1916|      5|	}
 1917|      5|    }
 1918|       |
 1919|      3|  instance->g_class = class;
 1920|      3|  if (node->data->instance.instance_init)
  ------------------
  |  Branch (1920:7): [True: 3, False: 0]
  ------------------
 1921|      3|    node->data->instance.instance_init (instance, class);
 1922|       |
 1923|      3|#ifdef	G_ENABLE_DEBUG
 1924|      3|  IF_DEBUG (INSTANCE_COUNT)
  ------------------
  |  |   42|      3|#define	IF_DEBUG(debug_type)	if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type)
  |  |  ------------------
  |  |  |  Branch (42:34): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 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|      3|#endif
 1929|       |
 1930|      3|  TRACE(GOBJECT_OBJECT_NEW(instance, type));
 1931|       |
 1932|      3|  return instance;
 1933|      3|}
g_type_free_instance:
 1947|      2|{
 1948|      2|  TypeNode *node;
 1949|      2|  GTypeClass *class;
 1950|      2|  gchar *allocated;
 1951|      2|  gint private_size;
 1952|      2|  gint ivar_size;
 1953|       |
 1954|      2|  g_return_if_fail (instance != NULL && instance->g_class != NULL);
  ------------------
  |  |  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|      6|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1955|       |  
 1956|      2|  class = instance->g_class;
 1957|      2|  node = lookup_type_node_I (class->g_type);
 1958|      2|  if (!node || !node->is_instantiatable || !node->data || node->data->class.class != (gpointer) class)
  ------------------
  |  Branch (1958:7): [True: 0, False: 2]
  |  Branch (1958:16): [True: 0, False: 2]
  |  Branch (1958:44): [True: 0, False: 2]
  |  Branch (1958:59): [True: 0, False: 2]
  ------------------
 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|      2|  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: 2]
  ------------------
 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|      2|  instance->g_class = NULL;
 1973|      2|  private_size = node->data->instance.private_size;
 1974|      2|  ivar_size = node->data->instance.instance_size;
 1975|      2|  allocated = ((gchar *) instance) - private_size;
 1976|       |
 1977|      2|#ifdef G_ENABLE_DEBUG
 1978|      2|  memset (allocated, 0xaa, ivar_size + private_size);
 1979|      2|#endif
 1980|       |
 1981|      2|#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|      2|  if (private_size && RUNNING_ON_VALGRIND)
  ------------------
  |  | 6215|      1|    (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */,         \
  |  |  ------------------
  |  |  |  |  413|      1|    __extension__                                                 \
  |  |  |  |  414|      1|    ({ volatile unsigned long int _zzq_args[6];                   \
  |  |  |  |  415|      1|    volatile unsigned long int _zzq_result;                       \
  |  |  |  |  416|      1|    _zzq_args[0] = (unsigned long int)(_zzq_request);             \
  |  |  |  |  417|      1|    _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
  |  |  |  |  418|      1|    _zzq_args[2] = (unsigned long int)(_zzq_arg2);                \
  |  |  |  |  419|      1|    _zzq_args[3] = (unsigned long int)(_zzq_arg3);                \
  |  |  |  |  420|      1|    _zzq_args[4] = (unsigned long int)(_zzq_arg4);                \
  |  |  |  |  421|      1|    _zzq_args[5] = (unsigned long int)(_zzq_arg5);                \
  |  |  |  |  422|      1|    __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE               \
  |  |  |  |  423|      1|                     /* %RDX = client_request ( %RAX ) */         \
  |  |  |  |  424|      1|                     "xchgq %%rbx,%%rbx"                          \
  |  |  |  |  425|      1|                     : "=d" (_zzq_result)                         \
  |  |  |  |  426|      1|                     : "a" (&_zzq_args[0]), "0" (_zzq_default)    \
  |  |  |  |  427|      1|                     : "cc", "memory"                             \
  |  |  |  |  428|      1|                    );                                            \
  |  |  |  |  429|      1|    _zzq_result;                                                  \
  |  |  |  |  430|      1|    })
  |  |  ------------------
  |  |  |  Branch (6215:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (1985:7): [True: 1, False: 1]
  ------------------
 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|      2|  else
 1999|      2|#endif
 2000|      2|    g_slice_free1 (private_size + ivar_size, allocated);
 2001|       |
 2002|      2|#ifdef	G_ENABLE_DEBUG
 2003|      2|  IF_DEBUG (INSTANCE_COUNT)
  ------------------
  |  |   42|      2|#define	IF_DEBUG(debug_type)	if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type)
  |  |  ------------------
  |  |  |  Branch (42:34): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 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|      2|#endif
 2008|       |
 2009|      2|  g_type_class_unref (class);
 2010|      2|}
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|     10|{
 2754|     10|  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|     10|  g_return_val_if_fail (class_size <= G_MAXUINT16, G_TYPE_INVALID);
  ------------------
  |  |  643|     10|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     10|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     10|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     10|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     10| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     10|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     10|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     10|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 10, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     10|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     10|   else                                         \
  |  |  |  |  |  | 1021|     10|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     10|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     10|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 10, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     10|      { } \
  |  |  646|     10|    else \
  |  |  647|     10|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     10|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     10|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2760|     10|  g_return_val_if_fail (instance_size <= G_MAXUINT16, G_TYPE_INVALID);
  ------------------
  |  |  643|     10|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     10|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     10|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     10|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     10| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     10|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     10|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     10|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 10, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     10|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     10|   else                                         \
  |  |  |  |  |  | 1021|     10|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     10|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     10|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 10, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     10|      { } \
  |  |  646|     10|    else \
  |  |  647|     10|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     10|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     10|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2761|       |
 2762|     10|  info.class_size = class_size;
 2763|     10|  info.base_init = NULL;
 2764|     10|  info.base_finalize = NULL;
 2765|     10|  info.class_init = class_init;
 2766|     10|  info.class_finalize = NULL;
 2767|     10|  info.class_data = NULL;
 2768|     10|  info.instance_size = instance_size;
 2769|     10|  info.n_preallocs = 0;
 2770|     10|  info.instance_init = instance_init;
 2771|     10|  info.value_table = NULL;
 2772|       |
 2773|     10|  return g_type_register_static (parent_type, type_name, &info, flags);
 2774|     10|}
g_type_register_static:
 2796|     62|{
 2797|     62|  TypeNode *pnode, *node;
 2798|     62|  GType type = 0;
 2799|       |  
 2800|     62|  g_assert_type_system_initialized ();
  ------------------
  |  |  140|     62|  g_assert (static_quark_type_flags)
  |  |  ------------------
  |  |  |  |  231|     62|#define g_assert(expr)                  G_STMT_START { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  874|     62|#define G_STMT_START  do
  |  |  |  |  ------------------
  |  |  |  |  232|     62|                                             if G_LIKELY (expr) ; else \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1024|     62|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 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: 62, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1019|     62|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  |  |  | 1020|     62|   else                                         \
  |  |  |  |  |  |  |  | 1021|     62|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  |  |  | 1022|     62|   _g_boolean_var_;                             \
  |  |  |  |  |  |  |  | 1023|     62|})
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1024:25): [True: 62, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  233|     62|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  |  |  ------------------
  |  |  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  |  |  ------------------
  |  |  |  |  234|      0|                                                                         #expr); \
  |  |  |  |  235|     62|                                        } G_STMT_END
  |  |  |  |  ------------------
  |  |  |  |  |  |  882|     62|#define G_STMT_END    while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (882:30): [Folded, False: 62]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2801|     62|  g_return_val_if_fail (parent_type > 0, 0);
  ------------------
  |  |  643|     62|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     62|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     62|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     62|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 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: 62, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     62|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     62|   else                                         \
  |  |  |  |  |  | 1021|     62|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     62|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     62|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 62, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     62|      { } \
  |  |  646|     62|    else \
  |  |  647|     62|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     62|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     62|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 62]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2802|     62|  g_return_val_if_fail (type_name != NULL, 0);
  ------------------
  |  |  643|     62|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     62|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     62|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     62|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 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: 62, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     62|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     62|   else                                         \
  |  |  |  |  |  | 1021|     62|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     62|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     62|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 62, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     62|      { } \
  |  |  646|     62|    else \
  |  |  647|     62|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     62|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     62|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 62]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2803|     62|  g_return_val_if_fail (info != NULL, 0);
  ------------------
  |  |  643|     62|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     62|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     62|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     62|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 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: 62, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     62|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     62|   else                                         \
  |  |  |  |  |  | 1021|     62|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     62|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     62|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 62, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     62|      { } \
  |  |  646|     62|    else \
  |  |  647|     62|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     62|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     62|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 62]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2804|       |  
 2805|     62|  if (!check_type_name_I (type_name) ||
  ------------------
  |  Branch (2805:7): [True: 0, False: 62]
  ------------------
 2806|     62|      !check_derivation_I (parent_type, type_name))
  ------------------
  |  Branch (2806:7): [True: 0, False: 62]
  ------------------
 2807|      0|    return 0;
 2808|     62|  if (info->class_finalize)
  ------------------
  |  Branch (2808:7): [True: 0, False: 62]
  ------------------
 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|     62|  pnode = lookup_type_node_I (parent_type);
 2816|     62|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|     62|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2817|     62|  type_data_ref_Wm (pnode);
 2818|     62|  if (check_type_info_I (pnode, NODE_FUNDAMENTAL_TYPE (pnode), type_name, info))
  ------------------
  |  |  254|     62|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  |  Branch (2818:7): [True: 62, False: 0]
  ------------------
 2819|     62|    {
 2820|     62|      node = type_node_new_W (pnode, type_name, NULL);
 2821|     62|      type_add_flags_W (node, flags);
 2822|     62|      type = NODE_TYPE (node);
  ------------------
  |  |  252|     62|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2823|     62|      type_data_make_W (node, info,
 2824|     62|			check_value_table_I (type_name, info->value_table) ? info->value_table : NULL);
  ------------------
  |  Branch (2824:4): [True: 2, False: 60]
  ------------------
 2825|     62|    }
 2826|     62|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|     62|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2827|       |  
 2828|     62|  return type;
 2829|     62|}
g_type_add_interface_static:
 2890|      3|{
 2891|       |  /* G_TYPE_IS_INSTANTIATABLE() is an external call: _U */
 2892|      3|  g_return_if_fail (G_TYPE_IS_INSTANTIATABLE (instance_type));
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2893|      3|  g_return_if_fail (g_type_parent (interface_type) == G_TYPE_INTERFACE);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 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|      3|  g_rec_mutex_lock (&class_init_rec_mutex); /* required locking order: 1) class_init_rec_mutex, 2) type_rw_lock */
 2900|      3|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      3|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2901|      3|  if (check_add_interface_L (instance_type, interface_type))
  ------------------
  |  Branch (2901:7): [True: 3, False: 0]
  ------------------
 2902|      3|    {
 2903|      3|      TypeNode *node = lookup_type_node_I (instance_type);
 2904|      3|      TypeNode *iface = lookup_type_node_I (interface_type);
 2905|      3|      if (check_interface_info_I (iface, NODE_TYPE (node), info))
  ------------------
  |  |  252|      3|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
  |  Branch (2905:11): [True: 3, False: 0]
  ------------------
 2906|      3|        type_add_interface_Wm (node, iface, info, NULL);
 2907|      3|    }
 2908|      3|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      3|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2909|      3|  g_rec_mutex_unlock (&class_init_rec_mutex);
 2910|      3|}
g_type_class_ref:
 2963|     14|{
 2964|     14|  TypeNode *node;
 2965|     14|  GType ptype;
 2966|     14|  gboolean holds_ref;
 2967|     14|  GTypeClass *pclass;
 2968|       |
 2969|       |  /* optimize for common code path */
 2970|     14|  node = lookup_type_node_I (type);
 2971|     14|  if (!node || !node->is_classed)
  ------------------
  |  Branch (2971:7): [True: 0, False: 14]
  |  Branch (2971:16): [True: 0, False: 14]
  ------------------
 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|     14|  if (G_LIKELY (type_data_ref_U (node)))
  ------------------
  |  | 1024|     14|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|     14| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     14|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|     14|   int _g_boolean_var_;                         \
  |  |  |  | 1018|     14|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 14, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 1019|     14|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     14|   else                                         \
  |  |  |  | 1021|     14|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     14|   _g_boolean_var_;                             \
  |  |  |  | 1023|     14|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 14, False: 0]
  |  |  ------------------
  ------------------
 2979|     14|    {
 2980|     14|      if (G_LIKELY (g_atomic_int_get (&node->data->class.init_state) == INITIALIZED))
  ------------------
  |  | 1024|     14|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  ------------------
  |  |  |  | 1016|     14| G_GNUC_EXTENSION ({                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     14|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 1017|     14|   int _g_boolean_var_;                         \
  |  |  |  | 1018|     42|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [Folded, False: 14]
  |  |  |  |  |  Branch (1018:8): [True: 5, False: 9]
  |  |  |  |  ------------------
  |  |  |  | 1019|     14|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|     14|   else                                         \
  |  |  |  | 1021|     14|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|     14|   _g_boolean_var_;                             \
  |  |  |  | 1023|     14|})
  |  |  ------------------
  |  |  |  Branch (1024:24): [True: 5, False: 9]
  |  |  ------------------
  ------------------
 2981|      5|        return node->data->class.class;
 2982|      9|      holds_ref = TRUE;
  ------------------
  |  |  818|      9|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      9|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2983|      9|    }
 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|      9|  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|      9|  ptype = NODE_PARENT_TYPE (node);
  ------------------
  |  |  253|      9|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 2996|      9|  pclass = ptype ? g_type_class_ref (ptype) : NULL;
  ------------------
  |  Branch (2996:12): [True: 7, False: 2]
  ------------------
 2997|       |
 2998|      9|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      9|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2999|       |
 3000|      9|  if (!holds_ref)
  ------------------
  |  Branch (3000:7): [True: 0, False: 9]
  ------------------
 3001|      0|    type_data_ref_Wm (node);
 3002|       |
 3003|      9|  if (!node->data->class.class) /* class uninitialized */
  ------------------
  |  Branch (3003:7): [True: 7, False: 2]
  ------------------
 3004|      7|    type_class_init_Wm (node, pclass);
 3005|       |
 3006|      9|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      9|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 3007|       |
 3008|      9|  if (pclass)
  ------------------
  |  Branch (3008:7): [True: 7, False: 2]
  ------------------
 3009|      7|    g_type_class_unref (pclass);
 3010|       |
 3011|      9|  g_rec_mutex_unlock (&class_init_rec_mutex);
 3012|       |
 3013|      9|  return node->data->class.class;
 3014|     14|}
g_type_class_unref:
 3027|     13|{
 3028|     13|  TypeNode *node;
 3029|     13|  GTypeClass *class = g_class;
 3030|       |  
 3031|     13|  g_return_if_fail (g_class != NULL);
  ------------------
  |  |  630|     13|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     13|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|     13|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     13|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     13| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     13|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     13|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     13|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 13, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     13|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     13|   else                                         \
  |  |  |  |  |  | 1021|     13|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     13|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     13|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 13, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|     13|      { } \
  |  |  633|     13|    else \
  |  |  634|     13|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|     13|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     13|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 13]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3032|       |  
 3033|     13|  node = lookup_type_node_I (class->g_type);
 3034|     13|  if (node && node->is_classed && NODE_REFCOUNT (node))
  ------------------
  |  |  256|     13|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|     13|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     13|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|     13|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|     13|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|     13|    gint gaig_temp;                                                          \
  |  |  |  |   99|     13|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 13]
  |  |  |  |  ------------------
  |  |  |  |  100|     13|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|     13|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|     13|  }))
  |  |  ------------------
  |  |  |  Branch (256:49): [True: 13, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3034:7): [True: 13, False: 0]
  |  Branch (3034:15): [True: 13, False: 0]
  ------------------
 3035|     13|    type_data_unref_U (node, FALSE);
  ------------------
  |  |  814|     13|#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|     13|	       type_descriptive_name_I (class->g_type));
 3039|     13|}
g_type_class_peek:
 3082|      1|{
 3083|      1|  TypeNode *node;
 3084|      1|  gpointer class;
 3085|       |  
 3086|      1|  node = lookup_type_node_I (type);
 3087|      1|  if (node && node->is_classed && NODE_REFCOUNT (node) &&
  ------------------
  |  |  256|      2|#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 (256:49): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3087:7): [True: 1, False: 0]
  |  Branch (3087:15): [True: 1, False: 0]
  ------------------
 3088|      1|      g_atomic_int_get (&node->data->class.init_state) == INITIALIZED)
  ------------------
  |  |   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 (3088:7): [True: 1, False: 0]
  ------------------
 3089|       |    /* ref_count _may_ be 0 */
 3090|      1|    class = node->data->class.class;
 3091|      0|  else
 3092|      0|    class = NULL;
 3093|       |  
 3094|      1|  return class;
 3095|      1|}
g_type_class_peek_static:
 3112|      2|{
 3113|      2|  TypeNode *node;
 3114|      2|  gpointer class;
 3115|       |  
 3116|      2|  node = lookup_type_node_I (type);
 3117|      2|  if (node && node->is_classed && NODE_REFCOUNT (node) &&
  ------------------
  |  |  256|      4|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|      2|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|      2|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|      2|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|      2|    gint gaig_temp;                                                          \
  |  |  |  |   99|      2|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  100|      2|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|      2|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|      2|  }))
  |  |  ------------------
  |  |  |  Branch (256:49): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3117:7): [True: 2, False: 0]
  |  Branch (3117:15): [True: 2, False: 0]
  ------------------
 3118|      2|      /* peek only static types: */ node->plugin == NULL &&
  ------------------
  |  Branch (3118:37): [True: 2, False: 0]
  ------------------
 3119|      2|      g_atomic_int_get (&node->data->class.init_state) == INITIALIZED)
  ------------------
  |  |   96|      2|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|      2|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|      2|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|      2|    gint gaig_temp;                                                          \
  |  |   99|      2|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 2]
  |  |  ------------------
  |  |  100|      2|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|      2|    (gint) gaig_temp;                                                        \
  |  |  102|      2|  }))
  ------------------
  |  Branch (3119:7): [True: 0, False: 2]
  ------------------
 3120|       |    /* ref_count _may_ be 0 */
 3121|      0|    class = node->data->class.class;
 3122|      2|  else
 3123|      2|    class = NULL;
 3124|       |  
 3125|      2|  return class;
 3126|      2|}
g_type_class_peek_parent:
 3147|      9|{
 3148|      9|  TypeNode *node;
 3149|      9|  gpointer class = NULL;
 3150|       |  
 3151|      9|  g_return_val_if_fail (g_class != NULL, NULL);
  ------------------
  |  |  643|      9|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      9|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      9|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|      9|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      9| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      9|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      9|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      9|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 9, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      9|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      9|   else                                         \
  |  |  |  |  |  | 1021|      9|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      9|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      9|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 9, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      9|      { } \
  |  |  646|      9|    else \
  |  |  647|      9|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|      9|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      9|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3152|       |  
 3153|      9|  node = lookup_type_node_I (G_TYPE_FROM_CLASS (g_class));
  ------------------
  |  |  613|      9|#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|      9|  if (node && node->is_classed && node->data && NODE_PARENT_TYPE (node))
  ------------------
  |  |  253|      9|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  |  |  ------------------
  |  |  |  Branch (253:34): [True: 8, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (3158:7): [True: 9, False: 0]
  |  Branch (3158:15): [True: 9, False: 0]
  |  Branch (3158:35): [True: 9, False: 0]
  ------------------
 3159|      8|    {
 3160|      8|      node = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|      8|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 3161|      8|      class = node->data->class.class;
 3162|      8|    }
 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|      9|  return class;
 3167|      9|}
g_type_interface_peek:
 3184|     39|{
 3185|     39|  TypeNode *node;
 3186|     39|  TypeNode *iface;
 3187|     39|  gpointer vtable = NULL;
 3188|     39|  GTypeClass *class = instance_class;
 3189|       |  
 3190|     39|  g_return_val_if_fail (instance_class != NULL, NULL);
  ------------------
  |  |  643|     39|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     39|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|     39|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|     39|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     39| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     39|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     39|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     39|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 39, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     39|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     39|   else                                         \
  |  |  |  |  |  | 1021|     39|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     39|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     39|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 39, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|     39|      { } \
  |  |  646|     39|    else \
  |  |  647|     39|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|     39|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     39|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 39]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3191|       |  
 3192|     39|  node = lookup_type_node_I (class->g_type);
 3193|     39|  iface = lookup_type_node_I (iface_type);
 3194|     39|  if (node && node->is_instantiatable && iface)
  ------------------
  |  Branch (3194:7): [True: 39, False: 0]
  |  Branch (3194:15): [True: 39, False: 0]
  |  Branch (3194:42): [True: 39, False: 0]
  ------------------
 3195|     39|    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|     39|  return vtable;
 3200|     39|}
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|    150|{
 3409|    150|  GType type = 0;
 3410|       |  
 3411|    150|  g_return_val_if_fail (name != NULL, 0);
  ------------------
  |  |  643|    150|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    150|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|    150|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    150|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    150| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    150|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    150|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    150|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 150, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    150|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    150|   else                                         \
  |  |  |  |  |  | 1021|    150|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    150|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    150|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 150, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|    150|      { } \
  |  |  646|    150|    else \
  |  |  647|    150|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  649|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  650|      0|                                  #expr); \
  |  |  651|      0|        return (val); \
  |  |  652|      0|      } \
  |  |  653|    150|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    150|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 150]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3412|       |  
 3413|    150|  G_READ_LOCK (&type_rw_lock);
  ------------------
  |  |  126|    150|#define G_READ_LOCK(rw_lock)    g_rw_lock_reader_lock (rw_lock)
  ------------------
 3414|    150|  type = (GType) g_hash_table_lookup (static_type_nodes_ht, name);
 3415|    150|  G_READ_UNLOCK (&type_rw_lock);
  ------------------
  |  |  127|    150|#define G_READ_UNLOCK(rw_lock)  g_rw_lock_reader_unlock (rw_lock)
  ------------------
 3416|       |  
 3417|    150|  return type;
 3418|    150|}
g_type_parent:
 3431|      6|{
 3432|      6|  TypeNode *node;
 3433|       |  
 3434|      6|  node = lookup_type_node_I (type);
 3435|       |  
 3436|      6|  return node ? NODE_PARENT_TYPE (node) : 0;
  ------------------
  |  |  253|      6|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
  |  Branch (3436:10): [True: 6, False: 0]
  ------------------
 3437|      6|}
g_type_depth:
 3450|      2|{
 3451|      2|  TypeNode *node;
 3452|       |  
 3453|      2|  node = lookup_type_node_I (type);
 3454|       |  
 3455|      2|  return node ? node->n_supers + 1 : 0;
  ------------------
  |  Branch (3455:10): [True: 2, False: 0]
  ------------------
 3456|      2|}
g_type_is_a:
 3571|     22|{
 3572|     22|  TypeNode *node, *iface_node;
 3573|     22|  gboolean is_a;
 3574|       |
 3575|     22|  if (type == iface_type)
  ------------------
  |  Branch (3575:7): [True: 1, False: 21]
  ------------------
 3576|      1|    return TRUE;
  ------------------
  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3577|       |  
 3578|     21|  node = lookup_type_node_I (type);
 3579|     21|  iface_node = lookup_type_node_I (iface_type);
 3580|     21|  is_a = node && iface_node && type_node_conforms_to_U (node, iface_node, TRUE, TRUE);
  ------------------
  |  |  818|     21|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     21|#define	FALSE	(0)
  |  |  ------------------
  ------------------
                is_a = node && iface_node && type_node_conforms_to_U (node, iface_node, TRUE, TRUE);
  ------------------
  |  |  818|     21|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     21|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  |  Branch (3580:10): [True: 21, False: 0]
  |  Branch (3580:18): [True: 21, False: 0]
  |  Branch (3580:32): [True: 3, False: 18]
  ------------------
 3581|       |  
 3582|     21|  return is_a;
 3583|     22|}
g_type_interfaces:
 3644|      1|{
 3645|      1|  TypeNode *node;
 3646|       |  
 3647|      1|  node = lookup_type_node_I (type);
 3648|      1|  if (node && node->is_instantiatable)
  ------------------
  |  Branch (3648:7): [True: 1, False: 0]
  |  Branch (3648:15): [True: 1, False: 0]
  ------------------
 3649|      1|    {
 3650|      1|      IFaceEntries *entries;
 3651|      1|      GType *ifaces;
 3652|      1|      guint i;
 3653|       |      
 3654|      1|      G_READ_LOCK (&type_rw_lock);
  ------------------
  |  |  126|      1|#define G_READ_LOCK(rw_lock)    g_rw_lock_reader_lock (rw_lock)
  ------------------
 3655|      1|      entries = CLASSED_NODE_IFACES_ENTRIES_LOCKED (node);
  ------------------
  |  |  260|      1|#define	CLASSED_NODE_IFACES_ENTRIES_LOCKED(node)(G_ATOMIC_ARRAY_GET_LOCKED(CLASSED_NODE_IFACES_ENTRIES((node)), IFaceEntries))
  |  |  ------------------
  |  |  |  |   42|      1|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  |  |  ------------------
  ------------------
 3656|      1|      if (entries)
  ------------------
  |  Branch (3656:11): [True: 0, False: 1]
  ------------------
 3657|      0|	{
 3658|      0|	  ifaces = g_new (GType, IFACE_ENTRIES_N_ENTRIES (entries) + 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|	}))
  |  |  ------------------
  ------------------
 3659|      0|	  for (i = 0; i < IFACE_ENTRIES_N_ENTRIES (entries); i++)
  ------------------
  |  |  294|      0|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|      0|#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|      0|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (3659:16): [True: 0, False: 0]
  ------------------
 3660|      0|	    ifaces[i] = entries->entry[i].iface_type;
 3661|      0|	}
 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|      1|      ifaces[i] = 0;
 3668|       |      
 3669|      1|      if (n_interfaces)
  ------------------
  |  Branch (3669:11): [True: 1, False: 0]
  ------------------
 3670|      1|	*n_interfaces = i;
 3671|      1|      G_READ_UNLOCK (&type_rw_lock);
  ------------------
  |  |  127|      1|#define G_READ_UNLOCK(rw_lock)  g_rw_lock_reader_unlock (rw_lock)
  ------------------
 3672|       |      
 3673|      1|      return ifaces;
 3674|      1|    }
 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|      1|}
g_type_test_flags:
 3916|      5|{
 3917|      5|  TypeNode *node;
 3918|      5|  gboolean result = FALSE;
  ------------------
  |  |  814|      5|#define	FALSE	(0)
  ------------------
 3919|       |  
 3920|      5|  node = lookup_type_node_I (type);
 3921|      5|  if (node)
  ------------------
  |  Branch (3921:7): [True: 5, False: 0]
  ------------------
 3922|      5|    {
 3923|      5|      guint fflags = flags & TYPE_FUNDAMENTAL_FLAG_MASK;
  ------------------
  |  |  142|      5|#define TYPE_FUNDAMENTAL_FLAG_MASK (G_TYPE_FLAG_CLASSED | \
  |  |  143|      5|				    G_TYPE_FLAG_INSTANTIATABLE | \
  |  |  144|      5|				    G_TYPE_FLAG_DERIVABLE | \
  |  |  145|      5|				    G_TYPE_FLAG_DEEP_DERIVABLE)
  ------------------
 3924|      5|      guint tflags = flags & TYPE_FLAG_MASK;
  ------------------
  |  |  146|      5|#define	TYPE_FLAG_MASK		   (G_TYPE_FLAG_ABSTRACT | G_TYPE_FLAG_VALUE_ABSTRACT)
  ------------------
 3925|       |      
 3926|      5|      if (fflags)
  ------------------
  |  Branch (3926:11): [True: 5, False: 0]
  ------------------
 3927|      5|	{
 3928|      5|	  GTypeFundamentalInfo *finfo = type_node_fundamental_info_I (node);
 3929|       |	  
 3930|      5|	  fflags = (finfo->type_flags & fflags) == fflags;
 3931|      5|	}
 3932|      0|      else
 3933|      0|	fflags = TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3934|       |      
 3935|      5|      if (tflags)
  ------------------
  |  Branch (3935:11): [True: 0, False: 5]
  ------------------
 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|      5|      else
 3942|      5|	tflags = TRUE;
  ------------------
  |  |  818|      5|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      5|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3943|       |      
 3944|      5|      result = tflags && fflags;
  ------------------
  |  Branch (3944:16): [True: 5, False: 0]
  |  Branch (3944:26): [True: 5, False: 0]
  ------------------
 3945|      5|    }
 3946|       |  
 3947|      5|  return result;
 3948|      5|}
g_type_fundamental:
 4052|     10|{
 4053|     10|  TypeNode *node = lookup_type_node_I (type_id);
 4054|       |  
 4055|     10|  return node ? NODE_FUNDAMENTAL_TYPE (node) : 0;
  ------------------
  |  |  254|     10|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  |  Branch (4055:10): [True: 10, False: 0]
  ------------------
 4056|     10|}
g_type_check_instance_is_a:
 4061|    118|{
 4062|    118|  TypeNode *node, *iface;
 4063|    118|  gboolean check;
 4064|       |  
 4065|    118|  if (!type_instance || !type_instance->g_class)
  ------------------
  |  Branch (4065:7): [True: 0, False: 118]
  |  Branch (4065:25): [True: 0, False: 118]
  ------------------
 4066|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 4067|       |  
 4068|    118|  node = lookup_type_node_I (type_instance->g_class->g_type);
 4069|    118|  iface = lookup_type_node_I (iface_type);
 4070|    118|  check = node && node->is_instantiatable && iface && type_node_conforms_to_U (node, iface, TRUE, FALSE);
  ------------------
  |  |  818|    118|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    118|#define	FALSE	(0)
  |  |  ------------------
  ------------------
                check = node && node->is_instantiatable && iface && type_node_conforms_to_U (node, iface, TRUE, FALSE);
  ------------------
  |  |  814|    118|#define	FALSE	(0)
  ------------------
  |  Branch (4070:11): [True: 118, False: 0]
  |  Branch (4070:19): [True: 118, False: 0]
  |  Branch (4070:46): [True: 118, False: 0]
  |  Branch (4070:55): [True: 118, False: 0]
  ------------------
 4071|       |  
 4072|    118|  return check;
 4073|    118|}
g_type_check_instance_is_fundamentally_a:
 4078|      9|{
 4079|      9|  TypeNode *node;
 4080|      9|  if (!type_instance || !type_instance->g_class)
  ------------------
  |  Branch (4080:7): [True: 0, False: 9]
  |  Branch (4080:25): [True: 0, False: 9]
  ------------------
 4081|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 4082|      9|  node = lookup_type_node_I (type_instance->g_class->g_type);
 4083|      9|  return node && (NODE_FUNDAMENTAL_TYPE(node) == fundamental_type);
  ------------------
  |  |  254|      9|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  |  Branch (4083:10): [True: 9, False: 0]
  |  Branch (4083:18): [True: 9, False: 0]
  ------------------
 4084|      9|}
g_type_check_class_is_a:
 4089|      5|{
 4090|      5|  TypeNode *node, *iface;
 4091|      5|  gboolean check;
 4092|       |  
 4093|      5|  if (!type_class)
  ------------------
  |  Branch (4093:7): [True: 0, False: 5]
  ------------------
 4094|      0|    return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 4095|       |  
 4096|      5|  node = lookup_type_node_I (type_class->g_type);
 4097|      5|  iface = lookup_type_node_I (is_a_type);
 4098|      5|  check = node && node->is_classed && iface && type_node_conforms_to_U (node, iface, FALSE, FALSE);
  ------------------
  |  |  814|      5|#define	FALSE	(0)
  ------------------
                check = node && node->is_classed && iface && type_node_conforms_to_U (node, iface, FALSE, FALSE);
  ------------------
  |  |  814|      5|#define	FALSE	(0)
  ------------------
  |  Branch (4098:11): [True: 5, False: 0]
  |  Branch (4098:19): [True: 5, False: 0]
  |  Branch (4098:39): [True: 5, False: 0]
  |  Branch (4098:48): [True: 5, False: 0]
  ------------------
 4099|       |  
 4100|      5|  return check;
 4101|      5|}
g_type_check_instance_cast:
 4106|    142|{
 4107|    142|  if (type_instance)
  ------------------
  |  Branch (4107:7): [True: 142, False: 0]
  ------------------
 4108|    142|    {
 4109|    142|      if (type_instance->g_class)
  ------------------
  |  Branch (4109:11): [True: 142, False: 0]
  ------------------
 4110|    142|	{
 4111|    142|	  TypeNode *node, *iface;
 4112|    142|	  gboolean is_instantiatable, check;
 4113|       |	  
 4114|    142|	  node = lookup_type_node_I (type_instance->g_class->g_type);
 4115|    142|	  is_instantiatable = node && node->is_instantiatable;
  ------------------
  |  Branch (4115:24): [True: 142, False: 0]
  |  Branch (4115:32): [True: 142, False: 0]
  ------------------
 4116|    142|	  iface = lookup_type_node_I (iface_type);
 4117|    142|	  check = is_instantiatable && iface && type_node_conforms_to_U (node, iface, TRUE, FALSE);
  ------------------
  |  |  818|    142|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    142|#define	FALSE	(0)
  |  |  ------------------
  ------------------
              	  check = is_instantiatable && iface && type_node_conforms_to_U (node, iface, TRUE, FALSE);
  ------------------
  |  |  814|    142|#define	FALSE	(0)
  ------------------
  |  Branch (4117:12): [True: 142, False: 0]
  |  Branch (4117:33): [True: 142, False: 0]
  |  Branch (4117:42): [True: 142, False: 0]
  ------------------
 4118|    142|	  if (check)
  ------------------
  |  Branch (4118:8): [True: 142, False: 0]
  ------------------
 4119|    142|	    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|    142|		   type_descriptive_name_I (iface_type));
 4133|    142|    }
 4134|       |  
 4135|      0|  return type_instance;
 4136|    142|}
g_type_check_class_cast:
 4141|      9|{
 4142|      9|  if (type_class)
  ------------------
  |  Branch (4142:7): [True: 9, False: 0]
  ------------------
 4143|      9|    {
 4144|      9|      TypeNode *node, *iface;
 4145|      9|      gboolean is_classed, check;
 4146|       |      
 4147|      9|      node = lookup_type_node_I (type_class->g_type);
 4148|      9|      is_classed = node && node->is_classed;
  ------------------
  |  Branch (4148:20): [True: 9, False: 0]
  |  Branch (4148:28): [True: 9, False: 0]
  ------------------
 4149|      9|      iface = lookup_type_node_I (is_a_type);
 4150|      9|      check = is_classed && iface && type_node_conforms_to_U (node, iface, FALSE, FALSE);
  ------------------
  |  |  814|      9|#define	FALSE	(0)
  ------------------
                    check = is_classed && iface && type_node_conforms_to_U (node, iface, FALSE, FALSE);
  ------------------
  |  |  814|      9|#define	FALSE	(0)
  ------------------
  |  Branch (4150:15): [True: 9, False: 0]
  |  Branch (4150:29): [True: 9, False: 0]
  |  Branch (4150:38): [True: 9, False: 0]
  ------------------
 4151|      9|      if (check)
  ------------------
  |  Branch (4151:11): [True: 9, False: 0]
  ------------------
 4152|      9|	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|      9|	       type_descriptive_name_I (is_a_type));
 4166|      0|  return type_class;
 4167|      9|}
g_type_check_instance:
 4180|      5|{
 4181|       |  /* this function is just here to make the signal system
 4182|       |   * conveniently elaborated on instance checks
 4183|       |   */
 4184|      5|  if (type_instance)
  ------------------
  |  Branch (4184:7): [True: 5, False: 0]
  ------------------
 4185|      5|    {
 4186|      5|      if (type_instance->g_class)
  ------------------
  |  Branch (4186:11): [True: 5, False: 0]
  ------------------
 4187|      5|	{
 4188|      5|	  TypeNode *node = lookup_type_node_I (type_instance->g_class->g_type);
 4189|       |	  
 4190|      5|	  if (node && node->is_instantiatable)
  ------------------
  |  Branch (4190:8): [True: 5, False: 0]
  |  Branch (4190:16): [True: 5, False: 0]
  ------------------
 4191|      5|	    return TRUE;
  ------------------
  |  |  818|      5|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      5|#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|      5|    }
 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|      5|}
g_type_check_is_value_type:
 4248|      1|{
 4249|      1|  return type_check_is_value_type_U (type);
 4250|      1|}
g_type_check_value:
 4254|      2|{
 4255|      2|  return value && type_check_is_value_type_U (value->g_type);
  ------------------
  |  Branch (4255:10): [True: 2, False: 0]
  |  Branch (4255:19): [True: 2, False: 0]
  ------------------
 4256|      2|}
g_type_check_value_holds:
 4261|      1|{
 4262|      1|  return value && type_check_is_value_type_U (value->g_type) && g_type_is_a (value->g_type, type);
  ------------------
  |  Branch (4262:10): [True: 1, False: 0]
  |  Branch (4262:19): [True: 1, False: 0]
  |  Branch (4262:65): [True: 1, False: 0]
  ------------------
 4263|      1|}
g_type_value_table_peek:
 4280|      5|{
 4281|      5|  GTypeValueTable *vtable = NULL;
 4282|      5|  TypeNode *node = lookup_type_node_I (type);
 4283|      5|  gboolean has_refed_data, has_table;
 4284|       |
 4285|      5|  if (node && NODE_REFCOUNT (node) && node->mutatable_check_cache)
  ------------------
  |  |  256|     10|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|      5|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|      5|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|      5|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|      5|    gint gaig_temp;                                                          \
  |  |  |  |   99|      5|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  |  |  100|      5|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|      5|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|      5|  }))
  |  |  ------------------
  |  |  |  Branch (256:49): [True: 5, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (4285:7): [True: 5, False: 0]
  |  Branch (4285:39): [True: 5, False: 0]
  ------------------
 4286|      5|    return node->data->common.value_table;
 4287|       |
 4288|      0|  G_READ_LOCK (&type_rw_lock);
  ------------------
  |  |  126|      0|#define G_READ_LOCK(rw_lock)    g_rw_lock_reader_lock (rw_lock)
  ------------------
 4289|       |  
 4290|      0| restart_table_peek:
 4291|      0|  has_refed_data = node && node->data && NODE_REFCOUNT (node) > 0;
  ------------------
  |  |  256|      0|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->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|  }))
  |  |  ------------------
  ------------------
  |  Branch (4291:20): [True: 0, False: 0]
  |  Branch (4291:28): [True: 0, False: 0]
  |  Branch (4291:42): [True: 0, False: 0]
  ------------------
 4292|      0|  has_table = has_refed_data && node->data->common.value_table->value_init;
  ------------------
  |  Branch (4292:15): [True: 0, False: 0]
  |  Branch (4292:33): [True: 0, False: 0]
  ------------------
 4293|      0|  if (has_refed_data)
  ------------------
  |  Branch (4293:7): [True: 0, False: 0]
  ------------------
 4294|      0|    {
 4295|      0|      if (has_table)
  ------------------
  |  Branch (4295:11): [True: 0, False: 0]
  ------------------
 4296|      0|	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|      0|    }
 4315|       |  
 4316|      0|  G_READ_UNLOCK (&type_rw_lock);
  ------------------
  |  |  127|      0|#define G_READ_UNLOCK(rw_lock)  g_rw_lock_reader_unlock (rw_lock)
  ------------------
 4317|       |  
 4318|      0|  if (vtable)
  ------------------
  |  Branch (4318:7): [True: 0, False: 0]
  ------------------
 4319|      0|    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|      0|}
_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|      7|{
 4668|      7|  TypeNode *node = lookup_type_node_I (class_gtype);
 4669|       |
 4670|      7|  g_return_val_if_fail (private_size > 0, 0);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4671|      7|  g_return_val_if_fail (private_size <= 0xffff, 0);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4672|       |
 4673|      7|  if (!node || !node->is_classed || !node->is_instantiatable || !node->data)
  ------------------
  |  Branch (4673:7): [True: 0, False: 7]
  |  Branch (4673:16): [True: 0, False: 7]
  |  Branch (4673:37): [True: 0, False: 7]
  |  Branch (4673:65): [True: 0, False: 7]
  ------------------
 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|      7|  if (node->plugin != NULL)
  ------------------
  |  Branch (4680:7): [True: 0, False: 7]
  ------------------
 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|      7|  return private_size;
 4718|      7|}
g_type_class_adjust_private_offset:
 4724|      3|{
 4725|      3|  GType class_gtype = ((GTypeClass *) g_class)->g_type;
 4726|      3|  TypeNode *node = lookup_type_node_I (class_gtype);
 4727|      3|  gssize private_size;
 4728|       |
 4729|      3|  g_return_if_fail (private_size_or_offset != NULL);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 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|      3|  if (*private_size_or_offset > 0)
  ------------------
  |  Branch (4735:7): [True: 3, False: 0]
  ------------------
 4736|      3|    g_return_if_fail (*private_size_or_offset <= 0xffff);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4737|      0|  else
 4738|      0|    return;
 4739|       |
 4740|      3|  if (!node || !node->is_classed || !node->is_instantiatable || !node->data)
  ------------------
  |  Branch (4740:7): [True: 0, False: 3]
  |  Branch (4740:16): [True: 0, False: 3]
  |  Branch (4740:37): [True: 0, False: 3]
  |  Branch (4740:65): [True: 0, False: 3]
  ------------------
 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|      3|  if (NODE_PARENT_TYPE (node))
  ------------------
  |  |  253|      3|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  |  |  ------------------
  |  |  |  Branch (253:34): [True: 2, False: 1]
  |  |  ------------------
  ------------------
 4749|      2|    {
 4750|      2|      TypeNode *pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|      2|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 4751|      2|      if (node->data->instance.private_size != pnode->data->instance.private_size)
  ------------------
  |  Branch (4751:11): [True: 0, False: 2]
  ------------------
 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|      2|    }
 4758|       |
 4759|      3|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      3|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 4760|       |
 4761|      3|  private_size = ALIGN_STRUCT (node->data->instance.private_size + *private_size_or_offset);
  ------------------
  |  |  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))
  |  |  ------------------
  ------------------
 4762|      3|  g_assert (private_size <= 0xffff);
  ------------------
  |  |  231|      3|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      3|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      3|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 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:25): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      3|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      3|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      3|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4763|      3|  node->data->instance.private_size = private_size;
 4764|       |
 4765|      3|  *private_size_or_offset = -(gint) node->data->instance.private_size;
 4766|       |
 4767|      3|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      3|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 4768|      3|}
g_type_add_class_private:
 4858|      2|{
 4859|      2|  TypeNode *node = lookup_type_node_I (class_type);
 4860|      2|  gsize offset;
 4861|       |
 4862|      2|  g_return_if_fail (private_size > 0);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4863|       |
 4864|      2|  if (!node || !node->is_classed || !node->data)
  ------------------
  |  Branch (4864:7): [True: 0, False: 2]
  |  Branch (4864:16): [True: 0, False: 2]
  |  Branch (4864:37): [True: 0, False: 2]
  ------------------
 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|      2|  if (NODE_PARENT_TYPE (node))
  ------------------
  |  |  253|      2|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  |  |  ------------------
  |  |  |  Branch (253:34): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 4872|      2|    {
 4873|      2|      TypeNode *pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|      2|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 4874|      2|      if (node->data->class.class_private_size != pnode->data->class.class_private_size)
  ------------------
  |  Branch (4874:11): [True: 0, False: 2]
  ------------------
 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|      2|    }
 4880|       |  
 4881|      2|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      2|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 4882|       |
 4883|      2|  offset = ALIGN_STRUCT (node->data->class.class_private_size);
  ------------------
  |  |  161|      2|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      2|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      2|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 4884|      2|  node->data->class.class_private_size = offset + private_size;
 4885|       |
 4886|      2|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      2|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 4887|      2|}
g_type_class_get_private:
 4892|      5|{
 4893|      5|  TypeNode *class_node;
 4894|      5|  TypeNode *private_node;
 4895|      5|  TypeNode *parent_node;
 4896|      5|  gsize offset;
 4897|       |
 4898|      5|  g_return_val_if_fail (klass != NULL, 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|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4899|       |
 4900|      5|  class_node = lookup_type_node_I (klass->g_type);
 4901|      5|  if (G_UNLIKELY (!class_node || !class_node->is_classed))
  ------------------
  |  | 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|     15|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 0, False: 5]
  |  |  |  |  |  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]
  |  |  ------------------
  ------------------
 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|      5|  private_node = lookup_type_node_I (private_type);
 4909|      5|  if (G_UNLIKELY (!private_node || !NODE_IS_ANCESTOR (private_node, class_node)))
  ------------------
  |  | 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|     25|   if (expr)                                    \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  Branch (1018:8): [True: 5, False: 0]
  |  |  |  |  |  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]
  |  |  ------------------
  ------------------
 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|      5|  offset = ALIGN_STRUCT (class_node->data->class.class_size);
  ------------------
  |  |  161|      5|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      5|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      5|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 4917|       |
 4918|      5|  if (NODE_PARENT_TYPE (private_node))
  ------------------
  |  |  253|      5|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  |  |  ------------------
  |  |  |  Branch (253:34): [True: 5, False: 0]
  |  |  ------------------
  ------------------
 4919|      5|    {
 4920|      5|      parent_node = lookup_type_node_I (NODE_PARENT_TYPE (private_node));
  ------------------
  |  |  253|      5|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 4921|      5|      g_assert (parent_node->data && NODE_REFCOUNT (parent_node) > 0);
  ------------------
  |  |  231|      5|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      5|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      5|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      5|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      5| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      5|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      5|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|     25|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 5]
  |  |  |  |  |  |  |  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:25): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      5|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      5|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      5|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4922|       |
 4923|      5|      if (G_UNLIKELY (private_node->data->class.class_private_size == parent_node->data->class.class_private_size))
  ------------------
  |  | 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]
  |  |  ------------------
  ------------------
 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|      5|      offset += ALIGN_STRUCT (parent_node->data->class.class_private_size);
  ------------------
  |  |  161|      5|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      5|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      5|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 4930|      5|    }
 4931|       |
 4932|      5|  return G_STRUCT_MEMBER_P (klass, offset);
  ------------------
  |  |  860|      5|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 4933|      5|}
g_type_ensure:
 4956|      6|{
 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|      6|  if (G_UNLIKELY (type == (GType)-1))
  ------------------
  |  | 1025|      6|#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
  |  |  ------------------
  |  |  |  | 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: 0, False: 6]
  |  |  |  |  ------------------
  |  |  |  | 1019|      6|      _g_boolean_var_ = 1;                      \
  |  |  |  | 1020|      6|   else                                         \
  |  |  |  | 1021|      6|      _g_boolean_var_ = 0;                      \
  |  |  |  | 1022|      6|   _g_boolean_var_;                             \
  |  |  |  | 1023|      6|})
  |  |  ------------------
  |  |  |  Branch (1025:26): [True: 0, False: 6]
  |  |  ------------------
  ------------------
 4962|      6|    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|      6|}
gtype.c:lookup_type_node_I:
  395|  1.30k|{
  396|  1.30k|  if (utype > G_TYPE_FUNDAMENTAL_MAX)
  ------------------
  |  |   45|  1.30k|#define	G_TYPE_FUNDAMENTAL_MAX		(255 << G_TYPE_FUNDAMENTAL_SHIFT)
  |  |  ------------------
  |  |  |  |  210|  1.30k|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  ------------------
  ------------------
  |  Branch (396:7): [True: 768, False: 541]
  ------------------
  397|    768|    return (TypeNode*) (utype & ~TYPE_ID_MASK);
  ------------------
  |  |  267|    768|#define	TYPE_ID_MASK				((GType) ((1 << G_TYPE_FUNDAMENTAL_SHIFT) - 1))
  |  |  ------------------
  |  |  |  |  210|    768|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  ------------------
  ------------------
  398|    541|  else
  399|    541|    return static_fundamental_type_nodes[utype >> G_TYPE_FUNDAMENTAL_SHIFT];
  ------------------
  |  |  210|    541|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  ------------------
  400|  1.30k|}
gtype.c:type_iface_add_prerequisite_W:
 1508|      3|{
 1509|      3|  GType prerequisite_type = NODE_TYPE (prerequisite_node);
  ------------------
  |  |  252|      3|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 1510|      3|  GType *prerequisites, *dependants;
 1511|      3|  guint n_dependants, i;
 1512|       |  
 1513|      3|  g_assert (NODE_IS_IFACE (iface) &&
  ------------------
  |  |  231|      3|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      3|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      3|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 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|     18|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, 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:25): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      3|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      3|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      3|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1514|      3|	    IFACE_NODE_N_PREREQUISITES (iface) < MAX_N_PREREQUISITES &&
 1515|      3|	    (prerequisite_node->is_instantiatable || NODE_IS_IFACE (prerequisite_node)));
 1516|       |  
 1517|      3|  prerequisites = IFACE_NODE_PREREQUISITES (iface);
  ------------------
  |  |  262|      3|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
 1518|      3|  for (i = 0; i < IFACE_NODE_N_PREREQUISITES (iface); i++)
  ------------------
  |  |  261|      3|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  |  Branch (1518:15): [True: 0, False: 3]
  ------------------
 1519|      0|    if (prerequisites[i] == prerequisite_type)
  ------------------
  |  Branch (1519:9): [True: 0, False: 0]
  ------------------
 1520|      0|      return;			/* we already have that prerequisiste */
 1521|      0|    else if (prerequisites[i] > prerequisite_type)
  ------------------
  |  Branch (1521:14): [True: 0, False: 0]
  ------------------
 1522|      0|      break;
 1523|      3|  IFACE_NODE_N_PREREQUISITES (iface) += 1;
  ------------------
  |  |  261|      3|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
 1524|      3|  IFACE_NODE_PREREQUISITES (iface) = g_renew (GType,
  ------------------
  |  |  262|      3|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
                IFACE_NODE_PREREQUISITES (iface) = g_renew (GType,
  ------------------
  |  |  321|      3|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|      3|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      3|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|      3|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|      3|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|      3|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|      3|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  |  254|      3|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|      3|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  |  256|      3|	           (__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|      3|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|      3|	  else							\
  |  |  |  |  259|      3|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|      3|	  __p;							\
  |  |  |  |  261|      3|	}))
  |  |  ------------------
  ------------------
 1525|      3|					      IFACE_NODE_PREREQUISITES (iface),
 1526|      3|					      IFACE_NODE_N_PREREQUISITES (iface));
 1527|      3|  prerequisites = IFACE_NODE_PREREQUISITES (iface);
  ------------------
  |  |  262|      3|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
 1528|      3|  memmove (prerequisites + i + 1, prerequisites + i,
 1529|      3|           sizeof (prerequisites[0]) * (IFACE_NODE_N_PREREQUISITES (iface) - i - 1));
  ------------------
  |  |  261|      3|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
 1530|      3|  prerequisites[i] = prerequisite_type;
 1531|       |  
 1532|       |  /* we want to get notified when prerequisites get added to prerequisite_node */
 1533|      3|  if (NODE_IS_IFACE (prerequisite_node))
  ------------------
  |  |  258|      3|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|      3|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|      3|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      3|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      3|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 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|      3|  dependants = iface_node_get_dependants_array_L (iface);
  ------------------
  |  |  265|      3|#define	iface_node_get_dependants_array_L(n)	((GType*) type_get_qdata_L ((n), static_quark_dependants_array))
  ------------------
 1546|      3|  n_dependants = dependants ? dependants[0] : 0;
  ------------------
  |  Branch (1546:18): [True: 0, False: 3]
  ------------------
 1547|      3|  for (i = 1; i <= n_dependants; i++)
  ------------------
  |  Branch (1547:15): [True: 0, False: 3]
  ------------------
 1548|      0|    type_iface_add_prerequisite_W (lookup_type_node_I (dependants[i]), prerequisite_node);
 1549|      3|}
gtype.c:check_type_name_I:
  743|    100|{
  744|    100|  static const gchar extra_chars[] = "-_+";
  745|    100|  const gchar *p = type_name;
  746|    100|  gboolean name_valid;
  747|       |  
  748|    100|  if (!type_name[0] || !type_name[1] || !type_name[2])
  ------------------
  |  Branch (748:7): [True: 0, False: 100]
  |  Branch (748:24): [True: 0, False: 100]
  |  Branch (748:41): [True: 0, False: 100]
  ------------------
  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|    100|  name_valid = (p[0] >= 'A' && p[0] <= 'Z') || (p[0] >= 'a' && p[0] <= 'z') || p[0] == '_';
  ------------------
  |  Branch (754:17): [True: 100, False: 0]
  |  Branch (754:32): [True: 74, False: 26]
  |  Branch (754:49): [True: 26, False: 0]
  |  Branch (754:64): [True: 26, False: 0]
  |  Branch (754:80): [True: 0, False: 0]
  ------------------
  755|    953|  for (p = type_name + 1; *p; p++)
  ------------------
  |  Branch (755:27): [True: 853, False: 100]
  ------------------
  756|    853|    name_valid &= ((p[0] >= 'A' && p[0] <= 'Z') ||
  ------------------
  |  Branch (756:21): [True: 837, False: 16]
  |  Branch (756:36): [True: 142, False: 695]
  ------------------
  757|    711|		   (p[0] >= 'a' && p[0] <= 'z') ||
  ------------------
  |  Branch (757:7): [True: 695, False: 16]
  |  Branch (757:22): [True: 695, 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|    100|  if (!name_valid)
  ------------------
  |  Branch (760:7): [True: 0, False: 100]
  ------------------
  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|    100|  if (g_type_from_name (type_name))
  ------------------
  |  Branch (765:7): [True: 0, False: 100]
  ------------------
  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|    100|  return TRUE;
  ------------------
  |  |  818|    100|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    100|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  772|    100|}
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|    104|{
  428|    104|  guint n_supers;
  429|    104|  GType type;
  430|    104|  TypeNode *node;
  431|    104|  guint i, node_size = 0;
  432|       |
  433|    104|  n_supers = pnode ? pnode->n_supers + 1 : 0;
  ------------------
  |  Branch (433:14): [True: 62, False: 42]
  ------------------
  434|       |  
  435|    104|  if (!pnode)
  ------------------
  |  Branch (435:7): [True: 42, False: 62]
  ------------------
  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|    104|  node_size += SIZEOF_BASE_TYPE_NODE ();	      /* TypeNode structure */
  ------------------
  |  |  247|    104|#define SIZEOF_BASE_TYPE_NODE()			(G_STRUCT_OFFSET (TypeNode, supers))
  |  |  ------------------
  |  |  |  |  853|    104|      ((glong) offsetof (struct_type, member))
  |  |  ------------------
  ------------------
  438|    104|  node_size += (sizeof (GType) * (1 + n_supers + 1)); /* self + ancestors + (0) for ->supers[] */
  439|    104|  node = g_malloc0 (node_size);
  440|    104|  if (!pnode)					      /* offset fundamental types */
  ------------------
  |  Branch (440:7): [True: 42, False: 62]
  ------------------
  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|     62|  else
  451|     62|    type = (GType) node;
  452|       |  
  453|    104|  g_assert ((type & TYPE_ID_MASK) == 0);
  ------------------
  |  |  231|    104|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    104|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|    104|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|    104|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    104| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    104|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    104|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    104|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 104, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    104|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    104|   else                                         \
  |  |  |  |  |  | 1021|    104|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    104|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    104|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 104, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|    104|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|    104|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    104|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 104]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  454|       |  
  455|    104|  node->n_supers = n_supers;
  456|    104|  if (!pnode)
  ------------------
  |  Branch (456:7): [True: 42, False: 62]
  ------------------
  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|     62|  else
  473|     62|    {
  474|     62|      node->supers[0] = type;
  475|     62|      memcpy (node->supers + 1, pnode->supers, sizeof (GType) * (1 + pnode->n_supers + 1));
  476|       |      
  477|     62|      node->is_classed = pnode->is_classed;
  478|     62|      node->is_instantiatable = pnode->is_instantiatable;
  479|       |      
  480|     62|      if (NODE_IS_IFACE (node))
  ------------------
  |  |  258|     62|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|     62|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     62|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     62|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     62|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 5, False: 57]
  |  |  ------------------
  ------------------
  481|      5|	{
  482|      5|	  IFACE_NODE_N_PREREQUISITES (node) = 0;
  ------------------
  |  |  261|      5|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  483|      5|	  IFACE_NODE_PREREQUISITES (node) = NULL;
  ------------------
  |  |  262|      5|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
  484|      5|	}
  485|     57|      else
  486|     57|	{
  487|     57|	  guint j;
  488|     57|	  IFaceEntries *entries;
  489|       |
  490|     57|	  entries = _g_atomic_array_copy (CLASSED_NODE_IFACES_ENTRIES (pnode),
  ------------------
  |  |  259|     57|#define	CLASSED_NODE_IFACES_ENTRIES(node)	(&(node)->_prot.iface_entries)
  ------------------
  491|     57|					  IFACE_ENTRIES_HEADER_SIZE,
  ------------------
  |  |  293|     57|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  ------------------
  492|     57|					  0);
  493|     57|	  if (entries)
  ------------------
  |  Branch (493:8): [True: 4, False: 53]
  ------------------
  494|      4|	    {
  495|      8|	      for (j = 0; j < IFACE_ENTRIES_N_ENTRIES (entries); 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 (495:20): [True: 4, False: 4]
  ------------------
  496|      4|		{
  497|      4|		  entries->entry[j].vtable = NULL;
  498|      4|		  entries->entry[j].init_state = UNINITIALIZED;
  499|      4|		}
  500|      4|	      _g_atomic_array_update (CLASSED_NODE_IFACES_ENTRIES (node),
  ------------------
  |  |  259|      4|#define	CLASSED_NODE_IFACES_ENTRIES(node)	(&(node)->_prot.iface_entries)
  ------------------
  501|      4|				      entries);
  502|      4|	    }
  503|     57|	}
  504|       |
  505|     62|      i = pnode->n_children++;
  506|     62|      pnode->children = g_renew (GType, pnode->children, pnode->n_children);
  ------------------
  |  |  321|     62|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|     62|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     62|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|     62|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|     62|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|     62|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|     62|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 62]
  |  |  |  |  ------------------
  |  |  |  |  254|     62|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|     62|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 0, False: 62]
  |  |  |  |  ------------------
  |  |  |  |  256|     62|	           (__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|     62|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|     62|	  else							\
  |  |  |  |  259|     62|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|     62|	  __p;							\
  |  |  |  |  261|     62|	}))
  |  |  ------------------
  ------------------
  507|     62|      pnode->children[i] = type;
  508|     62|    }
  509|       |
  510|    104|  TRACE(GOBJECT_TYPE_NEW(name, node->supers[1], type));
  511|       |
  512|    104|  node->plugin = plugin;
  513|    104|  node->n_children = 0;
  514|    104|  node->children = NULL;
  515|    104|  node->data = NULL;
  516|    104|  node->qname = g_quark_from_string (name);
  517|    104|  node->global_gdata = NULL;
  518|    104|  g_hash_table_insert (static_type_nodes_ht,
  519|    104|		       (gpointer) g_quark_to_string (node->qname),
  520|    104|		       (gpointer) type);
  521|       |
  522|    104|  g_atomic_int_inc ((gint *)&type_registration_serial);
  ------------------
  |  |  148|    104|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|    104|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|    104|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|    104|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|    104|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 104]
  |  |  ------------------
  |  |  151|    104|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|    104|  }))
  ------------------
  523|       |
  524|    104|  return node;
  525|    104|}
gtype.c:check_type_info_I:
  892|    100|{
  893|    100|  GTypeFundamentalInfo *finfo = type_node_fundamental_info_I (lookup_type_node_I (ftype));
  894|    100|  gboolean is_interface = ftype == G_TYPE_INTERFACE;
  ------------------
  |  |   68|    100|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  ------------------
  |  |  |  |  221|    100|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|    100|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  895|       |  
  896|    100|  g_assert (ftype <= G_TYPE_FUNDAMENTAL_MAX && !(ftype & TYPE_ID_MASK));
  ------------------
  |  |  231|    100|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    100|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|    100|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|    100|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    100| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    100|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    100|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    300|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 100, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 100, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    100|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    100|   else                                         \
  |  |  |  |  |  | 1021|    100|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    100|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    100|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 100, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|    100|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|    100|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    100|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 100]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  897|       |  
  898|       |  /* check instance members */
  899|    100|  if (!(finfo->type_flags & G_TYPE_FLAG_INSTANTIATABLE) &&
  ------------------
  |  Branch (899:7): [True: 43, False: 57]
  ------------------
  900|     43|      (info->instance_size || info->n_preallocs || info->instance_init))
  ------------------
  |  Branch (900:8): [True: 0, False: 43]
  |  Branch (900:31): [True: 0, False: 43]
  |  Branch (900:52): [True: 0, False: 43]
  ------------------
  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|    100|  if (!((finfo->type_flags & G_TYPE_FLAG_CLASSED) || is_interface) &&
  ------------------
  |  Branch (912:9): [True: 61, False: 39]
  |  Branch (912:54): [True: 5, 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|    100|  if (is_interface && info->class_size < sizeof (GTypeInterface))
  ------------------
  |  Branch (926:7): [True: 5, False: 95]
  |  Branch (926:23): [True: 0, False: 5]
  ------------------
  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|    100|  if (finfo->type_flags & G_TYPE_FLAG_CLASSED)
  ------------------
  |  Branch (933:7): [True: 61, False: 39]
  ------------------
  934|     61|    {
  935|     61|      if (info->class_size < sizeof (GTypeClass))
  ------------------
  |  Branch (935:11): [True: 0, False: 61]
  ------------------
  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|     61|      if (pnode && info->class_size < pnode->data->class.class_size)
  ------------------
  |  Branch (941:11): [True: 53, False: 8]
  |  Branch (941:20): [True: 0, False: 53]
  ------------------
  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|     61|    }
  950|       |  /* check instance size */
  951|    100|  if (finfo->type_flags & G_TYPE_FLAG_INSTANTIATABLE)
  ------------------
  |  Branch (951:7): [True: 57, False: 43]
  ------------------
  952|     57|    {
  953|     57|      if (info->instance_size < sizeof (GTypeInstance))
  ------------------
  |  Branch (953:11): [True: 0, False: 57]
  ------------------
  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|     57|      if (pnode && info->instance_size < pnode->data->instance.instance_size)
  ------------------
  |  Branch (959:11): [True: 53, False: 4]
  |  Branch (959:20): [True: 0, False: 53]
  ------------------
  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|     57|    }
  968|       |  
  969|    100|  return TRUE;
  ------------------
  |  |  818|    100|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    100|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  970|    100|}
gtype.c:type_data_make_W:
 1088|    102|{
 1089|    102|  TypeData *data;
 1090|    102|  GTypeValueTable *vtable = NULL;
 1091|    102|  guint vtable_size = 0;
 1092|       |  
 1093|    102|  g_assert (node->data == NULL && info != NULL);
  ------------------
  |  |  231|    102|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    102|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|    102|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|    102|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    102| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    102|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    102|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    306|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 102, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 102, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    102|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    102|   else                                         \
  |  |  |  |  |  | 1021|    102|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    102|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    102|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 102, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|    102|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|    102|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    102|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 102]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1094|       |  
 1095|    102|  if (!value_table)
  ------------------
  |  Branch (1095:7): [True: 64, False: 38]
  ------------------
 1096|     64|    {
 1097|     64|      TypeNode *pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|     64|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 1098|       |      
 1099|     64|      if (pnode)
  ------------------
  |  Branch (1099:11): [True: 60, False: 4]
  ------------------
 1100|     60|	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|     64|    }
 1108|    102|  if (value_table)
  ------------------
  |  Branch (1108:7): [True: 42, False: 60]
  ------------------
 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|    102|  if (node->is_instantiatable) /* careful, is_instantiatable is also is_classed */
  ------------------
  |  Branch (1119:7): [True: 57, False: 45]
  ------------------
 1120|     57|    {
 1121|     57|      TypeNode *pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|     57|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 1122|       |
 1123|     57|      data = g_malloc0 (sizeof (InstanceData) + vtable_size);
 1124|     57|      if (vtable_size)
  ------------------
  |  Branch (1124:11): [True: 4, False: 53]
  ------------------
 1125|      4|	vtable = G_STRUCT_MEMBER_P (data, sizeof (InstanceData));
  ------------------
  |  |  860|      4|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1126|     57|      data->instance.class_size = info->class_size;
 1127|     57|      data->instance.class_init_base = info->base_init;
 1128|     57|      data->instance.class_finalize_base = info->base_finalize;
 1129|     57|      data->instance.class_init = info->class_init;
 1130|     57|      data->instance.class_finalize = info->class_finalize;
 1131|     57|      data->instance.class_data = info->class_data;
 1132|     57|      data->instance.class = NULL;
 1133|     57|      data->instance.init_state = UNINITIALIZED;
 1134|     57|      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|     57|      data->instance.private_size = 0;
 1139|     57|      data->instance.class_private_size = 0;
 1140|     57|      if (pnode)
  ------------------
  |  Branch (1140:11): [True: 53, False: 4]
  ------------------
 1141|     53|        data->instance.class_private_size = pnode->data->instance.class_private_size;
 1142|     57|      data->instance.n_preallocs = MIN (info->n_preallocs, 1024);
  ------------------
  |  |  825|     57|#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (825:21): [True: 57, False: 0]
  |  |  ------------------
  ------------------
 1143|     57|      data->instance.instance_init = info->instance_init;
 1144|     57|    }
 1145|     45|  else if (node->is_classed) /* only classed */
  ------------------
  |  Branch (1145:12): [True: 4, False: 41]
  ------------------
 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|     41|  else if (NODE_IS_IFACE (node))
  ------------------
  |  |  258|     41|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|     41|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     41|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     41|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     41|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 7, False: 34]
  |  |  ------------------
  ------------------
 1165|      7|    {
 1166|      7|      data = g_malloc0 (sizeof (IFaceData) + vtable_size);
 1167|      7|      if (vtable_size)
  ------------------
  |  Branch (1167:11): [True: 2, False: 5]
  ------------------
 1168|      2|	vtable = G_STRUCT_MEMBER_P (data, sizeof (IFaceData));
  ------------------
  |  |  860|      2|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1169|      7|      data->iface.vtable_size = info->class_size;
 1170|      7|      data->iface.vtable_init_base = info->base_init;
 1171|      7|      data->iface.vtable_finalize_base = info->base_finalize;
 1172|      7|      data->iface.dflt_init = info->class_init;
 1173|      7|      data->iface.dflt_finalize = info->class_finalize;
 1174|      7|      data->iface.dflt_data = info->class_data;
 1175|      7|      data->iface.dflt_vtable = NULL;
 1176|      7|    }
 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|    102|  node->data = data;
 1191|       |  
 1192|    102|  if (vtable_size)
  ------------------
  |  Branch (1192:7): [True: 42, False: 60]
  ------------------
 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|    102|  node->data->common.value_table = vtable;
 1216|    102|  node->mutatable_check_cache = (node->data->common.value_table->value_init != NULL &&
  ------------------
  |  Branch (1216:34): [True: 93, False: 9]
  ------------------
 1217|     93|				 !((G_TYPE_FLAG_VALUE_ABSTRACT | G_TYPE_FLAG_ABSTRACT) &
  ------------------
  |  Branch (1217:6): [True: 87, False: 6]
  ------------------
 1218|     93|				   GPOINTER_TO_UINT (type_get_qdata_L (node, static_quark_type_flags))));
  ------------------
  |  |   99|     93|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 1219|       |  
 1220|    102|  g_assert (node->data->common.value_table != NULL); /* paranoid */
  ------------------
  |  |  231|    102|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    102|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|    102|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|    102|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    102| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    102|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    102|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    102|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 102, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    102|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    102|   else                                         \
  |  |  |  |  |  | 1021|    102|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    102|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    102|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 102, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|    102|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|    102|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    102|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 102]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1221|       |
 1222|    102|  g_atomic_int_set ((int *) &node->ref_count, 1);
  ------------------
  |  |  104|    102|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|    102|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  105|    102|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|    102|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  106|    102|    gint gais_temp = (gint) (newval);                                        \
  |  |  107|    102|    (void) (0 ? *(atomic) ^ (newval) : 1);                                   \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 102]
  |  |  ------------------
  |  |  108|    102|    __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST);         \
  |  |  109|    102|  }))
  ------------------
 1223|    102|}
gtype.c:check_value_table_I:
  828|    100|{
  829|    100|  if (!value_table)
  ------------------
  |  Branch (829:7): [True: 62, False: 38]
  ------------------
  830|     62|    return FALSE;
  ------------------
  |  |  814|     62|#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|    100|}
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|     62|{
  778|     62|  TypeNode *pnode;
  779|     62|  GTypeFundamentalInfo* finfo;
  780|       |  
  781|     62|  pnode = lookup_type_node_I (parent_type);
  782|     62|  if (!pnode)
  ------------------
  |  Branch (782:7): [True: 0, False: 62]
  ------------------
  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|     62|  finfo = type_node_fundamental_info_I (pnode);
  790|       |  /* ensure flat derivability */
  791|     62|  if (!(finfo->type_flags & G_TYPE_FLAG_DERIVABLE))
  ------------------
  |  Branch (791:7): [True: 0, False: 62]
  ------------------
  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|     62|  if (parent_type != NODE_FUNDAMENTAL_TYPE (pnode) &&
  ------------------
  |  |  254|    124|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  |  Branch (799:7): [True: 4, False: 58]
  ------------------
  800|      4|      !(finfo->type_flags & G_TYPE_FLAG_DEEP_DERIVABLE))
  ------------------
  |  Branch (800:7): [True: 0, False: 4]
  ------------------
  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|     62|  return TRUE;
  ------------------
  |  |  818|     62|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     62|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  809|     62|}
gtype.c:type_data_ref_Wm:
 1227|     62|{
 1228|     62|  if (!node->data)
  ------------------
  |  Branch (1228:7): [True: 0, False: 62]
  ------------------
 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|     62|  else
 1259|     62|    {
 1260|     62|      g_assert (NODE_REFCOUNT (node) > 0);
  ------------------
  |  |  231|     62|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     62|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     62|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     62|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|     62| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|     62|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|     62|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    186|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 62]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 62, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     62|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     62|   else                                         \
  |  |  |  |  |  | 1021|     62|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     62|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     62|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 62, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     62|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     62|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     62|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 62]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1261|       |      
 1262|     62|      g_atomic_int_inc ((int *) &node->ref_count);
  ------------------
  |  |  148|     62|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     62|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  149|     62|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|     62|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  150|     62|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (150:13): [Folded, False: 62]
  |  |  ------------------
  |  |  151|     62|    (void) __atomic_fetch_add ((atomic), 1, __ATOMIC_SEQ_CST);               \
  |  |  152|     62|  }))
  ------------------
 1263|     62|    }
 1264|     62|}
gtype.c:type_node_new_W:
  567|     62|{
  568|     62|  g_assert (pnode);
  ------------------
  |  |  231|     62|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     62|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     62|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     62|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 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: 62, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     62|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     62|   else                                         \
  |  |  |  |  |  | 1021|     62|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     62|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     62|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 62, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     62|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     62|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     62|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 62]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  569|     62|  g_assert (pnode->n_supers < MAX_N_SUPERS);
  ------------------
  |  |  231|     62|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     62|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     62|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     62|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 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: 62, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     62|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     62|   else                                         \
  |  |  |  |  |  | 1021|     62|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     62|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     62|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 62, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     62|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     62|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     62|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 62]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  570|     62|  g_assert (pnode->n_children < MAX_N_CHILDREN);
  ------------------
  |  |  231|     62|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|     62|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|     62|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|     62|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 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: 62, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|     62|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|     62|   else                                         \
  |  |  |  |  |  | 1021|     62|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|     62|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|     62|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 62, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|     62|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|     62|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|     62|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 62]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  571|       |  
  572|     62|  return type_node_any_new_W (pnode, NODE_FUNDAMENTAL_TYPE (pnode), name, plugin, 0);
  ------------------
  |  |  254|     62|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  573|     62|}
gtype.c:check_add_interface_L:
  991|      3|{
  992|      3|  TypeNode *node = lookup_type_node_I (instance_type);
  993|      3|  TypeNode *iface = lookup_type_node_I (iface_type);
  994|      3|  IFaceEntry *entry;
  995|      3|  TypeNode *tnode;
  996|      3|  GType *prerequisites;
  997|      3|  guint i;
  998|       |
  999|       |  
 1000|      3|  if (!node || !node->is_instantiatable)
  ------------------
  |  Branch (1000:7): [True: 0, False: 3]
  |  Branch (1000:16): [True: 0, False: 3]
  ------------------
 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|      3|  if (!iface || !NODE_IS_IFACE (iface))
  ------------------
  |  |  258|      3|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|      3|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|      3|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      3|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      3|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1006:7): [True: 0, False: 3]
  |  Branch (1006:17): [True: 0, False: 3]
  ------------------
 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|      3|  if (node->data && node->data->class.class)
  ------------------
  |  Branch (1013:7): [True: 3, False: 0]
  |  Branch (1013:21): [True: 0, False: 3]
  ------------------
 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|      3|  tnode = lookup_type_node_I (NODE_PARENT_TYPE (iface));
  ------------------
  |  |  253|      3|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 1020|      3|  if (NODE_PARENT_TYPE (tnode) && !type_lookup_iface_entry_L (node, tnode))
  ------------------
  |  |  253|      6|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  |  |  ------------------
  |  |  |  Branch (253:34): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  |  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|      3|  entry = type_lookup_iface_entry_L (node, iface);
 1031|      3|  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: 3]
  |  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|      3|  tnode = find_conforming_child_type_L (node, iface);  /* tnode is_a node */
 1043|      3|  if (tnode)
  ------------------
  |  Branch (1043:7): [True: 0, False: 3]
  ------------------
 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|      3|  prerequisites = IFACE_NODE_PREREQUISITES (iface);
  ------------------
  |  |  262|      3|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
 1052|      6|  for (i = 0; i < IFACE_NODE_N_PREREQUISITES (iface); i++)
  ------------------
  |  |  261|      6|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  |  Branch (1052:15): [True: 3, False: 3]
  ------------------
 1053|      3|    {
 1054|      3|      tnode = lookup_type_node_I (prerequisites[i]);
 1055|      3|      if (!type_node_is_a_L (node, tnode))
  ------------------
  |  Branch (1055:11): [True: 0, False: 3]
  ------------------
 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|      3|    }
 1064|      3|  return TRUE;
  ------------------
  |  |  818|      3|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      3|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1065|      3|}
gtype.c:type_lookup_iface_entry_L:
  619|     15|{
  620|     15|  if (!NODE_IS_IFACE (iface_node))
  ------------------
  |  |  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 (620:7): [True: 0, False: 15]
  ------------------
  621|      0|    return NULL;
  622|       |
  623|     15|  return lookup_iface_entry_I (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))
  |  |  ------------------
  ------------------
  624|     15|			       iface_node);
  625|     15|}
gtype.c:lookup_iface_entry_I:
  578|    153|{
  579|    153|  guint8 *offsets;
  580|    153|  gsize offset_index;
  581|    153|  IFaceEntry *check;
  582|    153|  gsize index;
  583|    153|  IFaceEntry *entry;
  584|       |
  585|    153|  if (entries == NULL)
  ------------------
  |  Branch (585:7): [True: 11, False: 142]
  ------------------
  586|     11|    return NULL;
  587|       |
  588|    153|  G_ATOMIC_ARRAY_DO_TRANSACTION
  ------------------
  |  |   44|    142|#define G_ATOMIC_ARRAY_DO_TRANSACTION(_array, _type, _C_) G_STMT_START {	\
  |  |  ------------------
  |  |  |  |  874|    142|#define G_STMT_START  do
  |  |  ------------------
  |  |   45|    142|    gpointer *_datap  = &(_array)->data;				\
  |  |   46|    142|    _type *transaction_data, *__check;						\
  |  |   47|    142|										\
  |  |   48|    142|    __check = g_atomic_pointer_get (_datap);					\
  |  |  ------------------
  |  |  |  |  113|    142|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    142|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|    142|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|    142|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|    142|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    142|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|    142|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    142|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|    142|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|    142|    gapg_temp_newval;                                                      \
  |  |  |  |  119|    142|  }))
  |  |  ------------------
  |  |   49|    142|    do {									\
  |  |   50|    142|      transaction_data = __check;						\
  |  |   51|  1.42k|      {_C_;}									\
  |  |  ------------------
  |  |  |  Branch (51:8): [True: 142, False: 0]
  |  |  |  Branch (51:8): [True: 142, False: 0]
  |  |  |  Branch (51:8): [True: 142, False: 0]
  |  |  |  Branch (51:8): [True: 142, False: 0]
  |  |  |  Branch (51:8): [True: 142, False: 0]
  |  |  ------------------
  |  |   52|    142|      __check = g_atomic_pointer_get (_datap);					\
  |  |  ------------------
  |  |  |  |  113|    142|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    142|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|    142|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|    142|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|    142|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    142|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|    142|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    142|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|    142|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|    142|    gapg_temp_newval;                                                      \
  |  |  |  |  119|    142|  }))
  |  |  ------------------
  |  |   53|    142|    } while (transaction_data != __check);					\
  |  |  ------------------
  |  |  |  Branch (53:14): [True: 0, False: 142]
  |  |  ------------------
  |  |   54|    153|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    153|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 142]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  589|    142|    (&iface_node->_prot.offsets, guint8,
  590|       |
  591|    142|     entry = NULL;
  592|    142|     offsets = transaction_data;
  593|    142|     offset_index = entries->offset_index;
  594|    142|     if (offsets != NULL &&
  595|    142|	 offset_index < G_ATOMIC_ARRAY_DATA_SIZE(offsets))
  596|    142|       {
  597|    142|	 index = offsets[offset_index];
  598|    142|	 if (index > 0)
  599|    142|	   {
  600|       |	     /* zero means unset, subtract one to get real index */
  601|    142|	     index -= 1;
  602|       |
  603|    142|	     if (index < IFACE_ENTRIES_N_ENTRIES (entries))
  604|    142|	       {
  605|    142|		 check = (IFaceEntry *)&entries->entry[index];
  606|    142|		 if (check->iface_type == NODE_TYPE (iface_node))
  607|    142|		   entry = check;
  608|    142|	       }
  609|    142|	   }
  610|    142|       }
  611|    142|     );
  612|       |
  613|    142| return entry;
  614|    153|}
gtype.c:type_iface_peek_holder_L:
 1750|      6|{
 1751|      6|  IFaceHolder *iholder;
 1752|       |  
 1753|      6|  g_assert (NODE_IS_IFACE (iface));
  ------------------
  |  |  231|      6|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      6|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      6|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      6|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      6| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      6|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      6|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      6|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 6, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      6|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      6|   else                                         \
  |  |  |  |  |  | 1021|      6|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      6|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      6|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      6|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      6|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      6|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1754|       |  
 1755|      6|  iholder = 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))
  ------------------
 1756|      8|  while (iholder && iholder->instance_type != instance_type)
  ------------------
  |  Branch (1756:10): [True: 6, False: 2]
  |  Branch (1756:21): [True: 2, False: 4]
  ------------------
 1757|      2|    iholder = iholder->next;
 1758|      6|  return iholder;
 1759|      6|}
gtype.c:find_conforming_child_type_L:
  975|      3|{
  976|      3|  TypeNode *node = NULL;
  977|      3|  guint i;
  978|       |  
  979|      3|  if (type_lookup_iface_entry_L (pnode, iface))
  ------------------
  |  Branch (979:7): [True: 0, False: 3]
  ------------------
  980|      0|    return pnode;
  981|       |  
  982|      3|  for (i = 0; i < pnode->n_children && !node; i++)
  ------------------
  |  Branch (982:15): [True: 0, False: 3]
  |  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|      3|  return node;
  986|      3|}
gtype.c:check_interface_info_I:
 1071|      3|{
 1072|      3|  if ((info->interface_finalize || info->interface_data) && !info->interface_init)
  ------------------
  |  Branch (1072:8): [True: 0, False: 3]
  |  Branch (1072:36): [True: 0, False: 3]
  |  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|      3|  return TRUE;
  ------------------
  |  |  818|      3|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      3|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1081|      3|}
gtype.c:type_add_interface_Wm:
 1469|      3|{
 1470|      3|  IFaceHolder *iholder = g_new0 (IFaceHolder, 1);
  ------------------
  |  |  307|      3|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|      3|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      3|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|      3|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|      3|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|      3|	  gpointer __p;						\
  |  |  |  |  239|      3|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  |  240|      3|	    __p = g_##func (__n);				\
  |  |  |  |  241|      3|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|      3|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      3|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|      3|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 3]
  |  |  |  |  |  Branch (242:26): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|      3|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|      3|	  else							\
  |  |  |  |  245|      3|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|      3|	  __p;							\
  |  |  |  |  247|      3|	}))
  |  |  ------------------
  ------------------
 1471|      3|  IFaceEntry *entry;
 1472|      3|  guint i;
 1473|       |
 1474|      3|  g_assert (node->is_instantiatable && NODE_IS_IFACE (iface) && ((info && !plugin) || (!info && plugin)));
  ------------------
  |  |  231|      3|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      3|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      3|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 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|     24|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 3, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 0, 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:25): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      3|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      3|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      3|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1475|       |  
 1476|      3|  iholder->next = iface_node_get_holders_L (iface);
  ------------------
  |  |  263|      3|#define	iface_node_get_holders_L(node)		((IFaceHolder*) type_get_qdata_L ((node), static_quark_iface_holder))
  ------------------
 1477|      3|  iface_node_set_holders_W (iface, iholder);
  ------------------
  |  |  264|      3|#define	iface_node_set_holders_W(node, holders)	(type_set_qdata_W ((node), static_quark_iface_holder, (holders)))
  ------------------
 1478|      3|  iholder->instance_type = NODE_TYPE (node);
  ------------------
  |  |  252|      3|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 1479|      3|  iholder->info = info ? g_memdup2 (info, sizeof (*info)) : NULL;
  ------------------
  |  Branch (1479:19): [True: 3, False: 0]
  ------------------
 1480|      3|  iholder->plugin = plugin;
 1481|       |
 1482|       |  /* create an iface entry for this type */
 1483|      3|  type_node_add_iface_entry_W (node, NODE_TYPE (iface), NULL);
  ------------------
  |  |  252|      3|#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|      3|  if (node->data)
  ------------------
  |  Branch (1488:7): [True: 3, False: 0]
  ------------------
 1489|      3|    {
 1490|      3|      InitState class_state = g_atomic_int_get (&node->data->class.init_state);
  ------------------
  |  |   96|      3|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      3|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |   97|      3|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|      3|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |   98|      3|    gint gaig_temp;                                                          \
  |  |   99|      3|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  ------------------
  |  |  |  Branch (99:13): [Folded, False: 3]
  |  |  ------------------
  |  |  100|      3|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  101|      3|    (gint) gaig_temp;                                                        \
  |  |  102|      3|  }))
  ------------------
 1491|       |      
 1492|      3|      if (class_state >= BASE_IFACE_INIT)
  ------------------
  |  Branch (1492:11): [True: 0, False: 3]
  ------------------
 1493|      0|        type_iface_vtable_base_init_Wm (iface, node);
 1494|       |      
 1495|      3|      if (class_state >= IFACE_INIT)
  ------------------
  |  Branch (1495:11): [True: 0, False: 3]
  ------------------
 1496|      0|        type_iface_vtable_iface_init_Wm (iface, node);
 1497|      3|    }
 1498|       |  
 1499|       |  /* create iface entries for children of this type */
 1500|      3|  entry = type_lookup_iface_entry_L (node, iface);
 1501|      3|  for (i = 0; i < node->n_children; i++)
  ------------------
  |  Branch (1501:15): [True: 0, False: 3]
  ------------------
 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|      3|}
gtype.c:type_node_add_iface_entry_W:
 1369|      3|{
 1370|      3|  IFaceEntries *entries;
 1371|      3|  IFaceEntry *entry;
 1372|      3|  TypeNode *iface_node;
 1373|      3|  guint i, j;
 1374|      3|  guint num_entries;
 1375|       |
 1376|      3|  g_assert (node->is_instantiatable);
  ------------------
  |  |  231|      3|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      3|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      3|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 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:25): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      3|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      3|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      3|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1377|       |
 1378|      3|  entries = CLASSED_NODE_IFACES_ENTRIES_LOCKED (node);
  ------------------
  |  |  260|      3|#define	CLASSED_NODE_IFACES_ENTRIES_LOCKED(node)(G_ATOMIC_ARRAY_GET_LOCKED(CLASSED_NODE_IFACES_ENTRIES((node)), IFaceEntries))
  |  |  ------------------
  |  |  |  |   42|      3|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  |  |  ------------------
  ------------------
 1379|      3|  if (entries != NULL)
  ------------------
  |  Branch (1379:7): [True: 0, False: 3]
  ------------------
 1380|      0|    {
 1381|      0|      num_entries = IFACE_ENTRIES_N_ENTRIES (entries);
  ------------------
  |  |  294|      0|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|      0|#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|      0|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
 1382|       |
 1383|      0|      g_assert (num_entries < MAX_N_INTERFACES);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1384|       |
 1385|      0|      for (i = 0; i < num_entries; i++)
  ------------------
  |  Branch (1385:19): [True: 0, False: 0]
  ------------------
 1386|      0|	{
 1387|      0|	  entry = &entries->entry[i];
 1388|      0|	  if (entry->iface_type == iface_type)
  ------------------
  |  Branch (1388:8): [True: 0, False: 0]
  ------------------
 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|      0|	}
 1409|      0|    }
 1410|       |
 1411|      3|  entries = _g_atomic_array_copy (CLASSED_NODE_IFACES_ENTRIES (node),
  ------------------
  |  |  259|      3|#define	CLASSED_NODE_IFACES_ENTRIES(node)	(&(node)->_prot.iface_entries)
  ------------------
 1412|      3|				  IFACE_ENTRIES_HEADER_SIZE,
  ------------------
  |  |  293|      3|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  ------------------
 1413|      3|				  sizeof (IFaceEntry));
 1414|      3|  num_entries = IFACE_ENTRIES_N_ENTRIES (entries);
  ------------------
  |  |  294|      3|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|      3|#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|      3|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
 1415|      3|  i = num_entries - 1;
 1416|      3|  if (i == 0)
  ------------------
  |  Branch (1416:7): [True: 3, False: 0]
  ------------------
 1417|      3|    entries->offset_index = 0;
 1418|      3|  entries->entry[i].iface_type = iface_type;
 1419|      3|  entries->entry[i].vtable = NULL;
 1420|      3|  entries->entry[i].init_state = UNINITIALIZED;
 1421|       |
 1422|      3|  if (parent_entry)
  ------------------
  |  Branch (1422:7): [True: 0, False: 3]
  ------------------
 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|      3|  iface_node = lookup_type_node_I (iface_type);
 1433|       |
 1434|      3|  if (iface_node_has_available_offset_L (iface_node,
  ------------------
  |  Branch (1434:7): [True: 3, False: 0]
  ------------------
 1435|      3|					 entries->offset_index,
 1436|      3|					 i))
 1437|      3|    {
 1438|      3|      iface_node_set_offset_L (iface_node,
 1439|      3|			       entries->offset_index, i);
 1440|      3|    }
 1441|      0|  else
 1442|      0|   {
 1443|      0|      entries->offset_index =
 1444|      0|	find_free_iface_offset_L (entries);
 1445|      0|      for (j = 0; j < IFACE_ENTRIES_N_ENTRIES (entries); j++)
  ------------------
  |  |  294|      0|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|      0|#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|      0|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (1445:19): [True: 0, False: 0]
  ------------------
 1446|      0|	{
 1447|      0|	  entry = &entries->entry[j];
 1448|      0|	  iface_node =
 1449|      0|	    lookup_type_node_I (entry->iface_type);
 1450|      0|	  iface_node_set_offset_L (iface_node,
 1451|      0|				   entries->offset_index, j);
 1452|      0|	}
 1453|      0|    }
 1454|       |
 1455|      3|  _g_atomic_array_update (CLASSED_NODE_IFACES_ENTRIES (node), entries);
  ------------------
  |  |  259|      3|#define	CLASSED_NODE_IFACES_ENTRIES(node)	(&(node)->_prot.iface_entries)
  ------------------
 1456|       |
 1457|      3|  if (parent_entry)
  ------------------
  |  Branch (1457:7): [True: 0, False: 3]
  ------------------
 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|      3|}
gtype.c:iface_node_has_available_offset_L:
 1285|      3|{
 1286|      3|  guint8 *offsets;
 1287|       |
 1288|      3|  offsets = G_ATOMIC_ARRAY_GET_LOCKED (&iface_node->_prot.offsets, guint8);
  ------------------
  |  |   42|      3|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  ------------------
 1289|      3|  if (offsets == NULL)
  ------------------
  |  Branch (1289:7): [True: 3, False: 0]
  ------------------
 1290|      3|    return TRUE;
  ------------------
  |  |  818|      3|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      3|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1291|       |
 1292|      0|  if (G_ATOMIC_ARRAY_DATA_SIZE (offsets) <= offset)
  ------------------
  |  |   28|      0|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  ------------------
  |  Branch (1292:7): [True: 0, False: 0]
  ------------------
 1293|      0|    return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1294|       |
 1295|      0|  if (offsets[offset] == 0 ||
  ------------------
  |  Branch (1295:7): [True: 0, False: 0]
  ------------------
 1296|      0|      offsets[offset] == for_index+1)
  ------------------
  |  Branch (1296:7): [True: 0, False: 0]
  ------------------
 1297|      0|    return TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1298|       |
 1299|      0|  return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1300|      0|}
gtype.c:iface_node_set_offset_L:
 1336|      3|{
 1337|      3|  guint8 *offsets, *old_offsets;
 1338|      3|  gsize new_size, old_size;
 1339|      3|  gsize i;
 1340|       |
 1341|      3|  old_offsets = G_ATOMIC_ARRAY_GET_LOCKED (&iface_node->_prot.offsets, guint8);
  ------------------
  |  |   42|      3|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  ------------------
 1342|      3|  if (old_offsets == NULL)
  ------------------
  |  Branch (1342:7): [True: 3, False: 0]
  ------------------
 1343|      3|    old_size = 0;
 1344|      0|  else
 1345|      0|    {
 1346|      0|      old_size = G_ATOMIC_ARRAY_DATA_SIZE (old_offsets);
  ------------------
  |  |   28|      0|#define G_ATOMIC_ARRAY_DATA_SIZE(mem) (*((gsize *) (mem) - 1))
  ------------------
 1347|      0|      if (offset < old_size &&
  ------------------
  |  Branch (1347:11): [True: 0, False: 0]
  ------------------
 1348|      0|	  old_offsets[offset] == index + 1)
  ------------------
  |  Branch (1348:4): [True: 0, False: 0]
  ------------------
 1349|      0|	return; /* Already set to this index, return */
 1350|      0|    }
 1351|      3|  new_size = MAX (old_size, offset + 1);
  ------------------
  |  |  822|      3|#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 1352|       |
 1353|      3|  offsets = _g_atomic_array_copy (&iface_node->_prot.offsets,
 1354|      3|				  0, new_size - old_size);
 1355|       |
 1356|       |  /* Mark new area as unused */
 1357|      6|  for (i = old_size; i < new_size; i++)
  ------------------
  |  Branch (1357:22): [True: 3, False: 3]
  ------------------
 1358|      3|    offsets[i] = 0;
 1359|       |
 1360|      3|  offsets[offset] = index + 1;
 1361|       |
 1362|      3|  _g_atomic_array_update (&iface_node->_prot.offsets, offsets);
 1363|      3|}
gtype.c:type_iface_vtable_base_init_Wm:
 2048|      4|{
 2049|      4|  IFaceEntry *entry;
 2050|      4|  IFaceHolder *iholder;
 2051|      4|  GTypeInterface *vtable = NULL;
 2052|      4|  TypeNode *pnode;
 2053|       |  
 2054|       |  /* type_iface_retrieve_holder_info_Wm() doesn't modify write lock for returning NULL */
 2055|      4|  iholder = type_iface_retrieve_holder_info_Wm (iface, NODE_TYPE (node), TRUE);
  ------------------
  |  |  252|      4|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
                iholder = type_iface_retrieve_holder_info_Wm (iface, NODE_TYPE (node), TRUE);
  ------------------
  |  |  818|      4|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      4|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2056|      4|  if (!iholder)
  ------------------
  |  Branch (2056:7): [True: 2, False: 2]
  ------------------
 2057|      2|    return FALSE;	/* we don't modify write lock upon FALSE */
  ------------------
  |  |  814|      2|#define	FALSE	(0)
  ------------------
 2058|       |
 2059|      2|  type_iface_ensure_dflt_vtable_Wm (iface);
 2060|       |
 2061|      2|  entry = type_lookup_iface_entry_L (node, iface);
 2062|       |
 2063|      2|  g_assert (iface->data && entry && entry->vtable == NULL && iholder && iholder->info);
  ------------------
  |  |  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|     18|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2064|       |  
 2065|      2|  entry->init_state = IFACE_INIT;
 2066|       |
 2067|      2|  pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|      2|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 2068|      2|  if (pnode)	/* want to copy over parent iface contents */
  ------------------
  |  Branch (2068:7): [True: 2, False: 0]
  ------------------
 2069|      2|    {
 2070|      2|      IFaceEntry *pentry = type_lookup_iface_entry_L (pnode, iface);
 2071|       |      
 2072|      2|      if (pentry)
  ------------------
  |  Branch (2072:11): [True: 0, False: 2]
  ------------------
 2073|      0|	vtable = g_memdup2 (pentry->vtable, iface->data->iface.vtable_size);
 2074|      2|    }
 2075|      2|  if (!vtable)
  ------------------
  |  Branch (2075:7): [True: 2, False: 0]
  ------------------
 2076|      2|    vtable = g_memdup2 (iface->data->iface.dflt_vtable, iface->data->iface.vtable_size);
 2077|      2|  entry->vtable = vtable;
 2078|      2|  vtable->g_type = NODE_TYPE (iface);
  ------------------
  |  |  252|      2|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2079|      2|  vtable->g_instance_type = NODE_TYPE (node);
  ------------------
  |  |  252|      2|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2080|       |  
 2081|      2|  if (iface->data->iface.vtable_init_base)
  ------------------
  |  Branch (2081:7): [True: 0, False: 2]
  ------------------
 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|      2|  return TRUE;	/* initialized the vtable */
  ------------------
  |  |  818|      2|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      2|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 2088|      2|}
gtype.c:type_iface_retrieve_holder_info_Wm:
 1765|      4|{
 1766|      4|  IFaceHolder *iholder = type_iface_peek_holder_L (iface, instance_type);
 1767|       |  
 1768|      4|  if (iholder && !iholder->info && need_info)
  ------------------
  |  Branch (1768:7): [True: 2, False: 2]
  |  Branch (1768:18): [True: 0, False: 2]
  |  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|      4|  return iholder;	/* we don't modify write lock upon returning NULL */
 1792|      4|}
gtype.c:type_iface_vtable_iface_init_Wm:
 2099|      2|{
 2100|      2|  IFaceEntry *entry = type_lookup_iface_entry_L (node, iface);
 2101|      2|  IFaceHolder *iholder = type_iface_peek_holder_L (iface, NODE_TYPE (node));
  ------------------
  |  |  252|      2|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2102|      2|  GTypeInterface *vtable = NULL;
 2103|      2|  guint i;
 2104|       |  
 2105|       |  /* iholder->info should have been filled in by type_iface_vtable_base_init_Wm() */
 2106|      2|  g_assert (iface->data && entry && iholder && iholder->info);
  ------------------
  |  |  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|     14|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2107|      2|  g_assert (entry->init_state == IFACE_INIT); /* assert prior base_init() */
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2108|       |  
 2109|      2|  entry->init_state = INITIALIZED;
 2110|       |      
 2111|      2|  vtable = entry->vtable;
 2112|       |
 2113|      2|  if (iholder->info->interface_init)
  ------------------
  |  Branch (2113:7): [True: 2, False: 0]
  ------------------
 2114|      2|    {
 2115|      2|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      2|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2116|      2|      if (iholder->info->interface_init)
  ------------------
  |  Branch (2116:11): [True: 2, False: 0]
  ------------------
 2117|      2|	iholder->info->interface_init (vtable, iholder->info->interface_data);
 2118|      2|      G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      2|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2119|      2|    }
 2120|       |  
 2121|      4|  for (i = 0; i < static_n_iface_check_funcs; i++)
  ------------------
  |  Branch (2121:15): [True: 2, False: 2]
  ------------------
 2122|      2|    {
 2123|      2|      GTypeInterfaceCheckFunc check_func = static_iface_check_funcs[i].check_func;
 2124|      2|      gpointer check_data = static_iface_check_funcs[i].check_data;
 2125|       |
 2126|      2|      G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      2|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2127|      2|      check_func (check_data, (gpointer)vtable);
 2128|      2|      G_WRITE_LOCK (&type_rw_lock);      
  ------------------
  |  |  128|      2|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2129|      2|    }
 2130|      2|}
gtype.c:type_data_ref_U:
 1268|     14|{
 1269|     14|  guint current;
 1270|       |
 1271|     14|  do {
 1272|     14|    current = NODE_REFCOUNT (node);
  ------------------
  |  |  256|     14|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|     14|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     14|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|     14|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|     14|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|     14|    gint gaig_temp;                                                          \
  |  |  |  |   99|     14|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 14]
  |  |  |  |  ------------------
  |  |  |  |  100|     14|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|     14|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|     14|  }))
  |  |  ------------------
  ------------------
 1273|       |
 1274|     14|    if (current < 1)
  ------------------
  |  Branch (1274:9): [True: 0, False: 14]
  ------------------
 1275|      0|      return FALSE;
  ------------------
  |  |  814|      0|#define	FALSE	(0)
  ------------------
 1276|     14|  } while (!g_atomic_int_compare_and_exchange ((int *) &node->ref_count, current, current + 1));
  ------------------
  |  |  160|     14|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     14|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  161|     14|    gint gaicae_oldval = (oldval);                                           \
  |  |  162|     14|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|     14|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  163|     14|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  ------------------
  |  |  |  Branch (163:13): [Folded, False: 14]
  |  |  ------------------
  |  |  164|     14|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|     14|#define	FALSE	(0)
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  818|     14|#define	TRUE	(!FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     14|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  |  |  |  Branch (164:5): [True: 14, False: 0]
  |  |  ------------------
  |  |  165|     14|  }))
  ------------------
  |  Branch (1276:12): [True: 0, False: 14]
  ------------------
 1277|       |
 1278|     14|  return TRUE;
  ------------------
  |  |  818|     14|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     14|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 1279|     14|}
gtype.c:type_class_init_Wm:
 2170|      7|{
 2171|      7|  GSList *slist, *init_slist = NULL;
 2172|      7|  GTypeClass *class;
 2173|      7|  IFaceEntries *entries;
 2174|      7|  IFaceEntry *entry;
 2175|      7|  TypeNode *bnode, *pnode;
 2176|      7|  guint i;
 2177|       |  
 2178|       |  /* Accessing data->class will work for instantiatable types
 2179|       |   * too because ClassData is a subset of InstanceData
 2180|       |   */
 2181|      7|  g_assert (node->is_classed && node->data &&
  ------------------
  |  |  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|     77|   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: 7, False: 0]
  |  |  |  |  |  |  |  Branch (1018:8): [Folded, False: 7]
  |  |  |  |  |  |  |  Branch (1018:8): [True: 7, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      7|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      7|   else                                         \
  |  |  |  |  |  | 1021|      7|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      7|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      7|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 7, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      7|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      7|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      7|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2182|      7|	    node->data->class.class_size &&
 2183|      7|	    !node->data->class.class &&
 2184|      7|	    g_atomic_int_get (&node->data->class.init_state) == UNINITIALIZED);
 2185|      7|  if (node->data->class.class_private_size)
  ------------------
  |  Branch (2185:7): [True: 2, False: 5]
  ------------------
 2186|      2|    class = g_malloc0 (ALIGN_STRUCT (node->data->class.class_size) + node->data->class.class_private_size);
  ------------------
  |  |  161|      2|      ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      2|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  |  |                     ((offset + (STRUCT_ALIGNMENT - 1)) & -STRUCT_ALIGNMENT)
  |  |  ------------------
  |  |  |  |  159|      2|#define STRUCT_ALIGNMENT (2 * sizeof (gsize))
  |  |  ------------------
  ------------------
 2187|      5|  else
 2188|      5|    class = g_malloc0 (node->data->class.class_size);
 2189|      7|  node->data->class.class = class;
 2190|      7|  g_atomic_int_set (&node->data->class.init_state, BASE_CLASS_INIT);
  ------------------
  |  |  104|      7|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      7|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  105|      7|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|      7|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  106|      7|    gint gais_temp = (gint) (newval);                                        \
  |  |  107|      7|    (void) (0 ? *(atomic) ^ (newval) : 1);                                   \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 7]
  |  |  ------------------
  |  |  108|      7|    __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST);         \
  |  |  109|      7|  }))
  ------------------
 2191|       |  
 2192|      7|  if (pclass)
  ------------------
  |  Branch (2192:7): [True: 5, False: 2]
  ------------------
 2193|      5|    {
 2194|      5|      TypeNode *pnode = lookup_type_node_I (pclass->g_type);
 2195|       |      
 2196|      5|      memcpy (class, pclass, pnode->data->class.class_size);
 2197|      5|      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|      5|    ((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|      5|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 2198|       |
 2199|      5|      if (node->is_instantiatable)
  ------------------
  |  Branch (2199:11): [True: 5, False: 0]
  ------------------
 2200|      5|	{
 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|      5|	  node->data->instance.private_size = pnode->data->instance.private_size;
 2206|      5|	}
 2207|      5|    }
 2208|      7|  class->g_type = NODE_TYPE (node);
  ------------------
  |  |  252|      7|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2209|       |  
 2210|      7|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      7|#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|     21|  for (bnode = node; bnode; bnode = lookup_type_node_I (NODE_PARENT_TYPE (bnode)))
  ------------------
  |  |  253|     14|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
  |  Branch (2215:22): [True: 14, False: 7]
  ------------------
 2216|     14|    if (bnode->data->class.class_init_base)
  ------------------
  |  Branch (2216:9): [True: 7, False: 7]
  ------------------
 2217|      7|      init_slist = g_slist_prepend (init_slist, (gpointer) bnode->data->class.class_init_base);
 2218|     14|  for (slist = init_slist; slist; slist = slist->next)
  ------------------
  |  Branch (2218:28): [True: 7, False: 7]
  ------------------
 2219|      7|    {
 2220|      7|      GBaseInitFunc class_init_base = (GBaseInitFunc) slist->data;
 2221|       |      
 2222|      7|      class_init_base (class);
 2223|      7|    }
 2224|      7|  g_slist_free (init_slist);
 2225|       |  
 2226|      7|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      7|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2227|       |
 2228|      7|  g_atomic_int_set (&node->data->class.init_state, BASE_IFACE_INIT);
  ------------------
  |  |  104|      7|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      7|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  105|      7|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|      7|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  106|      7|    gint gais_temp = (gint) (newval);                                        \
  |  |  107|      7|    (void) (0 ? *(atomic) ^ (newval) : 1);                                   \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 7]
  |  |  ------------------
  |  |  108|      7|    __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST);         \
  |  |  109|      7|  }))
  ------------------
 2229|       |  
 2230|       |  /* Before we initialize the class, base initialize all interfaces, either
 2231|       |   * from parent, or through our holder info
 2232|       |   */
 2233|      7|  pnode = lookup_type_node_I (NODE_PARENT_TYPE (node));
  ------------------
  |  |  253|      7|#define NODE_PARENT_TYPE(node)			(node->supers[1])
  ------------------
 2234|       |
 2235|      7|  i = 0;
 2236|     11|  while ((entries = CLASSED_NODE_IFACES_ENTRIES_LOCKED (node)) != NULL &&
  ------------------
  |  |  260|     11|#define	CLASSED_NODE_IFACES_ENTRIES_LOCKED(node)(G_ATOMIC_ARRAY_GET_LOCKED(CLASSED_NODE_IFACES_ENTRIES((node)), IFaceEntries))
  |  |  ------------------
  |  |  |  |   42|     11|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  |  |  ------------------
  ------------------
  |  Branch (2236:10): [True: 8, False: 3]
  ------------------
 2237|      8|	  i < 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))
  |  |  ------------------
  ------------------
  |  Branch (2237:4): [True: 4, False: 4]
  ------------------
 2238|      4|    {
 2239|      4|      entry = &entries->entry[i];
 2240|      4|      while (i < 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|      4|#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|      4|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (2240:14): [True: 4, False: 0]
  ------------------
 2241|      4|	     entry->init_state == IFACE_INIT)
  ------------------
  |  Branch (2241:7): [True: 0, False: 4]
  ------------------
 2242|      0|	{
 2243|      0|	  entry++;
 2244|      0|	  i++;
 2245|      0|	}
 2246|       |
 2247|      4|      if (i == IFACE_ENTRIES_N_ENTRIES (entries))
  ------------------
  |  |  294|      4|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|      4|#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|      4|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (2247:11): [True: 0, False: 4]
  ------------------
 2248|      0|	break;
 2249|       |
 2250|      4|      if (!type_iface_vtable_base_init_Wm (lookup_type_node_I (entry->iface_type), node))
  ------------------
  |  Branch (2250:11): [True: 2, False: 2]
  ------------------
 2251|      2|	{
 2252|      2|	  guint j;
 2253|      2|	  IFaceEntries *pentries = CLASSED_NODE_IFACES_ENTRIES_LOCKED (pnode);
  ------------------
  |  |  260|      2|#define	CLASSED_NODE_IFACES_ENTRIES_LOCKED(node)(G_ATOMIC_ARRAY_GET_LOCKED(CLASSED_NODE_IFACES_ENTRIES((node)), IFaceEntries))
  |  |  ------------------
  |  |  |  |   42|      2|#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|      2|	  g_assert (pnode != NULL);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2259|       |
 2260|      2|	  if (pentries)
  ------------------
  |  Branch (2260:8): [True: 2, False: 0]
  ------------------
 2261|      2|	    for (j = 0; j < IFACE_ENTRIES_N_ENTRIES (pentries); j++)
  ------------------
  |  |  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))
  |  |  ------------------
  ------------------
  |  Branch (2261:18): [True: 2, False: 0]
  ------------------
 2262|      2|	      {
 2263|      2|		IFaceEntry *pentry = &pentries->entry[j];
 2264|       |
 2265|      2|		if (pentry->iface_type == entry->iface_type)
  ------------------
  |  Branch (2265:7): [True: 2, False: 0]
  ------------------
 2266|      2|		  {
 2267|      2|		    entry->vtable = pentry->vtable;
 2268|      2|		    entry->init_state = INITIALIZED;
 2269|      2|		    break;
 2270|      2|		  }
 2271|      2|	      }
 2272|      2|	  g_assert (entry->vtable != NULL);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2273|      2|	}
 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|      4|      i++;
 2282|      4|    }
 2283|       |  
 2284|      7|  g_atomic_int_set (&node->data->class.init_state, CLASS_INIT);
  ------------------
  |  |  104|      7|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      7|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  105|      7|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|      7|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  106|      7|    gint gais_temp = (gint) (newval);                                        \
  |  |  107|      7|    (void) (0 ? *(atomic) ^ (newval) : 1);                                   \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 7]
  |  |  ------------------
  |  |  108|      7|    __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST);         \
  |  |  109|      7|  }))
  ------------------
 2285|       |  
 2286|      7|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      7|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2287|       |
 2288|      7|  if (node->data->class.class_init)
  ------------------
  |  Branch (2288:7): [True: 7, False: 0]
  ------------------
 2289|      7|    node->data->class.class_init (class, (gpointer) node->data->class.class_data);
 2290|       |  
 2291|      7|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      7|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2292|       |  
 2293|      7|  g_atomic_int_set (&node->data->class.init_state, IFACE_INIT);
  ------------------
  |  |  104|      7|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      7|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  105|      7|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|      7|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  106|      7|    gint gais_temp = (gint) (newval);                                        \
  |  |  107|      7|    (void) (0 ? *(atomic) ^ (newval) : 1);                                   \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 7]
  |  |  ------------------
  |  |  108|      7|    __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST);         \
  |  |  109|      7|  }))
  ------------------
 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|      7|  i = 0;
 2302|      9|  while ((entries = CLASSED_NODE_IFACES_ENTRIES_LOCKED (node)) != NULL)
  ------------------
  |  |  260|      9|#define	CLASSED_NODE_IFACES_ENTRIES_LOCKED(node)(G_ATOMIC_ARRAY_GET_LOCKED(CLASSED_NODE_IFACES_ENTRIES((node)), IFaceEntries))
  |  |  ------------------
  |  |  |  |   42|      9|#define  G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
  |  |  ------------------
  ------------------
  |  Branch (2302:10): [True: 6, False: 3]
  ------------------
 2303|      6|    {
 2304|      6|      entry = &entries->entry[i];
 2305|      8|      while (i < IFACE_ENTRIES_N_ENTRIES (entries) &&
  ------------------
  |  |  294|     16|#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 (2305:14): [True: 4, False: 4]
  ------------------
 2306|      4|	     entry->init_state == INITIALIZED)
  ------------------
  |  Branch (2306:7): [True: 2, False: 2]
  ------------------
 2307|      2|	{
 2308|      2|	  entry++;
 2309|      2|	  i++;
 2310|      2|	}
 2311|       |
 2312|      6|      if (i == IFACE_ENTRIES_N_ENTRIES (entries))
  ------------------
  |  |  294|      6|#define IFACE_ENTRIES_N_ENTRIES(_entries) ( (G_ATOMIC_ARRAY_DATA_SIZE((_entries)) - IFACE_ENTRIES_HEADER_SIZE) / sizeof(IFaceEntry) )
  |  |  ------------------
  |  |  |  |   28|      6|#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|      6|#define IFACE_ENTRIES_HEADER_SIZE (sizeof(IFaceEntries) - sizeof(IFaceEntry))
  |  |  ------------------
  ------------------
  |  Branch (2312:11): [True: 4, False: 2]
  ------------------
 2313|      4|	break;
 2314|       |
 2315|      2|      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|      2|      i++;
 2322|      2|    }
 2323|       |  
 2324|      7|  g_atomic_int_set (&node->data->class.init_state, INITIALIZED);
  ------------------
  |  |  104|      7|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|      7|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  105|      7|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|      7|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  106|      7|    gint gais_temp = (gint) (newval);                                        \
  |  |  107|      7|    (void) (0 ? *(atomic) ^ (newval) : 1);                                   \
  |  |  ------------------
  |  |  |  Branch (107:13): [Folded, False: 7]
  |  |  ------------------
  |  |  108|      7|    __atomic_store ((gint *)(atomic), &gais_temp, __ATOMIC_SEQ_CST);         \
  |  |  109|      7|  }))
  ------------------
 2325|      7|}
gtype.c:type_data_unref_U:
 2479|     13|{
 2480|     13|  guint current;
 2481|       |
 2482|     13|  do {
 2483|     13|    current = NODE_REFCOUNT (node);
  ------------------
  |  |  256|     13|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|     13|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     13|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|     13|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|     13|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|     13|    gint gaig_temp;                                                          \
  |  |  |  |   99|     13|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 13]
  |  |  |  |  ------------------
  |  |  |  |  100|     13|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|     13|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|     13|  }))
  |  |  ------------------
  ------------------
 2484|       |
 2485|     13|    if (current <= 1)
  ------------------
  |  Branch (2485:9): [True: 0, False: 13]
  ------------------
 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|     13|  } while (!g_atomic_int_compare_and_exchange ((int *) &node->ref_count, current, current - 1));
  ------------------
  |  |  160|     13|  (G_GNUC_EXTENSION ({                                                       \
  |  |  ------------------
  |  |  |  |   54|     13|#define G_GNUC_EXTENSION __extension__
  |  |  ------------------
  |  |  161|     13|    gint gaicae_oldval = (oldval);                                           \
  |  |  162|     13|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  ------------------
  |  |  |  |  765|     13|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  ------------------
  |  |  163|     13|    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
  |  |  ------------------
  |  |  |  Branch (163:13): [Folded, False: 13]
  |  |  ------------------
  |  |  164|     13|    __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  814|     13|#define	FALSE	(0)
  |  |  ------------------
  |  |                   __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
  |  |  ------------------
  |  |  |  |  818|     13|#define	TRUE	(!FALSE)
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|     13|#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: 13, False: 0]
  |  |  ------------------
  |  |  165|     13|  }))
  ------------------
  |  Branch (2511:12): [True: 0, False: 13]
  ------------------
 2512|     13|}
gtype.c:type_lookup_iface_vtable_I:
  632|    138|{
  633|    138|  IFaceEntry *entry;
  634|    138|  gboolean res;
  635|       |
  636|    138|  if (!NODE_IS_IFACE (iface_node))
  ------------------
  |  |  258|    138|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|    138|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|    138|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|    138|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|    138|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (636:7): [True: 0, False: 138]
  ------------------
  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|    138|  G_ATOMIC_ARRAY_DO_TRANSACTION
  ------------------
  |  |   44|    138|#define G_ATOMIC_ARRAY_DO_TRANSACTION(_array, _type, _C_) G_STMT_START {	\
  |  |  ------------------
  |  |  |  |  874|    138|#define G_STMT_START  do
  |  |  ------------------
  |  |   45|    138|    gpointer *_datap  = &(_array)->data;				\
  |  |   46|    138|    _type *transaction_data, *__check;						\
  |  |   47|    138|										\
  |  |   48|    138|    __check = g_atomic_pointer_get (_datap);					\
  |  |  ------------------
  |  |  |  |  113|    138|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    138|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|    138|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|    138|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|    138|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    138|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|    138|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    138|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|    138|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|    138|    gapg_temp_newval;                                                      \
  |  |  |  |  119|    138|  }))
  |  |  ------------------
  |  |   49|    138|    do {									\
  |  |   50|    138|      transaction_data = __check;						\
  |  |   51|    255|      {_C_;}									\
  |  |  ------------------
  |  |  |  Branch (51:8): [True: 39, False: 0]
  |  |  |  Branch (51:8): [True: 39, False: 99]
  |  |  ------------------
  |  |   52|    138|      __check = g_atomic_pointer_get (_datap);					\
  |  |  ------------------
  |  |  |  |  113|    138|  (G_GNUC_EXTENSION ({                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    138|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  114|    138|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));               \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|    138|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |  115|    138|    glib_typeof (*(atomic)) gapg_temp_newval;                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    138|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  116|    138|    glib_typeof ((atomic)) gapg_temp_atomic = (atomic);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  238|    138|#define glib_typeof(t) __typeof__ (t)
  |  |  |  |  ------------------
  |  |  |  |  117|    138|    __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
  |  |  |  |  118|    138|    gapg_temp_newval;                                                      \
  |  |  |  |  119|    138|  }))
  |  |  ------------------
  |  |   53|    138|    } while (transaction_data != __check);					\
  |  |  ------------------
  |  |  |  Branch (53:14): [True: 0, False: 138]
  |  |  ------------------
  |  |   54|    138|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    138|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 138]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  644|    138|    (CLASSED_NODE_IFACES_ENTRIES (node), IFaceEntries,
  645|       |
  646|    138|     entry = lookup_iface_entry_I (transaction_data, iface_node);
  647|    138|     res = entry != NULL;
  648|    138|     if (vtable_ptr)
  649|    138|       {
  650|    138|	 if (entry)
  651|    138|	   *vtable_ptr = entry->vtable;
  652|    138|	 else
  653|    138|	   *vtable_ptr = NULL;
  654|    138|       }
  655|    138|     );
  656|       |
  657|    138|  return res;
  658|    138|}
gtype.c:type_iface_ensure_dflt_vtable_Wm:
 2014|      2|{
 2015|      2|  g_assert (iface->data);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2016|       |
 2017|      2|  if (!iface->data->iface.dflt_vtable)
  ------------------
  |  Branch (2017:7): [True: 2, False: 0]
  ------------------
 2018|      2|    {
 2019|      2|      GTypeInterface *vtable = g_malloc0 (iface->data->iface.vtable_size);
 2020|      2|      iface->data->iface.dflt_vtable = vtable;
 2021|      2|      vtable->g_type = NODE_TYPE (iface);
  ------------------
  |  |  252|      2|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 2022|      2|      vtable->g_instance_type = 0;
 2023|      2|      if (iface->data->iface.vtable_init_base ||
  ------------------
  |  Branch (2023:11): [True: 0, False: 2]
  ------------------
 2024|      2|          iface->data->iface.dflt_init)
  ------------------
  |  Branch (2024:11): [True: 2, False: 0]
  ------------------
 2025|      2|        {
 2026|      2|          G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      2|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 2027|      2|          if (iface->data->iface.vtable_init_base)
  ------------------
  |  Branch (2027:15): [True: 0, False: 2]
  ------------------
 2028|      0|            iface->data->iface.vtable_init_base (vtable);
 2029|      2|          if (iface->data->iface.dflt_init)
  ------------------
  |  Branch (2029:15): [True: 2, False: 0]
  ------------------
 2030|      2|            iface->data->iface.dflt_init (vtable, (gpointer) iface->data->iface.dflt_data);
 2031|      2|          G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      2|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 2032|      2|        }
 2033|      2|    }
 2034|      2|}
gtype.c:type_node_is_a_L:
 3543|      3|{
 3544|      3|  return type_node_check_conformities_UorL (node, iface_node, TRUE, TRUE, TRUE);
  ------------------
  |  |  818|      3|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      3|#define	FALSE	(0)
  |  |  ------------------
  ------------------
                return type_node_check_conformities_UorL (node, iface_node, TRUE, TRUE, TRUE);
  ------------------
  |  |  818|      3|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      3|#define	FALSE	(0)
  |  |  ------------------
  ------------------
                return type_node_check_conformities_UorL (node, iface_node, TRUE, TRUE, TRUE);
  ------------------
  |  |  818|      3|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      3|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3545|      3|}
gtype.c:type_node_check_conformities_UorL:
 3504|    298|{
 3505|    298|  gboolean match;
 3506|       |
 3507|    298|  if (/* support_inheritance && */
 3508|    298|      NODE_IS_ANCESTOR (iface_node, node))
  ------------------
  |  |  270|    298|        ((ancestor)->n_supers <= (node)->n_supers &&                                        \
  |  |  ------------------
  |  |  |  Branch (270:10): [True: 295, False: 3]
  |  |  ------------------
  |  |  271|    298|	 (node)->supers[(node)->n_supers - (ancestor)->n_supers] == NODE_TYPE (ancestor))
  |  |  ------------------
  |  |  |  |  252|    295|#define NODE_TYPE(node)				(node->supers[0])
  |  |  ------------------
  |  |  |  Branch (271:3): [True: 184, False: 111]
  |  |  ------------------
  ------------------
 3509|    184|    return TRUE;
  ------------------
  |  |  818|    184|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|    184|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3510|       |
 3511|    114|  support_interfaces = support_interfaces && node->is_instantiatable && NODE_IS_IFACE (iface_node);
  ------------------
  |  |  258|    225|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|    111|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|    111|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|    111|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|    111|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 99, False: 12]
  |  |  ------------------
  ------------------
  |  Branch (3511:24): [True: 114, False: 0]
  |  Branch (3511:46): [True: 111, False: 3]
  ------------------
 3512|    114|  support_prerequisites = support_prerequisites && NODE_IS_IFACE (node);
  ------------------
  |  |  258|    132|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|     18|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|     18|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|     18|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|     18|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 3, False: 15]
  |  |  ------------------
  ------------------
  |  Branch (3512:27): [True: 18, False: 96]
  ------------------
 3513|    114|  match = FALSE;
  ------------------
  |  |  814|    114|#define	FALSE	(0)
  ------------------
 3514|    114|  if (support_interfaces)
  ------------------
  |  Branch (3514:7): [True: 99, False: 15]
  ------------------
 3515|     99|    {
 3516|     99|      if (have_lock)
  ------------------
  |  Branch (3516:11): [True: 0, False: 99]
  ------------------
 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|     99|      else
 3522|     99|	{
 3523|     99|	  if (type_lookup_iface_vtable_I (node, iface_node, NULL))
  ------------------
  |  Branch (3523:8): [True: 96, False: 3]
  ------------------
 3524|     96|	    match = TRUE;
  ------------------
  |  |  818|     96|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|     96|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3525|     99|	}
 3526|     99|    }
 3527|    114|  if (!match &&
  ------------------
  |  Branch (3527:7): [True: 18, False: 96]
  ------------------
 3528|     18|      support_prerequisites)
  ------------------
  |  Branch (3528:7): [True: 3, False: 15]
  ------------------
 3529|      3|    {
 3530|      3|      if (!have_lock)
  ------------------
  |  Branch (3530:11): [True: 3, False: 0]
  ------------------
 3531|      3|	G_READ_LOCK (&type_rw_lock);
  ------------------
  |  |  126|      3|#define G_READ_LOCK(rw_lock)    g_rw_lock_reader_lock (rw_lock)
  ------------------
 3532|      3|      if (support_prerequisites && type_lookup_prerequisite_L (node, NODE_TYPE (iface_node)))
  ------------------
  |  |  252|      3|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
  |  Branch (3532:11): [True: 3, False: 0]
  |  Branch (3532:36): [True: 0, False: 3]
  ------------------
 3533|      0|	match = TRUE;
  ------------------
  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 3534|      3|      if (!have_lock)
  ------------------
  |  Branch (3534:11): [True: 3, False: 0]
  ------------------
 3535|      3|	G_READ_UNLOCK (&type_rw_lock);
  ------------------
  |  |  127|      3|#define G_READ_UNLOCK(rw_lock)  g_rw_lock_reader_unlock (rw_lock)
  ------------------
 3536|      3|    }
 3537|    114|  return match;
 3538|    298|}
gtype.c:type_lookup_prerequisite_L:
  663|      3|{
  664|      3|  if (NODE_IS_IFACE (iface) && IFACE_NODE_N_PREREQUISITES (iface))
  ------------------
  |  |  258|      6|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|      3|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|      3|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      3|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      3|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 3, False: 0]
  |  |  ------------------
  ------------------
                if (NODE_IS_IFACE (iface) && IFACE_NODE_N_PREREQUISITES (iface))
  ------------------
  |  |  261|      3|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  |  |  ------------------
  |  |  |  Branch (261:42): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  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|      3|  return FALSE;
  ------------------
  |  |  814|      3|#define	FALSE	(0)
  ------------------
  689|      3|}
gtype.c:type_node_conforms_to_U:
 3552|    295|{
 3553|    295|  return type_node_check_conformities_UorL (node, iface_node, support_interfaces, support_prerequisites, FALSE);
  ------------------
  |  |  814|    295|#define	FALSE	(0)
  ------------------
 3554|    295|}
gtype.c:type_get_qdata_L:
 3699|    209|{
 3700|    209|  GData *gdata = node->global_gdata;
 3701|       |  
 3702|    209|  if (quark && gdata && gdata->n_qdatas)
  ------------------
  |  Branch (3702:7): [True: 209, False: 0]
  |  Branch (3702:16): [True: 109, False: 100]
  |  Branch (3702:25): [True: 109, False: 0]
  ------------------
 3703|    109|    {
 3704|    109|      QData *qdatas = gdata->qdatas - 1;
 3705|    109|      guint n_qdatas = gdata->n_qdatas;
 3706|       |      
 3707|    109|      do
 3708|    115|	{
 3709|    115|	  guint i;
 3710|    115|	  QData *check;
 3711|       |	  
 3712|    115|	  i = (n_qdatas + 1) / 2;
 3713|    115|	  check = qdatas + i;
 3714|    115|	  if (quark == check->quark)
  ------------------
  |  Branch (3714:8): [True: 100, False: 15]
  ------------------
 3715|    100|	    return check->data;
 3716|     15|	  else if (quark > check->quark)
  ------------------
  |  Branch (3716:13): [True: 15, False: 0]
  ------------------
 3717|     15|	    {
 3718|     15|	      n_qdatas -= i;
 3719|     15|	      qdatas = check;
 3720|     15|	    }
 3721|      0|	  else /* if (quark < check->quark) */
 3722|      0|	    n_qdatas = i - 1;
 3723|    115|	}
 3724|    109|      while (n_qdatas);
  ------------------
  |  Branch (3724:14): [True: 6, False: 9]
  ------------------
 3725|    109|    }
 3726|    109|  return NULL;
 3727|    209|}
gtype.c:type_set_qdata_W:
 3769|    103|{
 3770|    103|  GData *gdata;
 3771|    103|  QData *qdata;
 3772|    103|  guint i;
 3773|       |  
 3774|       |  /* setup qdata list if necessary */
 3775|    103|  if (!node->global_gdata)
  ------------------
  |  Branch (3775:7): [True: 100, False: 3]
  ------------------
 3776|    100|    node->global_gdata = g_new0 (GData, 1);
  ------------------
  |  |  307|    100|#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
  |  |  ------------------
  |  |  |  |  235|    100|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    100|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  236|    100|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  237|    100|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  238|    100|	  gpointer __p;						\
  |  |  |  |  239|    100|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (239:8): [True: 0, False: 100]
  |  |  |  |  ------------------
  |  |  |  |  240|    100|	    __p = g_##func (__n);				\
  |  |  |  |  241|    100|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (241:13): [True: 100, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  242|    100|	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
  |  |  |  |  ------------------
  |  |  |  |  |  |   84|    100|#define G_MAXSIZE	G_MAXULONG
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   38|    100|#define G_MAXULONG	ULONG_MAX
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (242:14): [True: 0, False: 100]
  |  |  |  |  |  Branch (242:26): [True: 100, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  243|    100|	    __p = g_##func (__n * __s);				\
  |  |  |  |  244|    100|	  else							\
  |  |  |  |  245|    100|	    __p = g_##func##_n (__n, __s);			\
  |  |  |  |  246|    100|	  __p;							\
  |  |  |  |  247|    100|	}))
  |  |  ------------------
  ------------------
 3777|    103|  gdata = node->global_gdata;
 3778|       |  
 3779|       |  /* try resetting old data */
 3780|    103|  qdata = gdata->qdatas;
 3781|    106|  for (i = 0; i < gdata->n_qdatas; i++)
  ------------------
  |  Branch (3781:15): [True: 3, False: 103]
  ------------------
 3782|      3|    if (qdata[i].quark == quark)
  ------------------
  |  Branch (3782:9): [True: 0, False: 3]
  ------------------
 3783|      0|      {
 3784|      0|	qdata[i].data = data;
 3785|      0|	return;
 3786|      0|      }
 3787|       |  
 3788|       |  /* add new entry */
 3789|    103|  gdata->n_qdatas++;
 3790|    103|  gdata->qdatas = g_renew (QData, gdata->qdatas, gdata->n_qdatas);
  ------------------
  |  |  321|    103|#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
  |  |  ------------------
  |  |  |  |  249|    103|	(struct_type *) (G_GNUC_EXTENSION ({			\
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|    103|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |  250|    103|	  gsize __n = (gsize) (n_structs);			\
  |  |  |  |  251|    103|	  gsize __s = sizeof (struct_type);			\
  |  |  |  |  252|    103|	  gpointer __p = (gpointer) (mem);			\
  |  |  |  |  253|    103|	  if (__s == 1)						\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (253:8): [True: 0, False: 103]
  |  |  |  |  ------------------
  |  |  |  |  254|    103|	    __p = g_##func (__p, __n);				\
  |  |  |  |  255|    103|	  else if (__builtin_constant_p (__n) &&		\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (255:13): [True: 0, False: 103]
  |  |  |  |  ------------------
  |  |  |  |  256|    103|	           (__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|    103|	    __p = g_##func (__p, __n * __s);			\
  |  |  |  |  258|    103|	  else							\
  |  |  |  |  259|    103|	    __p = g_##func##_n (__p, __n, __s);			\
  |  |  |  |  260|    103|	  __p;							\
  |  |  |  |  261|    103|	}))
  |  |  ------------------
  ------------------
 3791|    103|  qdata = gdata->qdatas;
 3792|    106|  for (i = 0; i < gdata->n_qdatas - 1; i++)
  ------------------
  |  Branch (3792:15): [True: 3, False: 103]
  ------------------
 3793|      3|    if (qdata[i].quark > quark)
  ------------------
  |  Branch (3793:9): [True: 0, False: 3]
  ------------------
 3794|      0|      break;
 3795|    103|  memmove (qdata + i + 1, qdata + i, sizeof (qdata[0]) * (gdata->n_qdatas - i - 1));
 3796|    103|  qdata[i].quark = quark;
 3797|    103|  qdata[i].data = data;
 3798|    103|}
gtype.c:type_add_flags_W:
 3831|    100|{
 3832|    100|  guint dflags;
 3833|       |  
 3834|    100|  g_return_if_fail ((flags & ~TYPE_FLAG_MASK) == 0);
  ------------------
  |  |  630|    100|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    100|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    100|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    100|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    100| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    100|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    100|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    100|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 100, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    100|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    100|   else                                         \
  |  |  |  |  |  | 1021|    100|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    100|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    100|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 100, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    100|      { } \
  |  |  633|    100|    else \
  |  |  634|    100|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    100|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    100|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 100]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3835|    100|  g_return_if_fail (node != NULL);
  ------------------
  |  |  630|    100|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|    100|#define G_STMT_START  do
  |  |  ------------------
  |  |  631|    100|    if (G_LIKELY (expr)) \
  |  |  ------------------
  |  |  |  | 1024|    100|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|    100| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|    100|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|    100|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|    100|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 100, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|    100|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|    100|   else                                         \
  |  |  |  |  |  | 1021|    100|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|    100|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|    100|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:24): [True: 100, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  632|    100|      { } \
  |  |  633|    100|    else \
  |  |  634|    100|      { \
  |  |  635|      0|        g_return_if_fail_warning (G_LOG_DOMAIN, \
  |  |  636|      0|                                  G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  637|      0|                                  #expr); \
  |  |  638|      0|        return; \
  |  |  639|      0|      } \
  |  |  640|    100|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|    100|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 100]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3836|       |  
 3837|    100|  if ((flags & TYPE_FLAG_MASK) && node->is_classed && node->data && node->data->class.class)
  ------------------
  |  |  146|    100|#define	TYPE_FLAG_MASK		   (G_TYPE_FLAG_ABSTRACT | G_TYPE_FLAG_VALUE_ABSTRACT)
  ------------------
  |  Branch (3837:7): [True: 8, False: 92]
  |  Branch (3837:35): [True: 6, False: 2]
  |  Branch (3837:55): [True: 0, False: 6]
  |  Branch (3837:69): [True: 0, False: 0]
  ------------------
 3838|      0|    g_warning ("tagging type '%s' as abstract after class initialization", NODE_NAME (node));
  ------------------
  |  |  345|      0|#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
  |  |  346|      0|                               G_LOG_LEVEL_WARNING,  \
  |  |  347|      0|                               __VA_ARGS__)
  ------------------
 3839|    100|  dflags = GPOINTER_TO_UINT (type_get_qdata_L (node, static_quark_type_flags));
  ------------------
  |  |   99|    100|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 3840|    100|  dflags |= flags;
 3841|    100|  type_set_qdata_W (node, static_quark_type_flags, GUINT_TO_POINTER (dflags));
  ------------------
  |  |  102|    100|#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
  ------------------
 3842|    100|}
gtype.c:type_node_fundamental_info_I:
  529|    209|{
  530|    209|  GType ftype = NODE_FUNDAMENTAL_TYPE (node);
  ------------------
  |  |  254|    209|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  ------------------
  531|       |  
  532|    209|  if (ftype != NODE_TYPE (node))
  ------------------
  |  |  252|    209|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
  |  Branch (532:7): [True: 7, False: 202]
  ------------------
  533|      7|    node = lookup_type_node_I (ftype);
  534|       |  
  535|    209|  return node ? G_STRUCT_MEMBER_P (node, -SIZEOF_FUNDAMENTAL_INFO) : NULL;
  ------------------
  |  |  860|    836|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  |  |  ------------------
  |  |  |  Branch (860:50): [Folded, False: 209]
  |  |  |  Branch (860:50): [Folded, False: 0]
  |  |  |  Branch (860:50): [Folded, False: 209]
  |  |  ------------------
  ------------------
  |  Branch (535:10): [True: 209, False: 0]
  ------------------
  536|    209|}
gtype.c:type_check_is_value_type_U:
 4207|      4|{
 4208|      4|  GTypeFlags tflags = G_TYPE_FLAG_VALUE_ABSTRACT;
 4209|      4|  TypeNode *node;
 4210|       |  
 4211|       |  /* common path speed up */
 4212|      4|  node = lookup_type_node_I (type);
 4213|      4|  if (node && node->mutatable_check_cache)
  ------------------
  |  Branch (4213:7): [True: 4, False: 0]
  |  Branch (4213:15): [True: 3, False: 1]
  ------------------
 4214|      3|    return TRUE;
  ------------------
  |  |  818|      3|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      3|#define	FALSE	(0)
  |  |  ------------------
  ------------------
 4215|       |  
 4216|      1|  G_READ_LOCK (&type_rw_lock);
  ------------------
  |  |  126|      1|#define G_READ_LOCK(rw_lock)    g_rw_lock_reader_lock (rw_lock)
  ------------------
 4217|      1| restart_check:
 4218|      1|  if (node)
  ------------------
  |  Branch (4218:7): [True: 1, False: 0]
  ------------------
 4219|      1|    {
 4220|      1|      if (node->data && NODE_REFCOUNT (node) > 0 &&
  ------------------
  |  |  256|      1|#define NODE_REFCOUNT(node)                     ((guint) g_atomic_int_get ((int *) &(node)->ref_count))
  |  |  ------------------
  |  |  |  |   96|      1|  (G_GNUC_EXTENSION ({                                                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  |   97|      1|    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  765|      1|#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
  |  |  |  |  ------------------
  |  |  |  |   98|      1|    gint gaig_temp;                                                          \
  |  |  |  |   99|      1|    (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (99:13): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  |  |  100|      1|    __atomic_load ((gint *)(atomic), &gaig_temp, __ATOMIC_SEQ_CST);          \
  |  |  |  |  101|      1|    (gint) gaig_temp;                                                        \
  |  |  |  |  102|      1|  }))
  |  |  ------------------
  ------------------
  |  Branch (4220:11): [True: 1, False: 0]
  |  Branch (4220:25): [True: 1, False: 0]
  ------------------
 4221|      1|	  node->data->common.value_table->value_init)
  ------------------
  |  Branch (4221:4): [True: 1, False: 0]
  ------------------
 4222|      1|	tflags = GPOINTER_TO_UINT (type_get_qdata_L (node, static_quark_type_flags));
  ------------------
  |  |   99|      1|#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
  ------------------
 4223|      0|      else if (NODE_IS_IFACE (node))
  ------------------
  |  |  258|      0|#define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |  254|      0|#define NODE_FUNDAMENTAL_TYPE(node)		(node->supers[node->n_supers])
  |  |  ------------------
  |  |               #define	NODE_IS_IFACE(node)			(NODE_FUNDAMENTAL_TYPE (node) == G_TYPE_INTERFACE)
  |  |  ------------------
  |  |  |  |   68|      0|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  |  |  ------------------
  |  |  |  |  |  |  221|      0|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  210|      0|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4224|      0|	{
 4225|      0|	  guint i;
 4226|       |	  
 4227|      0|	  for (i = 0; i < IFACE_NODE_N_PREREQUISITES (node); i++)
  ------------------
  |  |  261|      0|#define	IFACE_NODE_N_PREREQUISITES(node)	((node)->n_prerequisites)
  ------------------
  |  Branch (4227:16): [True: 0, False: 0]
  ------------------
 4228|      0|	    {
 4229|      0|	      GType prtype = IFACE_NODE_PREREQUISITES (node)[i];
  ------------------
  |  |  262|      0|#define	IFACE_NODE_PREREQUISITES(node)		((node)->prerequisites)
  ------------------
 4230|      0|	      TypeNode *prnode = lookup_type_node_I (prtype);
 4231|       |	      
 4232|      0|	      if (prnode->is_instantiatable)
  ------------------
  |  Branch (4232:12): [True: 0, False: 0]
  ------------------
 4233|      0|		{
 4234|      0|		  type = prtype;
 4235|      0|		  node = lookup_type_node_I (type);
 4236|      0|		  goto restart_check;
 4237|      0|		}
 4238|      0|	    }
 4239|      0|	}
 4240|      1|    }
 4241|      1|  G_READ_UNLOCK (&type_rw_lock);
  ------------------
  |  |  127|      1|#define G_READ_UNLOCK(rw_lock)  g_rw_lock_reader_unlock (rw_lock)
  ------------------
 4242|       |  
 4243|      1|  return !(tflags & G_TYPE_FLAG_VALUE_ABSTRACT);
 4244|      1|}
gtype.c:gobject_init:
 4420|      2|{
 4421|      2|  const gchar *env_string;
 4422|      2|  GTypeInfo info;
 4423|      2|  TypeNode *node;
 4424|      2|  GType type G_GNUC_UNUSED  /* when compiling with G_DISABLE_ASSERT */;
 4425|       |
 4426|       |  /* Ensure GLib is initialized first, see
 4427|       |   * https://bugzilla.gnome.org/show_bug.cgi?id=756139
 4428|       |   */
 4429|      2|  GLIB_PRIVATE_CALL (glib_init) ();
  ------------------
  |  |   94|      2|#define GLIB_PRIVATE_CALL(symbol) (glib__private__()->symbol)
  ------------------
 4430|       |
 4431|      2|  G_WRITE_LOCK (&type_rw_lock);
  ------------------
  |  |  128|      2|#define G_WRITE_LOCK(rw_lock)   g_rw_lock_writer_lock (rw_lock)
  ------------------
 4432|       |
 4433|       |  /* setup GObject library wide debugging flags */
 4434|      2|  env_string = g_getenv ("GOBJECT_DEBUG");
 4435|      2|  if (env_string != NULL)
  ------------------
  |  Branch (4435:7): [True: 0, False: 2]
  ------------------
 4436|      0|    {
 4437|      0|      GDebugKey debug_keys[] = {
 4438|      0|        { "objects", G_TYPE_DEBUG_OBJECTS },
 4439|      0|        { "instance-count", G_TYPE_DEBUG_INSTANCE_COUNT },
 4440|      0|        { "signals", G_TYPE_DEBUG_SIGNALS },
 4441|      0|      };
 4442|       |
 4443|      0|      _g_type_debug_flags = g_parse_debug_string (env_string, debug_keys, G_N_ELEMENTS (debug_keys));
  ------------------
  |  |  840|      0|#define G_N_ELEMENTS(arr)		(sizeof (arr) / sizeof ((arr)[0]))
  ------------------
 4444|      0|    }
 4445|       |
 4446|       |  /* quarks */
 4447|      2|  static_quark_type_flags = g_quark_from_static_string ("-g-type-private--GTypeFlags");
 4448|      2|  static_quark_iface_holder = g_quark_from_static_string ("-g-type-private--IFaceHolder");
 4449|      2|  static_quark_dependants_array = g_quark_from_static_string ("-g-type-private--dependants-array");
 4450|       |
 4451|       |  /* type qname hash table */
 4452|      2|  static_type_nodes_ht = g_hash_table_new (g_str_hash, g_str_equal);
 4453|       |
 4454|       |  /* invalid type G_TYPE_INVALID (0)
 4455|       |   */
 4456|      2|  static_fundamental_type_nodes[0] = NULL;
 4457|       |
 4458|       |  /* void type G_TYPE_NONE
 4459|       |   */
 4460|      2|  node = type_node_fundamental_new_W (G_TYPE_NONE, g_intern_static_string ("void"), 0);
  ------------------
  |  |   62|      2|#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4461|      2|  type = NODE_TYPE (node);
  ------------------
  |  |  252|      2|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 4462|      2|  g_assert (type == G_TYPE_NONE);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4463|       |
 4464|       |  /* interface fundamental type G_TYPE_INTERFACE (!classed)
 4465|       |   */
 4466|      2|  memset (&info, 0, sizeof (info));
 4467|      2|  node = type_node_fundamental_new_W (G_TYPE_INTERFACE, g_intern_static_string ("GInterface"), G_TYPE_FLAG_DERIVABLE);
  ------------------
  |  |   68|      2|#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
  |  |  ------------------
  |  |  |  |  221|      2|#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
  |  |  |  |  ------------------
  |  |  |  |  |  |  210|      2|#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4468|      2|  type = NODE_TYPE (node);
  ------------------
  |  |  252|      2|#define NODE_TYPE(node)				(node->supers[0])
  ------------------
 4469|      2|  type_data_make_W (node, &info, NULL);
 4470|      2|  g_assert (type == G_TYPE_INTERFACE);
  ------------------
  |  |  231|      2|#define g_assert(expr)                  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      2|#define G_STMT_START  do
  |  |  ------------------
  |  |  232|      2|                                             if G_LIKELY (expr) ; else \
  |  |  ------------------
  |  |  |  | 1024|      2|#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1016|      2| G_GNUC_EXTENSION ({                            \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1017|      2|   int _g_boolean_var_;                         \
  |  |  |  |  |  | 1018|      2|   if (expr)                                    \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1018:8): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 1019|      2|      _g_boolean_var_ = 1;                      \
  |  |  |  |  |  | 1020|      2|   else                                         \
  |  |  |  |  |  | 1021|      2|      _g_boolean_var_ = 0;                      \
  |  |  |  |  |  | 1022|      2|   _g_boolean_var_;                             \
  |  |  |  |  |  | 1023|      2|})
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1024:25): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  233|      2|                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
  |  |  ------------------
  |  |  |  |  784|      0|#define G_STRFUNC     ((const char*) (__func__))
  |  |  ------------------
  |  |  234|      0|                                                                         #expr); \
  |  |  235|      2|                                        } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      2|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4471|       |
 4472|      2|  G_WRITE_UNLOCK (&type_rw_lock);
  ------------------
  |  |  129|      2|#define G_WRITE_UNLOCK(rw_lock) g_rw_lock_writer_unlock (rw_lock)
  ------------------
 4473|       |
 4474|      2|  _g_value_c_init ();
 4475|       |
 4476|       |  /* G_TYPE_TYPE_PLUGIN
 4477|       |   */
 4478|      2|  g_type_ensure (g_type_plugin_get_type ());
 4479|       |
 4480|       |  /* G_TYPE_* value types
 4481|       |   */
 4482|      2|  _g_value_types_init ();
 4483|       |
 4484|       |  /* G_TYPE_ENUM & G_TYPE_FLAGS
 4485|       |   */
 4486|      2|  _g_enum_types_init ();
 4487|       |
 4488|       |  /* G_TYPE_BOXED
 4489|       |   */
 4490|      2|  _g_boxed_type_init ();
 4491|       |
 4492|       |  /* G_TYPE_PARAM
 4493|       |   */
 4494|      2|  _g_param_type_init ();
 4495|       |
 4496|       |  /* G_TYPE_OBJECT
 4497|       |   */
 4498|      2|  _g_object_type_init ();
 4499|       |
 4500|       |  /* G_TYPE_PARAM_* pspec types
 4501|       |   */
 4502|      2|  _g_param_spec_types_init ();
 4503|       |
 4504|       |  /* Value Transformations
 4505|       |   */
 4506|      2|  _g_value_transforms_init ();
 4507|       |
 4508|       |  /* Signal system
 4509|       |   */
 4510|      2|  _g_signal_init ();
 4511|      2|}

gboxed.c:g_value_array_get_type_once:
 2106|      2|#define G_DEFINE_BOXED_TYPE_WITH_CODE(TypeName, type_name, copy_func, free_func, _C_) _G_DEFINE_BOXED_TYPE_BEGIN (TypeName, type_name, copy_func, free_func) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2129|      2|type_name##_get_type_once (void) \
  |  | 2130|      2|{ \
  |  | 2131|      2|  GType (* _g_register_boxed) \
  |  | 2132|      2|    (const gchar *, \
  |  | 2133|      2|     union \
  |  | 2134|      2|       { \
  |  | 2135|      2|         TypeName * (*do_copy_type) (TypeName *); \
  |  | 2136|      2|         TypeName * (*do_const_copy_type) (const TypeName *); \
  |  | 2137|      2|         GBoxedCopyFunc do_copy_boxed; \
  |  | 2138|      2|       } __attribute__((__transparent_union__)), \
  |  | 2139|      2|     union \
  |  | 2140|      2|       { \
  |  | 2141|      2|         void (* do_free_type) (TypeName *); \
  |  | 2142|      2|         GBoxedFreeFunc do_free_boxed; \
  |  | 2143|      2|       } __attribute__((__transparent_union__)) \
  |  | 2144|      2|    ) = g_boxed_type_register_static; \
  |  | 2145|      2|  GType g_define_type_id = \
  |  | 2146|      2|    _g_register_boxed (g_intern_static_string (#TypeName), copy_func, free_func); \
  |  | 2147|      2|  { /* custom code follows */
  ------------------
              #define G_DEFINE_BOXED_TYPE_WITH_CODE(TypeName, type_name, copy_func, free_func, _C_) _G_DEFINE_BOXED_TYPE_BEGIN (TypeName, type_name, copy_func, free_func) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      2|    }					\
  |  | 2027|      2|  return g_define_type_id; \
  |  | 2028|      2|} /* closes type_name##_get_type_once() */
  ------------------
gvaluetypes.c:g_gtype_get_type_once:
 2200|      2|#define G_DEFINE_POINTER_TYPE_WITH_CODE(TypeName, type_name, _C_) _G_DEFINE_POINTER_TYPE_BEGIN (TypeName, type_name) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2219|      2|type_name##_get_type_once (void) \
  |  | 2220|      2|{ \
  |  | 2221|      2|  GType g_define_type_id = \
  |  | 2222|      2|    g_pointer_type_register_static (g_intern_static_string (#TypeName)); \
  |  | 2223|      2|  { /* custom code follows */
  ------------------
              #define G_DEFINE_POINTER_TYPE_WITH_CODE(TypeName, type_name, _C_) _G_DEFINE_POINTER_TYPE_BEGIN (TypeName, type_name) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      2|    }					\
  |  | 2027|      2|  return g_define_type_id; \
  |  | 2028|      2|} /* closes type_name##_get_type_once() */
  ------------------

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

_g_value_c_init:
  140|      2|{
  141|      2|  transform_array = g_bsearch_array_create (&transform_bconfig);
  142|      2|}
g_value_init:
  164|      2|{
  165|      2|  GTypeValueTable *value_table;
  166|       |  /* g_return_val_if_fail (G_TYPE_IS_VALUE (g_type), NULL);	be more elaborate below */
  167|      2|  g_return_val_if_fail (value != 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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  168|       |  /* g_return_val_if_fail (G_VALUE_TYPE (value) == 0, NULL);	be more elaborate below */
  169|       |
  170|      2|  value_table = g_type_value_table_peek (g_type);
  171|       |
  172|      2|  if (value_table && G_VALUE_TYPE (value) == 0)
  ------------------
  |  |   59|      2|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  |  Branch (172:7): [True: 2, False: 0]
  |  Branch (172:22): [True: 2, False: 0]
  ------------------
  173|      2|    {
  174|       |      /* setup and init */
  175|      2|      value_meminit (value, g_type);
  176|      2|      value_table->value_init (value);
  177|      2|    }
  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|      2|               G_STRLOC,
  186|      2|               g_type_name (g_type),
  187|      2|               value_table ? "this type is abstract with regards to GValue use, use a more specific (derived) type" : "this type has no GTypeValueTable implementation");
  188|      2|  return value;
  189|      2|}
g_value_copy:
  201|      1|{
  202|      1|  g_return_if_fail (src_value);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  203|      1|  g_return_if_fail (dest_value);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  204|      1|  g_return_if_fail (g_value_type_compatible (G_VALUE_TYPE (src_value), G_VALUE_TYPE (dest_value)));
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  205|       |  
  206|      1|  if (src_value != dest_value)
  ------------------
  |  Branch (206:7): [True: 1, False: 0]
  ------------------
  207|      1|    {
  208|      1|      GType dest_type = G_VALUE_TYPE (dest_value);
  ------------------
  |  |   59|      1|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  209|      1|      GTypeValueTable *value_table = g_type_value_table_peek (dest_type);
  210|       |
  211|      1|      g_return_if_fail (value_table);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  212|       |
  213|       |      /* make sure dest_value's value is free()d */
  214|      1|      if (value_table->value_free)
  ------------------
  |  Branch (214:11): [True: 1, False: 0]
  ------------------
  215|      1|	value_table->value_free (dest_value);
  216|       |
  217|       |      /* setup and copy */
  218|      1|      value_meminit (dest_value, dest_type);
  219|      1|      value_table->value_copy (src_value, dest_value);
  220|      1|    }
  221|      1|}
g_value_reset:
  234|      1|{
  235|      1|  GTypeValueTable *value_table;
  236|      1|  GType g_type;
  237|       |
  238|      1|  g_return_val_if_fail (value, NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  239|      1|  g_type = G_VALUE_TYPE (value);
  ------------------
  |  |   59|      1|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  240|       |
  241|      1|  value_table = g_type_value_table_peek (g_type);
  242|      1|  g_return_val_if_fail (value_table, NULL);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  243|       |
  244|       |  /* make sure value's value is free()d */
  245|      1|  if (value_table->value_free)
  ------------------
  |  Branch (245:7): [True: 1, False: 0]
  ------------------
  246|      1|    value_table->value_free (value);
  247|       |
  248|       |  /* setup and init */
  249|      1|  value_meminit (value, g_type);
  250|      1|  value_table->value_init (value);
  251|       |
  252|      1|  return value;
  253|      1|}
g_value_unset:
  266|      1|{
  267|      1|  GTypeValueTable *value_table;
  268|       |  
  269|      1|  if (value->g_type == 0)
  ------------------
  |  Branch (269:7): [True: 0, False: 1]
  ------------------
  270|      0|    return;
  271|       |
  272|      1|  g_return_if_fail (value);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  273|       |
  274|      1|  value_table = g_type_value_table_peek (G_VALUE_TYPE (value));
  ------------------
  |  |   59|      1|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  275|      1|  g_return_if_fail (value_table);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  276|       |
  277|      1|  if (value_table->value_free)
  ------------------
  |  Branch (277:7): [True: 1, False: 0]
  ------------------
  278|      1|    value_table->value_free (value);
  279|      1|  memset (value, 0, sizeof (*value));
  280|      1|}
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|      2|{
  583|      2|  g_return_val_if_fail (src_type, FALSE);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  584|      2|  g_return_val_if_fail (dest_type, FALSE);
  ------------------
  |  |  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]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  585|       |
  586|       |  /* Fast path */
  587|      2|  if (src_type == dest_type)
  ------------------
  |  Branch (587:7): [True: 2, False: 0]
  ------------------
  588|      2|    return TRUE;
  ------------------
  |  |  818|      2|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      2|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  589|       |
  590|      0|  return (g_type_is_a (src_type, dest_type) &&
  ------------------
  |  Branch (590:11): [True: 0, False: 0]
  ------------------
  591|      0|	  g_type_value_table_peek (dest_type) == g_type_value_table_peek (src_type));
  ------------------
  |  Branch (591:4): [True: 0, False: 0]
  ------------------
  592|      2|}
g_value_transform:
  613|      1|{
  614|      1|  GType dest_type;
  615|       |
  616|      1|  g_return_val_if_fail (src_value, FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  617|      1|  g_return_val_if_fail (dest_value, FALSE);
  ------------------
  |  |  643|      1|  G_STMT_START { \
  |  |  ------------------
  |  |  |  |  874|      1|#define G_STMT_START  do
  |  |  ------------------
  |  |  644|      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]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  645|      1|      { } \
  |  |  646|      1|    else \
  |  |  647|      1|      { \
  |  |  648|      0|        g_return_if_fail_warning (G_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|  } G_STMT_END
  |  |  ------------------
  |  |  |  |  882|      1|#define G_STMT_END    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (882:30): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  618|       |
  619|      1|  dest_type = G_VALUE_TYPE (dest_value);
  ------------------
  |  |   59|      1|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  620|      1|  if (g_value_type_compatible (G_VALUE_TYPE (src_value), dest_type))
  ------------------
  |  |   59|      1|#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
  ------------------
  |  Branch (620:7): [True: 1, False: 0]
  ------------------
  621|      1|    {
  622|      1|      g_value_copy (src_value, dest_value);
  623|       |      
  624|      1|      return TRUE;
  ------------------
  |  |  818|      1|#define	TRUE	(!FALSE)
  |  |  ------------------
  |  |  |  |  814|      1|#define	FALSE	(0)
  |  |  ------------------
  ------------------
  625|      1|    }
  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|      1|}
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|      4|{
  148|      4|  value->g_type = value_type;
  149|      4|  memset (value->data, 0, sizeof (value->data));
  150|      4|}

_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_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|}

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

fu-firmware.c:g_autoptr_cleanup_generic_gfree:
   26|      1|{
   27|      1|  void **pp = (void**)p;
   28|      1|  g_free (*pp);
   29|      1|}

fu-fuzzer-firmware.c:glib_autoptr_cleanup_GObject:
 1139|      1|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|      1|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-fuzzer-firmware.c:glib_autoptr_clear_GObject:
 1137|      1|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 1, False: 0]
  ------------------
fu-fuzzer-firmware.c:glib_autoptr_cleanup_GBytes:
 1139|      1|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|      1|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-fuzzer-firmware.c:glib_autoptr_clear_GBytes:
 1137|      1|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 1, False: 0]
  ------------------
fu-firmware.c:glib_autoptr_clear_GObject:
 1137|      2|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 2, False: 0]
  ------------------
fu-firmware.c:glib_autoptr_cleanup_GBytes:
 1139|      2|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|      2|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-firmware.c:glib_autoptr_clear_GBytes:
 1137|      2|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 0, False: 2]
  ------------------
fu-firmware.c:glib_autoptr_cleanup_GError:
 1139|      1|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|      1|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-firmware.c:glib_autoptr_clear_GError:
 1137|      1|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 1, False: 0]
  ------------------
fu-firmware.c:glib_autoptr_cleanup_FuInputStream:
 1139|      3|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|      3|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-firmware.c:glib_autoptr_clear_FuInputStream:
 1137|      3|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 2, False: 1]
  ------------------
fu-input-stream.c:glib_autoptr_cleanup_GByteArray:
 1139|     35|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|     35|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-input-stream.c:glib_autoptr_clear_GByteArray:
 1137|     35|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 18, False: 17]
  ------------------
fu-input-stream.c:glib_autoptr_cleanup_GError:
 1139|     34|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|     34|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-input-stream.c:glib_autoptr_clear_GError:
 1137|     34|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 1, False: 33]
  ------------------
fu-memory-input-stream.c:glib_autoptr_cleanup_FuMemoryInputStream:
 1139|      1|    { _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) (*_ptr); }                                                        \
  ------------------
  |  | 1120|      1|#define _GLIB_AUTOPTR_CLEAR_FUNC_NAME(TypeName) glib_autoptr_clear_##TypeName
  ------------------
fu-memory-input-stream.c:glib_autoptr_clear_FuMemoryInputStream:
 1137|      1|    { if (_ptr) (cleanup) ((ParentName *) _ptr); }                                                              \
  ------------------
  |  Branch (1137:11): [True: 0, False: 1]
  ------------------

fu-firmware.c:g_steal_pointer:
  210|      1|{
  211|      1|  gpointer *ptr = (gpointer *) pp;
  212|      1|  gpointer ref;
  213|       |
  214|      1|  ref = *ptr;
  215|      1|  *ptr = NULL;
  216|       |
  217|      1|  return ref;
  218|      1|}
fu-input-stream.c:g_steal_pointer:
  210|     16|{
  211|     16|  gpointer *ptr = (gpointer *) pp;
  212|     16|  gpointer ref;
  213|       |
  214|     16|  ref = *ptr;
  215|     16|  *ptr = NULL;
  216|       |
  217|     16|  return ref;
  218|     16|}
fu-memory-input-stream.c:g_steal_pointer:
  210|      1|{
  211|      1|  gpointer *ptr = (gpointer *) pp;
  212|      1|  gpointer ref;
  213|       |
  214|      1|  ref = *ptr;
  215|      1|  *ptr = NULL;
  216|       |
  217|      1|  return ref;
  218|      1|}

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

fu-fuzzer-firmware.c:FU_FUZZER:
 1580|      1|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                         \
 1581|      1|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }               \
  ------------------
  |  |  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))
  |  |  ------------------
  ------------------
fu-coswid-firmware.c:fu_coswid_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_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-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|     11|type_name##_get_instance_private (TypeName *self) \
 1991|     11|{ \
 1992|     11|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|     11|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|     11|} \
fu-firmware.c:FU_IS_FIRMWARE:
 1506|      8|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1507|      8|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|      8|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|      8|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      8|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|      8|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|      8|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 8]
  |  |  |  |  ------------------
  |  |  |  | 2316|      8|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|      8|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 8, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 0, False: 8]
  |  |  |  |  ------------------
  |  |  |  | 2318|      8|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|      8|  else \
  |  |  |  | 2320|      8|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|      8|  __r; \
  |  |  |  | 2322|      8|}))
  |  |  ------------------
  ------------------
fu-firmware.c:FU_FIRMWARE_GET_CLASS:
 1510|      4|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_GET_CLASS (gpointer ptr) {    \
 1511|      4|    return G_TYPE_INSTANCE_GET_CLASS (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }       \
  ------------------
  |  |  527|      4|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2309|      4|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  ------------------
  ------------------
fu-firmware.c:FU_IS_INPUT_STREAM:
 1506|      1|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1507|      1|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|      1|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|      1|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      1|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|      1|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|      1|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 2316|      1|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|      1|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 1, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 2318|      1|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|      1|  else \
  |  |  |  | 2320|      1|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|      1|  __r; \
  |  |  |  | 2322|      1|}))
  |  |  ------------------
  ------------------
fu-firmware.c:FU_IS_FIRMWARE_CLASS:
 1508|      2|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME##_CLASS (gpointer ptr) {                   \
 1509|      2|    return G_TYPE_CHECK_CLASS_TYPE (ptr, module_obj_name##_get_type ()); }                               \
  ------------------
  |  |  566|      2|#define G_TYPE_CHECK_CLASS_TYPE(g_class, g_type)                (_G_TYPE_CCT ((g_class), (g_type)))
  |  |  ------------------
  |  |  |  | 2323|      2|#  define _G_TYPE_CCT(cp, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      2|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2324|      2|  GTypeClass *__class = (GTypeClass*) cp; GType __t = gt; gboolean __r; \
  |  |  |  | 2325|      2|  if (!__class) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2325:7): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 2326|      2|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2327|      2|  else if (__class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2327:12): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 2328|      2|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2329|      2|  else \
  |  |  |  | 2330|      2|    __r = g_type_check_class_is_a (__class, __t); \
  |  |  |  | 2331|      2|  __r; \
  |  |  |  | 2332|      2|}))
  |  |  ------------------
  ------------------
fu-firmware.c:FU_FIRMWARE:
 1502|      4|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|      4|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|      4|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|      4|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-fuzzer.c:FU_FUZZER_GET_IFACE:
 1584|      1|  G_GNUC_UNUSED static inline ModuleObjName##Interface * MODULE##_##OBJ_NAME##_GET_IFACE (gpointer ptr) {  \
 1585|      1|    return G_TYPE_INSTANCE_GET_INTERFACE (ptr, module_obj_name##_get_type (), ModuleObjName##Interface); } \
  ------------------
  |  |  540|      1|#define G_TYPE_INSTANCE_GET_INTERFACE(instance, g_type, c_type) (_G_TYPE_IGI ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2310|      1|#define _G_TYPE_IGI(ip, gt, ct)         ((ct*) g_type_interface_peek (((GTypeInstance*) ip)->g_class, gt))
  |  |  ------------------
  ------------------
fu-input-stream.c:fu_input_stream_get_type_once:
 1618|      1|#define G_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, 0) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, 0) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
fu-input-stream.c:fu_input_stream_class_intern_init:
 1960|      1|static void     type_name##_class_intern_init (gpointer klass) \
 1961|      1|{ \
 1962|      1|  type_name##_parent_class = g_type_class_peek_parent (klass); \
 1963|      1|  if (TypeName##_private_offset != 0) \
  ------------------
  |  Branch (1963:7): [True: 0, False: 1]
  ------------------
 1964|      1|    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
 1965|      1|  type_name##_class_init ((TypeName##Class*) klass); \
 1966|      1|}
fu-input-stream.c:FU_IS_INPUT_STREAM:
 1506|     52|  G_GNUC_UNUSED static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                           \
 1507|     52|    return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); }                            \
  ------------------
  |  |  497|     52|#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
  |  |  ------------------
  |  |  |  | 2313|     52|#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|     52|#define G_GNUC_EXTENSION __extension__
  |  |  |  |  ------------------
  |  |  |  | 2314|     52|  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
  |  |  |  | 2315|     52|  if (!__inst) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2315:7): [True: 0, False: 52]
  |  |  |  |  ------------------
  |  |  |  | 2316|     52|    __r = FALSE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  ------------------
  |  |  |  | 2317|     52|  else if (__inst->g_class && __inst->g_class->g_type == __t) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2317:12): [True: 52, False: 0]
  |  |  |  |  |  Branch (2317:31): [True: 0, False: 52]
  |  |  |  |  ------------------
  |  |  |  | 2318|     52|    __r = TRUE; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  818|      0|#define	TRUE	(!FALSE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  814|      0|#define	FALSE	(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2319|     52|  else \
  |  |  |  | 2320|     52|    __r = g_type_check_instance_is_a (__inst, __t); \
  |  |  |  | 2321|     52|  __r; \
  |  |  |  | 2322|     52|}))
  |  |  ------------------
  ------------------
fu-input-stream.c:FU_INPUT_STREAM_GET_CLASS:
 1510|     72|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_GET_CLASS (gpointer ptr) {    \
 1511|     72|    return G_TYPE_INSTANCE_GET_CLASS (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }       \
  ------------------
  |  |  527|     72|#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2309|     72|#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
  |  |  ------------------
  ------------------
fu-input-stream.c:FU_INPUT_STREAM:
 1502|     38|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|     38|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|     38|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|     38|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-memory-input-stream.c:fu_memory_input_stream_get_type_once:
 1762|      1|#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2035|      1|  _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
  |  |  ------------------
  |  |  |  | 2013|      1|type_name##_get_type_once (void) \
  |  |  |  | 2014|      1|{ \
  |  |  |  | 2015|      1|  GType g_define_type_id = \
  |  |  |  | 2016|      1|        g_type_register_static_simple (TYPE_PARENT, \
  |  |  |  | 2017|      1|                                       g_intern_static_string (#TypeName), \
  |  |  |  | 2018|      1|                                       sizeof (TypeName##Class), \
  |  |  |  | 2019|      1|                                       (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \
  |  |  |  | 2020|      1|                                       sizeof (TypeName), \
  |  |  |  | 2021|      1|                                       (GInstanceInitFunc)(void (*)(void)) type_name##_init, \
  |  |  |  | 2022|      1|                                       (GTypeFlags) flags); \
  |  |  |  | 2023|      1|    { /* custom code follows */
  |  |  ------------------
  ------------------
              #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
  ------------------
  |  | 2026|      1|    }					\
  |  | 2027|      1|  return g_define_type_id; \
  |  | 2028|      1|} /* closes type_name##_get_type_once() */
  ------------------
fu-memory-input-stream.c:fu_memory_input_stream_class_intern_init:
 1960|      1|static void     type_name##_class_intern_init (gpointer klass) \
 1961|      1|{ \
 1962|      1|  type_name##_parent_class = g_type_class_peek_parent (klass); \
 1963|      1|  if (TypeName##_private_offset != 0) \
  ------------------
  |  Branch (1963:7): [True: 0, False: 1]
  ------------------
 1964|      1|    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
 1965|      1|  type_name##_class_init ((TypeName##Class*) klass); \
 1966|      1|}
fu-memory-input-stream.c:FU_INPUT_STREAM_CLASS:
 1504|      1|  G_GNUC_UNUSED static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) {        \
 1505|      1|    return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); }         \
  ------------------
  |  |  553|      1|#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2302|      1|    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
  |  |  ------------------
  ------------------
fu-memory-input-stream.c:FU_MEMORY_INPUT_STREAM:
 1410|     53|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1411|     53|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|     53|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|     53|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------
fu-memory-input-stream.c:FU_INPUT_STREAM:
 1502|      1|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|      1|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  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))
  |  |  ------------------
  ------------------
fu-uswid-firmware.c:fu_uswid_firmware_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-uswid-firmware.c:fu_uswid_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-uswid-firmware.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-uswid-firmware.c:fu_uswid_firmware_get_instance_private:
 1990|      1|type_name##_get_instance_private (TypeName *self) \
 1991|      1|{ \
 1992|      1|  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
  ------------------
  |  |  860|      1|    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
  ------------------
 1993|      1|} \
fu-uswid-firmware.c:FU_FIRMWARE:
 1502|      2|  G_GNUC_UNUSED static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) {                       \
 1503|      2|    return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); }             \
  ------------------
  |  |  484|      2|#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
  |  |  ------------------
  |  |  |  | 2300|      2|    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
  |  |  ------------------
  ------------------

