MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / luaV_execute

Function luaV_execute

lib/lua/src/lvm.c:1161–1907  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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