Static class references are now explicitly added to the rootset.
[cacao.git] / src / vm / jit / reg.c
index b0dc29a5ff2cc1555bde3c1091606d47e4277abc..4673c5ab373958692f1ee22f22f2bdb8e211bd5b 100644 (file)
 
    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"
 
 
 
 *******************************************************************************/
 
-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;