aboutsummaryrefslogtreecommitdiff
path: root/lvm.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1997-11-21 17:00:46 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1997-11-21 17:00:46 -0200
commitaccd7bc25355be4350db6d117515c672121a67f2 (patch)
treee351b89ca86b67a3c60874c230626a13517524b8 /lvm.c
parent6153200bc25bd99f9d3d25d7caa486b03b6535d5 (diff)
downloadlua-accd7bc25355be4350db6d117515c672121a67f2.tar.gz
lua-accd7bc25355be4350db6d117515c672121a67f2.tar.bz2
lua-accd7bc25355be4350db6d117515c672121a67f2.zip
small modifications (format, small optimizations, etc)
Diffstat (limited to 'lvm.c')
-rw-r--r--lvm.c210
1 files changed, 108 insertions, 102 deletions
diff --git a/lvm.c b/lvm.c
index 9e4aa8e0..0b6f68fa 100644
--- a/lvm.c
+++ b/lvm.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lvm.c,v 1.13 1997/10/27 16:14:37 roberto Exp roberto $ 2** $Id: lvm.c,v 1.14 1997/11/19 17:29:23 roberto Exp roberto $
3** Lua virtual machine 3** Lua virtual machine
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -79,12 +79,13 @@ int luaV_tostring (TObject *obj)
79 79
80void luaV_closure (int nelems) 80void luaV_closure (int nelems)
81{ 81{
82 struct Stack *S = &L->stack;
82 Closure *c = luaF_newclosure(nelems); 83 Closure *c = luaF_newclosure(nelems);
83 c->consts[0] = *(L->stack.top-1); 84 c->consts[0] = *(S->top-1);
84 memcpy(&c->consts[1], L->stack.top-(nelems+1), nelems*sizeof(TObject)); 85 memcpy(&c->consts[1], S->top-(nelems+1), nelems*sizeof(TObject));
85 L->stack.top -= nelems; 86 S->top -= nelems;
86 ttype(L->stack.top-1) = LUA_T_FUNCTION; 87 ttype(S->top-1) = LUA_T_FUNCTION;
87 (L->stack.top-1)->value.cl = c; 88 (S->top-1)->value.cl = c;
88} 89}
89 90
90 91
@@ -94,23 +95,24 @@ void luaV_closure (int nelems)
94*/ 95*/
95void luaV_gettable (void) 96void luaV_gettable (void)
96{ 97{
98 struct Stack *S = &L->stack;
97 TObject *im; 99 TObject *im;
98 if (ttype(L->stack.top-2) != LUA_T_ARRAY) /* not a table, get "gettable" method */ 100 if (ttype(S->top-2) != LUA_T_ARRAY) /* not a table, get "gettable" method */
99 im = luaT_getimbyObj(L->stack.top-2, IM_GETTABLE); 101 im = luaT_getimbyObj(S->top-2, IM_GETTABLE);
100 else { /* object is a table... */ 102 else { /* object is a table... */
101 int tg = (L->stack.top-2)->value.a->htag; 103 int tg = (S->top-2)->value.a->htag;
102 im = luaT_getim(tg, IM_GETTABLE); 104 im = luaT_getim(tg, IM_GETTABLE);
103 if (ttype(im) == LUA_T_NIL) { /* and does not have a "gettable" method */ 105 if (ttype(im) == LUA_T_NIL) { /* and does not have a "gettable" method */
104 TObject *h = luaH_get(avalue(L->stack.top-2), L->stack.top-1); 106 TObject *h = luaH_get(avalue(S->top-2), S->top-1);
105 if (h != NULL && ttype(h) != LUA_T_NIL) { 107 if (h != NULL && ttype(h) != LUA_T_NIL) {
106 --L->stack.top; 108 --S->top;
107 *(L->stack.top-1) = *h; 109 *(S->top-1) = *h;
108 } 110 }
109 else if (ttype(im=luaT_getim(tg, IM_INDEX)) != LUA_T_NIL) 111 else if (ttype(im=luaT_getim(tg, IM_INDEX)) != LUA_T_NIL)
110 luaD_callTM(im, 2, 1); 112 luaD_callTM(im, 2, 1);
111 else { 113 else {
112 --L->stack.top; 114 --S->top;
113 ttype(L->stack.top-1) = LUA_T_NIL; 115 ttype(S->top-1) = LUA_T_NIL;
114 } 116 }
115 return; 117 return;
116 } 118 }
@@ -125,26 +127,27 @@ void luaV_gettable (void)
125 127
126 128
127/* 129/*
128** Function to store indexed based on values at the L->stack.top 130** Function to store indexed based on values at the stack.top
129** mode = 0: raw store (without internal methods) 131** mode = 0: raw store (without internal methods)
130** mode = 1: normal store (with internal methods) 132** mode = 1: normal store (with internal methods)
131** mode = 2: "deep L->stack.stack" store (with internal methods) 133** mode = 2: "deep L->stack.stack" store (with internal methods)
132*/ 134*/
133void luaV_settable (TObject *t, int mode) 135void luaV_settable (TObject *t, int mode)
134{ 136{
137 struct Stack *S = &L->stack;
135 TObject *im = (mode == 0) ? NULL : luaT_getimbyObj(t, IM_SETTABLE); 138 TObject *im = (mode == 0) ? NULL : luaT_getimbyObj(t, IM_SETTABLE);
136 if (ttype(t) == LUA_T_ARRAY && (im == NULL || ttype(im) == LUA_T_NIL)) { 139 if (ttype(t) == LUA_T_ARRAY && (im == NULL || ttype(im) == LUA_T_NIL)) {
137 TObject *h = luaH_set(avalue(t), t+1); 140 TObject *h = luaH_set(avalue(t), t+1);
138 *h = *(L->stack.top-1); 141 *h = *(S->top-1);
139 L->stack.top -= (mode == 2) ? 1 : 3; 142 S->top -= (mode == 2) ? 1 : 3;
140 } 143 }
141 else { /* object is not a table, and/or has a specific "settable" method */ 144 else { /* object is not a table, and/or has a specific "settable" method */
142 if (im && ttype(im) != LUA_T_NIL) { 145 if (im && ttype(im) != LUA_T_NIL) {
143 if (mode == 2) { 146 if (mode == 2) {
144 *(L->stack.top+1) = *(L->stack.top-1); 147 *(S->top+1) = *(L->stack.top-1);
145 *(L->stack.top) = *(t+1); 148 *(S->top) = *(t+1);
146 *(L->stack.top-1) = *t; 149 *(S->top-1) = *t;
147 L->stack.top += 2; /* WARNING: caller must assure stack space */ 150 S->top += 2; /* WARNING: caller must assure stack space */
148 } 151 }
149 luaD_callTM(im, 3, 0); 152 luaD_callTM(im, 3, 0);
150 } 153 }
@@ -163,10 +166,11 @@ void luaV_getglobal (TaggedString *ts)
163 *L->stack.top++ = *value; 166 *L->stack.top++ = *value;
164 } 167 }
165 else { 168 else {
166 ttype(L->stack.top) = LUA_T_STRING; 169 struct Stack *S = &L->stack;
167 tsvalue(L->stack.top) = ts; 170 ttype(S->top) = LUA_T_STRING;
168 L->stack.top++; 171 tsvalue(S->top) = ts;
169 *L->stack.top++ = *value; 172 S->top++;
173 *S->top++ = *value;
170 luaD_callTM(im, 2, 1); 174 luaD_callTM(im, 2, 1);
171 } 175 }
172} 176}
@@ -180,11 +184,12 @@ void luaV_setglobal (TaggedString *ts)
180 luaS_rawsetglobal(ts, --L->stack.top); 184 luaS_rawsetglobal(ts, --L->stack.top);
181 else { 185 else {
182 /* WARNING: caller must assure stack space */ 186 /* WARNING: caller must assure stack space */
183 TObject newvalue = *(L->stack.top-1); 187 struct Stack *S = &L->stack;
184 ttype(L->stack.top-1) = LUA_T_STRING; 188 TObject newvalue = *(S->top-1);
185 tsvalue(L->stack.top-1) = ts; 189 ttype(S->top-1) = LUA_T_STRING;
186 *L->stack.top++ = *oldvalue; 190 tsvalue(S->top-1) = ts;
187 *L->stack.top++ = newvalue; 191 *S->top++ = *oldvalue;
192 *S->top++ = newvalue;
188 luaD_callTM(im, 3, 0); 193 luaD_callTM(im, 3, 0);
189 } 194 }
190} 195}
@@ -215,8 +220,9 @@ static void call_arith (IMS event)
215static void comparison (lua_Type ttype_less, lua_Type ttype_equal, 220static void comparison (lua_Type ttype_less, lua_Type ttype_equal,
216 lua_Type ttype_great, IMS op) 221 lua_Type ttype_great, IMS op)
217{ 222{
218 TObject *l = L->stack.top-2; 223 struct Stack *S = &L->stack;
219 TObject *r = L->stack.top-1; 224 TObject *l = S->top-2;
225 TObject *r = S->top-1;
220 int result; 226 int result;
221 if (ttype(l) == LUA_T_NUMBER && ttype(r) == LUA_T_NUMBER) 227 if (ttype(l) == LUA_T_NUMBER && ttype(r) == LUA_T_NUMBER)
222 result = (nvalue(l) < nvalue(r)) ? -1 : (nvalue(l) == nvalue(r)) ? 0 : 1; 228 result = (nvalue(l) < nvalue(r)) ? -1 : (nvalue(l) == nvalue(r)) ? 0 : 1;
@@ -226,9 +232,9 @@ static void comparison (lua_Type ttype_less, lua_Type ttype_equal,
226 call_binTM(op, "unexpected type at comparison"); 232 call_binTM(op, "unexpected type at comparison");
227 return; 233 return;
228 } 234 }
229 L->stack.top--; 235 S->top--;
230 nvalue(L->stack.top-1) = 1; 236 nvalue(S->top-1) = 1;
231 ttype(L->stack.top-1) = (result < 0) ? ttype_less : 237 ttype(S->top-1) = (result < 0) ? ttype_less :
232 (result == 0) ? ttype_equal : ttype_great; 238 (result == 0) ? ttype_equal : ttype_great;
233} 239}
234 240
@@ -275,7 +281,7 @@ static void adjust_varargs (StkId first_extra_arg)
275*/ 281*/
276StkId luaV_execute (Closure *cl, StkId base) 282StkId luaV_execute (Closure *cl, StkId base)
277{ 283{
278 LState *LL = L; /* to optimize */ 284 struct Stack *S = &L->stack; /* to optimize */
279 Byte *pc = cl->consts[0].value.tf->code; 285 Byte *pc = cl->consts[0].value.tf->code;
280 TObject *consts = cl->consts[0].value.tf->consts; 286 TObject *consts = cl->consts[0].value.tf->consts;
281 if (lua_callhook) 287 if (lua_callhook)
@@ -286,13 +292,13 @@ StkId luaV_execute (Closure *cl, StkId base)
286 switch ((OpCode)(aux = *pc++)) { 292 switch ((OpCode)(aux = *pc++)) {
287 293
288 case PUSHNIL0: 294 case PUSHNIL0:
289 ttype(LL->stack.top++) = LUA_T_NIL; 295 ttype(S->top++) = LUA_T_NIL;
290 break; 296 break;
291 297
292 case PUSHNIL: 298 case PUSHNIL:
293 aux = *pc++; 299 aux = *pc++;
294 do { 300 do {
295 ttype(LL->stack.top++) = LUA_T_NIL; 301 ttype(S->top++) = LUA_T_NIL;
296 } while (aux--); 302 } while (aux--);
297 break; 303 break;
298 304
@@ -305,9 +311,9 @@ StkId luaV_execute (Closure *cl, StkId base)
305 case PUSHNUMBER0: case PUSHNUMBER1: case PUSHNUMBER2: 311 case PUSHNUMBER0: case PUSHNUMBER1: case PUSHNUMBER2:
306 aux -= PUSHNUMBER0; 312 aux -= PUSHNUMBER0;
307 pushnumber: 313 pushnumber:
308 ttype(LL->stack.top) = LUA_T_NUMBER; 314 ttype(S->top) = LUA_T_NUMBER;
309 nvalue(LL->stack.top) = aux; 315 nvalue(S->top) = aux;
310 LL->stack.top++; 316 S->top++;
311 break; 317 break;
312 318
313 case PUSHLOCAL: 319 case PUSHLOCAL:
@@ -317,7 +323,7 @@ StkId luaV_execute (Closure *cl, StkId base)
317 case PUSHLOCAL4: case PUSHLOCAL5: case PUSHLOCAL6: case PUSHLOCAL7: 323 case PUSHLOCAL4: case PUSHLOCAL5: case PUSHLOCAL6: case PUSHLOCAL7:
318 aux -= PUSHLOCAL0; 324 aux -= PUSHLOCAL0;
319 pushlocal: 325 pushlocal:
320 *LL->stack.top++ = *((LL->stack.stack+base) + aux); 326 *S->top++ = *((S->stack+base) + aux);
321 break; 327 break;
322 328
323 case GETGLOBALW: 329 case GETGLOBALW:
@@ -347,7 +353,7 @@ StkId luaV_execute (Closure *cl, StkId base)
347 case GETDOTTED4: case GETDOTTED5: case GETDOTTED6: case GETDOTTED7: 353 case GETDOTTED4: case GETDOTTED5: case GETDOTTED6: case GETDOTTED7:
348 aux -= GETDOTTED0; 354 aux -= GETDOTTED0;
349 getdotted: 355 getdotted:
350 *LL->stack.top++ = consts[aux]; 356 *S->top++ = consts[aux];
351 luaV_gettable(); 357 luaV_gettable();
352 break; 358 break;
353 359
@@ -357,10 +363,10 @@ StkId luaV_execute (Closure *cl, StkId base)
357 case PUSHSELF: 363 case PUSHSELF:
358 aux = *pc++; 364 aux = *pc++;
359 pushself: { 365 pushself: {
360 TObject receiver = *(LL->stack.top-1); 366 TObject receiver = *(S->top-1);
361 *LL->stack.top++ = consts[aux]; 367 *S->top++ = consts[aux];
362 luaV_gettable(); 368 luaV_gettable();
363 *LL->stack.top++ = receiver; 369 *S->top++ = receiver;
364 break; 370 break;
365 } 371 }
366 372
@@ -375,7 +381,7 @@ StkId luaV_execute (Closure *cl, StkId base)
375 case PUSHCONSTANT6: case PUSHCONSTANT7: 381 case PUSHCONSTANT6: case PUSHCONSTANT7:
376 aux -= PUSHCONSTANT0; 382 aux -= PUSHCONSTANT0;
377 pushconstant: 383 pushconstant:
378 *LL->stack.top++ = consts[aux]; 384 *S->top++ = consts[aux];
379 break; 385 break;
380 386
381 case PUSHUPVALUE: 387 case PUSHUPVALUE:
@@ -384,7 +390,7 @@ StkId luaV_execute (Closure *cl, StkId base)
384 case PUSHUPVALUE0: case PUSHUPVALUE1: 390 case PUSHUPVALUE0: case PUSHUPVALUE1:
385 aux -= PUSHUPVALUE0; 391 aux -= PUSHUPVALUE0;
386 pushupvalue: 392 pushupvalue:
387 *LL->stack.top++ = cl->consts[aux+1]; 393 *S->top++ = cl->consts[aux+1];
388 break; 394 break;
389 395
390 case SETLOCAL: 396 case SETLOCAL:
@@ -394,7 +400,7 @@ StkId luaV_execute (Closure *cl, StkId base)
394 case SETLOCAL4: case SETLOCAL5: case SETLOCAL6: case SETLOCAL7: 400 case SETLOCAL4: case SETLOCAL5: case SETLOCAL6: case SETLOCAL7:
395 aux -= SETLOCAL0; 401 aux -= SETLOCAL0;
396 setlocal: 402 setlocal:
397 *((LL->stack.stack+base) + aux) = *(--LL->stack.top); 403 *((S->stack+base) + aux) = *(--S->top);
398 break; 404 break;
399 405
400 case SETGLOBALW: 406 case SETGLOBALW:
@@ -411,11 +417,11 @@ StkId luaV_execute (Closure *cl, StkId base)
411 break; 417 break;
412 418
413 case SETTABLE0: 419 case SETTABLE0:
414 luaV_settable(LL->stack.top-3, 1); 420 luaV_settable(S->top-3, 1);
415 break; 421 break;
416 422
417 case SETTABLE: 423 case SETTABLE:
418 luaV_settable(LL->stack.top-3-(*pc++), 2); 424 luaV_settable(S->top-3-(*pc++), 2);
419 break; 425 break;
420 426
421 case SETLISTW: 427 case SETLISTW:
@@ -428,12 +434,12 @@ StkId luaV_execute (Closure *cl, StkId base)
428 aux = 0; 434 aux = 0;
429 setlist: { 435 setlist: {
430 int n = *(pc++); 436 int n = *(pc++);
431 TObject *arr = LL->stack.top-n-1; 437 TObject *arr = S->top-n-1;
432 for (; n; n--) { 438 for (; n; n--) {
433 ttype(LL->stack.top) = LUA_T_NUMBER; 439 ttype(S->top) = LUA_T_NUMBER;
434 nvalue(LL->stack.top) = n+aux; 440 nvalue(S->top) = n+aux;
435 *(luaH_set (avalue(arr), LL->stack.top)) = *(LL->stack.top-1); 441 *(luaH_set(avalue(arr), S->top)) = *(S->top-1);
436 LL->stack.top--; 442 S->top--;
437 } 443 }
438 break; 444 break;
439 } 445 }
@@ -444,10 +450,10 @@ StkId luaV_execute (Closure *cl, StkId base)
444 case SETMAP: 450 case SETMAP:
445 aux = *pc++; 451 aux = *pc++;
446 setmap: { 452 setmap: {
447 TObject *arr = LL->stack.top-(2*aux)-3; 453 TObject *arr = S->top-(2*aux)-3;
448 do { 454 do {
449 *(luaH_set (avalue(arr), LL->stack.top-2)) = *(LL->stack.top-1); 455 *(luaH_set(avalue(arr), S->top-2)) = *(S->top-1);
450 LL->stack.top-=2; 456 S->top-=2;
451 } while (aux--); 457 } while (aux--);
452 break; 458 break;
453 } 459 }
@@ -458,7 +464,7 @@ StkId luaV_execute (Closure *cl, StkId base)
458 case POP0: case POP1: 464 case POP0: case POP1:
459 aux -= POP0; 465 aux -= POP0;
460 pop: 466 pop:
461 LL->stack.top -= (aux+1); 467 S->top -= (aux+1);
462 break; 468 break;
463 469
464 case ARGS: 470 case ARGS:
@@ -480,17 +486,17 @@ StkId luaV_execute (Closure *cl, StkId base)
480 aux = *pc++; 486 aux = *pc++;
481 createarray: 487 createarray:
482 luaC_checkGC(); 488 luaC_checkGC();
483 avalue(LL->stack.top) = luaH_new(aux); 489 avalue(S->top) = luaH_new(aux);
484 ttype(LL->stack.top) = LUA_T_ARRAY; 490 ttype(S->top) = LUA_T_ARRAY;
485 LL->stack.top++; 491 S->top++;
486 break; 492 break;
487 493
488 case EQOP: case NEQOP: { 494 case EQOP: case NEQOP: {
489 int res = luaO_equalObj(LL->stack.top-2, LL->stack.top-1); 495 int res = luaO_equalObj(S->top-2, S->top-1);
490 LL->stack.top--; 496 S->top--;
491 if (aux == NEQOP) res = !res; 497 if (aux == NEQOP) res = !res;
492 ttype(LL->stack.top-1) = res ? LUA_T_NUMBER : LUA_T_NIL; 498 ttype(S->top-1) = res ? LUA_T_NUMBER : LUA_T_NIL;
493 nvalue(LL->stack.top-1) = 1; 499 nvalue(S->top-1) = 1;
494 break; 500 break;
495 } 501 }
496 502
@@ -511,49 +517,49 @@ StkId luaV_execute (Closure *cl, StkId base)
511 break; 517 break;
512 518
513 case ADDOP: { 519 case ADDOP: {
514 TObject *l = LL->stack.top-2; 520 TObject *l = S->top-2;
515 TObject *r = LL->stack.top-1; 521 TObject *r = S->top-1;
516 if (tonumber(r) || tonumber(l)) 522 if (tonumber(r) || tonumber(l))
517 call_arith(IM_ADD); 523 call_arith(IM_ADD);
518 else { 524 else {
519 nvalue(l) += nvalue(r); 525 nvalue(l) += nvalue(r);
520 --LL->stack.top; 526 --S->top;
521 } 527 }
522 break; 528 break;
523 } 529 }
524 530
525 case SUBOP: { 531 case SUBOP: {
526 TObject *l = LL->stack.top-2; 532 TObject *l = S->top-2;
527 TObject *r = LL->stack.top-1; 533 TObject *r = S->top-1;
528 if (tonumber(r) || tonumber(l)) 534 if (tonumber(r) || tonumber(l))
529 call_arith(IM_SUB); 535 call_arith(IM_SUB);
530 else { 536 else {
531 nvalue(l) -= nvalue(r); 537 nvalue(l) -= nvalue(r);
532 --LL->stack.top; 538 --S->top;
533 } 539 }
534 break; 540 break;
535 } 541 }
536 542
537 case MULTOP: { 543 case MULTOP: {
538 TObject *l = LL->stack.top-2; 544 TObject *l = S->top-2;
539 TObject *r = LL->stack.top-1; 545 TObject *r = S->top-1;
540 if (tonumber(r) || tonumber(l)) 546 if (tonumber(r) || tonumber(l))
541 call_arith(IM_MUL); 547 call_arith(IM_MUL);
542 else { 548 else {
543 nvalue(l) *= nvalue(r); 549 nvalue(l) *= nvalue(r);
544 --LL->stack.top; 550 --S->top;
545 } 551 }
546 break; 552 break;
547 } 553 }
548 554
549 case DIVOP: { 555 case DIVOP: {
550 TObject *l = LL->stack.top-2; 556 TObject *l = S->top-2;
551 TObject *r = LL->stack.top-1; 557 TObject *r = S->top-1;
552 if (tonumber(r) || tonumber(l)) 558 if (tonumber(r) || tonumber(l))
553 call_arith(IM_DIV); 559 call_arith(IM_DIV);
554 else { 560 else {
555 nvalue(l) /= nvalue(r); 561 nvalue(l) /= nvalue(r);
556 --LL->stack.top; 562 --S->top;
557 } 563 }
558 break; 564 break;
559 } 565 }
@@ -563,32 +569,32 @@ StkId luaV_execute (Closure *cl, StkId base)
563 break; 569 break;
564 570
565 case CONCOP: { 571 case CONCOP: {
566 TObject *l = LL->stack.top-2; 572 TObject *l = S->top-2;
567 TObject *r = LL->stack.top-1; 573 TObject *r = S->top-1;
568 if (tostring(l) || tostring(r)) 574 if (tostring(l) || tostring(r))
569 call_binTM(IM_CONCAT, "unexpected type for concatenation"); 575 call_binTM(IM_CONCAT, "unexpected type for concatenation");
570 else { 576 else {
571 tsvalue(l) = strconc(svalue(l), svalue(r)); 577 tsvalue(l) = strconc(svalue(l), svalue(r));
572 --LL->stack.top; 578 --S->top;
573 } 579 }
574 luaC_checkGC(); 580 luaC_checkGC();
575 break; 581 break;
576 } 582 }
577 583
578 case MINUSOP: 584 case MINUSOP:
579 if (tonumber(LL->stack.top-1)) { 585 if (tonumber(S->top-1)) {
580 ttype(LL->stack.top) = LUA_T_NIL; 586 ttype(S->top) = LUA_T_NIL;
581 LL->stack.top++; 587 S->top++;
582 call_arith(IM_UNM); 588 call_arith(IM_UNM);
583 } 589 }
584 else 590 else
585 nvalue(LL->stack.top-1) = - nvalue(LL->stack.top-1); 591 nvalue(S->top-1) = - nvalue(S->top-1);
586 break; 592 break;
587 593
588 case NOTOP: 594 case NOTOP:
589 ttype(LL->stack.top-1) = 595 ttype(S->top-1) =
590 (ttype(LL->stack.top-1) == LUA_T_NIL) ? LUA_T_NUMBER : LUA_T_NIL; 596 (ttype(S->top-1) == LUA_T_NIL) ? LUA_T_NUMBER : LUA_T_NIL;
591 nvalue(LL->stack.top-1) = 1; 597 nvalue(S->top-1) = 1;
592 break; 598 break;
593 599
594 case ONTJMPW: 600 case ONTJMPW:
@@ -597,8 +603,8 @@ StkId luaV_execute (Closure *cl, StkId base)
597 case ONTJMP: 603 case ONTJMP:
598 aux = *pc++; 604 aux = *pc++;
599 ontjmp: 605 ontjmp:
600 if (ttype(LL->stack.top-1) != LUA_T_NIL) pc += aux; 606 if (ttype(S->top-1) != LUA_T_NIL) pc += aux;
601 else LL->stack.top--; 607 else S->top--;
602 break; 608 break;
603 609
604 case ONFJMPW: 610 case ONFJMPW:
@@ -607,8 +613,8 @@ StkId luaV_execute (Closure *cl, StkId base)
607 case ONFJMP: 613 case ONFJMP:
608 aux = *pc++; 614 aux = *pc++;
609 onfjmp: 615 onfjmp:
610 if (ttype(LL->stack.top-1) == LUA_T_NIL) pc += aux; 616 if (ttype(S->top-1) == LUA_T_NIL) pc += aux;
611 else LL->stack.top--; 617 else S->top--;
612 break; 618 break;
613 619
614 case JMPW: 620 case JMPW:
@@ -626,7 +632,7 @@ StkId luaV_execute (Closure *cl, StkId base)
626 case IFFJMP: 632 case IFFJMP:
627 aux = *pc++; 633 aux = *pc++;
628 iffjmp: 634 iffjmp:
629 if (ttype(--LL->stack.top) == LUA_T_NIL) pc += aux; 635 if (ttype(--S->top) == LUA_T_NIL) pc += aux;
630 break; 636 break;
631 637
632 case IFTUPJMPW: 638 case IFTUPJMPW:
@@ -635,7 +641,7 @@ StkId luaV_execute (Closure *cl, StkId base)
635 case IFTUPJMP: 641 case IFTUPJMP:
636 aux = *pc++; 642 aux = *pc++;
637 iftupjmp: 643 iftupjmp:
638 if (ttype(--LL->stack.top) != LUA_T_NIL) pc -= aux; 644 if (ttype(--S->top) != LUA_T_NIL) pc -= aux;
639 break; 645 break;
640 646
641 case IFFUPJMPW: 647 case IFFUPJMPW:
@@ -644,7 +650,7 @@ StkId luaV_execute (Closure *cl, StkId base)
644 case IFFUPJMP: 650 case IFFUPJMP:
645 aux = *pc++; 651 aux = *pc++;
646 iffupjmp: 652 iffupjmp:
647 if (ttype(--LL->stack.top) == LUA_T_NIL) pc -= aux; 653 if (ttype(--S->top) == LUA_T_NIL) pc -= aux;
648 break; 654 break;
649 655
650 case CLOSURE: 656 case CLOSURE:
@@ -663,13 +669,13 @@ StkId luaV_execute (Closure *cl, StkId base)
663 case CALLFUNC0: case CALLFUNC1: 669 case CALLFUNC0: case CALLFUNC1:
664 aux -= CALLFUNC0; 670 aux -= CALLFUNC0;
665 callfunc: { 671 callfunc: {
666 StkId newBase = (LL->stack.top-LL->stack.stack)-(*pc++); 672 StkId newBase = (S->top-S->stack)-(*pc++);
667 luaD_call(newBase, aux); 673 luaD_call(newBase, aux);
668 break; 674 break;
669 } 675 }
670 676
671 case ENDCODE: 677 case ENDCODE:
672 LL->stack.top = LL->stack.stack + base; 678 S->top = S->stack + base;
673 /* goes through */ 679 /* goes through */
674 case RETCODE: 680 case RETCODE:
675 if (lua_callhook) 681 if (lua_callhook)
@@ -682,13 +688,13 @@ StkId luaV_execute (Closure *cl, StkId base)
682 case SETLINE: 688 case SETLINE:
683 aux = *pc++; 689 aux = *pc++;
684 setline: 690 setline:
685 if ((LL->stack.stack+base-1)->ttype != LUA_T_LINE) { 691 if ((S->stack+base-1)->ttype != LUA_T_LINE) {
686 /* open space for LINE value */ 692 /* open space for LINE value */
687 luaD_openstack((LL->stack.top-LL->stack.stack)-base); 693 luaD_openstack((S->top-S->stack)-base);
688 base++; 694 base++;
689 (LL->stack.stack+base-1)->ttype = LUA_T_LINE; 695 (S->stack+base-1)->ttype = LUA_T_LINE;
690 } 696 }
691 (LL->stack.stack+base-1)->value.i = aux; 697 (S->stack+base-1)->value.i = aux;
692 if (lua_linehook) 698 if (lua_linehook)
693 luaD_lineHook(aux); 699 luaD_lineHook(aux);
694 break; 700 break;