num_trampolines ++;
if (!generic_trampolines [tramp_type]) {
- char *symbol;
+ const char *symbol;
symbol = mono_get_generic_trampoline_name (tramp_type);
generic_trampolines [tramp_type] = mono_aot_get_trampoline (symbol);
- g_free (symbol);
}
tramp = (guint8 *)generic_trampolines [tramp_type];
return offset;
}
-static const char*tramp_names [MONO_TRAMPOLINE_NUM] = {
- "jit",
- "jump",
- "rgctx_lazy_fetch",
- "aot",
- "aot_plt",
- "delegate",
- "generic_virtual_remoting",
- "vcall"
+static const char* const tramp_names [MONO_TRAMPOLINE_NUM] = {
+ "generic_trampoline_jit",
+ "generic_trampoline_jump",
+ "generic_trampoline_rgctx_lazy_fetch",
+ "generic_trampoline_aot",
+ "generic_trampoline_aot_plt",
+ "generic_trampoline_delegate",
+ "generic_trampoline_generic_virtual_remoting",
+ "generic_trampoline_vcall"
};
/*
const char*
mono_get_generic_trampoline_simple_name (MonoTrampolineType tramp_type)
{
- return tramp_names [tramp_type];
+ return tramp_names [tramp_type] + sizeof ("generic_trampoline_") - 1;
}
/*
*
* Returns a pointer to malloc-ed memory.
*/
-char*
+const char*
mono_get_generic_trampoline_name (MonoTrampolineType tramp_type)
{
- return g_strdup_printf ("generic_trampoline_%s", tramp_names [tramp_type]);
+ return tramp_names [tramp_type];
}
/*
gconstpointer mono_get_trampoline_func (MonoTrampolineType tramp_type);
gpointer mini_get_vtable_trampoline (MonoVTable *vt, int slot_index);
const char* mono_get_generic_trampoline_simple_name (MonoTrampolineType tramp_type);
-char* mono_get_generic_trampoline_name (MonoTrampolineType tramp_type);
+const char* mono_get_generic_trampoline_name (MonoTrampolineType tramp_type);
char* mono_get_rgctx_fetch_trampoline_name (int slot);
gpointer mini_get_nullified_class_init_trampoline (void);
gpointer mini_get_single_step_trampoline (void);
guchar*
mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInfo **info, gboolean aot)
{
- char *tramp_name;
+ const char *tramp_name;
guint8 *buf, *code, *tramp, *br [2], *r11_save_code, *after_r11_save_code, *br_ex_check;
int i, lmf_offset, offset, res_offset, arg_offset, rax_offset, ex_offset, tramp_offset, ctx_offset, saved_regs_offset;
int r11_save_offset, saved_fpregs_offset, rbp_offset, framesize, orig_rsp_to_rbp_offset, cfa_offset;
tramp_name = mono_get_generic_trampoline_name (tramp_type);
*info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
- g_free (tramp_name);
return buf;
}
guchar*
mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInfo **info, gboolean aot)
{
- char *tramp_name;
+ const char *tramp_name;
guint8 *buf, *code = NULL;
guint8 *load_get_lmf_addr = NULL, *load_trampoline = NULL;
guint8 *labels [16];
g_assert (info);
tramp_name = mono_get_generic_trampoline_name (tramp_type);
*info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
- g_free (tramp_name);
return buf;
}
guint64 gregs_regset;
GSList *unwind_ops = NULL;
MonoJumpInfo *ji = NULL;
- char *tramp_name;
+ const char *tramp_name;
buf_len = 768;
buf = code = mono_global_codeman_reserve (buf_len);
if (info) {
tramp_name = mono_get_generic_trampoline_name (tramp_type);
*info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
- g_free (tramp_name);
}
return buf;
guchar*
mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInfo **info, gboolean aot)
{
- char *tramp_name;
+ const char *tramp_name;
guint8 *buf, *tramp, *code = NULL;
int i, lmf;
GSList *unwind_ops = NULL;
g_assert (info);
tramp_name = mono_get_generic_trampoline_name (tramp_type);
*info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
- g_free (tramp_name);
return buf;
}
guchar*
mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInfo **info, gboolean aot)
{
- char *tramp_name;
+ const char *tramp_name;
guint8 *buf, *code = NULL, *exception_branch;
int i, offset, offset_r14 = 0;
gconstpointer tramp_handler;
g_assert (info);
tramp_name = mono_get_generic_trampoline_name (tramp_type);
*info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
- g_free (tramp_name);
return buf;
}
guint8 *buf = mono_global_codeman_reserve (1024), *code = buf;
if (info) {
- char *name = mono_get_generic_trampoline_name (tramp_type);
+ const char *name = mono_get_generic_trampoline_name (tramp_type);
*info = mono_tramp_info_create (name, buf, code - buf, NULL, NULL);
- g_free (name);
}
return buf;
guchar*
mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInfo **info, gboolean aot)
{
- char *tramp_name;
+ const char *tramp_name;
guint8 *buf, *tramp, *code;
int i, offset, has_caller;
short *o[1];
g_assert (info);
tramp_name = mono_get_generic_trampoline_name (tramp_type);
*info = mono_tramp_info_create (tramp_name, buf, buf - code, ji, unwind_ops);
- g_free (tramp_name);
/* Sanity check */
g_assert ((buf - code) <= 512);
guchar*
mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInfo **info, gboolean aot)
{
- char *tramp_name;
+ const char *tramp_name;
guint8 *buf, *code, *tramp, *br_ex_check;
GSList *unwind_ops = NULL;
MonoJumpInfo *ji = NULL;
tramp_name = mono_get_generic_trampoline_name (tramp_type);
*info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
- g_free (tramp_name);
return buf;
}