X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fmini-ia64.c;h=4cd9b377e3e2c933f1a7354396eef49194c34f3e;hb=0bcbe39b148bb498742fc68416f8293ccd350fb6;hp=54222c26698975ce20e00aed2ec952697d36454a;hpb=e4559812129b62624444ab4ce96ddf2ca7de5e3d;p=mono.git diff --git a/mono/mini/mini-ia64.c b/mono/mini/mini-ia64.c index 54222c26698..4cd9b377e3e 100644 --- a/mono/mini/mini-ia64.c +++ b/mono/mini/mini-ia64.c @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include "trace.h" #include "mini-ia64.h" @@ -2690,16 +2690,16 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) case OP_CKFINITE: /* Quiet NaN */ ia64_fclass_m (code, 6, 7, ins->sreg1, 0x080); - emit_cond_system_exception (cfg, code, "ArithmeticException", 6); + emit_cond_system_exception (cfg, code, "OverflowException", 6); /* Signaling NaN */ ia64_fclass_m (code, 6, 7, ins->sreg1, 0x040); - emit_cond_system_exception (cfg, code, "ArithmeticException", 6); + emit_cond_system_exception (cfg, code, "OverflowException", 6); /* Positive infinity */ ia64_fclass_m (code, 6, 7, ins->sreg1, 0x021); - emit_cond_system_exception (cfg, code, "ArithmeticException", 6); + emit_cond_system_exception (cfg, code, "OverflowException", 6); /* Negative infinity */ ia64_fclass_m (code, 6, 7, ins->sreg1, 0x022); - emit_cond_system_exception (cfg, code, "ArithmeticException", 6); + emit_cond_system_exception (cfg, code, "OverflowException", 6); break; /* Calls */ @@ -3777,17 +3777,18 @@ ia64_patch (unsigned char* code, gpointer target) } void -mono_arch_patch_code (MonoCompile *cfg, MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, gboolean run_cctors) +mono_arch_patch_code (MonoCompile *cfg, MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, gboolean run_cctors, MonoError *error) { MonoJumpInfo *patch_info; + mono_error_init (error); + for (patch_info = ji; patch_info; patch_info = patch_info->next) { unsigned char *ip = patch_info->ip.i + code; const unsigned char *target; - MonoError error; - target = mono_resolve_patch_target (method, domain, code, patch_info, run_cctors, &error); - mono_error_raise_exception (&error); /* FIXME: don't raise here */ + target = mono_resolve_patch_target (method, domain, code, patch_info, run_cctors, error); + return_if_nok (error); if (patch_info->type == MONO_PATCH_INFO_NONE) continue; @@ -4188,8 +4189,7 @@ mono_arch_emit_exceptions (MonoCompile *cfg) guint8* buf; guint64 exc_token_index; - exc_class = mono_class_from_name (mono_defaults.corlib, "System", patch_info->data.name); - g_assert (exc_class); + exc_class = mono_class_load_from_name (mono_defaults.corlib, "System", patch_info->data.name); exc_token_index = mono_metadata_token_index (exc_class->type_token); throw_ip = cfg->native_code + patch_info->ip.i; @@ -4532,8 +4532,8 @@ mono_arch_free_jit_tls_data (MonoJitTlsData *tls) * LOCKING: called with the domain lock held */ gpointer -mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckItem **imt_entries, int count, - gpointer fail_tramp) +mono_arch_build_imt_trampoline (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckItem **imt_entries, int count, + gpointer fail_tramp) { int i; int size = 0; @@ -4613,7 +4613,7 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI size = code.buf - buf; if (fail_tramp) { - start = mono_method_alloc_generic_virtual_thunk (domain, size + 16); + start = mono_method_alloc_generic_virtual_trampoline (domain, size + 16); start = (gpointer)ALIGN_TO (start, 16); } else { start = mono_domain_code_reserve (domain, size);