(e exprDesc)
| 816 | } |
| 817 | |
| 818 | func (f *function) encodeNot(e exprDesc) exprDesc { |
| 819 | switch e = f.DischargeVariables(e); e.kind { |
| 820 | case kindNil, kindFalse: |
| 821 | e.kind = kindTrue |
| 822 | case kindConstant, kindNumber, kindTrue: |
| 823 | e.kind = kindFalse |
| 824 | case kindJump: |
| 825 | f.invertJump(e.info) |
| 826 | case kindRelocatable, kindNonRelocatable: |
| 827 | e = f.dischargeToAnyRegister(e) |
| 828 | f.freeExpression(e) |
| 829 | e.info, e.kind = f.EncodeABC(opNot, 0, e.info, 0), kindRelocatable |
| 830 | default: |
| 831 | f.unreachable() |
| 832 | } |
| 833 | e.f, e.t = e.t, e.f |
| 834 | f.removeValues(e.f) |
| 835 | f.removeValues(e.t) |
| 836 | return e |
| 837 | } |
| 838 | |
| 839 | func (f *function) Indexed(t, k exprDesc) (r exprDesc) { |
| 840 | f.assert(!t.hasJumps()) |
no test coverage detected