| 617 | |
| 618 | |
| 619 | void luaK_goiftrue (FuncState *fs, expdesc *e) { |
| 620 | int pc; /* pc of last jump */ |
| 621 | luaK_dischargevars(fs, e); |
| 622 | switch (e->k) { |
| 623 | case VJMP: { |
| 624 | invertjump(fs, e); |
| 625 | pc = e->u.info; |
| 626 | break; |
| 627 | } |
| 628 | case VK: case VKNUM: case VTRUE: { |
| 629 | pc = NO_JUMP; /* always true; do nothing */ |
| 630 | break; |
| 631 | } |
| 632 | default: { |
| 633 | pc = jumponcond(fs, e, 0); |
| 634 | break; |
| 635 | } |
| 636 | } |
| 637 | luaK_concat(fs, &e->f, pc); /* insert last jump in `f' list */ |
| 638 | luaK_patchtohere(fs, e->t); |
| 639 | e->t = NO_JUMP; |
| 640 | } |
| 641 | |
| 642 | |
| 643 | void luaK_goiffalse (FuncState *fs, expdesc *e) { |