summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2015-10-24 18:03:55 +0200
committerMike Pall <mike>2015-10-24 18:03:55 +0200
commitb20642cec9e5134338820efcae7070aeda8dcf4a (patch)
tree6b1daeec249d6ae85cd86596e0f5262294544f87 /src
parent776c6935ed807fc3b1ee6cd89a0cf682ffb7e9de (diff)
parente5f4cb1ccb3bfef5d40a2329d6aa36c1ba74a709 (diff)
downloadluajit-b20642cec9e5134338820efcae7070aeda8dcf4a.tar.gz
luajit-b20642cec9e5134338820efcae7070aeda8dcf4a.tar.bz2
luajit-b20642cec9e5134338820efcae7070aeda8dcf4a.zip
Merge branch 'master' into v2.1
Diffstat (limited to 'src')
-rw-r--r--src/lj_ffrecord.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/lj_ffrecord.c b/src/lj_ffrecord.c
index 6cc05a24..09db2454 100644
--- a/src/lj_ffrecord.c
+++ b/src/lj_ffrecord.c
@@ -435,11 +435,12 @@ static void LJ_FASTCALL recff_ipairs_aux(jit_State *J, RecordFFData *rd)
435 435
436static void LJ_FASTCALL recff_xpairs(jit_State *J, RecordFFData *rd) 436static void LJ_FASTCALL recff_xpairs(jit_State *J, RecordFFData *rd)
437{ 437{
438 if (!(LJ_52 && recff_metacall(J, rd, MM_ipairs))) { 438 TRef tr = J->base[0];
439 TRef tab = J->base[0]; 439 if (!((LJ_52 || (LJ_HASFFI && tref_iscdata(tr))) &&
440 if (tref_istab(tab)) { 440 recff_metacall(J, rd, MM_ipairs))) {
441 if (tref_istab(tr)) {
441 J->base[0] = lj_ir_kfunc(J, funcV(&J->fn->c.upvalue[0])); 442 J->base[0] = lj_ir_kfunc(J, funcV(&J->fn->c.upvalue[0]));
442 J->base[1] = tab; 443 J->base[1] = tr;
443 J->base[2] = rd->data ? lj_ir_kint(J, 0) : TREF_NIL; 444 J->base[2] = rd->data ? lj_ir_kint(J, 0) : TREF_NIL;
444 rd->nres = 3; 445 rd->nres = 3;
445 } /* else: Interpreter will throw. */ 446 } /* else: Interpreter will throw. */