X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Fjit%2Freplace.h;h=b27ae9b4367d4701fe6f936e7e93ca274246d169;hb=d70e11353693c830f485424adde3ceff0ed30327;hp=a63d0fe7a8548c95ec8a98be10d5e0996cbe13c6;hpb=9b8ea2d1615e0bf9c01cb6dd5bcd0f30fc880a1f;p=cacao.git diff --git a/src/vm/jit/replace.h b/src/vm/jit/replace.h index a63d0fe7a..b27ae9b43 100644 --- a/src/vm/jit/replace.h +++ b/src/vm/jit/replace.h @@ -45,7 +45,6 @@ #define REPLACEMENT_POINT_RETURN(cd, iptr) #define REPLACEMENT_POINT_INVOKE(cd, iptr) #define REPLACEMENT_POINT_INVOKE_RETURN(cd, iptr) -#define REPLACEMENT_EMIT_STUBS(jd) #else /* defined(ENABLE_REPLACEMENT) */ @@ -140,16 +139,16 @@ struct rplpoint { union replace_val_t { - s4 i; - s8 l; - ptrint p; + s4 i; + s8 l; + ptrint p; struct { u4 lo; u4 hi; - } words; - float f; - double d; - java_objectheader *a; + } words; + float f; + double d; + java_object_t *a; }; @@ -164,6 +163,9 @@ struct executionstate_t { ptrint intregs[INT_REG_CNT]; /* register values */ double fltregs[FLT_REG_CNT]; /* register values */ +#if defined(HAS_ADDRESS_REGISTER_FILE) + ptrint adrregs[ADR_REG_CNT]; /* register values */ +#endif codeinfo *code; /* codeinfo corresponding to the pv */ }; @@ -202,6 +204,9 @@ struct sourceframe_t { u1 *nativepc; ptrint nativesavint[INT_SAV_CNT]; /* XXX temporary */ double nativesavflt[FLT_REG_CNT]; /* XXX temporary */ +#if defined(HAS_ADDRESS_REGISTER_FILE) + ptrint nativesavadr[ADR_SAV_CNT]; /* XXX temporary */ +#endif }; #define REPLACE_IS_NATIVE_FRAME(frame) ((frame)->sfi != NULL) @@ -266,9 +271,6 @@ struct replace_safestack_t { cd->replacementpoint[-1].callsize = (cd->mcodeptr - cd->mcodebase)\ - (ptrint) cd->replacementpoint[-1].pc; -#define REPLACEMENT_EMIT_STUBS(jd) \ - emit_replacement_stubs(jd); - /*** prototypes ********************************************************/ bool replace_create_replacement_points(jitdata *jd); @@ -277,6 +279,8 @@ void replace_free_replacement_points(codeinfo *code); void replace_activate_replacement_points(codeinfo *code, bool mappable); void replace_deactivate_replacement_points(codeinfo *code); +bool replace_me_wrapper(u1 *pc); + void replace_me(rplpoint *rp,executionstate_t *es); #if !defined(NDEBUG)