MCPcopy Create free account
hub / github.com/BigPig0/RelayLive / luaV_execute

Function luaV_execute

ThirdParty/lua/lua/lvm.c:650–1179  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

648#define vmbreak break
649
650void luaV_execute (lua_State *L) {
651 CallInfo *ci = L->ci;
652 LClosure *cl;
653 TValue *k;
654 StkId base;
655 newframe: /* reentry point when frame changes (call/return) */
656 lua_assert(ci == L->ci);
657 cl = clLvalue(ci->func);
658 k = cl->p->k;
659 base = ci->u.l.base;
660 /* main loop of interpreter */
661 for (;;) {
662 Instruction i = *(ci->u.l.savedpc++);
663 StkId ra;
664 if ((L->hookmask & (LUA_MASKLINE | LUA_MASKCOUNT)) &&
665 (--L->hookcount == 0 || L->hookmask & LUA_MASKLINE)) {
666 Protect(luaG_traceexec(L));
667 }
668 /* WARNING: several calls may realloc the stack and invalidate 'ra' */
669 ra = RA(i);
670 lua_assert(base == ci->u.l.base);
671 lua_assert(base <= L->top && L->top < L->stack + L->stacksize);
672 vmdispatch (GET_OPCODE(i)) {
673 vmcase(OP_MOVE) {
674 setobjs2s(L, ra, RB(i));
675 vmbreak;
676 }
677 vmcase(OP_LOADK) {
678 TValue *rb = k + GETARG_Bx(i);
679 setobj2s(L, ra, rb);
680 vmbreak;
681 }
682 vmcase(OP_LOADKX) {
683 TValue *rb;
684 lua_assert(GET_OPCODE(*ci->u.l.savedpc) == OP_EXTRAARG);
685 rb = k + GETARG_Ax(*ci->u.l.savedpc++);
686 setobj2s(L, ra, rb);
687 vmbreak;
688 }
689 vmcase(OP_LOADBOOL) {
690 setbvalue(ra, GETARG_B(i));
691 if (GETARG_C(i)) ci->u.l.savedpc++; /* skip next instruction (if C) */
692 vmbreak;
693 }
694 vmcase(OP_LOADNIL) {
695 int b = GETARG_B(i);
696 do {
697 setnilvalue(ra++);
698 } while (b--);
699 vmbreak;
700 }
701 vmcase(OP_GETUPVAL) {
702 int b = GETARG_B(i);
703 setobj2s(L, ra, cl->upvals[b]->v);
704 vmbreak;
705 }
706 vmcase(OP_GETTABUP) {
707 int b = GETARG_B(i);

Callers 3

luaD_callFunction · 0.85
unrollFunction · 0.85
resumeFunction · 0.85

Calls 15

luaG_traceexecFunction · 0.85
luaV_gettableFunction · 0.85
luaV_settableFunction · 0.85
luaH_newFunction · 0.85
luaH_resizeFunction · 0.85
luaO_fb2intFunction · 0.85
luaT_trybinTMFunction · 0.85
luaV_shiftlFunction · 0.85
luaV_modFunction · 0.85
luaV_divFunction · 0.85
luaV_objlenFunction · 0.85
luaV_concatFunction · 0.85

Tested by

no test coverage detected