MCPcopy Create free account
hub / github.com/CppCXY/EmmyLuaCodeStyle / luaK_storevar

Function luaK_storevar

3rd/lua-5.4.3/src/lcode.c:1030–1061  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

1028** Generate code to store result of expression 'ex' into variable 'var'.
1029*/
1030void luaK_storevar (FuncState *fs, expdesc *var, expdesc *ex) {
1031 switch (var->k) {
1032 case VLOCAL: {
1033 freeexp(fs, ex);
1034 exp2reg(fs, ex, var->u.var.ridx); /* compute 'ex' into proper place */
1035 return;
1036 }
1037 case VUPVAL: {
1038 int e = luaK_exp2anyreg(fs, ex);
1039 luaK_codeABC(fs, OP_SETUPVAL, e, var->u.info, 0);
1040 break;
1041 }
1042 case VINDEXUP: {
1043 codeABRK(fs, OP_SETTABUP, var->u.ind.t, var->u.ind.idx, ex);
1044 break;
1045 }
1046 case VINDEXI: {
1047 codeABRK(fs, OP_SETI, var->u.ind.t, var->u.ind.idx, ex);
1048 break;
1049 }
1050 case VINDEXSTR: {
1051 codeABRK(fs, OP_SETFIELD, var->u.ind.t, var->u.ind.idx, ex);
1052 break;
1053 }
1054 case VINDEXED: {
1055 codeABRK(fs, OP_SETTABLE, var->u.ind.t, var->u.ind.idx, ex);
1056 break;
1057 }
1058 default: lua_assert(0); /* invalid var kind to store */
1059 }
1060 freeexp(fs, ex);
1061}
1062
1063
1064/*

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