Get rid of the MONO_ARCH_ENABLE_LMF_IR define added by 0938c69a52654e02bbb8f0c2107183...
authorZoltan Varga <vargaz@gmail.com>
Sun, 21 Jul 2013 23:48:24 +0000 (01:48 +0200)
committerZoltan Varga <vargaz@gmail.com>
Mon, 22 Jul 2013 01:06:35 +0000 (03:06 +0200)
mono/mini/method-to-ir.c
mono/mini/mini-amd64.c
mono/mini/mini-amd64.h
mono/mini/mini-x86.c
mono/mini/mini-x86.h
mono/mini/mini.c
mono/mini/mini.h

index 585a995b4910a99da260a10857efb77d48a235d4..aa06e03df42acdc69af15c4f1038379c6d8d7d1a 100644 (file)
@@ -1876,7 +1876,6 @@ mini_emit_memcpy (MonoCompile *cfg, int destreg, int doffset, int srcreg, int so
 static void
 emit_push_lmf (MonoCompile *cfg)
 {
-#if defined(MONO_ARCH_ENABLE_LMF_IR)
        /*
         * Emit IR to push the LMF:
         * lmf_addr = <lmf_addr from tls>
@@ -1887,7 +1886,7 @@ emit_push_lmf (MonoCompile *cfg)
        int lmf_reg, lmf_addr_reg, prev_lmf_reg;
        MonoInst *ins, *lmf_ins;
 
-       if (!mono_arch_enable_lmf_ir (cfg))
+       if (!cfg->lmf_ir)
                return;
 
        lmf_ins = mono_get_lmf_addr_intrinsic (cfg);
@@ -1909,7 +1908,6 @@ emit_push_lmf (MonoCompile *cfg)
        EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, lmf_reg, G_STRUCT_OFFSET (MonoLMF, previous_lmf), prev_lmf_reg);
        /* Set new lmf */
        EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, lmf_addr_reg, 0, lmf_reg);
-#endif
 }
 
 /*
@@ -1920,11 +1918,10 @@ emit_push_lmf (MonoCompile *cfg)
 static void
 emit_pop_lmf (MonoCompile *cfg)
 {
-#if defined(MONO_ARCH_ENABLE_LMF_IR)
        int lmf_reg, lmf_addr_reg, prev_lmf_reg;
        MonoInst *ins;
 
-       if (!mono_arch_enable_lmf_ir (cfg))
+       if (!cfg->lmf_ir)
                return;
 
        /*
@@ -1941,7 +1938,6 @@ emit_pop_lmf (MonoCompile *cfg)
        prev_lmf_reg = alloc_preg (cfg);
        EMIT_NEW_LOAD_MEMBASE (cfg, ins, OP_LOAD_MEMBASE, prev_lmf_reg, lmf_reg, G_STRUCT_OFFSET (MonoLMF, previous_lmf));
        EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, lmf_addr_reg, 0, prev_lmf_reg);
-#endif
 }
 
 static int
index 89506c79f82407b676ad86c89f849cbfb77194a1..05bb5947ebd3414a2b77832b7c13590753bc67bd 100644 (file)
@@ -2013,6 +2013,11 @@ mono_arch_create_vars (MonoCompile *cfg)
 #ifndef MONO_AMD64_NO_PUSHES
        cfg->arch_eh_jit_info = 1;
 #endif
+
+       cfg->create_lmf_var = 1;
+#if !defined(TARGET_WIN32) && !defined(MONO_ARCH_ENABLE_MONO_LMF_VAR)
+       cfg->lmf_ir = 1;
+#endif
 }
 
 static void
@@ -3757,7 +3762,7 @@ emit_save_lmf (MonoCompile *cfg, guint8 *code, gint32 lmf_offset, gboolean *args
                amd64_lea_membase (code, AMD64_R11, cfg->frame_reg, lmf_offset);
                amd64_mov_membase_reg (code, AMD64_RAX, 0, AMD64_R11, sizeof(gpointer));
 #else
-               /* Already handled by the MONO_ARCH_ENABLE_LMF_IR code in method-to-ir.c */
+               /* Already handled by emit_push_lmf () in method-to-ir.c */
                /* FIXME: Use this on win32 as well */
                return code;
 #endif
@@ -3798,16 +3803,6 @@ emit_restore_lmf (MonoCompile *cfg, guint8 *code, gint32 lmf_offset)
        return code;
 }
 
-gboolean
-mono_arch_enable_lmf_ir (MonoCompile *cfg)
-{
-#if !defined(TARGET_WIN32) && !defined(MONO_ARCH_ENABLE_MONO_LMF_VAR)
-       return TRUE;
-#else
-       return FALSE;
-#endif
-}
-
 #define REAL_PRINT_REG(text,reg) \
 mono_assert (reg >= 0); \
 amd64_push_reg (code, AMD64_RAX); \
index f9a19c6779121a18abaf42481673e8149b19e62a..5e87f02886cdc764fd071d6084374b1e2c9e0b24 100644 (file)
@@ -395,7 +395,6 @@ typedef struct MonoCompileArch {
 #define MONO_ARCH_HAVE_CONTEXT_SET_INT_REG 1
 #define MONO_ARCH_HAVE_SETUP_ASYNC_CALLBACK 1
 #define MONO_ARCH_HAVE_CREATE_LLVM_NATIVE_THUNK 1
-#define MONO_ARCH_ENABLE_LMF_IR 1
 
 #ifdef TARGET_OSX
 #define MONO_ARCH_HAVE_TLS_GET_REG 1
index 7214ef35cce934285d641c9e053e892d44302c0e..8a572cc71bfaaa40c5013805e65167c69673fbaf 100644 (file)
@@ -1178,6 +1178,7 @@ mono_arch_create_vars (MonoCompile *cfg)
        }
 
        cfg->arch_eh_jit_info = 1;
+       cfg->create_lmf_var = 1;
 }
 
 /*
@@ -2497,12 +2498,6 @@ emit_restore_lmf (MonoCompile *cfg, guint8 *code, gint32 lmf_offset)
        return code;
 }
 
-gboolean
-mono_arch_enable_lmf_ir (MonoCompile *cfg)
-{
-       return FALSE;
-}
-
 #define REAL_PRINT_REG(text,reg) \
 mono_assert (reg >= 0); \
 x86_push_reg (code, X86_EAX); \
index 77c67bf15f16e6bbdbcc28c5f4d3848bb5fb6b69..20d2eeb329a793e67a9fab9100b97b40cb6b5cf1 100644 (file)
@@ -262,7 +262,6 @@ typedef struct {
 #define MONO_ARCH_HAVE_CONTEXT_SET_INT_REG 1
 #define MONO_ARCH_HAVE_SETUP_ASYNC_CALLBACK 1
 #define MONO_ARCH_GSHAREDVT_SUPPORTED 1
-#define MONO_ARCH_ENABLE_LMF_IR 1
 
 #ifdef TARGET_OSX
 #define MONO_ARCH_HAVE_TLS_GET_REG 1
index d5c9989337b3708a8fc2b6cf6e55675cb49c8b77..fc8ffdb2374e3faca5827c49e33f33d6d93be897 100644 (file)
@@ -3619,14 +3619,14 @@ mono_compile_create_vars (MonoCompile *cfg)
        if (cfg->verbose_level > 2)
                g_print ("locals done\n");
 
-       if (cfg->method->save_lmf && ARCH_ENABLE_LMF_IR) {
+       mono_arch_create_vars (cfg);
+
+       if (cfg->method->save_lmf && cfg->create_lmf_var) {
                MonoInst *lmf_var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
                lmf_var->flags |= MONO_INST_VOLATILE;
                lmf_var->flags |= MONO_INST_LMF;
                cfg->lmf_var = lmf_var;
        }
-
-       mono_arch_create_vars (cfg);
 }
 
 void
index ce1fc4e0e1fcd30a7bab11121917cfa777cf6591..71d31d18bde1f2bab82242e17455e8492d8080d9 100644 (file)
@@ -1435,6 +1435,12 @@ typedef struct {
        guint            disable_vreg_to_lvreg : 1;
        guint            disable_deadce_vars : 1;
        guint            disable_out_of_line_bblocks : 1;
+       guint            create_lmf_var : 1;
+       /*
+        * When this is set, the code to push/pop the LMF from the LMF stack is generated as IR
+        * instead of being generated in emit_prolog ()/emit_epilog ().
+        */
+       guint            lmf_ir : 1;
        guint            gen_write_barriers : 1;
        guint            init_ref_vars : 1;
        guint            extend_live_ranges : 1;
@@ -2266,7 +2272,6 @@ gboolean  mono_arch_gsharedvt_sig_supported     (MonoMethodSignature *sig) MONO_
 gpointer  mono_arch_get_gsharedvt_trampoline    (MonoTrampInfo **info, gboolean aot) MONO_INTERNAL;
 gpointer  mono_arch_get_gsharedvt_call_info     (gpointer addr, MonoMethodSignature *normal_sig, MonoMethodSignature *gsharedvt_sig, MonoGenericSharingContext *gsctx, gboolean gsharedvt_in, gint32 vcall_offset, gboolean calli) MONO_INTERNAL;
 gboolean  mono_arch_opcode_needs_emulation      (MonoCompile *cfg, int opcode) MONO_INTERNAL;
-gboolean  mono_arch_enable_lmf_ir               (MonoCompile *cfg) MONO_INTERNAL;
 
 #ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
 gboolean  mono_arch_is_soft_float               (void) MONO_INTERNAL;
@@ -2772,14 +2777,4 @@ gboolean SIG_HANDLER_SIGNATURE (mono_chain_signal) MONO_INTERNAL;
 #define ARCH_HAVE_TLS_GET_REG 0
 #endif
 
-/*
- * When this is set, the code to push/pop the LMF from the LMF stack is generated as IR
- * instead of being generated in emit_prolog ()/emit_epilog ().
- */
-#ifdef MONO_ARCH_ENABLE_LMF_IR
-#define ARCH_ENABLE_LMF_IR 1
-#else
-#define ARCH_ENABLE_LMF_IR 0
-#endif
-
 #endif /* __MONO_MINI_H__ */