X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fmini-trampolines.c;h=4434564ee791c374fbce341e328e96b9e66842c3;hb=2d52cec1ce23c71b2729b4a4e20e5b40e8c54ae3;hp=f65dab8c1e77f6220613e59111a84dd927597b90;hpb=f8db51ecb4be8afb3187d717d94c1426d5625d66;p=mono.git diff --git a/mono/mini/mini-trampolines.c b/mono/mini/mini-trampolines.c index f65dab8c1e7..4434564ee79 100644 --- a/mono/mini/mini-trampolines.c +++ b/mono/mini/mini-trampolines.c @@ -13,6 +13,7 @@ #include #include #include +#include #include "mini.h" @@ -140,18 +141,15 @@ mono_create_static_rgctx_trampoline (MonoMethod *m, gpointer addr) /* * Either IMPL_METHOD or AOT_ADDR will be set on return. - */ -static gpointer* -#ifdef __GNUC__ -/* + * + * MONO_NEVER_INLINE : * This works against problems when compiling with gcc 4.6 on arm. The 'then' part of * this line gets executed, even when the condition is false: * if (impl && mono_method_needs_static_rgctx_invoke (impl, FALSE)) * *need_rgctx_tramp = TRUE; */ -__attribute__ ((noinline)) -#endif - mono_convert_imt_slot_to_vtable_slot (gpointer* slot, mgreg_t *regs, guint8 *code, MonoMethod *method, gboolean lookup_aot, MonoMethod **impl_method, gboolean *need_rgctx_tramp, gboolean *variance_used, gpointer *aot_addr) +static MONO_NEVER_INLINE gpointer* +mono_convert_imt_slot_to_vtable_slot (gpointer* slot, mgreg_t *regs, guint8 *code, MonoMethod *method, gboolean lookup_aot, MonoMethod **impl_method, gboolean *need_rgctx_tramp, gboolean *variance_used, gpointer *aot_addr) { MonoObject *this_argument = mono_arch_get_this_arg_from_call (regs, code); MonoVTable *vt = this_argument->vtable;