X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fmini-amd64.c;h=18e48283d95cf103e25714f8d4478a8276a654f8;hb=56ad8f4e5dfb8198e4671f631a3103b1e8b83dd3;hp=56ca3d7aaebb01544516a507fbd924b81e5444d6;hpb=0c3c632c32e5079998fd3aff3395cb0ccd256d74;p=mono.git diff --git a/mono/mini/mini-amd64.c b/mono/mini/mini-amd64.c index 56ca3d7aaeb..18e48283d95 100644 --- a/mono/mini/mini-amd64.c +++ b/mono/mini/mini-amd64.c @@ -12,6 +12,7 @@ * (C) 2003 Ximian, Inc. * Copyright 2003-2011 Novell, Inc (http://www.novell.com) * Copyright 2011 Xamarin, Inc (http://www.xamarin.com) + * Licensed under the MIT license. See LICENSE file in the project root for full license information. */ #include "mini.h" #include @@ -479,48 +480,6 @@ mono_amd64_patch (unsigned char* code, gpointer target) amd64_patch (code, target); } -typedef enum { - ArgInIReg, - ArgInFloatSSEReg, - ArgInDoubleSSEReg, - ArgOnStack, - ArgValuetypeInReg, - ArgValuetypeAddrInIReg, - /* gsharedvt argument passed by addr */ - ArgGSharedVtInReg, - ArgGSharedVtOnStack, - ArgNone /* only in pair_storage */ -} ArgStorage; - -typedef struct { - gint16 offset; - gint8 reg; - ArgStorage storage : 8; - gboolean is_gsharedvt_return_value : 1; - - /* Only if storage == ArgValuetypeInReg */ - ArgStorage pair_storage [2]; - gint8 pair_regs [2]; - /* The size of each pair (bytes) */ - int pair_size [2]; - int nregs; - /* Only if storage == ArgOnStack */ - int arg_size; // Bytes, will always be rounded up/aligned to 8 byte boundary -} ArgInfo; - -typedef struct { - int nargs; - guint32 stack_usage; - guint32 reg_usage; - guint32 freg_usage; - gboolean need_stack_align; - /* The index of the vret arg in the argument list */ - int vret_arg_index; - ArgInfo ret; - ArgInfo sig_cookie; - ArgInfo args [1]; -} CallInfo; - #define DEBUG(a) if (cfg->verbose_level > 1) a static void inline @@ -1465,7 +1424,7 @@ mono_arch_init (void) mono_aot_register_jit_icall ("mono_amd64_throw_corlib_exception", mono_amd64_throw_corlib_exception); mono_aot_register_jit_icall ("mono_amd64_resume_unwind", mono_amd64_resume_unwind); mono_aot_register_jit_icall ("mono_amd64_get_original_ip", mono_amd64_get_original_ip); -#if defined(ENABLE_GSHAREDVT) +#if defined(MONO_ARCH_GSHAREDVT_SUPPORTED) mono_aot_register_jit_icall ("mono_amd64_start_gsharedvt_call", mono_amd64_start_gsharedvt_call); #endif @@ -3926,21 +3885,6 @@ emit_setup_lmf (MonoCompile *cfg, guint8 *code, gint32 lmf_offset, int cfa_offse return code; } -#define REAL_PRINT_REG(text,reg) \ -mono_assert (reg >= 0); \ -amd64_push_reg (code, AMD64_RAX); \ -amd64_push_reg (code, AMD64_RDX); \ -amd64_push_reg (code, AMD64_RCX); \ -amd64_push_reg (code, reg); \ -amd64_push_imm (code, reg); \ -amd64_push_imm (code, text " %d %p\n"); \ -amd64_mov_reg_imm (code, AMD64_RAX, printf); \ -amd64_call_reg (code, AMD64_RAX); \ -amd64_alu_reg_imm (code, X86_ADD, AMD64_RSP, 3*4); \ -amd64_pop_reg (code, AMD64_RCX); \ -amd64_pop_reg (code, AMD64_RDX); \ -amd64_pop_reg (code, AMD64_RAX); - /* benchmark and set based on cpu */ #define LOOP_ALIGNMENT 8 #define bb_is_loop_start(bb) ((bb)->loop_body_start && (bb)->nesting) @@ -5912,7 +5856,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) amd64_alu_reg_imm (code, X86_CMP, AMD64_RAX, X86_FP_C0); amd64_pop_reg (code, AMD64_RAX); amd64_fstp (code, 0); - EMIT_COND_SYSTEM_EXCEPTION (X86_CC_EQ, FALSE, "ArithmeticException"); + EMIT_COND_SYSTEM_EXCEPTION (X86_CC_EQ, FALSE, "OverflowException"); amd64_alu_reg_imm (code, X86_ADD, AMD64_RSP, 16); break; case OP_TLS_GET: { @@ -8860,8 +8804,8 @@ mono_arch_opcode_supported (int opcode) } } -#if defined(ENABLE_GSHAREDVT) && defined(MONO_ARCH_GSHAREDVT_SUPPORTED) - -#include "../../../mono-extensions/mono/mini/mini-amd64-gsharedvt.c" - -#endif /* !ENABLE_GSHAREDVT */ +CallInfo* +mono_arch_get_call_info (MonoMemPool *mp, MonoMethodSignature *sig) +{ + return get_call_info (mp, sig); +}