Unified variables changes for common/i386.
[cacao.git] / src / vm / jit / replace.c
index 447014312d3eca2b8358a42b5f9ae0d81833dbfb..060203db71d5ee67c3870b24cefaa52b7ab30105 100644 (file)
 #include <assert.h>
 #include <stdlib.h>
 
+#include "arch.h"
+
 #include "mm/memory.h"
 #include "toolbox/logging.h"
 #include "vm/options.h"
+#include "vm/jit/abi.h"
 #include "vm/jit/jit.h"
 #include "vm/jit/replace.h"
 #include "vm/jit/asmpart.h"
 #include "vm/jit/disass.h"
-#include "arch.h"
+
 
 /*** constants used internally ************************************************/
 
    
 *******************************************************************************/
 
-bool replace_create_replacement_points(codeinfo *code,registerdata *rd)
+bool replace_create_replacement_points(jitdata *jd)
 {
+#if 0
+       codeinfo     *code;
+       registerdata *rd;
        basicblock *bptr;
        int count;
        methodinfo *m;
@@ -93,6 +99,11 @@ bool replace_create_replacement_points(codeinfo *code,registerdata *rd)
        stackptr sp;
        bool indexused;
 
+       /* get required compiler data */
+
+       code = jd->code;
+       rd   = jd->rd;
+
        /* assert that we wont overwrite already allocated data */
        
        assert(code);
@@ -109,7 +120,8 @@ bool replace_create_replacement_points(codeinfo *code,registerdata *rd)
 
        count = 0;
        alloccount = 0;
-       for (bptr = m->basicblocks; bptr; bptr = bptr->next) {
+
+       for (bptr = jd->new_basicblocks; bptr; bptr = bptr->next) {
                if (!(bptr->bitflags & BBFLAG_REPLACEMENT))
                        continue;
 
@@ -187,7 +199,8 @@ bool replace_create_replacement_points(codeinfo *code,registerdata *rd)
        /* initialize replacement point structs */
 
        rp = rplpoints;
-       for (bptr = m->basicblocks; bptr; bptr = bptr->next) {
+
+       for (bptr = jd->new_basicblocks; bptr; bptr = bptr->next) {
                if (!(bptr->bitflags & BBFLAG_REPLACEMENT))
                        continue;
 
@@ -218,19 +231,19 @@ bool replace_create_replacement_points(codeinfo *code,registerdata *rd)
 
        /* store the data in the codeinfo */
 
-       code->rplpoints = rplpoints;
+       code->rplpoints     = rplpoints;
        code->rplpointcount = count;
-       code->regalloc = regalloc;
+       code->regalloc      = regalloc;
        code->regalloccount = alloccount;
-       code->globalcount = globalcount;
+       code->globalcount   = globalcount;
        code->savedintcount = INT_SAV_CNT - rd->savintreguse;
        code->savedfltcount = FLT_SAV_CNT - rd->savfltreguse;
-       code->memuse = rd->memuse;
-       code->isleafmethod = m->isleafmethod; /* XXX will be moved to codeinfo */
+       code->memuse        = rd->memuse;
 
        /* everything alright */
 
        return true;
+#endif
 }
 
 /* replace_free_replacement_points *********************************************
@@ -283,7 +296,7 @@ void replace_activate_replacement_point(rplpoint *rp,rplpoint *target)
        
        rp->target = target;
        
-#if (defined(__I386__) || defined(__X86_64__) || defined(__ALPHA__) || defined(__POWERPC__)) && defined(ENABLE_JIT)
+#if (defined(__I386__) || defined(__X86_64__) || defined(__ALPHA__) || defined(__POWERPC__) || defined(__MIPS__)) && defined(ENABLE_JIT)
        md_patch_replacement_point(rp);
 #endif
 }
@@ -311,7 +324,7 @@ void replace_deactivate_replacement_point(rplpoint *rp)
        
        rp->target = NULL;
        
-#if (defined(__I386__) || defined(__X86_64__) || defined(__ALPHA__) || defined(__POWERPC__)) && defined(ENABLE_JIT)
+#if (defined(__I386__) || defined(__X86_64__) || defined(__ALPHA__) || defined(__POWERPC__) || defined(__MIPS__)) && defined(ENABLE_JIT)
        md_patch_replacement_point(rp);
 #endif
 }
@@ -441,7 +454,7 @@ static void replace_read_executionstate(rplpoint *rp,executionstate *es,
        /* in some cases the top stack slot is passed in REG_ITMP1 */
 
        if (  (rp->type == BBTYPE_EXH)
-#if defined(__ALPHA__) || defined(__POWERPC__)
+#if defined(__ALPHA__) || defined(__POWERPC__) || defined(__MIPS__)
           || (rp->type == BBTYPE_SBR)
 #endif
           )
@@ -635,7 +648,7 @@ static void replace_write_executionstate(rplpoint *rp,executionstate *es,
        /* in some cases the top stack slot is passed in REG_ITMP1 */
 
        if (  (rp->type == BBTYPE_EXH)
-#if defined(__ALPHA__) || defined(__POWERPC__)
+#if defined(__ALPHA__) || defined(__POWERPC__) || defined(__MIPS__)
           || (rp->type == BBTYPE_SBR) 
 #endif
           )
@@ -781,7 +794,7 @@ void replace_me(rplpoint *rp,executionstate *es)
 
        target = rp->target;
 
-       /* XXX DEBUG turn of self-replacement */
+       /* XXX DEBUG turn off self-replacement */
        if (target == rp)
                replace_deactivate_replacement_point(rp);
        
@@ -814,7 +827,7 @@ void replace_me(rplpoint *rp,executionstate *es)
 
        /* enter new code */
 
-#if (defined(__I386__) || defined(__X86_64__) || defined(__ALPHA__) || defined(__POWERPC__)) && defined(ENABLE_JIT)
+#if (defined(__I386__) || defined(__X86_64__) || defined(__ALPHA__) || defined(__POWERPC__) || defined(__MIPS__)) && defined(ENABLE_JIT)
        asm_replacement_in(es);
 #endif
        abort();
@@ -941,12 +954,14 @@ void replace_executionstate_println(executionstate *es,codeinfo *code)
        printf("\tpc = %p\n",(void*)es->pc);
        printf("\tsp = %p\n",(void*)es->sp);
        printf("\tpv = %p\n",(void*)es->pv);
+#if defined(ENABLE_DISASSEMBLER)
        for (i=0; i<INT_REG_CNT; ++i) {
                printf("\t%-3s = %016llx\n",regs[i],(unsigned long long)es->intregs[i]);
        }
        for (i=0; i<FLT_REG_CNT; ++i) {
                printf("\tfltregs[%2d] = %016llx\n",i,(unsigned long long)es->fltregs[i]);
        }
+#endif
 
 #ifdef HAS_4BYTE_STACKSLOT
        sp = (u4*) es->sp;
@@ -1021,7 +1036,9 @@ void replace_sourcestate_println(sourcestate *ss)
                while (nregdescint[--reg] != REG_SAV)
                        ;
                if (ss->savedintregs[i] != 0x00dead0000dead00ULL) {
+#if defined(ENABLE_DISASSEMBLER)
                        printf("\t%-3s = ",regs[reg]);
+#endif
                        printf("%016llx\n",(unsigned long long) ss->savedintregs[i]);
                }
        }