MCPcopy Create free account
hub / github.com/RomanKubiak/ctrlr / luaK_posfix

Function luaK_posfix

Source/Misc/lua/src/lua.c:4414–4458  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4412
4413
4414void luaK_posfix (FuncState *fs, BinOpr op, expdesc *e1, expdesc *e2) {
4415switch (op) {
4416case OPR_AND: {
4417lua_assert(e1->t == NO_JUMP); /* list must be closed */
4418luaK_dischargevars(fs, e2);
4419luaK_concat(fs, &e2->f, e1->f);
4420*e1 = *e2;
4421break;
4422}
4423case OPR_OR: {
4424lua_assert(e1->f == NO_JUMP); /* list must be closed */
4425luaK_dischargevars(fs, e2);
4426luaK_concat(fs, &e2->t, e1->t);
4427*e1 = *e2;
4428break;
4429}
4430case OPR_CONCAT: {
4431luaK_exp2val(fs, e2);
4432if (e2->k == VRELOCABLE && GET_OPCODE(getcode(fs, e2)) == OP_CONCAT) {
4433lua_assert(e1->u.s.info == GETARG_B(getcode(fs, e2))-1);
4434freeexp(fs, e1);
4435SETARG_B(getcode(fs, e2), e1->u.s.info);
4436e1->k = VRELOCABLE; e1->u.s.info = e2->u.s.info;
4437}
4438else {
4439luaK_exp2nextreg(fs, e2); /* operand must be on the 'stack' */
4440codearith(fs, OP_CONCAT, e1, e2);
4441}
4442break;
4443}
4444case OPR_ADD: codearith(fs, OP_ADD, e1, e2); break;
4445case OPR_SUB: codearith(fs, OP_SUB, e1, e2); break;
4446case OPR_MUL: codearith(fs, OP_MUL, e1, e2); break;
4447case OPR_DIV: codearith(fs, OP_DIV, e1, e2); break;
4448case OPR_MOD: codearith(fs, OP_MOD, e1, e2); break;
4449case OPR_POW: codearith(fs, OP_POW, e1, e2); break;
4450case OPR_EQ: codecomp(fs, OP_EQ, 1, e1, e2); break;
4451case OPR_NE: codecomp(fs, OP_EQ, 0, e1, e2); break;
4452case OPR_LT: codecomp(fs, OP_LT, 1, e1, e2); break;
4453case OPR_LE: codecomp(fs, OP_LE, 1, e1, e2); break;
4454case OPR_GT: codecomp(fs, OP_LT, 0, e1, e2); break;
4455case OPR_GE: codecomp(fs, OP_LE, 0, e1, e2); break;
4456default: lua_assert(0);
4457}
4458}
4459
4460
4461void luaK_fixline (FuncState *fs, int line) {

Callers 1

subexprFunction · 0.85

Calls 7

luaK_dischargevarsFunction · 0.85
luaK_concatFunction · 0.85
luaK_exp2valFunction · 0.85
freeexpFunction · 0.85
luaK_exp2nextregFunction · 0.85
codearithFunction · 0.85
codecompFunction · 0.85

Tested by

no test coverage detected