Remove a few string allocs/copies, i.e. for generic trampoline names. (mono/mono...
authorJay Krell <jay.krell@cornell.edu>
Tue, 16 Apr 2019 22:37:10 +0000 (15:37 -0700)
committerAlexander Köplinger <alex.koeplinger@outlook.com>
Tue, 16 Apr 2019 22:37:10 +0000 (00:37 +0200)
Commit migrated from https://github.com/mono/mono/commit/6a39d91078db76dcb99f8c973d638c87092488df

src/mono/mono/mini/aot-runtime.c
src/mono/mono/mini/mini-trampolines.c
src/mono/mono/mini/mini.h
src/mono/mono/mini/tramp-amd64.c
src/mono/mono/mini/tramp-arm.c
src/mono/mono/mini/tramp-arm64.c
src/mono/mono/mini/tramp-mips.c
src/mono/mono/mini/tramp-ppc.c
src/mono/mono/mini/tramp-riscv.c
src/mono/mono/mini/tramp-s390x.c
src/mono/mono/mini/tramp-x86.c

index 4d33269..1d11f46 100644 (file)
@@ -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];
index d59a601..1f91f2b 100644 (file)
@@ -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];
 }
 
 /*
index bf96ea0..2493fef 100644 (file)
@@ -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);
index da2ef23..f41e247 100644 (file)
@@ -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;
 }
index a12bfc5..ca28d72 100644 (file)
@@ -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;
 }
index 1d58d42..1f2ff35 100644 (file)
@@ -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;
index 498d111..68d5261 100644 (file)
@@ -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;
 }
index c572e25..9130943 100644 (file)
@@ -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;
 }
index b7937e4..7ab9320 100644 (file)
@@ -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;
index 043caf4..56f586a 100644 (file)
@@ -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);
index 1a84c71..bd68d41 100644 (file)
@@ -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;
 }