[jit] Don't emit a redundant move in lazy fetch trampolines on AMD64. (#5346)
authorvkargov <kargov@gmail.com>
Fri, 18 Aug 2017 15:09:30 +0000 (08:09 -0700)
committerZoltan Varga <vargaz@gmail.com>
Fri, 18 Aug 2017 15:09:30 +0000 (11:09 -0400)
mono/mini/tramp-amd64.c

index 53e3bc2e834c53dd39f310e66e6f4da222d49f72..ea912ba6ce94a94a9c7e0735b15c05a0c24fa550 100644 (file)
@@ -705,8 +705,10 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 
        g_free (rgctx_null_jumps);
 
-       /* move the rgctx pointer to the VTABLE register */
-       amd64_mov_reg_reg (code, MONO_ARCH_VTABLE_REG, AMD64_ARG_REG1, sizeof(gpointer));
+       if (MONO_ARCH_VTABLE_REG != AMD64_ARG_REG1) {
+               /* move the rgctx pointer to the VTABLE register */
+               amd64_mov_reg_reg (code, MONO_ARCH_VTABLE_REG, AMD64_ARG_REG1, sizeof(gpointer));
+       }
 
        if (aot) {
                code = mono_arch_emit_load_aotconst (buf, code, &ji, MONO_PATCH_INFO_JIT_ICALL_ADDR, g_strdup_printf ("specific_trampoline_lazy_fetch_%u", slot));