From 4f5889611c51e35536f6db982e37c59b864116ba Mon Sep 17 00:00:00 2001 From: Zoltan Varga Date: Mon, 27 Sep 2010 21:55:02 +0200 Subject: [PATCH] Mov the jit map generation code from tramp-x86.c to mini-trampolines.c, add amd64 support. --- mono/mini/mini-amd64.c | 12 ++++++++++++ mono/mini/mini-trampolines.c | 10 ++++++++++ mono/mini/tramp-amd64.c | 3 +++ mono/mini/tramp-x86.c | 22 ---------------------- 4 files changed, 25 insertions(+), 22 deletions(-) diff --git a/mono/mini/mini-amd64.c b/mono/mini/mini-amd64.c index 35af5602632..174d5d2e90e 100644 --- a/mono/mini/mini-amd64.c +++ b/mono/mini/mini-amd64.c @@ -7044,6 +7044,18 @@ get_delegate_invoke_impl (gboolean has_target, guint32 param_count, guint32 *cod if (code_len) *code_len = code - start; + + if (mono_jit_map_is_enabled ()) { + char *buff; + if (has_target) + buff = (char*)"delegate_invoke_has_target"; + else + buff = g_strdup_printf ("delegate_invoke_no_target_%d", param_count); + mono_emit_jit_tramp (start, code - start, buff); + if (!has_target) + g_free (buff); + } + return start; } diff --git a/mono/mini/mini-trampolines.c b/mono/mini/mini-trampolines.c index 41b06d2c2cf..f20a208f21c 100644 --- a/mono/mini/mini-trampolines.c +++ b/mono/mini/mini-trampolines.c @@ -1079,6 +1079,8 @@ create_trampoline_code (MonoTrampolineType tramp_type) code = mono_arch_create_generic_trampoline (tramp_type, &info, FALSE); if (info) { mono_save_trampoline_xdebug_info (info); + if (mono_jit_map_is_enabled ()) + mono_emit_jit_tramp (info->code, info->code_size, info->name); mono_tramp_info_free (info); } @@ -1205,6 +1207,8 @@ mono_create_generic_class_init_trampoline (void) if (info) { mono_save_trampoline_xdebug_info (info); + if (mono_jit_map_is_enabled ()) + mono_emit_jit_tramp (info->code, info->code_size, info->name); mono_tramp_info_free (info); } } @@ -1383,6 +1387,8 @@ mono_create_rgctx_lazy_fetch_trampoline (guint32 offset) tramp = mono_arch_create_rgctx_lazy_fetch_trampoline (offset, &info, FALSE); if (info) { mono_save_trampoline_xdebug_info (info); + if (mono_jit_map_is_enabled ()) + mono_emit_jit_tramp (info->code, info->code_size, info->name); mono_tramp_info_free (info); } ptr = mono_create_ftnptr (mono_get_root_domain (), tramp); @@ -1426,6 +1432,8 @@ mono_create_monitor_enter_trampoline (void) code = mono_arch_create_monitor_enter_trampoline (&info, FALSE); if (info) { mono_save_trampoline_xdebug_info (info); + if (mono_jit_map_is_enabled ()) + mono_emit_jit_tramp (info->code, info->code_size, info->name); mono_tramp_info_free (info); } } @@ -1458,6 +1466,8 @@ mono_create_monitor_exit_trampoline (void) code = mono_arch_create_monitor_exit_trampoline (&info, FALSE); if (info) { mono_save_trampoline_xdebug_info (info); + if (mono_jit_map_is_enabled ()) + mono_emit_jit_tramp (info->code, info->code_size, info->name); mono_tramp_info_free (info); } } diff --git a/mono/mini/tramp-amd64.c b/mono/mini/tramp-amd64.c index 214eff5d153..253e3237d64 100644 --- a/mono/mini/tramp-amd64.c +++ b/mono/mini/tramp-amd64.c @@ -610,6 +610,9 @@ mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info) if (info) *info = mono_tramp_info_create (g_strdup_printf ("nullified_class_init_trampoline"), buf, code - buf, NULL, NULL); + if (mono_jit_map_is_enabled ()) + mono_emit_jit_tramp (buf, code - buf, "nullified_class_init_trampoline"); + return buf; } diff --git a/mono/mini/tramp-x86.c b/mono/mini/tramp-x86.c index 4d4704d6b3b..853ae68f094 100644 --- a/mono/mini/tramp-x86.c +++ b/mono/mini/tramp-x86.c @@ -509,13 +509,6 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf nullified_class_init_trampoline = mono_arch_get_nullified_class_init_trampoline (NULL); } - if (mono_jit_map_is_enabled ()) { - char *buff; - buff = mono_get_generic_trampoline_name (tramp_type); - mono_emit_jit_tramp (buf, code - buf, buff); - g_free (buff); - } - return buf; } @@ -659,12 +652,6 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info if (info) *info = mono_tramp_info_create (mono_get_rgctx_fetch_trampoline_name (slot), buf, code - buf, ji, unwind_ops); - if (mono_jit_map_is_enabled ()) { - char *buff = mono_get_rgctx_fetch_trampoline_name (slot); - mono_emit_jit_tramp (buf, code - buf, buff); - g_free (buff); - } - return buf; } @@ -719,9 +706,6 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a if (info) *info = mono_tramp_info_create (g_strdup_printf ("generic_class_init_trampoline"), buf, code - buf, ji, unwind_ops); - if (mono_jit_map_is_enabled ()) - mono_emit_jit_tramp (buf, code - buf, "generic_class_init_trampoline"); - return buf; } @@ -854,9 +838,6 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean aot) if (info) *info = mono_tramp_info_create (g_strdup_printf ("monitor_enter_trampoline"), buf, code - buf, ji, unwind_ops); - if (mono_jit_map_is_enabled ()) - mono_emit_jit_tramp (buf, code - buf, "monitor_enter_trampoline"); - return buf; } @@ -956,9 +937,6 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot) if (info) *info = mono_tramp_info_create (g_strdup_printf ("monitor_exit_trampoline"), buf, code - buf, ji, unwind_ops); - if (mono_jit_map_is_enabled ()) - mono_emit_jit_tramp (buf, code - buf, "monitor_exit_trampoline"); - return buf; } -- GitLab