glib/gobject
Christian Hergert e924f77736 gtype: improve get_type fast path
The -fstack-protector-strong used in many distributions by default has a
rather drastic slowdown of the fast path in generated _get_type()
functions using G_DEFINE_* macros. The amount can vary by architecture,
GCC version, and compiler flags.

To work around this, and ensure a higher probability that our fast-path
will match what we had previously, we need to break out the slow-path
(registering the type) into a secondary function that is not a candidate
for inlining.

This ensures that the common case (type registered, return the GType id)
is the hot path and handled in the prologue of the generated assembly even
when -fstack-protector-strong is enabled.

https://bugzilla.gnome.org/show_bug.cgi?id=795180
2018-05-09 12:25:06 +01:00
..
tests Remove HAVE_CONFIG_H defs and uses 2018-02-21 13:57:10 +00:00
.gitignore build: Drop nmake/MSC build system for GLib 2017-07-10 11:22:40 +01:00
ChangeLog Update README files to refer to git 2009-03-31 19:39:16 -04:00
gatomicarray.c gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gatomicarray.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gbinding.c Binding: bind_property’s @notify func is nullable 2018-01-01 17:23:16 +00:00
gbinding.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gboxed.c gdate: add g_date_copy() 2017-10-11 12:13:20 +01:00
gboxed.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gclosure.c gclosure: Expand documentation and fix some typos 2018-04-26 18:04:47 +01:00
gclosure.h gclosure: Expand documentation and fix some typos 2018-04-26 18:04:47 +01:00
genums.c gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
genums.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
glib-genmarshal.in gobject: Fix redundant warning message in glib-genmarshal 2018-04-23 16:16:36 +01:00
glib-mkenums.in glib-mkenums: Don't go into an infinite loop trying to find a matching { 2018-03-21 15:05:36 +00:00
glib-types.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gmarshal.c introspection: use (nullable) or (optional) instead of (allow-none) 2016-11-22 14:14:37 -08:00
gmarshal.h gmarshal.h: replace "extern" with GLIB_AVAILABLE_IN_ALL 2013-01-13 13:13:55 -05:00
gobject_gdb.py gobject_gdb.py: add pretty printer for GType and GTypeClass* 2018-04-11 14:31:53 +01:00
gobject_probes.d Add missing semicolons to gobject_probes.d 2012-10-15 19:48:44 -04:00
gobject_trace.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gobject-autocleanups.h gobject: add autoptr support for GClosure 2017-08-16 16:19:28 +03:00
gobject-query.c gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gobject.c GObject: Clarify 8db5542803 by avoiding double -ve 2018-04-22 15:03:03 +01:00
gobject.h gobject: fix compilation with gcc <= 4.7 2018-04-20 11:28:42 +01:00
gobject.rc.in meson: build Windows resource files 2018-01-04 22:19:30 +01:00
gobject.stp.in glib: Namespace global tapset variables by soname 2016-11-23 10:50:39 +00:00
gobjectnotifyqueue.c gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gparam.c gobject: Fix typo in documentation for g_param_spec_get_default_value() 2017-11-01 11:13:27 +00:00
gparam.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gparamspecs.c gobject: Reimplement g_param_values_cmp() for GParamSpecVariant 2018-05-04 18:17:59 +01:00
gparamspecs.h gobject: Reimplement g_param_values_cmp() for GParamSpecVariant 2018-05-04 18:17:59 +01:00
gsignal.c gsignal: add assert on closure invalidate path 2017-11-15 12:51:12 +00:00
gsignal.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gsourceclosure.c all: Remove trailing newlines from g_message()/g_warning()/g_error()s 2018-04-27 16:46:19 +01:00
gsourceclosure.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gtype-private.h gtype: Add private DEFINE_TYPE with prelude to workaround gtype deadlocks 2017-06-14 14:45:45 -04:00
gtype.c g_type_check_value, g_type_check_value_holds: accept const argument 2017-12-13 17:15:16 +00:00
gtype.h gtype: improve get_type fast path 2018-05-09 12:25:06 +01:00
gtypemodule.c all: Remove trailing newlines from g_message()/g_warning()/g_error()s 2018-04-27 16:46:19 +01:00
gtypemodule.h docs: Remove XML-style comments from documentation strings 2018-01-12 15:29:29 +00:00
gtypeplugin.c gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gtypeplugin.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gvalue.c gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gvalue.h Revert "GValue – Don't cast G_VALUE_TYPE() argument to GValue*" 2018-02-08 14:28:32 +00:00
gvaluearray.c valuearray: Skip g_value_array_free() in bindings 2017-09-11 21:11:55 +01:00
gvaluearray.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gvaluecollector.h gobject: Fix a typo in the G_VALUE_LCOPY documentation 2018-05-07 20:43:59 +01:00
gvaluetransform.c gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
gvaluetypes.c gobject: Add missing annotations to GValue variant methods 2017-11-28 14:29:36 +00:00
gvaluetypes.h gobject/: LGPLv2+ -> LGPLv2.1+ 2017-05-24 11:58:19 +02:00
libgobject-gdb.py.in Rename gdb macros with _gdb suffix to avoid ns clashes 2016-05-23 10:52:10 -04:00
Makefile.am build: Ensure .py files are generated at build time not install time 2017-11-03 20:11:56 +00:00
meson.build Meson: Use pkgconfig module to generate all pc files 2018-03-28 19:31:20 -04:00