X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fmini-amd64.h;h=ba8466dfebeaa1d47b59d994c7b2995cb48e3929;hb=919a03d17d36604f05e1d99c3f9f26a1509e9655;hp=d13bca95ee1aa08a09ac3cde6c6ec05c3bbc4f13;hpb=45d90b20b7fb92adbeaf9a711cade5489ebeee42;p=mono.git diff --git a/mono/mini/mini-amd64.h b/mono/mini/mini-amd64.h index d13bca95ee1..ba8466dfebe 100644 --- a/mono/mini/mini-amd64.h +++ b/mono/mini/mini-amd64.h @@ -175,9 +175,6 @@ struct sigcontext { * reproduceable results for benchmarks */ #define MONO_ARCH_CODE_ALIGNMENT 32 -/*This is the max size of the locals area of a given frame. I think 1MB is a safe default for now*/ -#define MONO_ARCH_MAX_FRAME_SIZE 0x100000 - struct MonoLMF { /* * If the lowest bit is set, then this LMF has the rip field set. Otherwise, @@ -240,9 +237,10 @@ static AMD64_XMM_Reg_No float_return_regs [] = { AMD64_XMM0 }; #define PARAM_REGS 6 #define FLOAT_PARAM_REGS 8 -static AMD64_Reg_No param_regs [] = { AMD64_RDI, AMD64_RSI, AMD64_RDX, AMD64_RCX, AMD64_R8, AMD64_R9 }; +static const AMD64_Reg_No param_regs [] = {AMD64_RDI, AMD64_RSI, AMD64_RDX, + AMD64_RCX, AMD64_R8, AMD64_R9}; -static AMD64_Reg_No return_regs [] = { AMD64_RAX, AMD64_RDX }; +static const AMD64_Reg_No return_regs [] = {AMD64_RAX, AMD64_RDX}; #endif typedef struct { @@ -272,15 +270,15 @@ typedef struct { gpointer bp_addrs [MONO_ZERO_LEN_ARRAY]; } SeqPointInfo; -#define DYN_CALL_STACK_ARGS 6 - typedef struct { - mgreg_t regs [PARAM_REGS + DYN_CALL_STACK_ARGS]; mgreg_t res; guint8 *ret; double fregs [8]; mgreg_t has_fp; + mgreg_t nstack_args; guint8 buffer [256]; + /* This should come last as the structure is dynamically extended */ + mgreg_t regs [PARAM_REGS]; } DynCallArgs; typedef enum { @@ -312,6 +310,8 @@ typedef struct { int nregs; /* Only if storage == ArgOnStack */ int arg_size; // Bytes, will always be rounded up/aligned to 8 byte boundary + // Size in bytes for small arguments + int byte_arg_size; guint8 pass_empty_struct : 1; // Set in scenarios when empty structs needs to be represented as argument. } ArgInfo; @@ -429,11 +429,9 @@ typedef struct { #define MONO_ARCH_GSHARED_SUPPORTED 1 #define MONO_ARCH_DYN_CALL_SUPPORTED 1 -#define MONO_ARCH_DYN_CALL_PARAM_AREA (DYN_CALL_STACK_ARGS * 8) +#define MONO_ARCH_DYN_CALL_PARAM_AREA 0 #define MONO_ARCH_LLVM_SUPPORTED 1 -#define MONO_ARCH_HAVE_HANDLER_BLOCK_GUARD 1 -#define MONO_ARCH_HAVE_HANDLER_BLOCK_GUARD_AOT 1 #define MONO_ARCH_HAVE_CARD_TABLE_WBARRIER 1 #define MONO_ARCH_HAVE_SETUP_RESUME_FROM_SIGNAL_HANDLER_CTX 1 #define MONO_ARCH_GC_MAPS_SUPPORTED 1 @@ -447,6 +445,7 @@ typedef struct { #define MONO_ARCH_HAVE_PATCH_CODE_NEW 1 #define MONO_ARCH_HAVE_OP_GENERIC_CLASS_INIT 1 #define MONO_ARCH_HAVE_GENERAL_RGCTX_LAZY_FETCH_TRAMPOLINE 1 +#define MONO_ARCH_HAVE_INIT_LMF_EXT 1 #if defined(TARGET_OSX) || defined(__linux__) #define MONO_ARCH_HAVE_UNWIND_BACKTRACE 1 @@ -503,9 +502,6 @@ mono_amd64_get_exception_trampolines (gboolean aot); int mono_amd64_get_tls_gs_offset (void) MONO_LLVM_INTERNAL; -gpointer -mono_amd64_handler_block_trampoline_helper (void); - #if defined(TARGET_WIN32) && !defined(DISABLE_JIT) #if G_HAVE_API_SUPPORT(HAVE_CLASSIC_WINAPI_SUPPORT) @@ -555,7 +551,7 @@ typedef struct _UNWIND_INFO { * OPTIONAL ULONG ExceptionData[]; */ } UNWIND_INFO, *PUNWIND_INFO; -inline guint +static inline guint mono_arch_unwindinfo_get_size (guchar code_count) { // Returned size will be used as the allocated size for unwind data trailing the memory used by compiled method.