MCPcopy Create free account
hub / github.com/EmmyLua/EmmyLuaDebugger / luaV_execute

Function luaV_execute

third-party/lua-5.4.6/src/lvm.c:1154–1900  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 3

ccallFunction · 0.70
unrollFunction · 0.70
resumeFunction · 0.70

Calls 15

luaH_realasizeFunction · 0.85
luaC_barrierbackFunction · 0.85
luaG_tracecallFunction · 0.70
luaG_getfunclineFunction · 0.70
luaV_finishgetFunction · 0.70
luaV_finishsetFunction · 0.70
luaH_newFunction · 0.70
luaH_resizeFunction · 0.70
luaV_shiftlFunction · 0.70
luaT_trybinTMFunction · 0.70
luaT_trybiniTMFunction · 0.70
luaT_trybinassocTMFunction · 0.70

Tested by

no test coverage detected