mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 23:24:09 +00:00
MIPS: Fix BC_ISNEXT fallback path.
Thanks to RT-RK.com.
This commit is contained in:
parent
1c6fd13dbd
commit
e5b5e079c3
@ -3619,24 +3619,24 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
||||
case BC_ISNEXT:
|
||||
| // RA = base*8, RD = target (points to ITERN)
|
||||
| addu RA, BASE, RA
|
||||
| lw TMP0, -24+HI(RA)
|
||||
| lw CFUNC:TMP1, -24+LO(RA)
|
||||
| lw TMP2, -16+HI(RA)
|
||||
| lw TMP3, -8+HI(RA)
|
||||
| srl TMP0, RD, 1
|
||||
| lw CARG1, -24+HI(RA)
|
||||
| lw CFUNC:CARG2, -24+LO(RA)
|
||||
| addu TMP0, PC, TMP0
|
||||
| lw CARG3, -16+HI(RA)
|
||||
| lw CARG4, -8+HI(RA)
|
||||
| li AT, LJ_TFUNC
|
||||
| bne TMP0, AT, >5
|
||||
|. addiu TMP2, TMP2, -LJ_TTAB
|
||||
| lbu TMP1, CFUNC:TMP1->ffid
|
||||
| addiu TMP3, TMP3, -LJ_TNIL
|
||||
| srl TMP0, RD, 1
|
||||
| or TMP2, TMP2, TMP3
|
||||
| addiu TMP1, TMP1, -FF_next_N
|
||||
| addu TMP0, PC, TMP0
|
||||
| or TMP1, TMP1, TMP2
|
||||
| bnez TMP1, >5
|
||||
|. lui TMP2, (-(BCBIAS_J*4 >> 16) & 65535)
|
||||
| bne CARG1, AT, >5
|
||||
|. lui TMP2, (-(BCBIAS_J*4 >> 16) & 65535)
|
||||
| lbu CARG2, CFUNC:CARG2->ffid
|
||||
| addiu CARG3, CARG3, -LJ_TTAB
|
||||
| addiu CARG4, CARG4, -LJ_TNIL
|
||||
| or CARG3, CARG3, CARG4
|
||||
| addiu CARG2, CARG2, -FF_next_N
|
||||
| or CARG2, CARG2, CARG3
|
||||
| bnez CARG2, >5
|
||||
|. lui TMP1, 0xfffe
|
||||
| addu PC, TMP0, TMP2
|
||||
| lui TMP1, 0xfffe
|
||||
| ori TMP1, TMP1, 0x7fff
|
||||
| sw r0, -8+LO(RA) // Initialize control var.
|
||||
| sw TMP1, -8+HI(RA)
|
||||
@ -3646,7 +3646,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
||||
| li TMP3, BC_JMP
|
||||
| li TMP1, BC_ITERC
|
||||
| sb TMP3, -4+OFS_OP(PC)
|
||||
| addu PC, TMP0, TMP2
|
||||
| addu PC, TMP0, TMP2
|
||||
| b <1
|
||||
|. sb TMP1, OFS_OP(PC)
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user