MCPcopy Create free account
hub / github.com/Cubitect/cubiomes-viewer / luaK_storevar

Function luaK_storevar

lua/src/lcode.c:1048–1079  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

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

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