X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fmini-sparc.c;h=75868b976111366640a3974af502671fac0d6b91;hb=fc6f7e7921bc0367ad3d042ce5b8fe2d6dfe54e4;hp=b29563dcb0ac480f6e6f93651ebd654b5e3c3466;hpb=1639e26a6b22a59d0bfb8ad564530eeff593e4a3;p=mono.git diff --git a/mono/mini/mini-sparc.c b/mono/mini/mini-sparc.c index b29563dcb0a..75868b97611 100644 --- a/mono/mini/mini-sparc.c +++ b/mono/mini/mini-sparc.c @@ -1,5 +1,6 @@ -/* - * mini-sparc.c: Sparc backend for the Mono code generator +/** + * \file + * Sparc backend for the Mono code generator * * Authors: * Paolo Molaro (lupus@ximian.com) @@ -28,7 +29,8 @@ #include #include #include -#include +#include +#include #include "mini-sparc.h" #include "trace.h" @@ -217,6 +219,12 @@ mono_arch_cleanup (void) { } +gboolean +mono_arch_have_fast_tls (void) +{ + return FALSE; +} + /* * This function returns the optimizations supported on this cpu. */ @@ -1330,7 +1338,7 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src) ArgInfo *ainfo = (ArgInfo*)ins->inst_p1; int size = ins->backend.size; - mini_emit_memcpy (cfg, sparc_sp, ainfo->offset, src->dreg, 0, size, 0); + mini_emit_memcpy (cfg, sparc_sp, ainfo->offset, src->dreg, 0, size, SIZEOF_VOID_P); } void @@ -2256,8 +2264,8 @@ mono_sparc_is_virtual_call (guint32 *code) * 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; @@ -2285,7 +2293,7 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI size += item->chunk_size; } if (fail_tramp) - code = mono_method_alloc_generic_virtual_thunk (domain, size * 4); + code = mono_method_alloc_generic_virtual_trampoline (domain, size * 4); else code = mono_domain_code_reserve (domain, size * 4); start = code; @@ -2352,7 +2360,7 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI mono_arch_flush_icache ((guint8*)start, (code - start) * 4); - mono_stats.imt_thunks_size += (code - start) * 4; + UnlockedAdd (&mono_stats.imt_trampolines_size, (code - start) * 4); g_assert (code - start <= size); mono_tramp_info_register (mono_tramp_info_create (NULL, start, code - start, NULL, NULL), domain); @@ -2400,10 +2408,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) cpos = bb->max_offset; - if (cfg->prof_options & MONO_PROFILE_COVERAGE) { - NOT_IMPLEMENTED; - } - MONO_BB_FOR_EACH_INS (bb, ins) { guint8* code_start; @@ -3672,18 +3676,19 @@ mono_arch_register_lowlevel_calls (void) } 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) { - MonoError error; MonoJumpInfo *patch_info; + error_init (error); + /* FIXME: Move part of this to arch independent code */ for (patch_info = ji; patch_info; patch_info = patch_info->next) { unsigned char *ip = patch_info->ip.i + code; gpointer target; - 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); switch (patch_info->type) { case MONO_PATCH_INFO_NONE: @@ -4097,9 +4102,6 @@ mono_arch_emit_epilog (MonoCompile *cfg) if (mono_jit_trace_calls != NULL) max_epilog_size += 50; - if (cfg->prof_options & MONO_PROFILE_ENTER_LEAVE) - max_epilog_size += 50; - while (cfg->code_len + max_epilog_size > (cfg->code_size - 16)) { cfg->code_size *= 2; cfg->native_code = g_realloc (cfg->native_code, cfg->code_size); @@ -4412,12 +4414,6 @@ mono_arch_get_argument_info (MonoMethodSignature *csig, int param_count, MonoJit return 0; } -gboolean -mono_arch_print_tree (MonoInst *tree, int arity) -{ - return 0; -} - mgreg_t mono_arch_context_get_int_reg (MonoContext *ctx, int reg) {