mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-12 17:24:09 +00:00
PPC: Add closure-related instructions.
This commit is contained in:
parent
b2aa08c75c
commit
ec8f2918ba
@ -1389,12 +1389,38 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
|||||||
case BC_USETP:
|
case BC_USETP:
|
||||||
| NYI
|
| NYI
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BC_UCLO:
|
case BC_UCLO:
|
||||||
| NYI
|
| // RA = level*8, RD = target
|
||||||
|
| lwz TMP1, L->openupval
|
||||||
|
| branch_RD // Do this first since RD is not saved.
|
||||||
|
| stw BASE, L->base
|
||||||
|
| cmplwi TMP1, 0
|
||||||
|
| mr CARG1, L
|
||||||
|
| beq >1
|
||||||
|
| add CARG2, BASE, RA
|
||||||
|
| bl extern lj_func_closeuv // (lua_State *L, TValue *level)
|
||||||
|
| lwz BASE, L->base
|
||||||
|
|1:
|
||||||
|
| ins_next
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BC_FNEW:
|
case BC_FNEW:
|
||||||
| NYI
|
| // RA = dst*8, RD = proto_const*8 (~) (holding function prototype)
|
||||||
|
| srwi TMP1, RD, 1
|
||||||
|
| stw BASE, L->base
|
||||||
|
| subfic TMP1, TMP1, -4
|
||||||
|
| stw PC, SAVE_PC
|
||||||
|
| lwzx CARG2, KBASE, TMP1 // KBASE-4-tab_const*4
|
||||||
|
| mr CARG1, L
|
||||||
|
| lwz CARG3, FRAME_FUNC(BASE)
|
||||||
|
| // (lua_State *L, GCproto *pt, GCfuncL *parent)
|
||||||
|
| bl extern lj_func_newL_gc
|
||||||
|
| // Returns GCfuncL *.
|
||||||
|
| lwz BASE, L->base
|
||||||
|
| evmergelo LFUNC:CRET1, TISFUNC, LFUNC:CRET1
|
||||||
|
| evstddx LFUNC:CRET1, BASE, RA
|
||||||
|
| ins_next
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* -- Table ops --------------------------------------------------------- */
|
/* -- Table ops --------------------------------------------------------- */
|
||||||
|
Loading…
Reference in New Issue
Block a user