Lines Matching refs:e2
526 static void freeexps (FuncState *fs, expdesc *e1, expdesc *e2) { in freeexps() argument
528 int r2 = (e2->k == VNONRELOC) ? e2->u.info : -1; in freeexps()
1316 const expdesc *e2) { in constfolding() argument
1318 if (!tonumeral(e1, &v1) || !tonumeral(e2, &v2) || !validop(op, &v1, &v2)) in constfolding()
1356 static void finishbinexpval (FuncState *fs, expdesc *e1, expdesc *e2, in finishbinexpval() argument
1361 freeexps(fs, e1, e2); in finishbinexpval()
1375 expdesc *e1, expdesc *e2, int line) { in codebinexpval() argument
1376 int v2 = luaK_exp2anyreg(fs, e2); /* both operands are in registers */ in codebinexpval()
1378 finishbinexpval(fs, e1, e2, op, v2, 0, line, OP_MMBIN, in codebinexpval()
1387 expdesc *e1, expdesc *e2, int flip, int line, in codebini() argument
1389 int v2 = int2sC(cast_int(e2->u.ival)); /* immediate operand */ in codebini()
1390 lua_assert(e2->k == VKINT); in codebini()
1391 finishbinexpval(fs, e1, e2, op, v2, flip, line, OP_MMBINI, event); in codebini()
1398 static int finishbinexpneg (FuncState *fs, expdesc *e1, expdesc *e2, in finishbinexpneg() argument
1400 if (!luaK_isKint(e2)) in finishbinexpneg()
1403 lua_Integer i2 = e2->u.ival; in finishbinexpneg()
1408 finishbinexpval(fs, e1, e2, op, int2sC(-v2), 0, line, OP_MMBINI, event); in finishbinexpneg()
1417 static void swapexps (expdesc *e1, expdesc *e2) { in swapexps() argument
1418 expdesc temp = *e1; *e1 = *e2; *e2 = temp; /* swap 'e1' and 'e2' */ in swapexps()
1427 expdesc *e1, expdesc *e2, int flip, int line) { in codearith() argument
1429 if (tonumeral(e2, NULL) && luaK_exp2K(fs, e2)) { /* K operand? */ in codearith()
1430 int v2 = e2->u.info; /* K index */ in codearith()
1432 finishbinexpval(fs, e1, e2, op, v2, flip, line, OP_MMBINK, event); in codearith()
1437 swapexps(e1, e2); /* back to original order */ in codearith()
1438 codebinexpval(fs, op, e1, e2, line); /* use standard operators */ in codearith()
1449 expdesc *e1, expdesc *e2, int line) { in codecommutative() argument
1452 swapexps(e1, e2); /* change order */ in codecommutative()
1455 if (op == OPR_ADD && isSCint(e2)) /* immediate operand? */ in codecommutative()
1456 codebini(fs, cast(OpCode, OP_ADDI), e1, e2, flip, line, TM_ADD); in codecommutative()
1458 codearith(fs, op, e1, e2, flip, line); in codecommutative()
1467 expdesc *e1, expdesc *e2, int line) { in codebitwise() argument
1472 swapexps(e1, e2); /* 'e2' will be the constant operand */ in codebitwise()
1475 else if (!(e2->k == VKINT && luaK_exp2RK(fs, e2))) { /* no constants? */ in codebitwise()
1477 codebinexpval(fs, op, e1, e2, line); /* all-register opcodes */ in codebitwise()
1480 v2 = e2->u.info; /* index in K array */ in codebitwise()
1483 finishbinexpval(fs, e1, e2, op, v2, flip, line, OP_MMBINK, in codebitwise()
1492 static void codeorder (FuncState *fs, OpCode op, expdesc *e1, expdesc *e2) { in codeorder() argument
1496 if (isSCnumber(e2, &im, &isfloat)) { in codeorder()
1504 r1 = luaK_exp2anyreg(fs, e2); in codeorder()
1510 r2 = luaK_exp2anyreg(fs, e2); in codeorder()
1512 freeexps(fs, e1, e2); in codeorder()
1522 static void codeeq (FuncState *fs, BinOpr opr, expdesc *e1, expdesc *e2) { in codeeq() argument
1529 swapexps(e1, e2); in codeeq()
1532 if (isSCnumber(e2, &im, &isfloat)) { in codeeq()
1536 else if (luaK_exp2RK(fs, e2)) { /* 1st expression is constant? */ in codeeq()
1538 r2 = e2->u.info; /* constant index */ in codeeq()
1542 r2 = luaK_exp2anyreg(fs, e2); in codeeq()
1544 freeexps(fs, e1, e2); in codeeq()
1622 static void codeconcat (FuncState *fs, expdesc *e1, expdesc *e2, int line) { in codeconcat() argument
1627 freeexp(fs, e2); in codeconcat()
1633 freeexp(fs, e2); in codeconcat()
1643 expdesc *e1, expdesc *e2, int line) { in luaK_posfix() argument
1644 luaK_dischargevars(fs, e2); in luaK_posfix()
1645 if (foldbinop(opr) && constfolding(fs, opr + LUA_OPADD, e1, e2)) in luaK_posfix()
1650 luaK_concat(fs, &e2->f, e1->f); in luaK_posfix()
1651 *e1 = *e2; in luaK_posfix()
1656 luaK_concat(fs, &e2->t, e1->t); in luaK_posfix()
1657 *e1 = *e2; in luaK_posfix()
1661 luaK_exp2nextreg(fs, e2); in luaK_posfix()
1662 codeconcat(fs, e1, e2, line); in luaK_posfix()
1666 codecommutative(fs, opr, e1, e2, line); in luaK_posfix()
1670 if (finishbinexpneg(fs, e1, e2, OP_ADDI, line, TM_SUB)) in luaK_posfix()
1675 codearith(fs, opr, e1, e2, 0, line); in luaK_posfix()
1679 codebitwise(fs, opr, e1, e2, line); in luaK_posfix()
1684 swapexps(e1, e2); in luaK_posfix()
1685 codebini(fs, OP_SHLI, e1, e2, 1, line, TM_SHL); /* I << r2 */ in luaK_posfix()
1687 else if (finishbinexpneg(fs, e1, e2, OP_SHRI, line, TM_SHL)) { in luaK_posfix()
1691 codebinexpval(fs, OP_SHL, e1, e2, line); in luaK_posfix()
1695 if (isSCint(e2)) in luaK_posfix()
1696 codebini(fs, OP_SHRI, e1, e2, 0, line, TM_SHR); /* r1 >> I */ in luaK_posfix()
1698 codebinexpval(fs, OP_SHR, e1, e2, line); in luaK_posfix()
1702 codeeq(fs, opr, e1, e2); in luaK_posfix()
1707 codeorder(fs, op, e1, e2); in luaK_posfix()
1713 swapexps(e1, e2); in luaK_posfix()
1714 codeorder(fs, op, e1, e2); in luaK_posfix()