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

Function luaV_execute

third-party/lua-5.2.4/src/lvm.c:534–866  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

532#define vmcasenb(l,b) case l: {b} /* nb = no break */
533
534void luaV_execute (lua_State *L) {
535 CallInfo *ci = L->ci;
536 LClosure *cl;
537 TValue *k;
538 StkId base;
539 newframe: /* reentry point when frame changes (call/return) */
540 lua_assert(ci == L->ci);
541 cl = clLvalue(ci->func);
542 k = cl->p->k;
543 base = ci->u.l.base;
544 /* main loop of interpreter */
545 for (;;) {
546 Instruction i = *(ci->u.l.savedpc++);
547 StkId ra;
548 if ((L->hookmask & (LUA_MASKLINE | LUA_MASKCOUNT)) &&
549 (--L->hookcount == 0 || L->hookmask & LUA_MASKLINE)) {
550 Protect(traceexec(L));
551 }
552 /* WARNING: several calls may realloc the stack and invalidate `ra' */
553 ra = RA(i);
554 lua_assert(base == ci->u.l.base);
555 lua_assert(base <= L->top && L->top < L->stack + L->stacksize);
556 vmdispatch (GET_OPCODE(i)) {
557 vmcase(OP_MOVE,
558 setobjs2s(L, ra, RB(i));
559 )
560 vmcase(OP_LOADK,
561 TValue *rb = k + GETARG_Bx(i);
562 setobj2s(L, ra, rb);
563 )
564 vmcase(OP_LOADKX,
565 TValue *rb;
566 lua_assert(GET_OPCODE(*ci->u.l.savedpc) == OP_EXTRAARG);
567 rb = k + GETARG_Ax(*ci->u.l.savedpc++);
568 setobj2s(L, ra, rb);
569 )
570 vmcase(OP_LOADBOOL,
571 setbvalue(ra, GETARG_B(i));
572 if (GETARG_C(i)) ci->u.l.savedpc++; /* skip next instruction (if C) */
573 )
574 vmcase(OP_LOADNIL,
575 int b = GETARG_B(i);
576 do {
577 setnilvalue(ra++);
578 } while (b--);
579 )
580 vmcase(OP_GETUPVAL,
581 int b = GETARG_B(i);
582 setobj2s(L, ra, cl->upvals[b]->v);
583 )
584 vmcase(OP_GETTABUP,
585 int b = GETARG_B(i);
586 Protect(luaV_gettable(L, cl->upvals[b]->v, RKC(i), ra));
587 )
588 vmcase(OP_GETTABLE,
589 Protect(luaV_gettable(L, RB(i), RKC(i), ra));
590 )
591 vmcase(OP_SETTABUP,

Callers 3

luaD_callFunction · 0.70
unrollFunction · 0.70
resumeFunction · 0.70

Calls 15

luaV_arithFunction · 0.85
ifFunction · 0.85
luaC_barrierbackFunction · 0.85
traceexecFunction · 0.70
luaV_gettableFunction · 0.70
luaV_settableFunction · 0.70
luaH_newFunction · 0.70
luaH_resizeFunction · 0.70
luaO_fb2intFunction · 0.70
luaV_objlenFunction · 0.70
luaV_concatFunction · 0.70
luaV_lessthanFunction · 0.70

Tested by

no test coverage detected