Use g->jit_base for on/off-trace detection.
This commit is contained in:
@@ -2046,13 +2046,14 @@ static void build_subroutines(BuildCtx *ctx)
|
||||
| st_vmstate
|
||||
| sw TMP2, 16+32*8+29*4(sp) // Store sp in RID_SP.
|
||||
| lw L, DISPATCH_GL(jit_L)(DISPATCH)
|
||||
| lw BASE, DISPATCH_GL(jit_base)(DISPATCH)
|
||||
| lw BASE, DISPATCH_GL(jit_base)(DISPATCH)
|
||||
| load_got lj_trace_exit
|
||||
| sw L, DISPATCH_J(L)(DISPATCH)
|
||||
| sw ra, DISPATCH_J(parent)(DISPATCH) // Store trace number.
|
||||
| sw BASE, L->base
|
||||
| sw TMP1, DISPATCH_J(exitno)(DISPATCH) // Store exit number.
|
||||
| addiu CARG1, DISPATCH, GG_DISP2J
|
||||
| sw BASE, L->base
|
||||
| sw r0, DISPATCH_GL(jit_base)(DISPATCH)
|
||||
| call_intern lj_trace_exit // (jit_State *J, ExitState *ex)
|
||||
|. addiu CARG2, sp, 16
|
||||
| // Returns MULTRES (unscaled) or negated error code.
|
||||
@@ -2068,7 +2069,8 @@ static void build_subroutines(BuildCtx *ctx)
|
||||
|.if JIT
|
||||
| // CRET1 = MULTRES or negated error code, BASE, PC and JGL set.
|
||||
| lw L, SAVE_L
|
||||
| addiu DISPATCH, JGL, -GG_DISP2G-32768
|
||||
| addiu DISPATCH, JGL, -GG_DISP2G-32768
|
||||
| sw BASE, L->base
|
||||
|1:
|
||||
| bltz CRET1, >3 // Check for error from exit.
|
||||
|. lw LFUNC:TMP1, FRAME_FUNC(BASE)
|
||||
@@ -2078,7 +2080,7 @@ static void build_subroutines(BuildCtx *ctx)
|
||||
| sw MULTRES, SAVE_MULTRES
|
||||
| mtc1 TMP3, TOBIT
|
||||
| lw TMP1, LFUNC:TMP1->pc
|
||||
| sw r0, DISPATCH_GL(jit_L)(DISPATCH)
|
||||
| sw r0, DISPATCH_GL(jit_base)(DISPATCH)
|
||||
| lw KBASE, PC2PROTO(k)(TMP1)
|
||||
| cvt.d.s TOBIT, TOBIT
|
||||
| // Modified copy of ins_next which handles function header dispatch, too.
|
||||
|
||||
Reference in New Issue
Block a user