Changes: Stefan Ring
Christian Thalinger
- Christian Ullrich
+ Christian Ullrich
Michael Starzinger
- Edwin Steiner
+ Edwin Steiner
- $Id: reg.c 4452 2006-02-05 23:24:34Z edwin $
+ $Id: reg.c 5435 2006-09-08 18:14:50Z edwin $
*/
#include "md-abi.h"
#include "mm/memory.h"
+#include "vm/jit/abi.h"
#include "vm/jit/reg.h"
*******************************************************************************/
-void reg_setup(methodinfo *m, registerdata *rd)
+void reg_setup(jitdata *jd)
{
- s4 i;
- varinfo5 *v;
-
+ methodinfo *m;
+ registerdata *rd;
+ s4 i;
+
+ /* get required compiler data */
+
+ m = jd->m;
+ rd = jd->rd;
+
/* setup the integer register table */
#if defined(__ARM__)
#if defined(HAS_4BYTE_STACKSLOT)
rd->freemem_2 = DMNEW(s4, m->maxstack);
#endif
- rd->locals = DMNEW(varinfo5, m->maxlocals);
- rd->interfaces = DMNEW(varinfo5, m->maxstack);
- for (v = rd->locals, i = m->maxlocals; i > 0; v++, i--) {
- v[0][TYPE_INT].type = -1;
- v[0][TYPE_LNG].type = -1;
- v[0][TYPE_FLT].type = -1;
- v[0][TYPE_DBL].type = -1;
- v[0][TYPE_ADR].type = -1;
-
- v[0][TYPE_INT].regoff = 0;
- v[0][TYPE_LNG].regoff = 0;
- v[0][TYPE_FLT].regoff = 0;
- v[0][TYPE_DBL].regoff = 0;
- v[0][TYPE_ADR].regoff = 0;
- }
-
- for (v = rd->interfaces, i = m->maxstack; i > 0; v++, i--) {
- v[0][TYPE_INT].type = -1;
- v[0][TYPE_INT].flags = 0;
- v[0][TYPE_LNG].type = -1;
- v[0][TYPE_LNG].flags = 0;
- v[0][TYPE_FLT].type = -1;
- v[0][TYPE_FLT].flags = 0;
- v[0][TYPE_DBL].type = -1;
- v[0][TYPE_DBL].flags = 0;
- v[0][TYPE_ADR].type = -1;
- v[0][TYPE_ADR].flags = 0;
-
- v[0][TYPE_INT].regoff = 0;
- v[0][TYPE_LNG].regoff = 0;
- v[0][TYPE_FLT].regoff = 0;
- v[0][TYPE_DBL].regoff = 0;
- v[0][TYPE_ADR].regoff = 0;
- }
#if defined(SPECIALMEMUSE)
# if defined(__DARWIN__)
/* 6*4=24 byte linkage area + 8*4=32 byte minimum parameter Area */
- rd->memuse = LA_WORD_SIZE + INT_ARG_CNT;
+ rd->memuse = LA_SIZE_IN_POINTERS + INT_ARG_CNT;
# else
- rd->memuse = LA_WORD_SIZE;
+ rd->memuse = LA_SIZE_IN_POINTERS;
# endif
#else
rd->memuse = 0; /* init to zero -> analyse_stack will set it to a higher */
/* value, if appropriate */
#endif
- /* Set rd->argxxxreguse to XXX_ARG_CNBT to not use unused argument */
+ /* Set rd->arg*reguse to *_ARG_CNBT to not use unused argument */
/* registers as temp registers */
#if defined(HAS_ADDRESS_REGISTER_FILE)
rd->argadrreguse = 0;