summaryrefslogtreecommitdiff
path: root/ccode
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2019-12-05 14:08:36 +0100
committerRico Tzschichholz <ricotz@ubuntu.com>2019-12-05 15:46:59 +0100
commit6b03920e39bc3900148d02ea5c2ddc13d6e91091 (patch)
tree516c760075838ba6e14e1fb31b5efb3cdcfb8a5c /ccode
parent7551bbbe8ee6dc9cec3f17436a773f80e5bc2125 (diff)
downloadvala-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.vala3
-rw-r--r--ccode/valaccodemodifiers.vala3
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
}