MIPS64: Fix write barrier in BC_USETV.

Contributed by Stefan Pejic.
This commit is contained in:
Mike Pall 2017-04-17 12:02:33 +02:00
parent 18efb331a4
commit 58aaac3c64

View File

@ -3660,7 +3660,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
| ld CARG2, UPVAL:RB->v
| andi TMP3, TMP3, LJ_GC_BLACK // isblack(uv)
| lbu TMP0, UPVAL:RB->closed
| gettp TMP2, RD
| gettp TMP2, CRET1
| sd CRET1, 0(CARG2)
| li AT, LJ_GC_BLACK|1
| or TMP3, TMP3, TMP0
@ -3672,8 +3672,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|2: // Check if new value is collectable.
| sltiu AT, TMP2, LJ_TISGCV - (LJ_TNUMX+1)
| beqz AT, <1 // tvisgcv(v)
|. cleartp GCOBJ:TMP1, RB
| lbu TMP3, GCOBJ:TMP1->gch.marked
|. cleartp GCOBJ:CRET1, CRET1
| lbu TMP3, GCOBJ:CRET1->gch.marked
| andi TMP3, TMP3, LJ_GC_WHITES // iswhite(v)
| beqz TMP3, <1
|. load_got lj_gc_barrieruv