X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fmini-trampolines.c;h=8c1fe23297bffd8ba8b6ce8c9a6f43e62fff2b78;hb=6b8e96c44d40fa68eff6032445b3767585348b5a;hp=c10102b1ef780acde5cd5abc9dbf49b4c6dd6d22;hpb=5b39ce65cc24b24f550ca047d0bc6071b6841d39;p=mono.git diff --git a/mono/mini/mini-trampolines.c b/mono/mini/mini-trampolines.c index c10102b1ef7..8c1fe23297b 100644 --- a/mono/mini/mini-trampolines.c +++ b/mono/mini/mini-trampolines.c @@ -1304,15 +1304,19 @@ gpointer mono_create_handler_block_trampoline (void) { static gpointer code; - if (code) { + + if (code) + return code; + + if (mono_aot_only) { + gpointer tmp = mono_aot_get_trampoline ("handler_block_trampoline"); + g_assert (tmp); mono_memory_barrier (); + code = tmp; return code; } - g_assert (!mono_aot_only); - mono_trampolines_lock (); - if (!code) { MonoTrampInfo *info; gpointer tmp; @@ -1509,6 +1513,9 @@ mono_create_jit_trampoline (MonoDomain *domain, MonoMethod *method, MonoError *e mono_error_init (error); if (mono_aot_only) { + if (mono_llvm_only && method->iflags & METHOD_IMPL_ATTRIBUTE_SYNCHRONIZED) + method = mono_marshal_get_synchronized_wrapper (method); + /* Avoid creating trampolines if possible */ gpointer code = mono_jit_find_compiled_method (domain, method);