提交 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
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;
}
......
......@@ -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);
}
}
......
......@@ -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;
}
......
......@@ -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;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册