From 74c2ce1ff8c6de2a51af26614e485de8e53c914d Mon Sep 17 00:00:00 2001 From: Zoltan Varga Date: Fri, 17 Mar 2017 03:32:52 -0400 Subject: [PATCH] [jit] Remove support for the separate mono_lmf variable in the JIT, use the mono_lmf_addr () variable instead. The former could be used to generate slighly faster code in managed-to-native wrappers, but its not worth all the complexity it caused. (#4549) --- mono/mini/method-to-ir.c | 89 ++++++++++++++++------------------------ mono/mini/mini-amd64.c | 4 -- mono/mini/mini-amd64.h | 4 -- mono/mini/mini-arm64.c | 3 -- mono/mini/mini-arm64.h | 3 -- mono/mini/mini-runtime.c | 26 +----------- mono/mini/mini-s390x.h | 1 - mono/mini/mini-x86.c | 3 -- mono/mini/mini-x86.h | 4 -- mono/mini/mini.h | 2 - mono/utils/mono-tls.c | 36 ---------------- mono/utils/mono-tls.h | 17 ++------ 12 files changed, 40 insertions(+), 152 deletions(-) diff --git a/mono/mini/method-to-ir.c b/mono/mini/method-to-ir.c index 6e28f2a0e60..20fb8d23719 100644 --- a/mono/mini/method-to-ir.c +++ b/mono/mini/method-to-ir.c @@ -1825,47 +1825,35 @@ emit_push_lmf (MonoCompile *cfg) if (!cfg->lmf_ir) return; - if (cfg->lmf_ir_mono_lmf) { - MonoInst *lmf_vara_ins, *lmf_ins; - /* Load current lmf */ - lmf_ins = mono_create_tls_get (cfg, TLS_KEY_LMF); - g_assert (lmf_ins); - EMIT_NEW_VARLOADA (cfg, lmf_vara_ins, cfg->lmf_var, NULL); - /* Save previous_lmf */ - EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, lmf_vara_ins->dreg, MONO_STRUCT_OFFSET (MonoLMF, previous_lmf), lmf_ins->dreg); - /* Set new LMF */ - mono_create_tls_set (cfg, lmf_vara_ins, TLS_KEY_LMF); - } else { - int lmf_reg, prev_lmf_reg; - /* - * Store lmf_addr in a variable, so it can be allocated to a global register. - */ - if (!cfg->lmf_addr_var) - cfg->lmf_addr_var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL); + int lmf_reg, prev_lmf_reg; + /* + * Store lmf_addr in a variable, so it can be allocated to a global register. + */ + if (!cfg->lmf_addr_var) + cfg->lmf_addr_var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL); #ifdef HOST_WIN32 - ins = mono_create_tls_get (cfg, TLS_KEY_JIT_TLS); - g_assert (ins); - int jit_tls_dreg = ins->dreg; + ins = mono_create_tls_get (cfg, TLS_KEY_JIT_TLS); + g_assert (ins); + int jit_tls_dreg = ins->dreg; - lmf_reg = alloc_preg (cfg); - EMIT_NEW_BIALU_IMM (cfg, lmf_ins, OP_PADD_IMM, lmf_reg, jit_tls_dreg, MONO_STRUCT_OFFSET (MonoJitTlsData, lmf)); + lmf_reg = alloc_preg (cfg); + EMIT_NEW_BIALU_IMM (cfg, lmf_ins, OP_PADD_IMM, lmf_reg, jit_tls_dreg, MONO_STRUCT_OFFSET (MonoJitTlsData, lmf)); #else - lmf_ins = mono_create_tls_get (cfg, TLS_KEY_LMF_ADDR); - g_assert (lmf_ins); + lmf_ins = mono_create_tls_get (cfg, TLS_KEY_LMF_ADDR); + g_assert (lmf_ins); #endif - lmf_ins->dreg = cfg->lmf_addr_var->dreg; + lmf_ins->dreg = cfg->lmf_addr_var->dreg; - EMIT_NEW_VARLOADA (cfg, ins, cfg->lmf_var, NULL); - lmf_reg = ins->dreg; + EMIT_NEW_VARLOADA (cfg, ins, cfg->lmf_var, NULL); + lmf_reg = ins->dreg; - prev_lmf_reg = alloc_preg (cfg); - /* Save previous_lmf */ - EMIT_NEW_LOAD_MEMBASE (cfg, ins, OP_LOAD_MEMBASE, prev_lmf_reg, cfg->lmf_addr_var->dreg, 0); - EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, lmf_reg, MONO_STRUCT_OFFSET (MonoLMF, previous_lmf), prev_lmf_reg); - /* Set new lmf */ - EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, cfg->lmf_addr_var->dreg, 0, lmf_reg); - } + prev_lmf_reg = alloc_preg (cfg); + /* Save previous_lmf */ + EMIT_NEW_LOAD_MEMBASE (cfg, ins, OP_LOAD_MEMBASE, prev_lmf_reg, cfg->lmf_addr_var->dreg, 0); + EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, lmf_reg, MONO_STRUCT_OFFSET (MonoLMF, previous_lmf), prev_lmf_reg); + /* Set new lmf */ + EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, cfg->lmf_addr_var->dreg, 0, lmf_reg); } /* @@ -1885,26 +1873,19 @@ emit_pop_lmf (MonoCompile *cfg) EMIT_NEW_VARLOADA (cfg, ins, cfg->lmf_var, NULL); lmf_reg = ins->dreg; - if (cfg->lmf_ir_mono_lmf) { - /* Load previous_lmf */ - EMIT_NEW_LOAD_MEMBASE (cfg, ins, OP_LOAD_MEMBASE, alloc_preg (cfg), lmf_reg, MONO_STRUCT_OFFSET (MonoLMF, previous_lmf)); - /* Set new LMF */ - mono_create_tls_set (cfg, ins, TLS_KEY_LMF); - } else { - int prev_lmf_reg; - /* - * Emit IR to pop the LMF: - * *(lmf->lmf_addr) = lmf->prev_lmf - */ - /* This could be called before emit_push_lmf () */ - if (!cfg->lmf_addr_var) - cfg->lmf_addr_var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL); - lmf_addr_reg = cfg->lmf_addr_var->dreg; + int prev_lmf_reg; + /* + * Emit IR to pop the LMF: + * *(lmf->lmf_addr) = lmf->prev_lmf + */ + /* This could be called before emit_push_lmf () */ + if (!cfg->lmf_addr_var) + cfg->lmf_addr_var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL); + lmf_addr_reg = cfg->lmf_addr_var->dreg; - prev_lmf_reg = alloc_preg (cfg); - EMIT_NEW_LOAD_MEMBASE (cfg, ins, OP_LOAD_MEMBASE, prev_lmf_reg, lmf_reg, MONO_STRUCT_OFFSET (MonoLMF, previous_lmf)); - EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, lmf_addr_reg, 0, prev_lmf_reg); - } + prev_lmf_reg = alloc_preg (cfg); + EMIT_NEW_LOAD_MEMBASE (cfg, ins, OP_LOAD_MEMBASE, prev_lmf_reg, lmf_reg, MONO_STRUCT_OFFSET (MonoLMF, previous_lmf)); + EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, lmf_addr_reg, 0, prev_lmf_reg); } static void @@ -2857,6 +2838,8 @@ emit_llvmonly_calli (MonoCompile *cfg, MonoMethodSignature *fsig, MonoInst **arg static gboolean direct_icalls_enabled (MonoCompile *cfg) { + return FALSE; + /* LLVM on amd64 can't handle calls to non-32 bit addresses */ #ifdef TARGET_AMD64 if (cfg->compile_llvm && !cfg->llvm_only) diff --git a/mono/mini/mini-amd64.c b/mono/mini/mini-amd64.c index bdfc3bfcd33..0ad34cf0075 100644 --- a/mono/mini/mini-amd64.c +++ b/mono/mini/mini-amd64.c @@ -1824,10 +1824,6 @@ mono_arch_create_vars (MonoCompile *cfg) if (cfg->method->save_lmf) { cfg->lmf_ir = TRUE; -#if !defined(TARGET_WIN32) - if (!optimize_for_xen) - cfg->lmf_ir_mono_lmf = TRUE; -#endif } } diff --git a/mono/mini/mini-amd64.h b/mono/mini/mini-amd64.h index 202134e87d8..8b9ca55c9ba 100644 --- a/mono/mini/mini-amd64.h +++ b/mono/mini/mini-amd64.h @@ -399,10 +399,6 @@ typedef struct { #define MONO_ARCH_EMULATE_CONV_R8_UN 1 #define MONO_ARCH_EMULATE_FREM 1 #define MONO_ARCH_HAVE_IS_INT_OVERFLOW 1 - -#ifndef HOST_WIN32 -#define MONO_ARCH_ENABLE_MONO_LMF_VAR 1 -#endif #define MONO_ARCH_HAVE_INVALIDATE_METHOD 1 #define MONO_ARCH_HAVE_FULL_AOT_TRAMPOLINES 1 #define MONO_ARCH_IMT_REG AMD64_R10 diff --git a/mono/mini/mini-arm64.c b/mono/mini/mini-arm64.c index 10acac62282..1305cb6c23e 100644 --- a/mono/mini/mini-arm64.c +++ b/mono/mini/mini-arm64.c @@ -1904,9 +1904,6 @@ mono_arch_create_vars (MonoCompile *cfg) if (cfg->method->save_lmf) { cfg->create_lmf_var = TRUE; cfg->lmf_ir = TRUE; -#ifdef HAVE_GET_TLS_ADDR - cfg->lmf_ir_mono_lmf = TRUE; -#endif } } diff --git a/mono/mini/mini-arm64.h b/mono/mini/mini-arm64.h index 179d34ca4da..bc634c4f30f 100644 --- a/mono/mini/mini-arm64.h +++ b/mono/mini/mini-arm64.h @@ -147,9 +147,6 @@ typedef struct { #define MONO_ARCH_HAVE_SETUP_RESUME_FROM_SIGNAL_HANDLER_CTX 1 #define MONO_ARCH_HAVE_SETUP_ASYNC_CALLBACK 1 #define MONO_ARCH_HAVE_GENERAL_RGCTX_LAZY_FETCH_TRAMPOLINE 1 -#ifndef MONO_CROSS_COMPILE -#define MONO_ARCH_ENABLE_MONO_LMF_VAR 1 -#endif #define MONO_ARCH_HAVE_OP_GET_EX_OBJ 1 #define MONO_ARCH_HAVE_OBJC_GET_SELECTOR 1 #define MONO_ARCH_HAVE_SDB_TRAMPOLINES 1 diff --git a/mono/mini/mini-runtime.c b/mono/mini/mini-runtime.c index d573c31ce04..2cde5cf5e6c 100644 --- a/mono/mini/mini-runtime.c +++ b/mono/mini/mini-runtime.c @@ -719,9 +719,6 @@ register_dyn_icall (gpointer func, const char *name, const char *sigstr, gboolea MonoLMF * mono_get_lmf (void) { -#if defined(MONO_ARCH_ENABLE_MONO_LMF_VAR) && defined(HAVE_GET_TLS_ADDR) - return (MonoLMF *)mono_tls_get_lmf (); -#else MonoJitTlsData *jit_tls; if ((jit_tls = mono_tls_get_jit_tls ())) @@ -732,7 +729,6 @@ mono_get_lmf (void) * (the thread object allocation can trigger a collection). */ return NULL; -#endif } MonoLMF ** @@ -744,11 +740,7 @@ mono_get_lmf_addr (void) void mono_set_lmf (MonoLMF *lmf) { -#if defined(MONO_ARCH_ENABLE_MONO_LMF_VAR) && defined(HAVE_GET_TLS_ADDR) - mono_tls_set_lmf (lmf); -#else (*mono_get_lmf_addr ()) = lmf; -#endif } MonoJitTlsData* @@ -880,23 +872,9 @@ setup_jit_tls_data (gpointer stack_start, gpointer abort_func) jit_tls->first_lmf = lmf; - /* - * We can have 2 configurations for accessing lmf. - * We can use only the tls_lmf_addr variable, which will store the address of - * jit_tls->lmf, or, if we have MONO_ARCH_ENABLE_MONO_LMF_VAR enabled, we can - * use both tls_lmf_addr and tls_lmf variables (in this case we need to have - * means of getting the address of a tls variable; this can be done always - * when using __thread or, on osx, even when using pthread) - */ -#if defined(MONO_ARCH_ENABLE_MONO_LMF_VAR) && defined(HAVE_GET_TLS_ADDR) - /* jit_tls->lmf is unused */ - mono_tls_set_lmf (lmf); - mono_set_lmf_addr (mono_tls_get_tls_addr (TLS_KEY_LMF)); -#else mono_set_lmf_addr (&jit_tls->lmf); jit_tls->lmf = lmf; -#endif #ifdef MONO_ARCH_HAVE_TLS_INIT mono_arch_tls_init (); @@ -3830,7 +3808,7 @@ register_icalls (void) register_icall (mono_threads_state_poll, "mono_threads_state_poll", "void", FALSE); #ifndef MONO_ARCH_NO_EMULATE_LONG_MUL_OPTS - register_opcode_emulation (OP_LMUL, "__emul_lmul", "long long long", mono_llmult, "mono_llmult", TRUE); + register_opcode_emulation (OP_LMUL, "__emul_lmul", "long long long", mono_llmult, "mono_llmult", FALSE); register_opcode_emulation (OP_LDIV, "__emul_ldiv", "long long long", mono_lldiv, "mono_lldiv", FALSE); register_opcode_emulation (OP_LDIV_UN, "__emul_ldiv_un", "long long long", mono_lldiv_un, "mono_lldiv_un", FALSE); register_opcode_emulation (OP_LREM, "__emul_lrem", "long long long", mono_llrem, "mono_llrem", FALSE); @@ -4033,13 +4011,11 @@ register_icalls (void) register_icall_no_wrapper (mono_tls_get_thread, "mono_tls_get_thread", "ptr"); register_icall_no_wrapper (mono_tls_get_jit_tls, "mono_tls_get_jit_tls", "ptr"); register_icall_no_wrapper (mono_tls_get_domain, "mono_tls_get_domain", "ptr"); - register_icall_no_wrapper (mono_tls_get_lmf, "mono_tls_get_lmf", "ptr"); register_icall_no_wrapper (mono_tls_get_sgen_thread_info, "mono_tls_get_sgen_thread_info", "ptr"); register_icall_no_wrapper (mono_tls_get_lmf_addr, "mono_tls_get_lmf_addr", "ptr"); register_icall_no_wrapper (mono_tls_set_thread, "mono_tls_set_thread", "void ptr"); register_icall_no_wrapper (mono_tls_set_jit_tls, "mono_tls_set_jit_tls", "void ptr"); register_icall_no_wrapper (mono_tls_set_domain, "mono_tls_set_domain", "void ptr"); - register_icall_no_wrapper (mono_tls_set_lmf, "mono_tls_set_lmf", "void ptr"); register_icall_no_wrapper (mono_tls_set_sgen_thread_info, "mono_tls_set_sgen_thread_info", "void ptr"); register_icall_no_wrapper (mono_tls_set_lmf_addr, "mono_tls_set_lmf_addr", "void ptr"); } diff --git a/mono/mini/mini-s390x.h b/mono/mini/mini-s390x.h index 5147ad413ce..a1a9941c48f 100644 --- a/mono/mini/mini-s390x.h +++ b/mono/mini/mini-s390x.h @@ -47,7 +47,6 @@ typedef struct #define MONO_ARCH_NEED_DIV_CHECK 1 #define MONO_ARCH_SIGNAL_STACK_SIZE 256*1024 #define MONO_ARCH_HAVE_DECOMPOSE_OPTS 1 -#define MONO_ARCH_ENABLE_MONO_LMF_VAR 1 #define MONO_ARCH_IMT_REG s390_r9 #define MONO_ARCH_VTABLE_REG S390_FIRST_ARG_REG #define MONO_ARCH_RGCTX_REG MONO_ARCH_IMT_REG diff --git a/mono/mini/mini-x86.c b/mono/mini/mini-x86.c index 2c96700f439..f8394aba05a 100644 --- a/mono/mini/mini-x86.c +++ b/mono/mini/mini-x86.c @@ -1180,9 +1180,6 @@ mono_arch_create_vars (MonoCompile *cfg) if (cfg->method->save_lmf) { cfg->create_lmf_var = TRUE; cfg->lmf_ir = TRUE; -#if !defined(HOST_WIN32) && !defined(TARGET_ANDROID) - cfg->lmf_ir_mono_lmf = TRUE; -#endif } cfg->arch_eh_jit_info = 1; diff --git a/mono/mini/mini-x86.h b/mono/mini/mini-x86.h index edc0bb19ecc..ffe8387ee11 100644 --- a/mono/mini/mini-x86.h +++ b/mono/mini/mini-x86.h @@ -192,10 +192,6 @@ typedef struct { #define MONO_ARCH_HAVE_IS_INT_OVERFLOW 1 #define MONO_ARCH_HAVE_INVALIDATE_METHOD 1 #define MONO_ARCH_NEED_GOT_VAR 1 -#ifndef HOST_WIN32 -/* X86 uses jit_tls->lmf (See emit_push_lmf ()) */ -#define MONO_ARCH_ENABLE_MONO_LMF_VAR 1 -#endif #define MONO_ARCH_IMT_REG X86_EDX #define MONO_ARCH_VTABLE_REG X86_EDX #define MONO_ARCH_RGCTX_REG MONO_ARCH_IMT_REG diff --git a/mono/mini/mini.h b/mono/mini/mini.h index e7fc859c250..683d9643e00 100644 --- a/mono/mini/mini.h +++ b/mono/mini/mini.h @@ -1138,7 +1138,6 @@ typedef struct { typedef struct { gpointer end_of_stack; guint32 stack_size; - /* !defined(HAVE_KW_THREAD) || !defined(MONO_ARCH_ENABLE_MONO_LMF_VAR) */ MonoLMF *lmf; MonoLMF *first_lmf; gpointer restore_stack_prot; @@ -1711,7 +1710,6 @@ typedef struct { * Whenever to use the mono_lmf TLS variable instead of indirection through the * mono_lmf_addr TLS variable. */ - guint lmf_ir_mono_lmf : 1; guint gen_write_barriers : 1; guint init_ref_vars : 1; guint extend_live_ranges : 1; diff --git a/mono/utils/mono-tls.c b/mono/utils/mono-tls.c index 68b4ce36394..f9723108cbe 100644 --- a/mono/utils/mono-tls.c +++ b/mono/utils/mono-tls.c @@ -178,7 +178,6 @@ static __thread gpointer mono_tls_lmf_addr MONO_TLS_FAST; static MonoNativeTlsKey mono_tls_key_thread; static MonoNativeTlsKey mono_tls_key_jit_tls; static MonoNativeTlsKey mono_tls_key_domain; -static MonoNativeTlsKey mono_tls_key_lmf; static MonoNativeTlsKey mono_tls_key_sgen_thread_info; static MonoNativeTlsKey mono_tls_key_lmf_addr; @@ -212,7 +211,6 @@ mono_tls_init_runtime_keys (void) MONO_THREAD_VAR_OFFSET (mono_tls_thread, tls_offsets [TLS_KEY_THREAD]); MONO_THREAD_VAR_OFFSET (mono_tls_jit_tls, tls_offsets [TLS_KEY_JIT_TLS]); MONO_THREAD_VAR_OFFSET (mono_tls_domain, tls_offsets [TLS_KEY_DOMAIN]); - MONO_THREAD_VAR_OFFSET (mono_tls_lmf, tls_offsets [TLS_KEY_LMF]); MONO_THREAD_VAR_OFFSET (mono_tls_lmf_addr, tls_offsets [TLS_KEY_LMF_ADDR]); #else mono_native_tls_alloc (&mono_tls_key_thread, NULL); @@ -221,8 +219,6 @@ mono_tls_init_runtime_keys (void) MONO_THREAD_VAR_OFFSET (mono_tls_key_jit_tls, tls_offsets [TLS_KEY_JIT_TLS]); mono_native_tls_alloc (&mono_tls_key_domain, NULL); MONO_THREAD_VAR_OFFSET (mono_tls_key_domain, tls_offsets [TLS_KEY_DOMAIN]); - mono_native_tls_alloc (&mono_tls_key_lmf, NULL); - MONO_THREAD_VAR_OFFSET (mono_tls_key_lmf, tls_offsets [TLS_KEY_LMF]); mono_native_tls_alloc (&mono_tls_key_lmf_addr, NULL); MONO_THREAD_VAR_OFFSET (mono_tls_key_lmf_addr, tls_offsets [TLS_KEY_LMF_ADDR]); #endif @@ -235,7 +231,6 @@ mono_tls_free_keys (void) mono_native_tls_free (mono_tls_key_thread); mono_native_tls_free (mono_tls_key_jit_tls); mono_native_tls_free (mono_tls_key_domain); - mono_native_tls_free (mono_tls_key_lmf); mono_native_tls_free (mono_tls_key_sgen_thread_info); mono_native_tls_free (mono_tls_key_lmf_addr); #endif @@ -268,8 +263,6 @@ mono_tls_get_tls_getter (MonoTlsKey key, gboolean name) return name ? (gpointer)"mono_tls_get_jit_tls" : (gpointer)mono_tls_get_jit_tls; case TLS_KEY_DOMAIN: return name ? (gpointer)"mono_tls_get_domain" : (gpointer)mono_tls_get_domain; - case TLS_KEY_LMF: - return name ? (gpointer)"mono_tls_get_lmf" : (gpointer)mono_tls_get_lmf; case TLS_KEY_SGEN_THREAD_INFO: return name ? (gpointer)"mono_tls_get_sgen_thread_info" : (gpointer)mono_tls_get_sgen_thread_info; case TLS_KEY_LMF_ADDR: @@ -290,8 +283,6 @@ mono_tls_get_tls_setter (MonoTlsKey key, gboolean name) return name ? (gpointer)"mono_tls_set_jit_tls" : (gpointer)mono_tls_set_jit_tls; case TLS_KEY_DOMAIN: return name ? (gpointer)"mono_tls_set_domain" : (gpointer)mono_tls_set_domain; - case TLS_KEY_LMF: - return name ? (gpointer)"mono_tls_set_lmf" : (gpointer)mono_tls_set_lmf; case TLS_KEY_SGEN_THREAD_INFO: return name ? (gpointer)"mono_tls_set_sgen_thread_info" : (gpointer)mono_tls_set_sgen_thread_info; case TLS_KEY_LMF_ADDR: @@ -301,23 +292,6 @@ mono_tls_get_tls_setter (MonoTlsKey key, gboolean name) return NULL; } -gpointer -mono_tls_get_tls_addr (MonoTlsKey key) -{ -#ifdef HAVE_GET_TLS_ADDR - if (key == TLS_KEY_LMF) { -#if defined(USE_KW_THREAD) - return &mono_tls_lmf; -#elif defined(TARGET_MACH) - return mono_mach_get_tls_address_from_thread (pthread_self (), mono_tls_key_lmf); -#endif - } -#endif - /* Implement if we ever need for other targets/keys */ - g_assert_not_reached (); - return NULL; -} - /* Getters for each tls key */ gpointer mono_tls_get_thread (void) { @@ -334,11 +308,6 @@ gpointer mono_tls_get_domain (void) return MONO_TLS_GET_VALUE (mono_tls_domain, mono_tls_key_domain); } -gpointer mono_tls_get_lmf (void) -{ - return MONO_TLS_GET_VALUE (mono_tls_lmf, mono_tls_key_lmf); -} - gpointer mono_tls_get_sgen_thread_info (void) { return MONO_TLS_GET_VALUE (mono_tls_sgen_thread_info, mono_tls_key_sgen_thread_info); @@ -365,11 +334,6 @@ void mono_tls_set_domain (gpointer value) MONO_TLS_SET_VALUE (mono_tls_domain, mono_tls_key_domain, value); } -void mono_tls_set_lmf (gpointer value) -{ - MONO_TLS_SET_VALUE (mono_tls_lmf, mono_tls_key_lmf, value); -} - void mono_tls_set_sgen_thread_info (gpointer value) { MONO_TLS_SET_VALUE (mono_tls_sgen_thread_info, mono_tls_key_sgen_thread_info, value); diff --git a/mono/utils/mono-tls.h b/mono/utils/mono-tls.h index a3751ea6e38..20e87174b45 100644 --- a/mono/utils/mono-tls.h +++ b/mono/utils/mono-tls.h @@ -22,23 +22,15 @@ typedef enum { TLS_KEY_JIT_TLS = 1, /* mono_domain_get () */ TLS_KEY_DOMAIN = 2, - TLS_KEY_LMF = 3, - TLS_KEY_SGEN_THREAD_INFO = 4, - TLS_KEY_LMF_ADDR = 5, - TLS_KEY_NUM = 6 + TLS_KEY_SGEN_THREAD_INFO = 3, + TLS_KEY_LMF_ADDR = 4, + TLS_KEY_NUM = 5 } MonoTlsKey; #ifdef HAVE_KW_THREAD #define USE_KW_THREAD #endif -#if defined(USE_KW_THREAD) -#define HAVE_GET_TLS_ADDR -#elif defined(TARGET_MACH) && (defined(TARGET_X86) || defined(TARGET_AMD64)) -/* mono_mach_get_tls_address_from_thread is untested for arm/arm64 */ -#define HAVE_GET_TLS_ADDR -#endif - #ifdef HOST_WIN32 #include @@ -82,19 +74,16 @@ void mono_tls_free_keys (void); gint32 mono_tls_get_tls_offset (MonoTlsKey key); gpointer mono_tls_get_tls_getter (MonoTlsKey key, gboolean name); gpointer mono_tls_get_tls_setter (MonoTlsKey key, gboolean name); -gpointer mono_tls_get_tls_addr (MonoTlsKey key); gpointer mono_tls_get_thread (void); gpointer mono_tls_get_jit_tls (void); gpointer mono_tls_get_domain (void); -gpointer mono_tls_get_lmf (void); gpointer mono_tls_get_sgen_thread_info (void); gpointer mono_tls_get_lmf_addr (void); void mono_tls_set_thread (gpointer value); void mono_tls_set_jit_tls (gpointer value); void mono_tls_set_domain (gpointer value); -void mono_tls_set_lmf (gpointer value); void mono_tls_set_sgen_thread_info (gpointer value); void mono_tls_set_lmf_addr (gpointer value); -- 2.25.1