MIPS: Fix BC_ISNEXT fallback path.

Thanks to RT-RK.com.
This commit is contained in:
Mike Pall 2016-04-14 00:14:42 +02:00
parent 1c6fd13dbd
commit e5b5e079c3

View File

@ -3619,24 +3619,24 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
case BC_ISNEXT: case BC_ISNEXT:
| // RA = base*8, RD = target (points to ITERN) | // RA = base*8, RD = target (points to ITERN)
| addu RA, BASE, RA | 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)
| 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 | srl TMP0, RD, 1
| or TMP2, TMP2, TMP3 | lw CARG1, -24+HI(RA)
| addiu TMP1, TMP1, -FF_next_N | lw CFUNC:CARG2, -24+LO(RA)
| addu TMP0, PC, TMP0 | addu TMP0, PC, TMP0
| or TMP1, TMP1, TMP2 | lw CARG3, -16+HI(RA)
| bnez TMP1, >5 | lw CARG4, -8+HI(RA)
| li AT, LJ_TFUNC
| bne CARG1, AT, >5
|. lui TMP2, (-(BCBIAS_J*4 >> 16) & 65535) |. 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 | addu PC, TMP0, TMP2
| lui TMP1, 0xfffe
| ori TMP1, TMP1, 0x7fff | ori TMP1, TMP1, 0x7fff
| sw r0, -8+LO(RA) // Initialize control var. | sw r0, -8+LO(RA) // Initialize control var.
| sw TMP1, -8+HI(RA) | sw TMP1, -8+HI(RA)