aboutsummaryrefslogtreecommitdiff
path: root/lvm.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2004-06-29 14:05:00 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2004-06-29 14:05:00 -0300
commit23e08a68f51b36506c5ee8571e9dca01d67b7454 (patch)
tree90475f32f55c0281a7b0992af1bd6595d0e0145c /lvm.c
parent0f5a497ed903fea2065f76d2cc2512ebeacef1d2 (diff)
downloadlua-23e08a68f51b36506c5ee8571e9dca01d67b7454.tar.gz
lua-23e08a68f51b36506c5ee8571e9dca01d67b7454.tar.bz2
lua-23e08a68f51b36506c5ee8571e9dca01d67b7454.zip
detail
Diffstat (limited to 'lvm.c')
-rw-r--r--lvm.c72
1 files changed, 36 insertions, 36 deletions
diff --git a/lvm.c b/lvm.c
index ffed66e3..8db4468f 100644
--- a/lvm.c
+++ b/lvm.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lvm.c,v 2.8 2004/06/02 19:07:55 roberto Exp roberto $ 2** $Id: lvm.c,v 2.9 2004/06/08 16:23:58 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*/
@@ -412,53 +412,53 @@ StkId luaV_execute (lua_State *L, int nexeccalls) {
412 switch (GET_OPCODE(i)) { 412 switch (GET_OPCODE(i)) {
413 case OP_MOVE: { 413 case OP_MOVE: {
414 setobjs2s(L, ra, RB(i)); 414 setobjs2s(L, ra, RB(i));
415 break; 415 continue;
416 } 416 }
417 case OP_LOADK: { 417 case OP_LOADK: {
418 setobj2s(L, ra, KBx(i)); 418 setobj2s(L, ra, KBx(i));
419 break; 419 continue;
420 } 420 }
421 case OP_LOADBOOL: { 421 case OP_LOADBOOL: {
422 setbvalue(ra, GETARG_B(i)); 422 setbvalue(ra, GETARG_B(i));
423 if (GETARG_C(i)) pc++; /* skip next instruction (if C) */ 423 if (GETARG_C(i)) pc++; /* skip next instruction (if C) */
424 break; 424 continue;
425 } 425 }
426 case OP_LOADNIL: { 426 case OP_LOADNIL: {
427 TValue *rb = RB(i); 427 TValue *rb = RB(i);
428 do { 428 do {
429 setnilvalue(rb--); 429 setnilvalue(rb--);
430 } while (rb >= ra); 430 } while (rb >= ra);
431 break; 431 continue;
432 } 432 }
433 case OP_GETUPVAL: { 433 case OP_GETUPVAL: {
434 int b = GETARG_B(i); 434 int b = GETARG_B(i);
435 setobj2s(L, ra, cl->upvals[b]->v); 435 setobj2s(L, ra, cl->upvals[b]->v);
436 break; 436 continue;
437 } 437 }
438 case OP_GETGLOBAL: { 438 case OP_GETGLOBAL: {
439 TValue *rb = KBx(i); 439 TValue *rb = KBx(i);
440 lua_assert(ttisstring(rb) && ttistable(&cl->g)); 440 lua_assert(ttisstring(rb) && ttistable(&cl->g));
441 base = luaV_gettable(L, &cl->g, rb, ra, pc); /***/ 441 base = luaV_gettable(L, &cl->g, rb, ra, pc); /***/
442 break; 442 continue;
443 } 443 }
444 case OP_GETTABLE: { 444 case OP_GETTABLE: {
445 base = luaV_gettable(L, RB(i), RKC(i), ra, pc); /***/ 445 base = luaV_gettable(L, RB(i), RKC(i), ra, pc); /***/
446 break; 446 continue;
447 } 447 }
448 case OP_SETGLOBAL: { 448 case OP_SETGLOBAL: {
449 lua_assert(ttisstring(KBx(i)) && ttistable(&cl->g)); 449 lua_assert(ttisstring(KBx(i)) && ttistable(&cl->g));
450 base = luaV_settable(L, &cl->g, KBx(i), ra, pc); /***/ 450 base = luaV_settable(L, &cl->g, KBx(i), ra, pc); /***/
451 break; 451 continue;
452 } 452 }
453 case OP_SETUPVAL: { 453 case OP_SETUPVAL: {
454 UpVal *uv = cl->upvals[GETARG_B(i)]; 454 UpVal *uv = cl->upvals[GETARG_B(i)];
455 setobj(L, uv->v, ra); 455 setobj(L, uv->v, ra);
456 luaC_barrier(L, uv, ra); 456 luaC_barrier(L, uv, ra);
457 break; 457 continue;
458 } 458 }
459 case OP_SETTABLE: { 459 case OP_SETTABLE: {
460 base = luaV_settable(L, ra, RKB(i), RKC(i), pc); /***/ 460 base = luaV_settable(L, ra, RKB(i), RKC(i), pc); /***/
461 break; 461 continue;
462 } 462 }
463 case OP_NEWTABLE: { 463 case OP_NEWTABLE: {
464 int b = GETARG_B(i); 464 int b = GETARG_B(i);
@@ -467,13 +467,13 @@ StkId luaV_execute (lua_State *L, int nexeccalls) {
467 L->ci->savedpc = pc; 467 L->ci->savedpc = pc;
468 luaC_checkGC(L); /***/ 468 luaC_checkGC(L); /***/
469 base = L->base; 469 base = L->base;
470 break; 470 continue;
471 } 471 }
472 case OP_SELF: { 472 case OP_SELF: {
473 StkId rb = RB(i); 473 StkId rb = RB(i);
474 setobjs2s(L, ra+1, rb); 474 setobjs2s(L, ra+1, rb);
475 base = luaV_gettable(L, rb, RKC(i), ra, pc); /***/ 475 base = luaV_gettable(L, rb, RKC(i), ra, pc); /***/
476 break; 476 continue;
477 } 477 }
478 case OP_ADD: { 478 case OP_ADD: {
479 TValue *rb = RKB(i); 479 TValue *rb = RKB(i);
@@ -483,7 +483,7 @@ StkId luaV_execute (lua_State *L, int nexeccalls) {
483 } 483 }
484 else 484 else
485 base = Arith(L, ra, rb, rc, TM_ADD, pc); /***/ 485 base = Arith(L, ra, rb, rc, TM_ADD, pc); /***/
486 break; 486 continue;
487 } 487 }
488 case OP_SUB: { 488 case OP_SUB: {
489 TValue *rb = RKB(i); 489 TValue *rb = RKB(i);
@@ -493,7 +493,7 @@ StkId luaV_execute (lua_State *L, int nexeccalls) {
493 } 493 }
494 else 494 else
495 base = Arith(L, ra, rb, rc, TM_SUB, pc); /***/ 495 base = Arith(L, ra, rb, rc, TM_SUB, pc); /***/
496 break; 496 continue;
497 } 497 }
498 case OP_MUL: { 498 case OP_MUL: {
499 TValue *rb = RKB(i); 499 TValue *rb = RKB(i);
@@ -503,7 +503,7 @@ StkId luaV_execute (lua_State *L, int nexeccalls) {
503 } 503 }
504 else 504 else
505 base = Arith(L, ra, rb, rc, TM_MUL, pc); /***/ 505 base = Arith(L, ra, rb, rc, TM_MUL, pc); /***/
506 break; 506 continue;
507 } 507 }
508 case OP_DIV: { 508 case OP_DIV: {
509 TValue *rb = RKB(i); 509 TValue *rb = RKB(i);
@@ -513,11 +513,11 @@ StkId luaV_execute (lua_State *L, int nexeccalls) {
513 } 513 }
514 else 514 else
515 base = Arith(L, ra, rb, rc, TM_DIV, pc); /***/ 515 base = Arith(L, ra, rb, rc, TM_DIV, pc); /***/
516 break; 516 continue;
517 } 517 }
518 case OP_POW: { 518 case OP_POW: {
519 base = Arith(L, ra, RKB(i), RKC(i), TM_POW, pc); /***/ 519 base = Arith(L, ra, RKB(i), RKC(i), TM_POW, pc); /***/
520 break; 520 continue;
521 } 521 }
522 case OP_UNM: { 522 case OP_UNM: {
523 const TValue *rb = RB(i); 523 const TValue *rb = RB(i);
@@ -532,12 +532,12 @@ StkId luaV_execute (lua_State *L, int nexeccalls) {
532 luaG_aritherror(L, RB(i), &temp); 532 luaG_aritherror(L, RB(i), &temp);
533 base = L->base; 533 base = L->base;
534 } 534 }
535 break; 535 continue;
536 } 536 }
537 case OP_NOT: { 537 case OP_NOT: {
538 int res = l_isfalse(RB(i)); /* next assignment may change this value */ 538 int res = l_isfalse(RB(i)); /* next assignment may change this value */
539 setbvalue(ra, res); 539 setbvalue(ra, res);
540 break; 540 continue;
541 } 541 }
542 case OP_CONCAT: { 542 case OP_CONCAT: {
543 int b = GETARG_B(i); 543 int b = GETARG_B(i);
@@ -547,32 +547,32 @@ StkId luaV_execute (lua_State *L, int nexeccalls) {
547 luaC_checkGC(L); /***/ 547 luaC_checkGC(L); /***/
548 base = L->base; 548 base = L->base;
549 setobjs2s(L, RA(i), base+b); 549 setobjs2s(L, RA(i), base+b);
550 break; 550 continue;
551 } 551 }
552 case OP_JMP: { 552 case OP_JMP: {
553 dojump(L, pc, GETARG_sBx(i)); 553 dojump(L, pc, GETARG_sBx(i));
554 break; 554 continue;
555 } 555 }
556 case OP_EQ: { 556 case OP_EQ: {
557 L->ci->savedpc = pc; 557 L->ci->savedpc = pc;
558 if (equalobj(L, RKB(i), RKC(i)) != GETARG_A(i)) pc++; /***/ 558 if (equalobj(L, RKB(i), RKC(i)) != GETARG_A(i)) pc++; /***/
559 else dojump(L, pc, GETARG_sBx(*pc) + 1); 559 else dojump(L, pc, GETARG_sBx(*pc) + 1);
560 base = L->base; 560 base = L->base;
561 break; 561 continue;
562 } 562 }
563 case OP_LT: { 563 case OP_LT: {
564 L->ci->savedpc = pc; 564 L->ci->savedpc = pc;
565 if (luaV_lessthan(L, RKB(i), RKC(i)) != GETARG_A(i)) pc++; /***/ 565 if (luaV_lessthan(L, RKB(i), RKC(i)) != GETARG_A(i)) pc++; /***/
566 else dojump(L, pc, GETARG_sBx(*pc) + 1); 566 else dojump(L, pc, GETARG_sBx(*pc) + 1);
567 base = L->base; 567 base = L->base;
568 break; 568 continue;
569 } 569 }
570 case OP_LE: { 570 case OP_LE: {
571 L->ci->savedpc = pc; 571 L->ci->savedpc = pc;
572 if (luaV_lessequal(L, RKB(i), RKC(i)) != GETARG_A(i)) pc++; /***/ 572 if (luaV_lessequal(L, RKB(i), RKC(i)) != GETARG_A(i)) pc++; /***/
573 else dojump(L, pc, GETARG_sBx(*pc) + 1); 573 else dojump(L, pc, GETARG_sBx(*pc) + 1);
574 base = L->base; 574 base = L->base;
575 break; 575 continue;
576 } 576 }
577 case OP_TEST: { 577 case OP_TEST: {
578 TValue *rb = RB(i); 578 TValue *rb = RB(i);
@@ -581,7 +581,7 @@ StkId luaV_execute (lua_State *L, int nexeccalls) {
581 setobjs2s(L, ra, rb); 581 setobjs2s(L, ra, rb);
582 dojump(L, pc, GETARG_sBx(*pc) + 1); 582 dojump(L, pc, GETARG_sBx(*pc) + 1);
583 } 583 }
584 break; 584 continue;
585 } 585 }
586 case OP_CALL: { /***/ 586 case OP_CALL: { /***/
587 int pcr; 587 int pcr;
@@ -598,7 +598,7 @@ StkId luaV_execute (lua_State *L, int nexeccalls) {
598 /* it was a C function (`precall' called it); adjust results */ 598 /* it was a C function (`precall' called it); adjust results */
599 if (nresults >= 0) L->top = L->ci->top; 599 if (nresults >= 0) L->top = L->ci->top;
600 base = L->base; 600 base = L->base;
601 break; 601 continue;
602 } 602 }
603 else { 603 else {
604 lua_assert(pcr == PCRYIELD); 604 lua_assert(pcr == PCRYIELD);
@@ -632,7 +632,7 @@ StkId luaV_execute (lua_State *L, int nexeccalls) {
632 else if (pcr == PCRC) { 632 else if (pcr == PCRC) {
633 /* it was a C function (`precall' called it) */ 633 /* it was a C function (`precall' called it) */
634 base = L->base; 634 base = L->base;
635 break; 635 continue;
636 } 636 }
637 else { 637 else {
638 lua_assert(pcr == PCRYIELD); 638 lua_assert(pcr == PCRYIELD);
@@ -665,7 +665,7 @@ StkId luaV_execute (lua_State *L, int nexeccalls) {
665 setnvalue(ra, idx); /* update internal index... */ 665 setnvalue(ra, idx); /* update internal index... */
666 setnvalue(ra+3, idx); /* ...and external index */ 666 setnvalue(ra+3, idx); /* ...and external index */
667 } 667 }
668 break; 668 continue;
669 } 669 }
670 case OP_FORPREP: { /***/ 670 case OP_FORPREP: { /***/
671 const TValue *init = ra; 671 const TValue *init = ra;
@@ -680,7 +680,7 @@ StkId luaV_execute (lua_State *L, int nexeccalls) {
680 luaG_runerror(L, "`for' step must be a number"); 680 luaG_runerror(L, "`for' step must be a number");
681 setnvalue(ra, nvalue(ra) - nvalue(pstep)); 681 setnvalue(ra, nvalue(ra) - nvalue(pstep));
682 dojump(L, pc, GETARG_sBx(i)); 682 dojump(L, pc, GETARG_sBx(i));
683 break; 683 continue;
684 } 684 }
685 case OP_TFORLOOP: { 685 case OP_TFORLOOP: {
686 StkId cb = ra + 3; /* call base */ 686 StkId cb = ra + 3; /* call base */
@@ -699,7 +699,7 @@ StkId luaV_execute (lua_State *L, int nexeccalls) {
699 setobjs2s(L, cb-1, cb); /* save control variable */ 699 setobjs2s(L, cb-1, cb); /* save control variable */
700 dojump(L, pc, GETARG_sBx(*pc) + 1); /* jump back */ 700 dojump(L, pc, GETARG_sBx(*pc) + 1); /* jump back */
701 } 701 }
702 break; 702 continue;
703 } 703 }
704 case OP_TFORPREP: { /* for compatibility only */ 704 case OP_TFORPREP: { /* for compatibility only */
705 if (ttistable(ra)) { 705 if (ttistable(ra)) {
@@ -707,7 +707,7 @@ StkId luaV_execute (lua_State *L, int nexeccalls) {
707 setobj2s(L, ra, luaH_getstr(hvalue(gt(L)), luaS_new(L, "next"))); 707 setobj2s(L, ra, luaH_getstr(hvalue(gt(L)), luaS_new(L, "next")));
708 } 708 }
709 dojump(L, pc, GETARG_sBx(i)); 709 dojump(L, pc, GETARG_sBx(i));
710 break; 710 continue;
711 } 711 }
712 case OP_SETLIST: 712 case OP_SETLIST:
713 case OP_SETLISTO: { 713 case OP_SETLISTO: {
@@ -731,11 +731,11 @@ StkId luaV_execute (lua_State *L, int nexeccalls) {
731 setobj2t(L, luaH_setnum(L, h, last--), val); 731 setobj2t(L, luaH_setnum(L, h, last--), val);
732 luaC_barrier(L, h, val); 732 luaC_barrier(L, h, val);
733 } 733 }
734 break; 734 continue;
735 } 735 }
736 case OP_CLOSE: { 736 case OP_CLOSE: {
737 luaF_close(L, ra); 737 luaF_close(L, ra);
738 break; 738 continue;
739 } 739 }
740 case OP_CLOSURE: { 740 case OP_CLOSURE: {
741 Proto *p; 741 Proto *p;
@@ -757,7 +757,7 @@ StkId luaV_execute (lua_State *L, int nexeccalls) {
757 L->ci->savedpc = pc; 757 L->ci->savedpc = pc;
758 luaC_checkGC(L); /***/ 758 luaC_checkGC(L); /***/
759 base = L->base; 759 base = L->base;
760 break; 760 continue;
761 } 761 }
762 case OP_VARARG: { 762 case OP_VARARG: {
763 int b = GETARG_B(i) - 1; 763 int b = GETARG_B(i) - 1;
@@ -772,7 +772,7 @@ StkId luaV_execute (lua_State *L, int nexeccalls) {
772 setobjs2s(L, ra+j, ci->base - n + j); 772 setobjs2s(L, ra+j, ci->base - n + j);
773 for (; j<b; j++) 773 for (; j<b; j++)
774 setnilvalue(ra+j); 774 setnilvalue(ra+j);
775 break; 775 continue;
776 } 776 }
777 } 777 }
778 } 778 }