X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fmini-ia64.c;h=8a629bceb62f56a7ec937e3028c80e002a94df01;hb=580ccb1ffb8e5c2e3fa0555e342d916764f42930;hp=8a8a7e35d6308c4e2d014b5c715ea8d799eef6b7;hpb=ff49850dfc18f5991246a203184fa1e0b8a7c7ab;p=mono.git diff --git a/mono/mini/mini-ia64.c b/mono/mini/mini-ia64.c index 8a8a7e35d63..8a629bceb62 100644 --- a/mono/mini/mini-ia64.c +++ b/mono/mini/mini-ia64.c @@ -1,5 +1,6 @@ -/* - * mini-ia64.c: IA64 backend for the Mono code generator +/** + * \file + * IA64 backend for the Mono code generator * * Authors: * Zoltan Varga (vargaz@gmail.com) @@ -21,7 +22,7 @@ #include #include #include -#include +#include #include "trace.h" #include "mini-ia64.h" @@ -597,6 +598,12 @@ mono_arch_cleanup (void) { } +gboolean +mono_arch_have_fast_tls (void) +{ + return FALSE; +} + /* * This function returns the optimizations supported on this cpu. */ @@ -2923,11 +2930,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) break; } - case OP_TLS_GET: - ia64_adds_imm (code, ins->dreg, ins->inst_offset, IA64_TP); - ia64_ld8 (code, ins->dreg, ins->dreg); - break; - /* Synchronization */ case OP_MEMORY_BARRIER: ia64_mf (code); @@ -3777,17 +3779,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; + 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; @@ -4531,8 +4534,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; @@ -4612,7 +4615,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);