(op opCode, e1, e2 exprDesc, line int)
| 861 | } |
| 862 | |
| 863 | func (f *function) encodeArithmetic(op opCode, e1, e2 exprDesc, line int) exprDesc { |
| 864 | if e, folded := foldConstants(op, e1, e2); folded { |
| 865 | return e |
| 866 | } |
| 867 | o2 := 0 |
| 868 | if op != opUnaryMinus && op != opLength { |
| 869 | e2, o2 = f.expressionToRegisterOrConstant(e2) |
| 870 | } |
| 871 | e1, o1 := f.expressionToRegisterOrConstant(e1) |
| 872 | if o1 > o2 { |
| 873 | f.freeExpression(e1) |
| 874 | f.freeExpression(e2) |
| 875 | } else { |
| 876 | f.freeExpression(e2) |
| 877 | f.freeExpression(e1) |
| 878 | } |
| 879 | e1.info, e1.kind = f.EncodeABC(op, 0, o1, o2), kindRelocatable |
| 880 | f.FixLine(line) |
| 881 | return e1 |
| 882 | } |
| 883 | |
| 884 | func (f *function) Prefix(op int, e exprDesc, line int) exprDesc { |
| 885 | switch op { |
no test coverage detected