MCPcopy Create free account
hub / github.com/ArduPilot/ardupilot / luaV_execute

Function luaV_execute

libraries/AP_Scripting/lua/src/lvm.c:790–1323  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Tested by

no test coverage detected