diff options
Diffstat (limited to '')
| -rw-r--r-- | lcode.c | 27 |
1 files changed, 14 insertions, 13 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lcode.c,v 2.38 2009/06/15 13:52:08 roberto Exp roberto $ | 2 | ** $Id: lcode.c,v 2.39 2009/06/17 17:49:09 roberto Exp roberto $ |
| 3 | ** Code generator for Lua | 3 | ** Code generator for Lua |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -766,18 +766,19 @@ void luaK_posfix (FuncState *fs, BinOpr op, expdesc *e1, expdesc *e2) { | |||
| 766 | } | 766 | } |
| 767 | break; | 767 | break; |
| 768 | } | 768 | } |
| 769 | case OPR_ADD: codearith(fs, OP_ADD, e1, e2); break; | 769 | case OPR_ADD: case OPR_SUB: case OPR_MUL: case OPR_DIV: |
| 770 | case OPR_SUB: codearith(fs, OP_SUB, e1, e2); break; | 770 | case OPR_MOD: case OPR_POW: { |
| 771 | case OPR_MUL: codearith(fs, OP_MUL, e1, e2); break; | 771 | codearith(fs, op - OPR_ADD + OP_ADD, e1, e2); |
| 772 | case OPR_DIV: codearith(fs, OP_DIV, e1, e2); break; | 772 | break; |
| 773 | case OPR_MOD: codearith(fs, OP_MOD, e1, e2); break; | 773 | } |
| 774 | case OPR_POW: codearith(fs, OP_POW, e1, e2); break; | 774 | case OPR_EQ: case OPR_LT: case OPR_LE: { |
| 775 | case OPR_EQ: codecomp(fs, OP_EQ, 1, e1, e2); break; | 775 | codecomp(fs, op - OPR_EQ + OP_EQ, 1, e1, e2); |
| 776 | case OPR_NE: codecomp(fs, OP_EQ, 0, e1, e2); break; | 776 | break; |
| 777 | case OPR_LT: codecomp(fs, OP_LT, 1, e1, e2); break; | 777 | } |
| 778 | case OPR_LE: codecomp(fs, OP_LE, 1, e1, e2); break; | 778 | case OPR_NE: case OPR_GT: case OPR_GE: { |
| 779 | case OPR_GT: codecomp(fs, OP_LT, 0, e1, e2); break; | 779 | codecomp(fs, op - OPR_NE + OP_EQ, 0, e1, e2); |
| 780 | case OPR_GE: codecomp(fs, OP_LE, 0, e1, e2); break; | 780 | break; |
| 781 | } | ||
| 781 | default: lua_assert(0); | 782 | default: lua_assert(0); |
| 782 | } | 783 | } |
| 783 | } | 784 | } |
