MCPcopy Create free account
hub / github.com/Overload-Technologies/Overload / luaV_execute

Function luaV_execute

Dependencies/lua/src/lvm.c:1151–1897  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1149
1150
1151void luaV_execute (lua_State *L, CallInfo *ci) {
1152 LClosure *cl;
1153 TValue *k;
1154 StkId base;
1155 const Instruction *pc;
1156 int trap;
1157#if LUA_USE_JUMPTABLE
1158#include "ljumptab.h"
1159#endif
1160 startfunc:
1161 trap = L->hookmask;
1162 returning: /* trap already set */
1163 cl = ci_func(ci);
1164 k = cl->p->k;
1165 pc = ci->u.l.savedpc;
1166 if (l_unlikely(trap))
1167 trap = luaG_tracecall(L);
1168 base = ci->func.p + 1;
1169 /* main loop of interpreter */
1170 for (;;) {
1171 Instruction i; /* instruction being executed */
1172 vmfetch();
1173 #if 0
1174 /* low-level line tracing for debugging Lua */
1175 printf("line: %d\n", luaG_getfuncline(cl->p, pcRel(pc, cl->p)));
1176 #endif
1177 lua_assert(base == ci->func.p + 1);
1178 lua_assert(base <= L->top.p && L->top.p <= L->stack_last.p);
1179 /* invalidate top for instructions not expecting it */
1180 lua_assert(isIT(i) || (cast_void(L->top.p = base), 1));
1181 vmdispatch (GET_OPCODE(i)) {
1182 vmcase(OP_MOVE) {
1183 StkId ra = RA(i);
1184 setobjs2s(L, ra, RB(i));
1185 vmbreak;
1186 }
1187 vmcase(OP_LOADI) {
1188 StkId ra = RA(i);
1189 lua_Integer b = GETARG_sBx(i);
1190 setivalue(s2v(ra), b);
1191 vmbreak;
1192 }
1193 vmcase(OP_LOADF) {
1194 StkId ra = RA(i);
1195 int b = GETARG_sBx(i);
1196 setfltvalue(s2v(ra), cast_num(b));
1197 vmbreak;
1198 }
1199 vmcase(OP_LOADK) {
1200 StkId ra = RA(i);
1201 TValue *rb = k + GETARG_Bx(i);
1202 setobj2s(L, ra, rb);
1203 vmbreak;
1204 }
1205 vmcase(OP_LOADKX) {
1206 StkId ra = RA(i);
1207 TValue *rb;
1208 rb = k + GETARG_Ax(*pc); pc++;

Callers 3

ccallFunction · 0.85
unrollFunction · 0.85
resumeFunction · 0.85

Calls 15

luaG_tracecallFunction · 0.85
luaG_getfunclineFunction · 0.85
luaV_finishgetFunction · 0.85
luaV_finishsetFunction · 0.85
luaH_newFunction · 0.85
luaH_resizeFunction · 0.85
luaV_shiftlFunction · 0.85
luaT_trybinTMFunction · 0.85
luaT_trybiniTMFunction · 0.85
luaT_trybinassocTMFunction · 0.85
luaV_objlenFunction · 0.85
luaV_concatFunction · 0.85

Tested by

no test coverage detected