mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-08 15:34:09 +00:00
Implement KNIL and CALLMT.
This commit is contained in:
parent
2584c6d5a8
commit
230a4aa424
@ -2109,9 +2109,23 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
|||||||
| ins_next
|
| ins_next
|
||||||
break;
|
break;
|
||||||
case BC_KNIL:
|
case BC_KNIL:
|
||||||
| stg r0, 0(r0)
|
| ins_AD // RA = dst_start, RD = dst_end
|
||||||
| stg r0, 0(r0)
|
| sllg RA, RA, 3(r0)
|
||||||
|
| sllg RD, RD, 3(r0)
|
||||||
|
| la RA, 8(RA, BASE)
|
||||||
|
| la RD, 0(RD, BASE)
|
||||||
|
| lghi RB, LJ_TNIL
|
||||||
|
| stg RB, -8(RA) // Sets minimum 2 slots.
|
||||||
|
|1:
|
||||||
|
| stg RB, 0(RA)
|
||||||
|
| la RA, 8(RA)
|
||||||
|
| clgr RA, RD
|
||||||
|
| jle <1
|
||||||
|
| ins_next
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
/* -- Upvalue and function ops ------------------------------------------ */
|
||||||
|
|
||||||
case BC_UGET:
|
case BC_UGET:
|
||||||
| ins_AD // RA = dst, RD = upvalue #
|
| ins_AD // RA = dst, RD = upvalue #
|
||||||
| sllg RA, RA, 3(r0)
|
| sllg RA, RA, 3(r0)
|
||||||
@ -2639,8 +2653,9 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case BC_CALLMT:
|
case BC_CALLMT:
|
||||||
| stg r0, 0(r0)
|
| ins_AD // RA = base, RD = extra_nargs
|
||||||
| stg r0, 0(r0)
|
| a NARGS:RD, SAVE_MULTRES
|
||||||
|
| // Fall through. Assumes BC_CALLT follows and ins_AD is a no-op.
|
||||||
break;
|
break;
|
||||||
case BC_CALLT:
|
case BC_CALLT:
|
||||||
| ins_AD // RA = base, RD = nargs+1
|
| ins_AD // RA = base, RD = nargs+1
|
||||||
|
Loading…
Reference in New Issue
Block a user