aboutsummaryrefslogtreecommitdiff
path: root/lcode.c
diff options
context:
space:
mode:
Diffstat (limited to 'lcode.c')
-rw-r--r--lcode.c172
1 files changed, 86 insertions, 86 deletions
diff --git a/lcode.c b/lcode.c
index 1a5c23f7..de78c52f 100644
--- a/lcode.c
+++ b/lcode.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lcode.c,v 1.8 2000/03/09 13:57:37 roberto Exp roberto $ 2** $Id: lcode.c,v 1.9 2000/03/10 14:38:10 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*/
@@ -32,8 +32,8 @@ static Instruction *previous_instruction (LexState *ls) {
32 if (fs->pc > fs->lasttarget) /* no jumps to current position? */ 32 if (fs->pc > fs->lasttarget) /* no jumps to current position? */
33 return &fs->f->code[fs->pc-1]; /* returns previous instruction */ 33 return &fs->f->code[fs->pc-1]; /* returns previous instruction */
34 else { 34 else {
35 static Instruction dummy = CREATE_0(ENDCODE); 35 static Instruction dummy = CREATE_0(OP_END);
36 return &dummy; /* no optimizations after an `ENDCODE' */ 36 return &dummy; /* no optimizations after an `END' */
37 } 37 }
38} 38}
39 39
@@ -49,10 +49,10 @@ int luaK_primitivecode (LexState *ls, Instruction i) {
49static void luaK_minus (LexState *ls) { 49static void luaK_minus (LexState *ls) {
50 Instruction *previous = previous_instruction(ls); 50 Instruction *previous = previous_instruction(ls);
51 switch(GET_OPCODE(*previous)) { 51 switch(GET_OPCODE(*previous)) {
52 case PUSHINT: SETARG_S(*previous, -GETARG_S(*previous)); return; 52 case OP_PUSHINT: SETARG_S(*previous, -GETARG_S(*previous)); return;
53 case PUSHNUM: SET_OPCODE(*previous, PUSHNEGNUM); return; 53 case OP_PUSHNUM: SET_OPCODE(*previous, OP_PUSHNEGNUM); return;
54 case PUSHNEGNUM: SET_OPCODE(*previous, PUSHNUM); return; 54 case OP_PUSHNEGNUM: SET_OPCODE(*previous, OP_PUSHNUM); return;
55 default: luaK_primitivecode(ls, CREATE_0(MINUSOP)); 55 default: luaK_primitivecode(ls, CREATE_0(OP_MINUS));
56 } 56 }
57} 57}
58 58
@@ -61,8 +61,8 @@ static void luaK_gettable (LexState *ls) {
61 Instruction *previous = previous_instruction(ls); 61 Instruction *previous = previous_instruction(ls);
62 luaK_deltastack(ls, -1); 62 luaK_deltastack(ls, -1);
63 switch(GET_OPCODE(*previous)) { 63 switch(GET_OPCODE(*previous)) {
64 case PUSHSTRING: SET_OPCODE(*previous, GETDOTTED); break; 64 case OP_PUSHSTRING: SET_OPCODE(*previous, OP_GETDOTTED); break;
65 default: luaK_primitivecode(ls, CREATE_0(GETTABLE)); 65 default: luaK_primitivecode(ls, CREATE_0(OP_GETTABLE));
66 } 66 }
67} 67}
68 68
@@ -71,8 +71,8 @@ static void luaK_add (LexState *ls) {
71 Instruction *previous = previous_instruction(ls); 71 Instruction *previous = previous_instruction(ls);
72 luaK_deltastack(ls, -1); 72 luaK_deltastack(ls, -1);
73 switch(GET_OPCODE(*previous)) { 73 switch(GET_OPCODE(*previous)) {
74 case PUSHINT: SET_OPCODE(*previous, ADDI); break; 74 case OP_PUSHINT: SET_OPCODE(*previous, OP_ADDI); break;
75 default: luaK_primitivecode(ls, CREATE_0(ADDOP)); 75 default: luaK_primitivecode(ls, CREATE_0(OP_ADD));
76 } 76 }
77} 77}
78 78
@@ -81,11 +81,11 @@ static void luaK_sub (LexState *ls) {
81 Instruction *previous = previous_instruction(ls); 81 Instruction *previous = previous_instruction(ls);
82 luaK_deltastack(ls, -1); 82 luaK_deltastack(ls, -1);
83 switch(GET_OPCODE(*previous)) { 83 switch(GET_OPCODE(*previous)) {
84 case PUSHINT: 84 case OP_PUSHINT:
85 SET_OPCODE(*previous, ADDI); 85 SET_OPCODE(*previous, OP_ADDI);
86 SETARG_S(*previous, -GETARG_S(*previous)); 86 SETARG_S(*previous, -GETARG_S(*previous));
87 break; 87 break;
88 default: luaK_primitivecode(ls, CREATE_0(SUBOP)); 88 default: luaK_primitivecode(ls, CREATE_0(OP_SUB));
89 } 89 }
90} 90}
91 91
@@ -94,43 +94,43 @@ static void luaK_conc (LexState *ls) {
94 Instruction *previous = previous_instruction(ls); 94 Instruction *previous = previous_instruction(ls);
95 luaK_deltastack(ls, -1); 95 luaK_deltastack(ls, -1);
96 switch(GET_OPCODE(*previous)) { 96 switch(GET_OPCODE(*previous)) {
97 case CONCOP: SETARG_U(*previous, GETARG_U(*previous)+1); break; 97 case OP_CONC: SETARG_U(*previous, GETARG_U(*previous)+1); break;
98 default: luaK_primitivecode(ls, CREATE_U(CONCOP, 2)); 98 default: luaK_primitivecode(ls, CREATE_U(OP_CONC, 2));
99 } 99 }
100} 100}
101 101
102 102
103static void luaK_eq (LexState *ls) { 103static void luaK_eq (LexState *ls) {
104 Instruction *previous = previous_instruction(ls); 104 Instruction *previous = previous_instruction(ls);
105 if (*previous == CREATE_U(PUSHNIL, 1)) { 105 if (*previous == CREATE_U(OP_PUSHNIL, 1)) {
106 *previous = CREATE_0(NOTOP); 106 *previous = CREATE_0(OP_NOT);
107 luaK_deltastack(ls, -1); /* undo effect of PUSHNIL */ 107 luaK_deltastack(ls, -1); /* undo effect of PUSHNIL */
108 } 108 }
109 else 109 else
110 luaK_S(ls, IFEQJMP, 0, -2); 110 luaK_S(ls, OP_IFEQJMP, 0, -2);
111} 111}
112 112
113 113
114static void luaK_neq (LexState *ls) { 114static void luaK_neq (LexState *ls) {
115 Instruction *previous = previous_instruction(ls); 115 Instruction *previous = previous_instruction(ls);
116 if (*previous == CREATE_U(PUSHNIL, 1)) { 116 if (*previous == CREATE_U(OP_PUSHNIL, 1)) {
117 ls->fs->pc--; /* remove PUSHNIL */ 117 ls->fs->pc--; /* remove PUSHNIL */
118 luaK_deltastack(ls, -1); /* undo effect of PUSHNIL */ 118 luaK_deltastack(ls, -1); /* undo effect of PUSHNIL */
119 } 119 }
120 else 120 else
121 luaK_S(ls, IFNEQJMP, 0, -2); 121 luaK_S(ls, OP_IFNEQJMP, 0, -2);
122} 122}
123 123
124 124
125void luaK_retcode (LexState *ls, int nlocals, int nexps) { 125void luaK_retcode (LexState *ls, int nlocals, int nexps) {
126 Instruction *previous = previous_instruction(ls); 126 Instruction *previous = previous_instruction(ls);
127 if (nexps > 0 && GET_OPCODE(*previous) == CALL) { 127 if (nexps > 0 && GET_OPCODE(*previous) == OP_CALL) {
128 LUA_ASSERT(ls->L, GETARG_B(*previous) == MULT_RET, "call should be open"); 128 LUA_ASSERT(ls->L, GETARG_B(*previous) == MULT_RET, "call should be open");
129 SET_OPCODE(*previous, TAILCALL); 129 SET_OPCODE(*previous, OP_TAILCALL);
130 SETARG_B(*previous, nlocals); 130 SETARG_B(*previous, nlocals);
131 } 131 }
132 else 132 else
133 luaK_primitivecode(ls, CREATE_U(RETCODE, nlocals)); 133 luaK_primitivecode(ls, CREATE_U(OP_RETURN, nlocals));
134} 134}
135 135
136 136
@@ -138,8 +138,8 @@ static void luaK_pushnil (LexState *ls, int n) {
138 Instruction *previous = previous_instruction(ls); 138 Instruction *previous = previous_instruction(ls);
139 luaK_deltastack(ls, n); 139 luaK_deltastack(ls, n);
140 switch(GET_OPCODE(*previous)) { 140 switch(GET_OPCODE(*previous)) {
141 case PUSHNIL: SETARG_U(*previous, GETARG_U(*previous)+n); break; 141 case OP_PUSHNIL: SETARG_U(*previous, GETARG_U(*previous)+n); break;
142 default: luaK_primitivecode(ls, CREATE_U(PUSHNIL, n)); 142 default: luaK_primitivecode(ls, CREATE_U(OP_PUSHNIL, n));
143 } 143 }
144} 144}
145 145
@@ -181,7 +181,7 @@ void luaK_deltastack (LexState *ls, int delta) {
181 181
182 182
183void luaK_kstr (LexState *ls, int c) { 183void luaK_kstr (LexState *ls, int c) {
184 luaK_U(ls, PUSHSTRING, c, 1); 184 luaK_U(ls, OP_PUSHSTRING, c, 1);
185} 185}
186 186
187 187
@@ -189,32 +189,32 @@ void luaK_kstr (LexState *ls, int c) {
189#define LOOKBACKNUMS 20 /* arbitrary limit */ 189#define LOOKBACKNUMS 20 /* arbitrary limit */
190#endif 190#endif
191 191
192static int real_constant (LexState *ls, real r) { 192static int real_constant (LexState *ls, Number r) {
193 /* check whether `r' has appeared within the last LOOKBACKNUMS entries */ 193 /* check whether `r' has appeared within the last LOOKBACKNUMS entries */
194 TProtoFunc *f = ls->fs->f; 194 Proto *f = ls->fs->f;
195 int c = f->nknum; 195 int c = f->nknum;
196 int lim = c < LOOKBACKNUMS ? 0 : c-LOOKBACKNUMS; 196 int lim = c < LOOKBACKNUMS ? 0 : c-LOOKBACKNUMS;
197 while (--c >= lim) 197 while (--c >= lim)
198 if (f->knum[c] == r) return c; 198 if (f->knum[c] == r) return c;
199 /* not found; create a new entry */ 199 /* not found; create a new entry */
200 luaM_growvector(ls->L, f->knum, f->nknum, 1, real, constantEM, MAXARG_U); 200 luaM_growvector(ls->L, f->knum, f->nknum, 1, Number, constantEM, MAXARG_U);
201 c = f->nknum++; 201 c = f->nknum++;
202 f->knum[c] = r; 202 f->knum[c] = r;
203 return c; 203 return c;
204} 204}
205 205
206 206
207void luaK_number (LexState *ls, real f) { 207void luaK_number (LexState *ls, Number f) {
208 if (f <= (real)MAXARG_S && (int)f == f) 208 if (f <= (Number)MAXARG_S && (int)f == f)
209 luaK_S(ls, PUSHINT, (int)f, 1); /* f has a short integer value */ 209 luaK_S(ls, OP_PUSHINT, (int)f, 1); /* f has a short integer value */
210 else 210 else
211 luaK_U(ls, PUSHNUM, real_constant(ls, f), 1); 211 luaK_U(ls, OP_PUSHNUM, real_constant(ls, f), 1);
212} 212}
213 213
214 214
215void luaK_adjuststack (LexState *ls, int n) { 215void luaK_adjuststack (LexState *ls, int n) {
216 if (n > 0) 216 if (n > 0)
217 luaK_U(ls, POP, n, -n); 217 luaK_U(ls, OP_POP, n, -n);
218 else if (n < 0) 218 else if (n < 0)
219 luaK_pushnil(ls, -n); 219 luaK_pushnil(ls, -n);
220} 220}
@@ -223,7 +223,7 @@ void luaK_adjuststack (LexState *ls, int n) {
223int luaK_lastisopen (LexState *ls) { 223int luaK_lastisopen (LexState *ls) {
224 /* check whether last instruction is an (open) function call */ 224 /* check whether last instruction is an (open) function call */
225 Instruction *i = previous_instruction(ls); 225 Instruction *i = previous_instruction(ls);
226 if (GET_OPCODE(*i) == CALL) { 226 if (GET_OPCODE(*i) == OP_CALL) {
227 LUA_ASSERT(ls->L, GETARG_B(*i) == MULT_RET, "call should be open"); 227 LUA_ASSERT(ls->L, GETARG_B(*i) == MULT_RET, "call should be open");
228 return 1; 228 return 1;
229 } 229 }
@@ -233,7 +233,7 @@ int luaK_lastisopen (LexState *ls) {
233 233
234void luaK_setcallreturns (LexState *ls, int nresults) { 234void luaK_setcallreturns (LexState *ls, int nresults) {
235 Instruction *i = previous_instruction(ls); 235 Instruction *i = previous_instruction(ls);
236 if (GET_OPCODE(*i) == CALL) { /* expression is a function call? */ 236 if (GET_OPCODE(*i) == OP_CALL) { /* expression is a function call? */
237 LUA_ASSERT(ls->L, GETARG_B(*i) == MULT_RET, "call should be open"); 237 LUA_ASSERT(ls->L, GETARG_B(*i) == MULT_RET, "call should be open");
238 SETARG_B(*i, nresults); /* set nresults */ 238 SETARG_B(*i, nresults); /* set nresults */
239 luaK_deltastack(ls, nresults); /* push results */ 239 luaK_deltastack(ls, nresults); /* push results */
@@ -249,10 +249,10 @@ static void assertglobal (LexState *ls, int index) {
249static int discharge (LexState *ls, expdesc *var) { 249static int discharge (LexState *ls, expdesc *var) {
250 switch (var->k) { 250 switch (var->k) {
251 case VLOCAL: 251 case VLOCAL:
252 luaK_U(ls, PUSHLOCAL, var->u.index, 1); 252 luaK_U(ls, OP_PUSHLOCAL, var->u.index, 1);
253 break; 253 break;
254 case VGLOBAL: 254 case VGLOBAL:
255 luaK_U(ls, GETGLOBAL, var->u.index, 1); 255 luaK_U(ls, OP_GETGLOBAL, var->u.index, 1);
256 assertglobal(ls, var->u.index); /* make sure that there is a global */ 256 assertglobal(ls, var->u.index); /* make sure that there is a global */
257 break; 257 break;
258 case VINDEXED: 258 case VINDEXED:
@@ -278,14 +278,14 @@ static void discharge1 (LexState *ls, expdesc *var) {
278void luaK_storevar (LexState *ls, const expdesc *var) { 278void luaK_storevar (LexState *ls, const expdesc *var) {
279 switch (var->k) { 279 switch (var->k) {
280 case VLOCAL: 280 case VLOCAL:
281 luaK_U(ls, SETLOCAL, var->u.index, -1); 281 luaK_U(ls, OP_SETLOCAL, var->u.index, -1);
282 break; 282 break;
283 case VGLOBAL: 283 case VGLOBAL:
284 luaK_U(ls, SETGLOBAL, var->u.index, -1); 284 luaK_U(ls, OP_SETGLOBAL, var->u.index, -1);
285 assertglobal(ls, var->u.index); /* make sure that there is a global */ 285 assertglobal(ls, var->u.index); /* make sure that there is a global */
286 break; 286 break;
287 case VINDEXED: 287 case VINDEXED:
288 luaK_0(ls, SETTABLEPOP, -3); 288 luaK_0(ls, OP_SETTABLEPOP, -3);
289 break; 289 break;
290 default: 290 default:
291 LUA_INTERNALERROR(ls->L, "invalid var kind to store"); 291 LUA_INTERNALERROR(ls->L, "invalid var kind to store");
@@ -295,17 +295,17 @@ void luaK_storevar (LexState *ls, const expdesc *var) {
295 295
296static OpCode invertjump (OpCode op) { 296static OpCode invertjump (OpCode op) {
297 switch (op) { 297 switch (op) {
298 case IFNEQJMP: return IFEQJMP; 298 case OP_IFNEQJMP: return OP_IFEQJMP;
299 case IFEQJMP: return IFNEQJMP; 299 case OP_IFEQJMP: return OP_IFNEQJMP;
300 case IFLTJMP: return IFGEJMP; 300 case OP_IFLTJMP: return OP_IFGEJMP;
301 case IFLEJMP: return IFGTJMP; 301 case OP_IFLEJMP: return OP_IFGTJMP;
302 case IFGTJMP: return IFLEJMP; 302 case OP_IFGTJMP: return OP_IFLEJMP;
303 case IFGEJMP: return IFLTJMP; 303 case OP_IFGEJMP: return OP_IFLTJMP;
304 case IFTJMP: case ONTJMP: return IFFJMP; 304 case OP_IFTJMP: case OP_ONTJMP: return OP_IFFJMP;
305 case IFFJMP: case ONFJMP: return IFTJMP; 305 case OP_IFFJMP: case OP_ONFJMP: return OP_IFTJMP;
306 default: 306 default:
307 LUA_INTERNALERROR(NULL, "invalid jump instruction"); 307 LUA_INTERNALERROR(NULL, "invalid jump instruction");
308 return ENDCODE; /* to avoid warnings */ 308 return OP_END; /* to avoid warnings */
309 } 309 }
310} 310}
311 311
@@ -313,7 +313,7 @@ static OpCode invertjump (OpCode op) {
313static void luaK_jump (LexState *ls, OpCode jump) { 313static void luaK_jump (LexState *ls, OpCode jump) {
314 Instruction *previous = previous_instruction(ls); 314 Instruction *previous = previous_instruction(ls);
315 luaK_deltastack(ls, -1); 315 luaK_deltastack(ls, -1);
316 if (*previous == CREATE_0(NOTOP)) 316 if (*previous == CREATE_0(OP_NOT))
317 *previous = CREATE_S(invertjump(jump), 0); 317 *previous = CREATE_S(invertjump(jump), 0);
318 else 318 else
319 luaK_primitivecode(ls, CREATE_S(jump, 0)); 319 luaK_primitivecode(ls, CREATE_S(jump, 0));
@@ -342,10 +342,10 @@ static void luaK_patchlistaux (LexState *ls, int list, int target,
342 SETARG_S(*i, special_target-(list+1)); 342 SETARG_S(*i, special_target-(list+1));
343 else { 343 else {
344 SETARG_S(*i, target-(list+1)); /* do the patch */ 344 SETARG_S(*i, target-(list+1)); /* do the patch */
345 if (op == ONTJMP) /* remove eventual values */ 345 if (op == OP_ONTJMP) /* remove eventual values */
346 SET_OPCODE(*i, IFTJMP); 346 SET_OPCODE(*i, OP_IFTJMP);
347 else if (op == ONFJMP) 347 else if (op == OP_ONFJMP)
348 SET_OPCODE(*i, IFFJMP); 348 SET_OPCODE(*i, OP_IFFJMP);
349 } 349 }
350 if (next == 0) return; 350 if (next == 0) return;
351 list += next+1; 351 list += next+1;
@@ -355,7 +355,7 @@ static void luaK_patchlistaux (LexState *ls, int list, int target,
355 355
356 356
357void luaK_patchlist (LexState *ls, int list, int target) { 357void luaK_patchlist (LexState *ls, int list, int target) {
358 luaK_patchlistaux(ls, list, target, ENDCODE, 0); 358 luaK_patchlistaux(ls, list, target, OP_END, 0);
359} 359}
360 360
361 361
@@ -399,7 +399,7 @@ void luaK_goiftrue (LexState *ls, expdesc *v, int keepvalue) {
399 if (ISJUMP(GET_OPCODE(*previous))) 399 if (ISJUMP(GET_OPCODE(*previous)))
400 SET_OPCODE(*previous, invertjump(GET_OPCODE(*previous))); 400 SET_OPCODE(*previous, invertjump(GET_OPCODE(*previous)));
401 else { 401 else {
402 OpCode jump = keepvalue ? ONFJMP : IFFJMP; 402 OpCode jump = keepvalue ? OP_ONFJMP : OP_IFFJMP;
403 luaK_jump(ls, jump); 403 luaK_jump(ls, jump);
404 } 404 }
405 insert_last(fs, &v->u.l.f); 405 insert_last(fs, &v->u.l.f);
@@ -414,7 +414,7 @@ void luaK_goiffalse (LexState *ls, expdesc *v, int keepvalue) {
414 discharge1(ls, v); 414 discharge1(ls, v);
415 previous = fs->f->code[fs->pc-1]; 415 previous = fs->f->code[fs->pc-1];
416 if (!ISJUMP(GET_OPCODE(previous))) { 416 if (!ISJUMP(GET_OPCODE(previous))) {
417 OpCode jump = keepvalue ? ONTJMP : IFTJMP; 417 OpCode jump = keepvalue ? OP_ONTJMP : OP_IFTJMP;
418 luaK_jump(ls, jump); 418 luaK_jump(ls, jump);
419 } 419 }
420 insert_last(fs, &v->u.l.t); 420 insert_last(fs, &v->u.l.t);
@@ -440,28 +440,28 @@ void luaK_tostack (LexState *ls, expdesc *v, int onlyone) {
440 int final; /* position after whole expression */ 440 int final; /* position after whole expression */
441 if (ISJUMP(previous)) { 441 if (ISJUMP(previous)) {
442 insert_last(fs, &v->u.l.t); /* put `previous' in true list */ 442 insert_last(fs, &v->u.l.t); /* put `previous' in true list */
443 p_nil = luaK_0(ls, PUSHNILJMP, 0); 443 p_nil = luaK_0(ls, OP_PUSHNILJMP, 0);
444 p_1 = luaK_S(ls, PUSHINT, 1, 1); 444 p_1 = luaK_S(ls, OP_PUSHINT, 1, 1);
445 } 445 }
446 else { /* still may need a PUSHNIL or a PUSHINT */ 446 else { /* still may need a PUSHNIL or a PUSHINT */
447 int need_nil = need_value(fs, v->u.l.f, ONFJMP); 447 int need_nil = need_value(fs, v->u.l.f, OP_ONFJMP);
448 int need_1 = need_value(fs, v->u.l.t, ONTJMP); 448 int need_1 = need_value(fs, v->u.l.t, OP_ONTJMP);
449 if (need_nil && need_1) { 449 if (need_nil && need_1) {
450 luaK_S(ls, JMP, 2, 0); /* skip both pushes */ 450 luaK_S(ls, OP_JMP, 2, 0); /* skip both pushes */
451 p_nil = luaK_0(ls, PUSHNILJMP, 0); 451 p_nil = luaK_0(ls, OP_PUSHNILJMP, 0);
452 p_1 = luaK_S(ls, PUSHINT, 1, 0); 452 p_1 = luaK_S(ls, OP_PUSHINT, 1, 0);
453 } 453 }
454 else if (need_nil || need_1) { 454 else if (need_nil || need_1) {
455 luaK_S(ls, JMP, 1, 0); /* skip one push */ 455 luaK_S(ls, OP_JMP, 1, 0); /* skip one push */
456 if (need_nil) 456 if (need_nil)
457 p_nil = luaK_U(ls, PUSHNIL, 1, 0); 457 p_nil = luaK_U(ls, OP_PUSHNIL, 1, 0);
458 else /* need_1 */ 458 else /* need_1 */
459 p_1 = luaK_S(ls, PUSHINT, 1, 0); 459 p_1 = luaK_S(ls, OP_PUSHINT, 1, 0);
460 } 460 }
461 } 461 }
462 final = luaK_getlabel(ls); 462 final = luaK_getlabel(ls);
463 luaK_patchlistaux(ls, v->u.l.f, p_nil, ONFJMP, final); 463 luaK_patchlistaux(ls, v->u.l.f, p_nil, OP_ONFJMP, final);
464 luaK_patchlistaux(ls, v->u.l.t, p_1, ONTJMP, final); 464 luaK_patchlistaux(ls, v->u.l.t, p_1, OP_ONTJMP, final);
465 v->u.l.f = v->u.l.t = 0; 465 v->u.l.f = v->u.l.t = 0;
466 } 466 }
467 } 467 }
@@ -481,7 +481,7 @@ void luaK_prefix (LexState *ls, int op, expdesc *v) {
481 if (ISJUMP(GET_OPCODE(*previous))) 481 if (ISJUMP(GET_OPCODE(*previous)))
482 SET_OPCODE(*previous, invertjump(GET_OPCODE(*previous))); 482 SET_OPCODE(*previous, invertjump(GET_OPCODE(*previous)));
483 else 483 else
484 luaK_0(ls, NOTOP, 0); 484 luaK_0(ls, OP_NOT, 0);
485 /* interchange true and false lists */ 485 /* interchange true and false lists */
486 { int temp = v->u.l.f; v->u.l.f = v->u.l.t; v->u.l.t = temp; } 486 { int temp = v->u.l.f; v->u.l.f = v->u.l.t; v->u.l.t = temp; }
487 } 487 }
@@ -489,9 +489,9 @@ void luaK_prefix (LexState *ls, int op, expdesc *v) {
489 489
490 490
491void luaK_infix (LexState *ls, int op, expdesc *v) { 491void luaK_infix (LexState *ls, int op, expdesc *v) {
492 if (op == AND) 492 if (op == TK_AND)
493 luaK_goiftrue(ls, v, 1); 493 luaK_goiftrue(ls, v, 1);
494 else if (op == OR) 494 else if (op == TK_OR)
495 luaK_goiffalse(ls, v, 1); 495 luaK_goiffalse(ls, v, 1);
496 else 496 else
497 luaK_tostack(ls, v, 1); /* all other binary operators need a value */ 497 luaK_tostack(ls, v, 1); /* all other binary operators need a value */
@@ -499,13 +499,13 @@ void luaK_infix (LexState *ls, int op, expdesc *v) {
499 499
500 500
501void luaK_posfix (LexState *ls, int op, expdesc *v1, expdesc *v2) { 501void luaK_posfix (LexState *ls, int op, expdesc *v1, expdesc *v2) {
502 if (op == AND) { 502 if (op == TK_AND) {
503 LUA_ASSERT(ls->L, v1->u.l.t == 0, "list must be closed"); 503 LUA_ASSERT(ls->L, v1->u.l.t == 0, "list must be closed");
504 discharge1(ls, v2); 504 discharge1(ls, v2);
505 v1->u.l.t = v2->u.l.t; 505 v1->u.l.t = v2->u.l.t;
506 concatlists(ls, &v1->u.l.f, v2->u.l.f); 506 concatlists(ls, &v1->u.l.f, v2->u.l.f);
507 } 507 }
508 else if (op == OR) { 508 else if (op == TK_OR) {
509 LUA_ASSERT(ls->L, v1->u.l.f == 0, "list must be closed"); 509 LUA_ASSERT(ls->L, v1->u.l.f == 0, "list must be closed");
510 discharge1(ls, v2); 510 discharge1(ls, v2);
511 v1->u.l.f = v2->u.l.f; 511 v1->u.l.f = v2->u.l.f;
@@ -516,16 +516,16 @@ void luaK_posfix (LexState *ls, int op, expdesc *v1, expdesc *v2) {
516 switch (op) { 516 switch (op) {
517 case '+': luaK_add(ls); break; 517 case '+': luaK_add(ls); break;
518 case '-': luaK_sub(ls); break; 518 case '-': luaK_sub(ls); break;
519 case '*': luaK_0(ls, MULTOP, -1); break; 519 case '*': luaK_0(ls, OP_MULT, -1); break;
520 case '/': luaK_0(ls, DIVOP, -1); break; 520 case '/': luaK_0(ls, OP_DIV, -1); break;
521 case '^': luaK_0(ls, POWOP, -1); break; 521 case '^': luaK_0(ls, OP_POW, -1); break;
522 case CONC: luaK_conc(ls); break; 522 case TK_CONC: luaK_conc(ls); break;
523 case EQ: luaK_eq(ls); break; 523 case TK_EQ: luaK_eq(ls); break;
524 case NE: luaK_neq(ls); break; 524 case TK_NE: luaK_neq(ls); break;
525 case '>': luaK_S(ls, IFGTJMP, 0, -2); break; 525 case '>': luaK_S(ls, OP_IFGTJMP, 0, -2); break;
526 case '<': luaK_S(ls, IFLTJMP, 0, -2); break; 526 case '<': luaK_S(ls, OP_IFLTJMP, 0, -2); break;
527 case GE: luaK_S(ls, IFGEJMP, 0, -2); break; 527 case TK_GE: luaK_S(ls, OP_IFGEJMP, 0, -2); break;
528 case LE: luaK_S(ls, IFLEJMP, 0, -2); break; 528 case TK_LE: luaK_S(ls, OP_IFLEJMP, 0, -2); break;
529 } 529 }
530 } 530 }
531} 531}