[jit] Get rid of the MONO_ARCH_HAVE_OP_GET_EX_OBJ define, use MONO_CONTEXT_SET_LLVM_E...
authorZoltan Varga <vargaz@gmail.com>
Tue, 14 Apr 2015 14:39:20 +0000 (10:39 -0400)
committerZoltan Varga <vargaz@gmail.com>
Tue, 14 Apr 2015 14:39:20 +0000 (10:39 -0400)
mono/mini/method-to-ir.c
mono/mini/mini-amd64.h
mono/mini/mini-arm.h
mono/mini/mini-exceptions.c
mono/mini/mini-x86.h

index ca7ebb3137097e712993d53842afe17f06960e83..97517739d182842f0f7db18346f796dbd76864e3 100755 (executable)
@@ -7990,8 +7990,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                                cfg->cbb = tblock;
 
-#ifdef MONO_ARCH_HAVE_OP_GET_EX_OBJ
-                               /* The EH code passes in the exception in a register */
+#ifdef MONO_CONTEXT_SET_LLVM_EXC_REG
+                               /* The EH code passes in the exception in a register to both JITted and LLVM compiled code */
                                if (!cfg->compile_llvm) {
                                        MONO_INST_NEW (cfg, ins, OP_GET_EX_OBJ);
                                        ins->dreg = tblock->in_stack [0]->dreg;
index 4495954e13abc6a101f8c7592c9b18954e908f4e..d17167372ac926f14680c49bf6f56e1c6a8f0256 100644 (file)
@@ -355,7 +355,6 @@ typedef struct {
 #define MONO_ARCH_HAVE_TRANSLATE_TLS_OFFSET 1
 #define MONO_ARCH_HAVE_DUMMY_INIT 1
 #define MONO_ARCH_HAVE_SDB_TRAMPOLINES 1
-#define MONO_ARCH_HAVE_OP_GET_EX_OBJ 1
 
 #if defined(TARGET_OSX) || defined(__linux__)
 #define MONO_ARCH_HAVE_TLS_GET_REG 1
index b95704884a3e09f18863150f40c69091417185ab..f46ee40726da19fb944c96776954a97661627757 100644 (file)
@@ -288,7 +288,6 @@ typedef struct MonoCompileArch {
 #define MONO_ARCH_HAVE_OP_TAIL_CALL 1
 #endif
 #define MONO_ARCH_HAVE_DUMMY_INIT 1
-#define MONO_ARCH_HAVE_OP_GET_EX_OBJ 1
 
 #if defined(__native_client__)
 #undef MONO_ARCH_SOFT_DEBUG_SUPPORTED
index e9dcda7f59e3b5262390350d707f18cae7b83a34..603193d1b500761dbb20759913928da26768961f 100644 (file)
@@ -1483,20 +1483,13 @@ mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint3
                                        if (is_user_frame)
                                                setup_managed_stacktrace_information ();
 
-                                       if (ji->from_llvm) {
 #ifdef MONO_CONTEXT_SET_LLVM_EXC_REG
-                                               MONO_CONTEXT_SET_LLVM_EXC_REG (ctx, ex_obj);
+                                       MONO_CONTEXT_SET_LLVM_EXC_REG (ctx, ex_obj);
 #else
-                                               g_assert_not_reached ();
+                                       g_assert (!ji->from_llvm);
+                                       /* store the exception object in bp + ei->exvar_offset */
+                                       *((gpointer *)(gpointer)((char *)MONO_CONTEXT_GET_BP (ctx) + ei->exvar_offset)) = ex_obj;
 #endif
-                                       } else {
-#ifdef MONO_ARCH_HAVE_OP_GET_EX_OBJ
-                                               MONO_CONTEXT_SET_LLVM_EXC_REG (ctx, ex_obj);
-#else
-                                               /* store the exception object in bp + ei->exvar_offset */
-                                               *((gpointer *)(gpointer)((char *)MONO_CONTEXT_GET_BP (ctx) + ei->exvar_offset)) = ex_obj;
-#endif
-                                       }
 
 #ifdef MONO_CONTEXT_SET_LLVM_EH_SELECTOR_REG
                                        /*
@@ -1792,20 +1785,13 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                                        ex_obj = obj;
 
                                if (((ei->flags == MONO_EXCEPTION_CLAUSE_NONE) || (ei->flags == MONO_EXCEPTION_CLAUSE_FILTER))) {
-                                       if (ji->from_llvm) {
 #ifdef MONO_CONTEXT_SET_LLVM_EXC_REG
-                                               MONO_CONTEXT_SET_LLVM_EXC_REG (ctx, ex_obj);
+                                       MONO_CONTEXT_SET_LLVM_EXC_REG (ctx, ex_obj);
 #else
-                                               g_assert_not_reached ();
+                                       g_assert (!ji->from_llvm);
+                                       /* store the exception object in bp + ei->exvar_offset */
+                                       *((gpointer *)(gpointer)((char *)MONO_CONTEXT_GET_BP (ctx) + ei->exvar_offset)) = ex_obj;
 #endif
-                                       } else {
-#ifdef MONO_ARCH_HAVE_OP_GET_EX_OBJ
-                                               MONO_CONTEXT_SET_LLVM_EXC_REG (ctx, ex_obj);
-#else
-                                               /* store the exception object in bp + ei->exvar_offset */
-                                               *((gpointer *)(gpointer)((char *)MONO_CONTEXT_GET_BP (ctx) + ei->exvar_offset)) = ex_obj;
-#endif
-                                       }
                                }
 
 #ifdef MONO_CONTEXT_SET_LLVM_EH_SELECTOR_REG
index 43bef706e0ec0129a46fbfc2b8fffa371f513cba..173f05fa58d0a5babd562254f1f80a7fc5bfc0fa 100644 (file)
@@ -257,7 +257,6 @@ typedef struct {
 #define MONO_ARCH_HAVE_TRANSLATE_TLS_OFFSET 1
 #define MONO_ARCH_HAVE_TLS_GET_REG 1
 #define MONO_ARCH_HAVE_DUMMY_INIT 1
-#define MONO_ARCH_HAVE_OP_GET_EX_OBJ 1
 
 /* Used for optimization, not complete */
 #define MONO_ARCH_IS_OP_MEMBASE(opcode) ((opcode) == OP_X86_PUSH_MEMBASE)