diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2019-12-05 14:08:36 +0100 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2019-12-05 15:46:59 +0100 |
commit | 6b03920e39bc3900148d02ea5c2ddc13d6e91091 (patch) | |
tree | 516c760075838ba6e14e1fb31b5efb3cdcfb8a5c /ccode | |
parent | 7551bbbe8ee6dc9cec3f17436a773f80e5bc2125 (diff) | |
download | vala-6b03920e39bc3900148d02ea5c2ddc13d6e91091.tar.gz |
codegen: Improve *_get_type() fast path (requires glib >= 2.58)
Uses G_GNUC_NO_INLINE if glib >= 2.58 is targetted otherwise the
compiler is free to inline the separate *_get_type_once() function.
Follows the changes introduced in glib by
https://gitlab.gnome.org/GNOME/glib/commit/e924f777369710221c3e0a9d7bf40392a27d1fa4
See https://gitlab.gnome.org/GNOME/glib/issues/541
and https://gitlab.gnome.org/GNOME/vala/issues/879
Diffstat (limited to 'ccode')
-rw-r--r-- | ccode/valaccodefunction.vala | 3 | ||||
-rw-r--r-- | ccode/valaccodemodifiers.vala | 3 |
2 files changed, 5 insertions, 1 deletions
diff --git a/ccode/valaccodefunction.vala b/ccode/valaccodefunction.vala index 688c6d1eb..7d29de9fd 100644 --- a/ccode/valaccodefunction.vala +++ b/ccode/valaccodefunction.vala @@ -111,6 +111,9 @@ public class Vala.CCodeFunction : CCodeNode { if (CCodeModifiers.INTERNAL in modifiers) { writer.write_string ("G_GNUC_INTERNAL "); } + if (!is_declaration && CCodeModifiers.NO_INLINE in modifiers) { + writer.write_string ("G_GNUC_NO_INLINE "); + } if (CCodeModifiers.STATIC in modifiers) { writer.write_string ("static "); } diff --git a/ccode/valaccodemodifiers.vala b/ccode/valaccodemodifiers.vala index 257423040..7b83b5a91 100644 --- a/ccode/valaccodemodifiers.vala +++ b/ccode/valaccodemodifiers.vala @@ -41,5 +41,6 @@ public enum Vala.CCodeModifiers { DESTRUCTOR = 1 << 11, FORMAT_ARG = 1 << 12, PRINTF = 1 << 13, - SCANF = 1 << 14 + SCANF = 1 << 14, + NO_INLINE = 1 << 15 } |