From 63d816b67552e8577f0fd7427f050632903d0aee Mon Sep 17 00:00:00 2001 From: Jay Krell Date: Tue, 16 Apr 2019 15:37:10 -0700 Subject: [PATCH] Remove a few string allocs/copies, i.e. for generic trampoline names. (mono/mono#14038) Commit migrated from https://github.com/mono/mono/commit/6a39d91078db76dcb99f8c973d638c87092488df --- src/mono/mono/mini/aot-runtime.c | 3 +-- src/mono/mono/mini/mini-trampolines.c | 24 ++++++++++++------------ src/mono/mono/mini/mini.h | 2 +- src/mono/mono/mini/tramp-amd64.c | 3 +-- src/mono/mono/mini/tramp-arm.c | 3 +-- src/mono/mono/mini/tramp-arm64.c | 3 +-- src/mono/mono/mini/tramp-mips.c | 3 +-- src/mono/mono/mini/tramp-ppc.c | 3 +-- src/mono/mono/mini/tramp-riscv.c | 3 +-- src/mono/mono/mini/tramp-s390x.c | 3 +-- src/mono/mono/mini/tramp-x86.c | 3 +-- 11 files changed, 22 insertions(+), 31 deletions(-) diff --git a/src/mono/mono/mini/aot-runtime.c b/src/mono/mono/mini/aot-runtime.c index 4d33269..1d11f46 100644 --- a/src/mono/mono/mini/aot-runtime.c +++ b/src/mono/mono/mini/aot-runtime.c @@ -5823,11 +5823,10 @@ mono_aot_create_specific_trampoline (MonoImage *image, gpointer arg1, MonoTrampo 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]; diff --git a/src/mono/mono/mini/mini-trampolines.c b/src/mono/mono/mini/mini-trampolines.c index d59a601..1f91f2b 100644 --- a/src/mono/mono/mini/mini-trampolines.c +++ b/src/mono/mono/mini/mini-trampolines.c @@ -1589,15 +1589,15 @@ mono_find_rgctx_lazy_fetch_trampoline_by_addr (gconstpointer addr) 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" }; /* @@ -1607,7 +1607,7 @@ static const char*tramp_names [MONO_TRAMPOLINE_NUM] = { 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; } /* @@ -1615,10 +1615,10 @@ mono_get_generic_trampoline_simple_name (MonoTrampolineType tramp_type) * * 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]; } /* diff --git a/src/mono/mono/mini/mini.h b/src/mono/mono/mini/mini.h index bf96ea0..2493fef 100644 --- a/src/mono/mono/mini/mini.h +++ b/src/mono/mono/mini/mini.h @@ -2152,7 +2152,7 @@ void mono_monitor_exit_trampoline (host_mgreg_t *regs, guint8 *code 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); diff --git a/src/mono/mono/mini/tramp-amd64.c b/src/mono/mono/mini/tramp-amd64.c index da2ef23..f41e247 100644 --- a/src/mono/mono/mini/tramp-amd64.c +++ b/src/mono/mono/mini/tramp-amd64.c @@ -231,7 +231,7 @@ stack_unaligned (MonoTrampolineType tramp_type) 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; @@ -576,7 +576,6 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf 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; } diff --git a/src/mono/mono/mini/tramp-arm.c b/src/mono/mono/mini/tramp-arm.c index a12bfc5..ca28d72 100644 --- a/src/mono/mono/mini/tramp-arm.c +++ b/src/mono/mono/mini/tramp-arm.c @@ -135,7 +135,7 @@ emit_bx (guint8* code, int reg) 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]; @@ -437,7 +437,6 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf 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; } diff --git a/src/mono/mono/mini/tramp-arm64.c b/src/mono/mono/mini/tramp-arm64.c index 1d58d42..1f2ff35 100644 --- a/src/mono/mono/mini/tramp-arm64.c +++ b/src/mono/mono/mini/tramp-arm64.c @@ -107,7 +107,7 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf 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); @@ -317,7 +317,6 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf 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; diff --git a/src/mono/mono/mini/tramp-mips.c b/src/mono/mono/mini/tramp-mips.c index 498d111..68d5261 100644 --- a/src/mono/mono/mini/tramp-mips.c +++ b/src/mono/mono/mini/tramp-mips.c @@ -134,7 +134,7 @@ mono_arch_patch_plt_entry (guint8 *code, gpointer *got, host_mgreg_t *regs, guin 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; @@ -273,7 +273,6 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf 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; } diff --git a/src/mono/mono/mini/tramp-ppc.c b/src/mono/mono/mini/tramp-ppc.c index c572e25..9130943 100644 --- a/src/mono/mono/mini/tramp-ppc.c +++ b/src/mono/mono/mini/tramp-ppc.c @@ -244,7 +244,7 @@ mono_arch_patch_plt_entry (guint8 *code, gpointer *got, host_mgreg_t *regs, guin 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; @@ -486,7 +486,6 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf 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; } diff --git a/src/mono/mono/mini/tramp-riscv.c b/src/mono/mono/mini/tramp-riscv.c index b7937e4..7ab9320 100644 --- a/src/mono/mono/mini/tramp-riscv.c +++ b/src/mono/mono/mini/tramp-riscv.c @@ -69,9 +69,8 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf 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; diff --git a/src/mono/mono/mini/tramp-s390x.c b/src/mono/mono/mini/tramp-s390x.c index 043caf4..56f586a 100644 --- a/src/mono/mono/mini/tramp-s390x.c +++ b/src/mono/mono/mini/tramp-s390x.c @@ -178,7 +178,7 @@ mono_arch_patch_plt_entry (guint8 *code, gpointer *got, host_mgreg_t *regs, guin 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]; @@ -374,7 +374,6 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf 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); diff --git a/src/mono/mono/mini/tramp-x86.c b/src/mono/mono/mini/tramp-x86.c index 1a84c71..bd68d41 100644 --- a/src/mono/mono/mini/tramp-x86.c +++ b/src/mono/mono/mini/tramp-x86.c @@ -143,7 +143,7 @@ mono_arch_patch_plt_entry (guint8 *code, gpointer *got, host_mgreg_t *regs, guin 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; @@ -384,7 +384,6 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf 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; } -- 2.7.4