[runtime] Get rid of LLVM_IMT_TRAMPOLINE, its no longer used.
authorZoltan Varga <vargaz@gmail.com>
Wed, 2 Dec 2015 22:41:23 +0000 (17:41 -0500)
committerZoltan Varga <vargaz@gmail.com>
Wed, 2 Dec 2015 22:41:31 +0000 (17:41 -0500)
mono/mini/aot-compiler.c
mono/mini/aot-runtime.c
mono/mini/mini-runtime.c
mono/mini/mini-trampolines.c
mono/mini/mini.h
mono/mini/patch-info.h
mono/mini/tramp-amd64.c
mono/mini/tramp-x86.c

index ac686615636ad41fa42447d4a4f65b415d1483c8..99f7089dd4ca720727df13d91624338ec3af1628 100644 (file)
@@ -3058,7 +3058,6 @@ is_plt_patch (MonoJumpInfo *patch_info)
        case MONO_PATCH_INFO_JIT_ICALL_ADDR:
        case MONO_PATCH_INFO_ICALL_ADDR:
        case MONO_PATCH_INFO_RGCTX_FETCH:
-       case MONO_PATCH_INFO_LLVM_IMT_TRAMPOLINE:
                return TRUE;
        default:
                return FALSE;
@@ -5368,10 +5367,6 @@ encode_patch (MonoAotCompile *acfg, MonoJumpInfo *patch_info, guint8 *buf, guint
        case MONO_PATCH_INFO_SEQ_POINT_INFO:
        case MONO_PATCH_INFO_AOT_MODULE:
                break;
-       case MONO_PATCH_INFO_LLVM_IMT_TRAMPOLINE:
-               encode_method_ref (acfg, patch_info->data.imt_tramp->method, p, &p);
-               encode_value (patch_info->data.imt_tramp->vt_offset, p, &p);
-               break;
        case MONO_PATCH_INFO_SIGNATURE:
                encode_signature (acfg, (MonoMethodSignature*)patch_info->data.target, p, &p);
                break;
index 81326d3695b0ea18e63f296f515b0b1e571fc30c..6efdadfa4d523191172f2f61504f51a7646005b4 100644 (file)
@@ -3453,15 +3453,6 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
        case MONO_PATCH_INFO_AOT_MODULE:
        case MONO_PATCH_INFO_MSCORLIB_GOT_ADDR:
                break;
-       case MONO_PATCH_INFO_LLVM_IMT_TRAMPOLINE: {
-               MonoJumpInfoImtTramp *imt_tramp = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoImtTramp));
-
-               imt_tramp->method = decode_resolve_method_ref (aot_module, p, &p);
-               imt_tramp->vt_offset = decode_value (p, &p);
-               
-               ji->data.imt_tramp = imt_tramp;
-               break;
-       }
        case MONO_PATCH_INFO_SIGNATURE:
                ji->data.target = decode_signature (aot_module, p, &p);
                break;
index cc47e7890204b625cb3a017840805e2f9334ca99..9a8dcd5535907dcdc1d194d74c6400ceed644bd4 100644 (file)
@@ -1642,14 +1642,6 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
                        target = mono_arch_get_seq_point_info (domain, code);
                break;
 #endif
-       case MONO_PATCH_INFO_LLVM_IMT_TRAMPOLINE:
-#ifdef MONO_ARCH_LLVM_SUPPORTED
-               g_assert (mono_use_llvm);
-               target = mono_create_llvm_imt_trampoline (domain, patch_info->data.imt_tramp->method, patch_info->data.imt_tramp->vt_offset);
-#else
-               g_assert_not_reached ();
-#endif
-               break;
        case MONO_PATCH_INFO_GC_CARD_TABLE_ADDR: {
                int card_table_shift_bits;
                gpointer card_table_mask;
index 0fd6217055558603f6ee1755eeb4d5023e740a44..473c724fc624a0acadf223e04654a7af270c61d0 100644 (file)
@@ -1502,26 +1502,6 @@ mono_create_rgctx_lazy_fetch_trampoline (guint32 offset)
 
        return ptr;
 }
-#ifdef MONO_ARCH_LLVM_SUPPORTED
-/*
- * mono_create_llvm_imt_trampoline:
- *
- *   LLVM compiled code can't pass in the IMT argument, so we use this trampoline, which
- * sets the IMT argument, then branches to the contents of the vtable slot given by
- * vt_offset in the vtable which is obtained from the argument list.
- */
-gpointer
-mono_create_llvm_imt_trampoline (MonoDomain *domain, MonoMethod *m, int vt_offset)
-{
-#ifdef MONO_ARCH_HAVE_LLVM_IMT_TRAMPOLINE
-       return mono_arch_get_llvm_imt_trampoline (domain, m, vt_offset);
-#else
-       g_assert_not_reached ();
-       return NULL;
-#endif
-}
-#endif
 
 guint32
 mono_find_rgctx_lazy_fetch_trampoline_by_addr (gconstpointer addr)
index c13ab2b672a510d5c6e7b83bcbf406073ac4ea50..04ddd34a0b82d54b73ba577e339d4e7331c8a26f 100644 (file)
 #endif
 
 /* Version number of the AOT file format */
-#define MONO_AOT_FILE_VERSION 127
+#define MONO_AOT_FILE_VERSION 128
 
 //TODO: This is x86/amd64 specific.
 #define mono_simd_shuffle_mask(a,b,c,d) ((a) | ((b) << 2) | ((c) << 4) | ((d) << 6))
@@ -2436,7 +2436,6 @@ gpointer          mono_create_monitor_enter_trampoline (void);
 gpointer          mono_create_monitor_enter_v4_trampoline (void);
 gpointer          mono_create_monitor_exit_trampoline (void);
 gpointer          mono_create_static_rgctx_trampoline (MonoMethod *m, gpointer addr);
-gpointer          mono_create_llvm_imt_trampoline (MonoDomain *domain, MonoMethod *m, int vt_offset) MONO_LLVM_INTERNAL;
 MonoVTable*       mono_find_class_init_trampoline_by_addr (gconstpointer addr);
 guint32           mono_find_rgctx_lazy_fetch_trampoline_by_addr (gconstpointer addr);
 gpointer          mono_magic_trampoline (mgreg_t *regs, guint8 *code, gpointer arg, guint8* tramp);
index ca4ea9fd7d3641675a7f3ef6dd8591bbec0591f6..c9b9885e18ba3906b59224c477e92b7c81289047 100644 (file)
@@ -41,7 +41,6 @@ PATCH_INFO(MONITOR_ENTER_V4, "monitor_enter_v4")
 PATCH_INFO(MONITOR_EXIT, "monitor_exit")
 PATCH_INFO(MSCORLIB_GOT_ADDR, "mscorlib_got_addr")
 PATCH_INFO(SEQ_POINT_INFO, "seq_point_info")
-PATCH_INFO(LLVM_IMT_TRAMPOLINE, "llvm_imt_trampoline")
 PATCH_INFO(GC_CARD_TABLE_ADDR, "gc_card_table_addr")
 PATCH_INFO(CASTCLASS_CACHE, "castclass_cache")
 PATCH_INFO(SIGNATURE, "signature")
index 4468ad30869360109c099a0d5801983aa098b522..99d0f12f206fc2f3fc6c015d4620fbc1ec606f66 100644 (file)
@@ -118,36 +118,6 @@ mono_arch_get_static_rgctx_trampoline (MonoMethod *m, MonoMethodRuntimeGenericCo
        return start;
 }
 
-gpointer
-mono_arch_get_llvm_imt_trampoline (MonoDomain *domain, MonoMethod *m, int vt_offset)
-{
-       guint8 *code, *start;
-       int buf_len;
-       int this_reg;
-
-       buf_len = 32;
-
-       start = code = mono_domain_code_reserve (domain, buf_len);
-
-       this_reg = mono_arch_get_this_arg_reg (NULL);
-
-       /* Set imt arg */
-       amd64_mov_reg_imm (code, MONO_ARCH_IMT_REG, m);
-       /* Load vtable address */
-       amd64_mov_reg_membase (code, AMD64_RAX, this_reg, 0, 8);
-       amd64_jump_membase (code, AMD64_RAX, vt_offset);
-       amd64_ret (code);
-
-       g_assert ((code - start) < buf_len);
-
-       nacl_domain_code_validate (domain, &start, buf_len, &code);
-
-       mono_arch_flush_icache (start, code - start);
-       mono_profiler_code_buffer_new (start, code - start, MONO_PROFILER_CODE_BUFFER_IMT_TRAMPOLINE, NULL);
-
-       return start;
-}
-
 #ifdef _WIN64
 // Workaround lack of Valgrind support for 64-bit Windows
 #define VALGRIND_DISCARD_TRANSLATIONS(...)
index 3644a936639adb502acb1082a3ca2fa1db912ab6..8838c4956e563845c5b7b4ba6efaa5b35c70f3c3 100644 (file)
@@ -90,37 +90,6 @@ mono_arch_get_static_rgctx_trampoline (MonoMethod *m, MonoMethodRuntimeGenericCo
        return start;
 }
 
-gpointer
-mono_arch_get_llvm_imt_trampoline (MonoDomain *domain, MonoMethod *m, int vt_offset)
-{
-       guint8 *code, *start;
-       int buf_len;
-       int this_offset;
-
-       buf_len = 32;
-
-       start = code = mono_domain_code_reserve (domain, buf_len);
-
-       this_offset = mono_x86_get_this_arg_offset (mono_method_signature (m));
-
-       /* Set imt arg */
-       x86_mov_reg_imm (code, MONO_ARCH_IMT_REG, m);
-       /* Load this */
-       x86_mov_reg_membase (code, X86_EAX, X86_ESP, this_offset + 4, 4);
-       /* Load vtable address */
-       x86_mov_reg_membase (code, X86_EAX, X86_EAX, 0, 4);
-       x86_jump_membase (code, X86_EAX, vt_offset);
-
-       g_assert ((code - start) < buf_len);
-
-       nacl_domain_code_validate (domain, &start, buf_len, &code);
-
-       mono_arch_flush_icache (start, code - start);
-       mono_profiler_code_buffer_new (start, code - start, MONO_PROFILER_CODE_BUFFER_IMT_TRAMPOLINE, NULL);
-
-       return start;
-}
-
 void
 mono_arch_patch_callsite (guint8 *method_start, guint8 *orig_code, guint8 *addr)
 {