MCPcopy Create free account
hub / github.com/DFHack/dfhack / luaV_execute

Function luaV_execute

depends/lua/src/lvm.c:786–1319  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

784
785
786void luaV_execute (lua_State *L) {
787 CallInfo *ci = L->ci;
788 LClosure *cl;
789 TValue *k;
790 StkId base;
791 ci->callstatus |= CIST_FRESH; /* fresh invocation of 'luaV_execute" */
792 newframe: /* reentry point when frame changes (call/return) */
793 lua_assert(ci == L->ci);
794 cl = clLvalue(ci->func); /* local reference to function's closure */
795 k = cl->p->k; /* local reference to function's constant table */
796 base = ci->u.l.base; /* local copy of function's base */
797 /* main loop of interpreter */
798 for (;;) {
799 Instruction i;
800 StkId ra;
801 vmfetch();
802 vmdispatch (GET_OPCODE(i)) {
803 vmcase(OP_MOVE) {
804 setobjs2s(L, ra, RB(i));
805 vmbreak;
806 }
807 vmcase(OP_LOADK) {
808 TValue *rb = k + GETARG_Bx(i);
809 setobj2s(L, ra, rb);
810 vmbreak;
811 }
812 vmcase(OP_LOADKX) {
813 TValue *rb;
814 lua_assert(GET_OPCODE(*ci->u.l.savedpc) == OP_EXTRAARG);
815 rb = k + GETARG_Ax(*ci->u.l.savedpc++);
816 setobj2s(L, ra, rb);
817 vmbreak;
818 }
819 vmcase(OP_LOADBOOL) {
820 setbvalue(ra, GETARG_B(i));
821 if (GETARG_C(i)) ci->u.l.savedpc++; /* skip next instruction (if C) */
822 vmbreak;
823 }
824 vmcase(OP_LOADNIL) {
825 int b = GETARG_B(i);
826 do {
827 setnilvalue(ra++);
828 } while (b--);
829 vmbreak;
830 }
831 vmcase(OP_GETUPVAL) {
832 int b = GETARG_B(i);
833 setobj2s(L, ra, cl->upvals[b]->v);
834 vmbreak;
835 }
836 vmcase(OP_GETTABUP) {
837 TValue *upval = cl->upvals[GETARG_B(i)]->v;
838 TValue *rc = RKC(i);
839 gettableProtected(L, upval, rc, ra);
840 vmbreak;
841 }
842 vmcase(OP_GETTABLE) {
843 StkId rb = RB(i);

Callers 3

luaD_callFunction · 0.85
unrollFunction · 0.85
resumeFunction · 0.85

Calls 15

luaH_newFunction · 0.85
luaH_resizeFunction · 0.85
luaO_fb2intFunction · 0.85
luaV_finishgetFunction · 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
ifFunction · 0.85
luaV_equalobjFunction · 0.85

Tested by

no test coverage detected