From 1f87a040073b3d8289334816bcfe879ae6368e6f Mon Sep 17 00:00:00 2001 From: twisti Date: Mon, 2 Jan 2006 14:24:50 +0000 Subject: [PATCH] * nregdescint, nregdescfloat: Added. --- src/vm/jit/i386/md-abi.c | 54 +++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 15 deletions(-) diff --git a/src/vm/jit/i386/md-abi.c b/src/vm/jit/i386/md-abi.c index 17747b9da..295b7416c 100644 --- a/src/vm/jit/i386/md-abi.c +++ b/src/vm/jit/i386/md-abi.c @@ -28,11 +28,12 @@ Changes: Christian Thalinger - $Id: md-abi.c 3227 2005-09-19 14:03:36Z twisti $ + $Id: md-abi.c 4064 2006-01-02 14:24:50Z twisti $ */ +#include "config.h" #include "vm/types.h" #include "vm/jit/i386/md-abi.h" @@ -41,20 +42,37 @@ #include "vm/global.h" -/* md_param_alloc ************************************************************** +/* register descripton - array ************************************************/ + +s4 nregdescint[] = { + REG_RET, REG_RES, REG_RES, REG_TMP, REG_RES, REG_SAV, REG_SAV, REG_SAV, + REG_END +}; + + +s4 nregdescfloat[] = { + /* rounding problems with callee saved registers */ + /* REG_SAV, REG_SAV, REG_SAV, REG_SAV, REG_TMP, REG_TMP, REG_RES, REG_RES, */ + /* REG_TMP, REG_TMP, REG_TMP, REG_TMP, REG_TMP, REG_TMP, REG_RES, REG_RES, */ + REG_RES, REG_RES, REG_RES, REG_RES, REG_RES, REG_RES, REG_RES, REG_RES, + REG_END +}; + -Allocate Arguments to Stackslots according the Calling Conventions +/* md_param_alloc ************************************************************** ---- in -md->paramcount: Number of arguments for this method -md->paramtypes[].type: Argument types + Allocate Arguments to Stackslots according the Calling Conventions ---- out -md->params[].inmemory: Argument spilled on stack -md->params[].regoff: Stack offset or rd->arg[int|flt]regs index -md->memuse: Stackslots needed for argument spilling -md->argintreguse: max number of integer arguments used -md->argfltreguse: max number of float arguments used + --- in + md->paramcount: Number of arguments for this method + md->paramtypes[].type: Argument types + + --- out + md->params[].inmemory: Argument spilled on stack + md->params[].regoff: Stack offset or rd->arg[int|flt]regs index + md->memuse: Stackslots needed for argument spilling + md->argintreguse: max number of integer arguments used + md->argfltreguse: max number of float arguments used *******************************************************************************/ @@ -78,16 +96,22 @@ void md_param_alloc(methoddesc *md) md->argfltreguse = 0; } + /* md_return_alloc ************************************************************* - No straight forward precoloring of the Java Stackelement containing the return - value possible for i386, since it uses "reserved" registers for return values + No straight forward precoloring of the Java Stackelement containing + the return value possible for i386, since it uses "reserved" + registers for return values *******************************************************************************/ + void md_return_alloc(methodinfo *m, registerdata *rd, s4 return_type, - stackptr stackslot) { + stackptr stackslot) +{ + /* nothing */ } + /* * These are local overrides for various environment variables in Emacs. * Please do not remove this and leave it at the end of the file, where -- 2.25.1