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

Function luaK_storevar

lib/lua/src/lcode.c:1049–1080  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

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

Callers 3

recfieldFunction · 0.85
restassignFunction · 0.85
funcstatFunction · 0.85

Calls 4

freeexpFunction · 0.85
exp2regFunction · 0.85
luaK_exp2anyregFunction · 0.85
codeABRKFunction · 0.85

Tested by

no test coverage detected