MCPcopy Create free account
hub / github.com/ObEngine/ObEngine / luaK_storevar

Function luaK_storevar

extlibs/lua/src/lcode.c:1031–1062  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

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

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