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

Function luaK_storevar

third-party/lua-5.4.6/src/lcode.c:1050–1081  ·  view source on GitHub ↗

** Generate code to store result of expression 'ex' into variable 'var'. */

Source from the content-addressed store, hash-verified

1048** Generate code to store result of expression 'ex' into variable 'var'.
1049*/
1050void luaK_storevar (FuncState *fs, expdesc *var, expdesc *ex) {
1051 switch (var->k) {
1052 case VLOCAL: {
1053 freeexp(fs, ex);
1054 exp2reg(fs, ex, var->u.var.ridx); /* compute 'ex' into proper place */
1055 return;
1056 }
1057 case VUPVAL: {
1058 int e = luaK_exp2anyreg(fs, ex);
1059 luaK_codeABC(fs, OP_SETUPVAL, e, var->u.info, 0);
1060 break;
1061 }
1062 case VINDEXUP: {
1063 codeABRK(fs, OP_SETTABUP, var->u.ind.t, var->u.ind.idx, ex);
1064 break;
1065 }
1066 case VINDEXI: {
1067 codeABRK(fs, OP_SETI, var->u.ind.t, var->u.ind.idx, ex);
1068 break;
1069 }
1070 case VINDEXSTR: {
1071 codeABRK(fs, OP_SETFIELD, var->u.ind.t, var->u.ind.idx, ex);
1072 break;
1073 }
1074 case VINDEXED: {
1075 codeABRK(fs, OP_SETTABLE, var->u.ind.t, var->u.ind.idx, ex);
1076 break;
1077 }
1078 default: lua_assert(0); /* invalid var kind to store */
1079 }
1080 freeexp(fs, ex);
1081}
1082
1083
1084/*

Callers 3

recfieldFunction · 0.70
restassignFunction · 0.70
funcstatFunction · 0.70

Calls 5

freeexpFunction · 0.70
exp2regFunction · 0.70
luaK_exp2anyregFunction · 0.70
codeABRKFunction · 0.70
luaK_codeABCFunction · 0.50

Tested by

no test coverage detected