MCPcopy Create free account
hub / github.com/F-Stack/f-stack / luaV_execute

Function luaV_execute

freebsd/contrib/openzfs/module/lua/lvm.c:595–930  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

593#define vmcasenb(l,b) case l: {b} /* nb = no break */
594
595void luaV_execute (lua_State *L) {
596 CallInfo *ci = L->ci;
597 LClosure *cl;
598 TValue *k;
599 StkId base;
600 newframe: /* reentry point when frame changes (call/return) */
601 lua_assert(ci == L->ci);
602 cl = clLvalue(ci->func);
603 k = cl->p->k;
604 base = ci->u.l.base;
605 /* main loop of interpreter */
606 for (;;) {
607 Instruction i = *(ci->u.l.savedpc++);
608 StkId ra;
609 if ((L->hookmask & (LUA_MASKLINE | LUA_MASKCOUNT)) &&
610 (--L->hookcount == 0 || L->hookmask & LUA_MASKLINE)) {
611 Protect(traceexec(L));
612 }
613 /* WARNING: several calls may realloc the stack and invalidate `ra' */
614 ra = RA(i);
615 lua_assert(base == ci->u.l.base);
616 lua_assert(base <= L->top && L->top < L->stack + L->stacksize);
617 vmdispatch (GET_OPCODE(i)) {
618 vmcase(OP_MOVE,
619 setobjs2s(L, ra, RB(i));
620 )
621 vmcase(OP_LOADK,
622 TValue *rb = k + GETARG_Bx(i);
623 setobj2s(L, ra, rb);
624 )
625 vmcase(OP_LOADKX,
626 TValue *rb;
627 lua_assert(GET_OPCODE(*ci->u.l.savedpc) == OP_EXTRAARG);
628 rb = k + GETARG_Ax(*ci->u.l.savedpc++);
629 setobj2s(L, ra, rb);
630 )
631 vmcase(OP_LOADBOOL,
632 setbvalue(ra, GETARG_B(i));
633 if (GETARG_C(i)) ci->u.l.savedpc++; /* skip next instruction (if C) */
634 )
635 vmcase(OP_LOADNIL,
636 int b = GETARG_B(i);
637 do {
638 setnilvalue(ra++);
639 } while (b--);
640 )
641 vmcase(OP_GETUPVAL,
642 int b = GETARG_B(i);
643 setobj2s(L, ra, cl->upvals[b]->v);
644 )
645 vmcase(OP_GETTABUP,
646 int b = GETARG_B(i);
647 Protect(luaV_gettable(L, cl->upvals[b]->v, RKC(i), ra));
648 )
649 vmcase(OP_GETTABLE,
650 Protect(luaV_gettable(L, RB(i), RKC(i), ra));
651 )
652 vmcase(OP_SETTABUP,

Callers 3

luaD_callFunction · 0.70
unrollFunction · 0.70
resume_cbFunction · 0.70

Calls 15

luaH_resizeFunction · 0.85
luaV_arithFunction · 0.85
luaV_objlenFunction · 0.85
luaV_lessequalFunction · 0.85
luaH_setintFunction · 0.85
luaC_barrierbackFunction · 0.85
getcachedFunction · 0.85
traceexecFunction · 0.70
luaV_gettableFunction · 0.70
luaV_settableFunction · 0.70
luaH_newFunction · 0.70
luaO_fb2intFunction · 0.70

Tested by

no test coverage detected