提交 4f588961 编写于 作者: Z Zoltan Varga

Mov the jit map generation code from tramp-x86.c to mini-trampolines.c, add amd64 support.

上级 61da08a4
...@@ -7044,6 +7044,18 @@ get_delegate_invoke_impl (gboolean has_target, guint32 param_count, guint32 *cod ...@@ -7044,6 +7044,18 @@ get_delegate_invoke_impl (gboolean has_target, guint32 param_count, guint32 *cod
if (code_len) if (code_len)
*code_len = code - start; *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; return start;
} }
......
...@@ -1079,6 +1079,8 @@ create_trampoline_code (MonoTrampolineType tramp_type) ...@@ -1079,6 +1079,8 @@ create_trampoline_code (MonoTrampolineType tramp_type)
code = mono_arch_create_generic_trampoline (tramp_type, &info, FALSE); code = mono_arch_create_generic_trampoline (tramp_type, &info, FALSE);
if (info) { if (info) {
mono_save_trampoline_xdebug_info (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); mono_tramp_info_free (info);
} }
...@@ -1205,6 +1207,8 @@ mono_create_generic_class_init_trampoline (void) ...@@ -1205,6 +1207,8 @@ mono_create_generic_class_init_trampoline (void)
if (info) { if (info) {
mono_save_trampoline_xdebug_info (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); mono_tramp_info_free (info);
} }
} }
...@@ -1383,6 +1387,8 @@ mono_create_rgctx_lazy_fetch_trampoline (guint32 offset) ...@@ -1383,6 +1387,8 @@ mono_create_rgctx_lazy_fetch_trampoline (guint32 offset)
tramp = mono_arch_create_rgctx_lazy_fetch_trampoline (offset, &info, FALSE); tramp = mono_arch_create_rgctx_lazy_fetch_trampoline (offset, &info, FALSE);
if (info) { if (info) {
mono_save_trampoline_xdebug_info (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); mono_tramp_info_free (info);
} }
ptr = mono_create_ftnptr (mono_get_root_domain (), tramp); ptr = mono_create_ftnptr (mono_get_root_domain (), tramp);
...@@ -1426,6 +1432,8 @@ mono_create_monitor_enter_trampoline (void) ...@@ -1426,6 +1432,8 @@ mono_create_monitor_enter_trampoline (void)
code = mono_arch_create_monitor_enter_trampoline (&info, FALSE); code = mono_arch_create_monitor_enter_trampoline (&info, FALSE);
if (info) { if (info) {
mono_save_trampoline_xdebug_info (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); mono_tramp_info_free (info);
} }
} }
...@@ -1458,6 +1466,8 @@ mono_create_monitor_exit_trampoline (void) ...@@ -1458,6 +1466,8 @@ mono_create_monitor_exit_trampoline (void)
code = mono_arch_create_monitor_exit_trampoline (&info, FALSE); code = mono_arch_create_monitor_exit_trampoline (&info, FALSE);
if (info) { if (info) {
mono_save_trampoline_xdebug_info (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); mono_tramp_info_free (info);
} }
} }
......
...@@ -610,6 +610,9 @@ mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info) ...@@ -610,6 +610,9 @@ mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
if (info) if (info)
*info = mono_tramp_info_create (g_strdup_printf ("nullified_class_init_trampoline"), buf, code - buf, NULL, NULL); *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; return buf;
} }
......
...@@ -509,13 +509,6 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf ...@@ -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); 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; return buf;
} }
...@@ -659,12 +652,6 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info ...@@ -659,12 +652,6 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
if (info) if (info)
*info = mono_tramp_info_create (mono_get_rgctx_fetch_trampoline_name (slot), buf, code - buf, ji, unwind_ops); *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; return buf;
} }
...@@ -719,9 +706,6 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a ...@@ -719,9 +706,6 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
if (info) if (info)
*info = mono_tramp_info_create (g_strdup_printf ("generic_class_init_trampoline"), buf, code - buf, ji, unwind_ops); *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; return buf;
} }
...@@ -854,9 +838,6 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean aot) ...@@ -854,9 +838,6 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean aot)
if (info) if (info)
*info = mono_tramp_info_create (g_strdup_printf ("monitor_enter_trampoline"), buf, code - buf, ji, unwind_ops); *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; return buf;
} }
...@@ -956,9 +937,6 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot) ...@@ -956,9 +937,6 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
if (info) if (info)
*info = mono_tramp_info_create (g_strdup_printf ("monitor_exit_trampoline"), buf, code - buf, ji, unwind_ops); *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; return buf;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册