[jit] Remove support for the separate mono_lmf variable in the JIT, use the mono_lmf_...
authorZoltan Varga <vargaz@gmail.com>
Fri, 17 Mar 2017 07:32:52 +0000 (03:32 -0400)
committerGitHub <noreply@github.com>
Fri, 17 Mar 2017 07:32:52 +0000 (03:32 -0400)
12 files changed:
mono/mini/method-to-ir.c
mono/mini/mini-amd64.c
mono/mini/mini-amd64.h
mono/mini/mini-arm64.c
mono/mini/mini-arm64.h
mono/mini/mini-runtime.c
mono/mini/mini-s390x.h
mono/mini/mini-x86.c
mono/mini/mini-x86.h
mono/mini/mini.h
mono/utils/mono-tls.c
mono/utils/mono-tls.h

index 6e28f2a0e60938c7a9cedd1f3827de7fec3a0617..20fb8d23719ac2f86437015040f66a228100b835 100644 (file)
@@ -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)
index bdfc3bfcd3307010c0613900cdfd5553ff74d60b..0ad34cf0075905ae49bfdd8aff96c117ca39f027 100644 (file)
@@ -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
        }
 }
 
index 202134e87d88db842088d18b120312df9570d00e..8b9ca55c9bab6bf9650ea7905779444c53cfe9c4 100644 (file)
@@ -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
index 10acac62282508876ba07dc56e093fd53b739441..1305cb6c23ec48bf66a67fb666ac5f3ec715d589 100644 (file)
@@ -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
        }
 }
 
index 179d34ca4daf662d89d7135f250ced34418522ad..bc634c4f30fc36f9ca40374626e0df8e90da5567 100644 (file)
@@ -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
index d573c31ce04be54923e55f37bb708299940016df..2cde5cf5e6ce94844cfa5f4c27e62accccaa08fe 100644 (file)
@@ -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");
 }
index 5147ad413cea93fc78aec4082299cd09ceede92f..a1a9941c48f0e0737bb71ef2d6ecfcbbd212235f 100644 (file)
@@ -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
index 2c96700f4395f523f20bcf7113dbc13b69932110..f8394aba05a765e7fcb2be188c11c6fd09cbb210 100644 (file)
@@ -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;
index edc0bb19eccc0997e504aea797953e139a72ea77..ffe8387ee110459bf9ff5e87c13eb70aa7c378c7 100644 (file)
@@ -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
index e7fc859c250c3b22c299c1d6b94ace2ec2e3bb92..683d9643e00da38d9a65ccd04917e9243d9bfd46 100644 (file)
@@ -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;
index 68b4ce363946b3edc2b59169e548822d4368a172..f9723108cbe2963ced056d839aba6491312a6831 100644 (file)
@@ -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);
index a3751ea6e38b7ee2bbc60aaa1390f35d1eb2b88d..20e87174b45784a420c5595e93f9476c797466e1 100644 (file)
@@ -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 <windows.h>
@@ -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);