X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fvm%2Fjit%2Freg.c;h=4673c5ab373958692f1ee22f22f2bdb8e211bd5b;hb=936c0bb3feac878cc7ad724baf348a8eb48bb1f9;hp=b0dc29a5ff2cc1555bde3c1091606d47e4277abc;hpb=3cacadc8843d8449607e6e30b72c0a2c5a6bb4bf;p=cacao.git diff --git a/src/vm/jit/reg.c b/src/vm/jit/reg.c index b0dc29a5f..4673c5ab3 100644 --- a/src/vm/jit/reg.c +++ b/src/vm/jit/reg.c @@ -28,11 +28,11 @@ 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 $ */ @@ -47,6 +47,7 @@ #include "md-abi.h" #include "mm/memory.h" +#include "vm/jit/abi.h" #include "vm/jit/reg.h" @@ -56,11 +57,17 @@ *******************************************************************************/ -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__) @@ -190,54 +197,20 @@ void reg_setup(methodinfo *m, registerdata *rd) #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;