[jit] Add a mini_exception_id_by_name () helper function.
authorZoltan Varga <vargaz@gmail.com>
Tue, 22 Oct 2013 11:26:01 +0000 (07:26 -0400)
committerZoltan Varga <vargaz@gmail.com>
Tue, 22 Oct 2013 11:26:01 +0000 (07:26 -0400)
mono/mini/mini-codegen.c
mono/mini/mini.h

index f5f4649996aba8ebc61d5fad2423f6e94edce669..e82c07974ef469948bd4ee8cf9df501da79a5db1 100644 (file)
@@ -2697,4 +2697,27 @@ mono_peephole_ins (MonoBasicBlock *bb, MonoInst *ins)
        }
 }
 
+int
+mini_exception_id_by_name (const char *name)
+{
+       if (strcmp (name, "IndexOutOfRangeException") == 0)
+               return MONO_EXC_INDEX_OUT_OF_RANGE;
+       if (strcmp (name, "OverflowException") == 0)
+               return MONO_EXC_OVERFLOW;
+       if (strcmp (name, "ArithmeticException") == 0)
+               return MONO_EXC_ARITHMETIC;
+       if (strcmp (name, "DivideByZeroException") == 0)
+               return MONO_EXC_DIVIDE_BY_ZERO;
+       if (strcmp (name, "InvalidCastException") == 0)
+               return MONO_EXC_INVALID_CAST;
+       if (strcmp (name, "NullReferenceException") == 0)
+               return MONO_EXC_NULL_REF;
+       if (strcmp (name, "ArrayTypeMismatchException") == 0)
+               return MONO_EXC_ARRAY_TYPE_MISMATCH;
+       if (strcmp (name, "ArgumentException") == 0)
+               return MONO_EXC_ARGUMENT;
+       g_error ("Unknown intrinsic exception %s\n", name);
+       return -1;
+}
+
 #endif /* DISABLE_JIT */
index c89d94c9d5145908c5df5e6b7fcfe3658999d9e2..b6be328829176313ab284cc0a67aa5e17fd79a0e 100644 (file)
@@ -2193,6 +2193,7 @@ void              mono_emit_unwind_op (MonoCompile *cfg, int when,
 MonoTrampInfo*    mono_tramp_info_create (const char *name, guint8 *code, guint32 code_size, MonoJumpInfo *ji, GSList *unwind_ops) MONO_INTERNAL;
 void              mono_tramp_info_free (MonoTrampInfo *info) MONO_INTERNAL;
 void              mono_tramp_info_register (MonoTrampInfo *info) MONO_INTERNAL;
+int               mini_exception_id_by_name (const char *name) MONO_INTERNAL;
 
 int               mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_bblock, MonoBasicBlock *end_bblock, 
                                                                         MonoInst *return_var, GList *dont_inline, MonoInst **inline_args,