(e exprDesc)
| 595 | } |
| 596 | |
| 597 | func (f *function) DischargeVariables(e exprDesc) exprDesc { |
| 598 | switch e.kind { |
| 599 | case kindLocal: |
| 600 | e.kind = kindNonRelocatable |
| 601 | case kindUpValue: |
| 602 | e.kind, e.info = kindRelocatable, f.EncodeABC(opGetUpValue, 0, e.info, 0) |
| 603 | case kindIndexed: |
| 604 | if f.freeRegister(e.index); e.tableType == kindLocal { |
| 605 | f.freeRegister(e.table) |
| 606 | e.kind, e.info = kindRelocatable, f.EncodeABC(opGetTable, 0, e.table, e.index) |
| 607 | } else { |
| 608 | e.kind, e.info = kindRelocatable, f.EncodeABC(opGetTableUp, 0, e.table, e.index) |
| 609 | } |
| 610 | case kindVarArg, kindCall: |
| 611 | e = f.SetReturn(e) |
| 612 | } |
| 613 | return e |
| 614 | } |
| 615 | |
| 616 | func (f *function) dischargeToRegister(e exprDesc, r int) exprDesc { |
| 617 | switch e = f.DischargeVariables(e); e.kind { |
no test coverage detected