X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Fjit%2Fi386%2Fmd-abi.c;h=53c3b3d35e8f99ac936dbdfa605087b58239fc29;hb=fa3fb41985bc911b5300f144b740159ac0c1eea0;hp=1978c8a282b11364c8d5a3184a3d535cc02d0ed7;hpb=5a320f78b1ccb1d20c79c760201574ce29b8e5f9;p=cacao.git diff --git a/src/vm/jit/i386/md-abi.c b/src/vm/jit/i386/md-abi.c index 1978c8a28..53c3b3d35 100644 --- a/src/vm/jit/i386/md-abi.c +++ b/src/vm/jit/i386/md-abi.c @@ -1,9 +1,7 @@ /* src/vm/jit/i386/md-abi.c - functions for i386 Linux ABI - Copyright (C) 1996-2005, 2006, 2007 R. Grafl, A. Krall, C. Kruegel, - C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring, - E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, - J. Wenninger, Institut f. Computersprachen - TU Wien + Copyright (C) 1996-2005, 2006, 2007, 2008 + CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO This file is part of CACAO. @@ -22,8 +20,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - $Id: md-abi.c 8123 2007-06-20 23:50:55Z michi $ - */ @@ -32,12 +28,11 @@ #include "vm/jit/i386/md-abi.h" +#include "vm/descriptor.hpp" #include "vm/global.h" #include "vm/jit/abi.h" -#include "vmcore/descriptor.h" - /* register descripton - array ************************************************/ @@ -106,19 +101,20 @@ const s4 abi_registers_float_temporary[] = { void md_param_alloc(methoddesc *md) { paramdesc *pd; - s4 stacksize; - s4 i; + int stacksize; + int i; pd = md->params; stacksize = 0; for (i = 0; i < md->paramcount; i++, pd++) { pd->inmemory = true; - pd->regoff = stacksize * 4; - stacksize += IS_2_WORD_TYPE(md->paramtypes[i].type) ? 2 : 1; + pd->index = stacksize; + pd->regoff = stacksize * 8; + stacksize++; } - md->memuse = stacksize; + md->memuse = stacksize; md->argintreguse = 0; md->argfltreguse = 0; } @@ -132,10 +128,23 @@ void md_param_alloc(methoddesc *md) void md_param_alloc_native(methoddesc *md) { - /* On i386 we use the same ABI for JIT method calls as for native - method calls. */ + paramdesc *pd; + int stacksize; + int i; + + pd = md->params; + stacksize = 0; - md_param_alloc(md); + for (i = 0; i < md->paramcount; i++, pd++) { + pd->inmemory = true; + pd->index = stacksize; + pd->regoff = stacksize * 4; + stacksize += IS_2_WORD_TYPE(md->paramtypes[i].type) ? 2 : 1; + } + + md->memuse = stacksize; + md->argintreguse = 0; + md->argfltreguse = 0; } @@ -147,7 +156,7 @@ void md_param_alloc_native(methoddesc *md) *******************************************************************************/ -void md_return_alloc(jitdata *jd, stackptr stackslot) +void md_return_alloc(jitdata *jd, stackelement_t *stackslot) { /* nothing */ } @@ -164,4 +173,5 @@ void md_return_alloc(jitdata *jd, stackptr stackslot) * c-basic-offset: 4 * tab-width: 4 * End: + * vim:noexpandtab:sw=4:ts=4: */