Compile table traversals: next(), pairs(), BC_ISNEXT/BC_ITERN.
Sponsored by OpenResty Inc.
This commit is contained in:
@@ -1814,7 +1814,14 @@ static void asm_stack_restore(ASMState *as, SnapShot *snap)
|
||||
IRIns *ir = IR(ref);
|
||||
if ((sn & SNAP_NORESTORE))
|
||||
continue;
|
||||
if (irt_isnum(ir->t)) {
|
||||
if ((sn & SNAP_KEYINDEX)) {
|
||||
RegSet allow = rset_exclude(RSET_GPR, RID_BASE);
|
||||
Reg r = irref_isk(ref) ? ra_allock(as, ir->i, allow) :
|
||||
ra_alloc1(as, ref, allow);
|
||||
rset_clear(allow, r);
|
||||
emit_lso(as, A64I_STRw, r, RID_BASE, ofs);
|
||||
emit_lso(as, A64I_STRw, ra_allock(as, LJ_KEYINDEX, allow), RID_BASE, ofs+4);
|
||||
} else if (irt_isnum(ir->t)) {
|
||||
Reg src = ra_alloc1(as, ref, RSET_FPR);
|
||||
emit_lso(as, A64I_STRd, (src & 31), RID_BASE, ofs);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user