Lines Matching refs:e1

535 static void freeexps (FuncState *fs, expdesc *e1, expdesc *e2) {  in freeexps()  argument
536 int r1 = (e1->k == VNONRELOC) ? e1->u.info : -1; in freeexps()
1319 static int constfolding (FuncState *fs, int op, expdesc *e1, in constfolding() argument
1322 if (!tonumeral(e1, &v1) || !tonumeral(e2, &v2) || !validop(op, &v1, &v2)) in constfolding()
1326 e1->k = VKINT; in constfolding()
1327 e1->u.ival = ivalue(&res); in constfolding()
1333 e1->k = VKFLT; in constfolding()
1334 e1->u.nval = n; in constfolding()
1360 static void finishbinexpval (FuncState *fs, expdesc *e1, expdesc *e2, in finishbinexpval() argument
1363 int v1 = luaK_exp2anyreg(fs, e1); in finishbinexpval()
1365 freeexps(fs, e1, e2); in finishbinexpval()
1366 e1->u.info = pc; in finishbinexpval()
1367 e1->k = VRELOC; /* all those operations are relocatable */ in finishbinexpval()
1379 expdesc *e1, expdesc *e2, int line) { in codebinexpval() argument
1382 finishbinexpval(fs, e1, e2, op, v2, 0, line, OP_MMBIN, in codebinexpval()
1391 expdesc *e1, expdesc *e2, int flip, int line, in codebini() argument
1395 finishbinexpval(fs, e1, e2, op, v2, flip, line, OP_MMBINI, event); in codebini()
1402 static int finishbinexpneg (FuncState *fs, expdesc *e1, expdesc *e2, in finishbinexpneg() argument
1412 finishbinexpval(fs, e1, e2, op, int2sC(-v2), 0, line, OP_MMBINI, event); in finishbinexpneg()
1421 static void swapexps (expdesc *e1, expdesc *e2) { in swapexps() argument
1422 expdesc temp = *e1; *e1 = *e2; *e2 = temp; /* swap 'e1' and 'e2' */ in swapexps()
1431 expdesc *e1, expdesc *e2, int flip, int line) { in codearith() argument
1436 finishbinexpval(fs, e1, e2, op, v2, flip, line, OP_MMBINK, event); in codearith()
1441 swapexps(e1, e2); /* back to original order */ in codearith()
1442 codebinexpval(fs, op, e1, e2, line); /* use standard operators */ in codearith()
1453 expdesc *e1, expdesc *e2, int line) { in codecommutative() argument
1455 if (tonumeral(e1, NULL)) { /* is first operand a numeric constant? */ in codecommutative()
1456 swapexps(e1, e2); /* change order */ in codecommutative()
1460 codebini(fs, cast(OpCode, OP_ADDI), e1, e2, flip, line, TM_ADD); in codecommutative()
1462 codearith(fs, op, e1, e2, flip, line); in codecommutative()
1471 expdesc *e1, expdesc *e2, int line) { in codebitwise() argument
1475 if (e1->k == VKINT && luaK_exp2RK(fs, e1)) { in codebitwise()
1476 swapexps(e1, e2); /* 'e2' will be the constant operand */ in codebitwise()
1481 codebinexpval(fs, op, e1, e2, line); /* all-register opcodes */ in codebitwise()
1487 finishbinexpval(fs, e1, e2, op, v2, flip, line, OP_MMBINK, in codebitwise()
1496 static void codeorder (FuncState *fs, OpCode op, expdesc *e1, expdesc *e2) { in codeorder() argument
1502 r1 = luaK_exp2anyreg(fs, e1); in codeorder()
1506 else if (isSCnumber(e1, &im, &isfloat)) { in codeorder()
1513 r1 = luaK_exp2anyreg(fs, e1); in codeorder()
1516 freeexps(fs, e1, e2); in codeorder()
1517 e1->u.info = condjump(fs, op, r1, r2, isfloat, 1); in codeorder()
1518 e1->k = VJMP; in codeorder()
1526 static void codeeq (FuncState *fs, BinOpr opr, expdesc *e1, expdesc *e2) { in codeeq() argument
1531 if (e1->k != VNONRELOC) { in codeeq()
1532 lua_assert(e1->k == VK || e1->k == VKINT || e1->k == VKFLT); in codeeq()
1533 swapexps(e1, e2); in codeeq()
1535 r1 = luaK_exp2anyreg(fs, e1); /* 1st expression must be in register */ in codeeq()
1548 freeexps(fs, e1, e2); in codeeq()
1549 e1->u.info = condjump(fs, op, r1, r2, isfloat, (opr == OPR_EQ)); in codeeq()
1550 e1->k = VJMP; in codeeq()
1626 static void codeconcat (FuncState *fs, expdesc *e1, expdesc *e2, int line) { in codeconcat() argument
1630 lua_assert(e1->u.info + 1 == GETARG_A(*ie2)); in codeconcat()
1632 SETARG_A(*ie2, e1->u.info); /* correct first element ('e1') */ in codeconcat()
1636 luaK_codeABC(fs, OP_CONCAT, e1->u.info, 2, 0); /* new concat opcode */ in codeconcat()
1647 expdesc *e1, expdesc *e2, int line) { in luaK_posfix() argument
1649 if (foldbinop(opr) && constfolding(fs, opr + LUA_OPADD, e1, e2)) in luaK_posfix()
1653 lua_assert(e1->t == NO_JUMP); /* list closed by 'luaK_infix' */ in luaK_posfix()
1654 luaK_concat(fs, &e2->f, e1->f); in luaK_posfix()
1655 *e1 = *e2; in luaK_posfix()
1659 lua_assert(e1->f == NO_JUMP); /* list closed by 'luaK_infix' */ in luaK_posfix()
1660 luaK_concat(fs, &e2->t, e1->t); in luaK_posfix()
1661 *e1 = *e2; in luaK_posfix()
1666 codeconcat(fs, e1, e2, line); in luaK_posfix()
1670 codecommutative(fs, opr, e1, e2, line); in luaK_posfix()
1674 if (finishbinexpneg(fs, e1, e2, OP_ADDI, line, TM_SUB)) in luaK_posfix()
1679 codearith(fs, opr, e1, e2, 0, line); in luaK_posfix()
1683 codebitwise(fs, opr, e1, e2, line); in luaK_posfix()
1687 if (isSCint(e1)) { in luaK_posfix()
1688 swapexps(e1, e2); in luaK_posfix()
1689 codebini(fs, OP_SHLI, e1, e2, 1, line, TM_SHL); /* I << r2 */ in luaK_posfix()
1691 else if (finishbinexpneg(fs, e1, e2, OP_SHRI, line, TM_SHL)) { in luaK_posfix()
1695 codebinexpval(fs, OP_SHL, e1, e2, line); in luaK_posfix()
1700 codebini(fs, OP_SHRI, e1, e2, 0, line, TM_SHR); /* r1 >> I */ in luaK_posfix()
1702 codebinexpval(fs, OP_SHR, e1, e2, line); in luaK_posfix()
1706 codeeq(fs, opr, e1, e2); in luaK_posfix()
1711 codeorder(fs, op, e1, e2); in luaK_posfix()
1717 swapexps(e1, e2); in luaK_posfix()
1718 codeorder(fs, op, e1, e2); in luaK_posfix()