aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2013-12-02 09:18:01 +0100
committerMike Pall <mike>2013-12-02 09:18:01 +0100
commit916f09d0a91155ce5ce1a78fdcd40ba42f61e493 (patch)
treefb1d9052c585c148cddb78ecbb6297f3fd24db0c
parentf371ed6bd8741834b4b0278cf2c9e95e32f2cb26 (diff)
downloadluajit-916f09d0a91155ce5ce1a78fdcd40ba42f61e493.tar.gz
luajit-916f09d0a91155ce5ce1a78fdcd40ba42f61e493.tar.bz2
luajit-916f09d0a91155ce5ce1a78fdcd40ba42f61e493.zip
x64: Fix store to upvalue for lightuserdata values.
-rw-r--r--src/vm_arm.dasc2
-rw-r--r--src/vm_mips.dasc4
-rw-r--r--src/vm_ppc.dasc4
-rw-r--r--src/vm_x86.dasc2
4 files changed, 6 insertions, 6 deletions
diff --git a/src/vm_arm.dasc b/src/vm_arm.dasc
index 114416a4..a839fa7f 100644
--- a/src/vm_arm.dasc
+++ b/src/vm_arm.dasc
@@ -3217,7 +3217,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
3217 | ins_next 3217 | ins_next
3218 | 3218 |
3219 |2: // Check if new value is collectable. 3219 |2: // Check if new value is collectable.
3220 | cmn RB, #-(LJ_TISNUM - LJ_TISGCV) 3220 | cmn RB, #-(LJ_TNUMX - LJ_TISGCV)
3221 | ldrbhi RC, GCOBJ:CARG3->gch.marked 3221 | ldrbhi RC, GCOBJ:CARG3->gch.marked
3222 | bls <1 // tvisgcv(v) 3222 | bls <1 // tvisgcv(v)
3223 | sub CARG1, DISPATCH, #-GG_DISP2G 3223 | sub CARG1, DISPATCH, #-GG_DISP2G
diff --git a/src/vm_mips.dasc b/src/vm_mips.dasc
index a81dbeeb..9d578d05 100644
--- a/src/vm_mips.dasc
+++ b/src/vm_mips.dasc
@@ -2882,12 +2882,12 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2882 | li AT, LJ_GC_BLACK|1 2882 | li AT, LJ_GC_BLACK|1
2883 | or TMP3, TMP3, TMP0 2883 | or TMP3, TMP3, TMP0
2884 | beq TMP3, AT, >2 // Upvalue is closed and black? 2884 | beq TMP3, AT, >2 // Upvalue is closed and black?
2885 |. addiu TMP2, TMP2, -(LJ_TISNUM+1) 2885 |. addiu TMP2, TMP2, -(LJ_TNUMX+1)
2886 |1: 2886 |1:
2887 | ins_next 2887 | ins_next
2888 | 2888 |
2889 |2: // Check if new value is collectable. 2889 |2: // Check if new value is collectable.
2890 | sltiu AT, TMP2, LJ_TISGCV - (LJ_TISNUM+1) 2890 | sltiu AT, TMP2, LJ_TISGCV - (LJ_TNUMX+1)
2891 | beqz AT, <1 // tvisgcv(v) 2891 | beqz AT, <1 // tvisgcv(v)
2892 |. lw TMP1, LO(RD) 2892 |. lw TMP1, LO(RD)
2893 | lbu TMP3, GCOBJ:TMP1->gch.marked 2893 | lbu TMP3, GCOBJ:TMP1->gch.marked
diff --git a/src/vm_ppc.dasc b/src/vm_ppc.dasc
index f2530811..7f7e2291 100644
--- a/src/vm_ppc.dasc
+++ b/src/vm_ppc.dasc
@@ -3715,13 +3715,13 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
3715 | cmplwi cr1, TMP0, 0 3715 | cmplwi cr1, TMP0, 0
3716 | lwz TMP1, 4(RD) 3716 | lwz TMP1, 4(RD)
3717 | cror 4*cr0+eq, 4*cr0+eq, 4*cr1+eq 3717 | cror 4*cr0+eq, 4*cr0+eq, 4*cr1+eq
3718 | subi TMP2, TMP2, (LJ_TISNUM+1) 3718 | subi TMP2, TMP2, (LJ_TNUMX+1)
3719 | bne >2 // Upvalue is closed and black? 3719 | bne >2 // Upvalue is closed and black?
3720 |1: 3720 |1:
3721 | ins_next 3721 | ins_next
3722 | 3722 |
3723 |2: // Check if new value is collectable. 3723 |2: // Check if new value is collectable.
3724 | cmplwi TMP2, LJ_TISGCV - (LJ_TISNUM+1) 3724 | cmplwi TMP2, LJ_TISGCV - (LJ_TNUMX+1)
3725 | bge <1 // tvisgcv(v) 3725 | bge <1 // tvisgcv(v)
3726 | lbz TMP3, GCOBJ:TMP1->gch.marked 3726 | lbz TMP3, GCOBJ:TMP1->gch.marked
3727 | andix. TMP3, TMP3, LJ_GC_WHITES // iswhite(v) 3727 | andix. TMP3, TMP3, LJ_GC_WHITES // iswhite(v)
diff --git a/src/vm_x86.dasc b/src/vm_x86.dasc
index f25dfd30..13f4cdaa 100644
--- a/src/vm_x86.dasc
+++ b/src/vm_x86.dasc
@@ -4652,7 +4652,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
4652 | 4652 |
4653 |2: // Upvalue is black. Check if new value is collectable and white. 4653 |2: // Upvalue is black. Check if new value is collectable and white.
4654 | sub RD, LJ_TISGCV 4654 | sub RD, LJ_TISGCV
4655 | cmp RD, LJ_TISNUM - LJ_TISGCV // tvisgcv(v) 4655 | cmp RD, LJ_TNUMX - LJ_TISGCV // tvisgcv(v)
4656 | jbe <1 4656 | jbe <1
4657 | test byte GCOBJ:RA->gch.marked, LJ_GC_WHITES // iswhite(v) 4657 | test byte GCOBJ:RA->gch.marked, LJ_GC_WHITES // iswhite(v)
4658 | jz <1 4658 | jz <1