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;
#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
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
/*
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
#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)