Lines Matching refs:e2
533 static void freeexps (FuncState *fs, expdesc *e1, expdesc *e2) { in freeexps() argument
535 int r2 = (e2->k == VNONRELOC) ? e2->u.info : -1; in freeexps()
1365 const expdesc *e2) { argument
1367 if (!tonumeral(e1, &v1) || !tonumeral(e2, &v2) || !validop(op, &v1, &v2))
1438 static void finishbinexpval (FuncState *fs, expdesc *e1, expdesc *e2, argument
1443 freeexps(fs, e1, e2);
1457 expdesc *e1, expdesc *e2, int line) { argument
1459 int v2 = luaK_exp2anyreg(fs, e2); /* make sure 'e2' is in a register */
1464 finishbinexpval(fs, e1, e2, op, v2, 0, line, OP_MMBIN, binopr2TM(opr));
1472 expdesc *e1, expdesc *e2, int flip, int line, argument
1474 int v2 = int2sC(cast_int(e2->u.ival)); /* immediate operand */
1475 lua_assert(e2->k == VKINT);
1476 finishbinexpval(fs, e1, e2, op, v2, flip, line, OP_MMBINI, event);
1484 expdesc *e1, expdesc *e2, int flip, int line) { argument
1486 int v2 = e2->u.info; /* K index */
1488 finishbinexpval(fs, e1, e2, op, v2, flip, line, OP_MMBINK, event);
1495 static int finishbinexpneg (FuncState *fs, expdesc *e1, expdesc *e2, argument
1497 if (!luaK_isKint(e2))
1500 lua_Integer i2 = e2->u.ival;
1505 finishbinexpval(fs, e1, e2, op, int2sC(-v2), 0, line, OP_MMBINI, event);
1514 static void swapexps (expdesc *e1, expdesc *e2) { argument
1515 expdesc temp = *e1; *e1 = *e2; *e2 = temp; /* swap 'e1' and 'e2' */
1523 expdesc *e1, expdesc *e2, int flip, int line) { argument
1525 swapexps(e1, e2); /* back to original order */
1526 codebinexpval(fs, opr, e1, e2, line); /* use standard operators */
1535 expdesc *e1, expdesc *e2, int flip, int line) { argument
1536 if (tonumeral(e2, NULL) && luaK_exp2K(fs, e2)) /* K operand? */
1537 codebinK(fs, opr, e1, e2, flip, line);
1539 codebinNoK(fs, opr, e1, e2, flip, line);
1549 expdesc *e1, expdesc *e2, int line) { argument
1552 swapexps(e1, e2); /* change order */
1555 if (op == OPR_ADD && isSCint(e2)) /* immediate operand? */
1556 codebini(fs, OP_ADDI, e1, e2, flip, line, TM_ADD);
1558 codearith(fs, op, e1, e2, flip, line);
1567 expdesc *e1, expdesc *e2, int line) { argument
1570 swapexps(e1, e2); /* 'e2' will be the constant operand */
1573 if (e2->k == VKINT && luaK_exp2K(fs, e2)) /* K operand? */
1574 codebinK(fs, opr, e1, e2, flip, line);
1576 codebinNoK(fs, opr, e1, e2, flip, line);
1584 static void codeorder (FuncState *fs, BinOpr opr, expdesc *e1, expdesc *e2) { argument
1589 if (isSCnumber(e2, &im, &isfloat)) {
1597 r1 = luaK_exp2anyreg(fs, e2);
1603 r2 = luaK_exp2anyreg(fs, e2);
1606 freeexps(fs, e1, e2);
1616 static void codeeq (FuncState *fs, BinOpr opr, expdesc *e1, expdesc *e2) { argument
1623 swapexps(e1, e2);
1626 if (isSCnumber(e2, &im, &isfloat)) {
1630 else if (luaK_exp2RK(fs, e2)) { /* 2nd expression is constant? */
1632 r2 = e2->u.info; /* constant index */
1636 r2 = luaK_exp2anyreg(fs, e2);
1638 freeexps(fs, e1, e2);
1722 static void codeconcat (FuncState *fs, expdesc *e1, expdesc *e2, int line) { argument
1727 freeexp(fs, e2);
1733 freeexp(fs, e2);
1743 expdesc *e1, expdesc *e2, int line) { argument
1744 luaK_dischargevars(fs, e2);
1745 if (foldbinop(opr) && constfolding(fs, opr + LUA_OPADD, e1, e2))
1750 luaK_concat(fs, &e2->f, e1->f);
1751 *e1 = *e2;
1756 luaK_concat(fs, &e2->t, e1->t);
1757 *e1 = *e2;
1761 luaK_exp2nextreg(fs, e2);
1762 codeconcat(fs, e1, e2, line);
1766 codecommutative(fs, opr, e1, e2, line);
1770 if (finishbinexpneg(fs, e1, e2, OP_ADDI, line, TM_SUB))
1779 codearith(fs, opr, e1, e2, 0, line);
1783 codebitwise(fs, opr, e1, e2, line);
1788 swapexps(e1, e2);
1789 codebini(fs, OP_SHLI, e1, e2, 1, line, TM_SHL); /* I << r2 */
1791 else if (finishbinexpneg(fs, e1, e2, OP_SHRI, line, TM_SHL)) {
1795 codebinexpval(fs, opr, e1, e2, line);
1799 if (isSCint(e2))
1800 codebini(fs, OP_SHRI, e1, e2, 0, line, TM_SHR); /* r1 >> I */
1802 codebinexpval(fs, opr, e1, e2, line);
1806 codeeq(fs, opr, e1, e2);
1811 swapexps(e1, e2);
1815 codeorder(fs, opr, e1, e2);