summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2016-04-03 19:12:28 +0200
committerMike Pall <mike>2016-04-03 19:12:28 +0200
commit1c6fd13dbd2af1034db935805fd93fbdcdf4f417 (patch)
tree08edeb6de2d22cf7d72d9518b3d31bc135653b31
parent4ab6367b21527a20b76ce356153bc454e082b7d2 (diff)
downloadluajit-1c6fd13dbd2af1034db935805fd93fbdcdf4f417.tar.gz
luajit-1c6fd13dbd2af1034db935805fd93fbdcdf4f417.tar.bz2
luajit-1c6fd13dbd2af1034db935805fd93fbdcdf4f417.zip
Fix recording of select(n, ...) with off-trace varargs
Thanks to Peter Cawley.
-rw-r--r--src/lj_record.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lj_record.c b/src/lj_record.c
index 1bb9461e..9b51c51f 100644
--- a/src/lj_record.c
+++ b/src/lj_record.c
@@ -1490,8 +1490,11 @@ static int select_detect(jit_State *J)
1490 BCIns ins = J->pc[1]; 1490 BCIns ins = J->pc[1];
1491 if (bc_op(ins) == BC_CALLM && bc_b(ins) == 2 && bc_c(ins) == 1) { 1491 if (bc_op(ins) == BC_CALLM && bc_b(ins) == 2 && bc_c(ins) == 1) {
1492 cTValue *func = &J->L->base[bc_a(ins)]; 1492 cTValue *func = &J->L->base[bc_a(ins)];
1493 if (tvisfunc(func) && funcV(func)->c.ffid == FF_select) 1493 if (tvisfunc(func) && funcV(func)->c.ffid == FF_select) {
1494 TRef kfunc = lj_ir_kfunc(J, funcV(func));
1495 emitir(IRTG(IR_EQ, IRT_FUNC), getslot(J, bc_a(ins)), kfunc);
1494 return 1; 1496 return 1;
1497 }
1495 } 1498 }
1496 return 0; 1499 return 0;
1497} 1500}