aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--llex.c16
-rw-r--r--lvm.c102
2 files changed, 59 insertions, 59 deletions
diff --git a/llex.c b/llex.c
index 1f09f265..9fe16c1c 100644
--- a/llex.c
+++ b/llex.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: llex.c,v 2.33 2009/05/18 17:28:04 roberto Exp roberto $ 2** $Id: llex.c,v 2.34 2009/11/17 16:33:38 roberto Exp roberto $
3** Lexical Analyzer 3** Lexical Analyzer
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -313,11 +313,11 @@ static void read_string (LexState *ls, int del, SemInfo *seminfo) {
313 switch (ls->current) { 313 switch (ls->current) {
314 case EOZ: 314 case EOZ:
315 lexerror(ls, "unfinished string", TK_EOS); 315 lexerror(ls, "unfinished string", TK_EOS);
316 continue; /* to avoid warnings */ 316 break; /* to avoid warnings */
317 case '\n': 317 case '\n':
318 case '\r': 318 case '\r':
319 lexerror(ls, "unfinished string", TK_STRING); 319 lexerror(ls, "unfinished string", TK_STRING);
320 continue; /* to avoid warnings */ 320 break; /* to avoid warnings */
321 case '\\': { /* escape sequences */ 321 case '\\': { /* escape sequences */
322 int c; /* final character to be saved */ 322 int c; /* final character to be saved */
323 next(ls); /* do not save the `\' */ 323 next(ls); /* do not save the `\' */
@@ -343,7 +343,7 @@ static void read_string (LexState *ls, int del, SemInfo *seminfo) {
343 } 343 }
344 next(ls); 344 next(ls);
345 save(ls, c); 345 save(ls, c);
346 continue; 346 break;
347 } 347 }
348 default: 348 default:
349 save_and_next(ls); 349 save_and_next(ls);
@@ -362,7 +362,7 @@ static int llex (LexState *ls, SemInfo *seminfo) {
362 case '\n': 362 case '\n':
363 case '\r': { 363 case '\r': {
364 inclinenumber(ls); 364 inclinenumber(ls);
365 continue; 365 break;
366 } 366 }
367 case '-': { 367 case '-': {
368 next(ls); 368 next(ls);
@@ -375,13 +375,13 @@ static int llex (LexState *ls, SemInfo *seminfo) {
375 if (sep >= 0) { 375 if (sep >= 0) {
376 read_long_string(ls, NULL, sep); /* long comment */ 376 read_long_string(ls, NULL, sep); /* long comment */
377 luaZ_resetbuffer(ls->buff); 377 luaZ_resetbuffer(ls->buff);
378 continue; 378 break;
379 } 379 }
380 } 380 }
381 /* else short comment */ 381 /* else short comment */
382 while (!currIsNewline(ls) && ls->current != EOZ) 382 while (!currIsNewline(ls) && ls->current != EOZ)
383 next(ls); 383 next(ls);
384 continue; 384 break;
385 } 385 }
386 case '[': { 386 case '[': {
387 int sep = skip_sep(ls); 387 int sep = skip_sep(ls);
@@ -437,7 +437,7 @@ static int llex (LexState *ls, SemInfo *seminfo) {
437 if (lisspace(ls->current)) { 437 if (lisspace(ls->current)) {
438 lua_assert(!currIsNewline(ls)); 438 lua_assert(!currIsNewline(ls));
439 next(ls); 439 next(ls);
440 continue; 440 break;
441 } 441 }
442 else if (lisdigit(ls->current)) { 442 else if (lisdigit(ls->current)) {
443 read_numeral(ls, seminfo); 443 read_numeral(ls, seminfo);
diff --git a/lvm.c b/lvm.c
index ae4f6293..26ad6dc4 100644
--- a/lvm.c
+++ b/lvm.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lvm.c,v 2.103 2010/01/15 16:23:58 roberto Exp roberto $ 2** $Id: lvm.c,v 2.104 2010/02/26 20:40:29 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*/
@@ -448,10 +448,15 @@ void luaV_finishOp (lua_State *L) {
448 448
449void luaV_execute (lua_State *L) { 449void luaV_execute (lua_State *L) {
450 CallInfo *ci = L->ci; 450 CallInfo *ci = L->ci;
451 LClosure *cl = &clvalue(ci->func)->l; 451 LClosure *cl;
452 TValue *k = cl->p->k; 452 TValue *k;
453 StkId base = ci->u.l.base; 453 StkId base;
454 newframe: /* reentry point when frame changes (call/return) */
454 lua_assert(isLua(ci)); 455 lua_assert(isLua(ci));
456 lua_assert(ci == L->ci);
457 cl = &clvalue(ci->func)->l;
458 k = cl->p->k;
459 base = ci->u.l.base;
455 /* main loop of interpreter */ 460 /* main loop of interpreter */
456 for (;;) { 461 for (;;) {
457 Instruction i = *(ci->u.l.savedpc++); 462 Instruction i = *(ci->u.l.savedpc++);
@@ -472,29 +477,29 @@ void luaV_execute (lua_State *L) {
472 switch (GET_OPCODE(i)) { 477 switch (GET_OPCODE(i)) {
473 case OP_MOVE: { 478 case OP_MOVE: {
474 setobjs2s(L, ra, RB(i)); 479 setobjs2s(L, ra, RB(i));
475 continue; 480 break;
476 } 481 }
477 case OP_LOADK: { 482 case OP_LOADK: {
478 TValue *rb = KBx(i); 483 TValue *rb = KBx(i);
479 setobj2s(L, ra, rb); 484 setobj2s(L, ra, rb);
480 continue; 485 break;
481 } 486 }
482 case OP_LOADBOOL: { 487 case OP_LOADBOOL: {
483 setbvalue(ra, GETARG_B(i)); 488 setbvalue(ra, GETARG_B(i));
484 if (GETARG_C(i)) ci->u.l.savedpc++; /* skip next instruction (if C) */ 489 if (GETARG_C(i)) ci->u.l.savedpc++; /* skip next instruction (if C) */
485 continue; 490 break;
486 } 491 }
487 case OP_LOADNIL: { 492 case OP_LOADNIL: {
488 TValue *rb = RB(i); 493 TValue *rb = RB(i);
489 do { 494 do {
490 setnilvalue(rb--); 495 setnilvalue(rb--);
491 } while (rb >= ra); 496 } while (rb >= ra);
492 continue; 497 break;
493 } 498 }
494 case OP_GETUPVAL: { 499 case OP_GETUPVAL: {
495 int b = GETARG_B(i); 500 int b = GETARG_B(i);
496 setobj2s(L, ra, cl->upvals[b]->v); 501 setobj2s(L, ra, cl->upvals[b]->v);
497 continue; 502 break;
498 } 503 }
499 case OP_GETGLOBAL: { 504 case OP_GETGLOBAL: {
500 TValue g; 505 TValue g;
@@ -502,16 +507,16 @@ void luaV_execute (lua_State *L) {
502 sethvalue(L, &g, cl->env); 507 sethvalue(L, &g, cl->env);
503 lua_assert(ttisstring(rb)); 508 lua_assert(ttisstring(rb));
504 Protect(luaV_gettable(L, &g, rb, ra)); 509 Protect(luaV_gettable(L, &g, rb, ra));
505 continue; 510 break;
506 } 511 }
507 case OP_GETTABUP: { 512 case OP_GETTABUP: {
508 int b = GETARG_B(i); 513 int b = GETARG_B(i);
509 Protect(luaV_gettable(L, cl->upvals[b]->v, RKC(i), ra)); 514 Protect(luaV_gettable(L, cl->upvals[b]->v, RKC(i), ra));
510 continue; 515 break;
511 } 516 }
512 case OP_GETTABLE: { 517 case OP_GETTABLE: {
513 Protect(luaV_gettable(L, RB(i), RKC(i), ra)); 518 Protect(luaV_gettable(L, RB(i), RKC(i), ra));
514 continue; 519 break;
515 } 520 }
516 case OP_SETGLOBAL: { 521 case OP_SETGLOBAL: {
517 TValue g; 522 TValue g;
@@ -519,22 +524,22 @@ void luaV_execute (lua_State *L) {
519 sethvalue(L, &g, cl->env); 524 sethvalue(L, &g, cl->env);
520 lua_assert(ttisstring(rb)); 525 lua_assert(ttisstring(rb));
521 Protect(luaV_settable(L, &g, rb, ra)); 526 Protect(luaV_settable(L, &g, rb, ra));
522 continue; 527 break;
523 } 528 }
524 case OP_SETTABUP: { 529 case OP_SETTABUP: {
525 int a = GETARG_A(i); 530 int a = GETARG_A(i);
526 Protect(luaV_settable(L, cl->upvals[a]->v, RKB(i), RKC(i))); 531 Protect(luaV_settable(L, cl->upvals[a]->v, RKB(i), RKC(i)));
527 continue; 532 break;
528 } 533 }
529 case OP_SETUPVAL: { 534 case OP_SETUPVAL: {
530 UpVal *uv = cl->upvals[GETARG_B(i)]; 535 UpVal *uv = cl->upvals[GETARG_B(i)];
531 setobj(L, uv->v, ra); 536 setobj(L, uv->v, ra);
532 luaC_barrier(L, uv, ra); 537 luaC_barrier(L, uv, ra);
533 continue; 538 break;
534 } 539 }
535 case OP_SETTABLE: { 540 case OP_SETTABLE: {
536 Protect(luaV_settable(L, ra, RKB(i), RKC(i))); 541 Protect(luaV_settable(L, ra, RKB(i), RKC(i)));
537 continue; 542 break;
538 } 543 }
539 case OP_NEWTABLE: { 544 case OP_NEWTABLE: {
540 int b = GETARG_B(i); 545 int b = GETARG_B(i);
@@ -544,37 +549,37 @@ void luaV_execute (lua_State *L) {
544 if (b != 0 || c != 0) 549 if (b != 0 || c != 0)
545 luaH_resize(L, t, luaO_fb2int(b), luaO_fb2int(c)); 550 luaH_resize(L, t, luaO_fb2int(b), luaO_fb2int(c));
546 Protect(luaC_checkGC(L)); 551 Protect(luaC_checkGC(L));
547 continue; 552 break;
548 } 553 }
549 case OP_SELF: { 554 case OP_SELF: {
550 StkId rb = RB(i); 555 StkId rb = RB(i);
551 setobjs2s(L, ra+1, rb); 556 setobjs2s(L, ra+1, rb);
552 Protect(luaV_gettable(L, rb, RKC(i), ra)); 557 Protect(luaV_gettable(L, rb, RKC(i), ra));
553 continue; 558 break;
554 } 559 }
555 case OP_ADD: { 560 case OP_ADD: {
556 arith_op(luai_numadd, TM_ADD); 561 arith_op(luai_numadd, TM_ADD);
557 continue; 562 break;
558 } 563 }
559 case OP_SUB: { 564 case OP_SUB: {
560 arith_op(luai_numsub, TM_SUB); 565 arith_op(luai_numsub, TM_SUB);
561 continue; 566 break;
562 } 567 }
563 case OP_MUL: { 568 case OP_MUL: {
564 arith_op(luai_nummul, TM_MUL); 569 arith_op(luai_nummul, TM_MUL);
565 continue; 570 break;
566 } 571 }
567 case OP_DIV: { 572 case OP_DIV: {
568 arith_op(luai_numdiv, TM_DIV); 573 arith_op(luai_numdiv, TM_DIV);
569 continue; 574 break;
570 } 575 }
571 case OP_MOD: { 576 case OP_MOD: {
572 arith_op(luai_nummod, TM_MOD); 577 arith_op(luai_nummod, TM_MOD);
573 continue; 578 break;
574 } 579 }
575 case OP_POW: { 580 case OP_POW: {
576 arith_op(luai_numpow, TM_POW); 581 arith_op(luai_numpow, TM_POW);
577 continue; 582 break;
578 } 583 }
579 case OP_UNM: { 584 case OP_UNM: {
580 TValue *rb = RB(i); 585 TValue *rb = RB(i);
@@ -585,16 +590,16 @@ void luaV_execute (lua_State *L) {
585 else { 590 else {
586 Protect(luaV_arith(L, ra, rb, rb, TM_UNM)); 591 Protect(luaV_arith(L, ra, rb, rb, TM_UNM));
587 } 592 }
588 continue; 593 break;
589 } 594 }
590 case OP_NOT: { 595 case OP_NOT: {
591 int res = l_isfalse(RB(i)); /* next assignment may change this value */ 596 int res = l_isfalse(RB(i)); /* next assignment may change this value */
592 setbvalue(ra, res); 597 setbvalue(ra, res);
593 continue; 598 break;
594 } 599 }
595 case OP_LEN: { 600 case OP_LEN: {
596 Protect(luaV_objlen(L, ra, RB(i))); 601 Protect(luaV_objlen(L, ra, RB(i)));
597 continue; 602 break;
598 } 603 }
599 case OP_CONCAT: { 604 case OP_CONCAT: {
600 int b = GETARG_B(i); 605 int b = GETARG_B(i);
@@ -603,11 +608,11 @@ void luaV_execute (lua_State *L) {
603 Protect(luaV_concat(L, c-b+1); luaC_checkGC(L)); 608 Protect(luaV_concat(L, c-b+1); luaC_checkGC(L));
604 L->top = ci->top; /* restore top */ 609 L->top = ci->top; /* restore top */
605 setobjs2s(L, RA(i), base+b); 610 setobjs2s(L, RA(i), base+b);
606 continue; 611 break;
607 } 612 }
608 case OP_JMP: { 613 case OP_JMP: {
609 dojump(GETARG_sBx(i)); 614 dojump(GETARG_sBx(i));
610 continue; 615 break;
611 } 616 }
612 case OP_EQ: { 617 case OP_EQ: {
613 TValue *rb = RKB(i); 618 TValue *rb = RKB(i);
@@ -617,7 +622,7 @@ void luaV_execute (lua_State *L) {
617 dojump(GETARG_sBx(*ci->u.l.savedpc)); 622 dojump(GETARG_sBx(*ci->u.l.savedpc));
618 ) 623 )
619 ci->u.l.savedpc++; 624 ci->u.l.savedpc++;
620 continue; 625 break;
621 } 626 }
622 case OP_LT: { 627 case OP_LT: {
623 Protect( 628 Protect(
@@ -625,7 +630,7 @@ void luaV_execute (lua_State *L) {
625 dojump(GETARG_sBx(*ci->u.l.savedpc)); 630 dojump(GETARG_sBx(*ci->u.l.savedpc));
626 ) 631 )
627 ci->u.l.savedpc++; 632 ci->u.l.savedpc++;
628 continue; 633 break;
629 } 634 }
630 case OP_LE: { 635 case OP_LE: {
631 Protect( 636 Protect(
@@ -633,13 +638,13 @@ void luaV_execute (lua_State *L) {
633 dojump(GETARG_sBx(*ci->u.l.savedpc)); 638 dojump(GETARG_sBx(*ci->u.l.savedpc));
634 ) 639 )
635 ci->u.l.savedpc++; 640 ci->u.l.savedpc++;
636 continue; 641 break;
637 } 642 }
638 case OP_TEST: { 643 case OP_TEST: {
639 if (GETARG_C(i) ? !l_isfalse(ra) : l_isfalse(ra)) 644 if (GETARG_C(i) ? !l_isfalse(ra) : l_isfalse(ra))
640 dojump(GETARG_sBx(*ci->u.l.savedpc)); 645 dojump(GETARG_sBx(*ci->u.l.savedpc));
641 ci->u.l.savedpc++; 646 ci->u.l.savedpc++;
642 continue; 647 break;
643 } 648 }
644 case OP_TESTSET: { 649 case OP_TESTSET: {
645 TValue *rb = RB(i); 650 TValue *rb = RB(i);
@@ -648,7 +653,7 @@ void luaV_execute (lua_State *L) {
648 dojump(GETARG_sBx(*ci->u.l.savedpc)); 653 dojump(GETARG_sBx(*ci->u.l.savedpc));
649 } 654 }
650 ci->u.l.savedpc++; 655 ci->u.l.savedpc++;
651 continue; 656 break;
652 } 657 }
653 case OP_CALL: { 658 case OP_CALL: {
654 int b = GETARG_B(i); 659 int b = GETARG_B(i);
@@ -657,12 +662,12 @@ void luaV_execute (lua_State *L) {
657 if (luaD_precall(L, ra, nresults)) { /* C function? */ 662 if (luaD_precall(L, ra, nresults)) { /* C function? */
658 if (nresults >= 0) L->top = ci->top; /* adjust results */ 663 if (nresults >= 0) L->top = ci->top; /* adjust results */
659 base = ci->u.l.base; 664 base = ci->u.l.base;
660 continue; 665 break;
661 } 666 }
662 else { /* Lua function */ 667 else { /* Lua function */
663 ci = L->ci; 668 ci = L->ci;
664 ci->callstatus |= CIST_REENTRY; 669 ci->callstatus |= CIST_REENTRY;
665 break; /* restart luaV_execute over new Lua function */ 670 goto newframe; /* restart luaV_execute over new Lua function */
666 } 671 }
667 } 672 }
668 case OP_TAILCALL: { 673 case OP_TAILCALL: {
@@ -671,7 +676,7 @@ void luaV_execute (lua_State *L) {
671 lua_assert(GETARG_C(i) - 1 == LUA_MULTRET); 676 lua_assert(GETARG_C(i) - 1 == LUA_MULTRET);
672 if (luaD_precall(L, ra, LUA_MULTRET)) { /* C function? */ 677 if (luaD_precall(L, ra, LUA_MULTRET)) { /* C function? */
673 base = ci->u.l.base; 678 base = ci->u.l.base;
674 continue; 679 break;
675 } 680 }
676 else { 681 else {
677 /* tail call: put called frame (n) in place of caller one (o) */ 682 /* tail call: put called frame (n) in place of caller one (o) */
@@ -693,7 +698,7 @@ void luaV_execute (lua_State *L) {
693 oci->callstatus |= CIST_TAIL; /* function was tail called */ 698 oci->callstatus |= CIST_TAIL; /* function was tail called */
694 ci = L->ci = oci; /* remove new frame */ 699 ci = L->ci = oci; /* remove new frame */
695 lua_assert(L->top == oci->u.l.base + getproto(ofunc)->maxstacksize); 700 lua_assert(L->top == oci->u.l.base + getproto(ofunc)->maxstacksize);
696 break; /* restart luaV_execute over new Lua function */ 701 goto newframe; /* restart luaV_execute over new Lua function */
697 } 702 }
698 } 703 }
699 case OP_RETURN: { 704 case OP_RETURN: {
@@ -708,7 +713,7 @@ void luaV_execute (lua_State *L) {
708 if (b) L->top = ci->top; 713 if (b) L->top = ci->top;
709 lua_assert(isLua(ci)); 714 lua_assert(isLua(ci));
710 lua_assert(GET_OPCODE(*((ci)->u.l.savedpc - 1)) == OP_CALL); 715 lua_assert(GET_OPCODE(*((ci)->u.l.savedpc - 1)) == OP_CALL);
711 break; /* restart luaV_execute over new Lua function */ 716 goto newframe; /* restart luaV_execute over new Lua function */
712 } 717 }
713 } 718 }
714 case OP_FORLOOP: { 719 case OP_FORLOOP: {
@@ -721,7 +726,7 @@ void luaV_execute (lua_State *L) {
721 setnvalue(ra, idx); /* update internal index... */ 726 setnvalue(ra, idx); /* update internal index... */
722 setnvalue(ra+3, idx); /* ...and external index */ 727 setnvalue(ra+3, idx); /* ...and external index */
723 } 728 }
724 continue; 729 break;
725 } 730 }
726 case OP_FORPREP: { 731 case OP_FORPREP: {
727 const TValue *init = ra; 732 const TValue *init = ra;
@@ -735,7 +740,7 @@ void luaV_execute (lua_State *L) {
735 luaG_runerror(L, LUA_QL("for") " step must be a number"); 740 luaG_runerror(L, LUA_QL("for") " step must be a number");
736 setnvalue(ra, luai_numsub(L, nvalue(ra), nvalue(pstep))); 741 setnvalue(ra, luai_numsub(L, nvalue(ra), nvalue(pstep)));
737 dojump(GETARG_sBx(i)); 742 dojump(GETARG_sBx(i));
738 continue; 743 break;
739 } 744 }
740 case OP_TFORCALL: { 745 case OP_TFORCALL: {
741 StkId cb = ra + 3; /* call base */ 746 StkId cb = ra + 3; /* call base */
@@ -755,7 +760,7 @@ void luaV_execute (lua_State *L) {
755 setobjs2s(L, ra, ra + 1); /* save control variable */ 760 setobjs2s(L, ra, ra + 1); /* save control variable */
756 dojump(GETARG_sBx(i)); /* jump back */ 761 dojump(GETARG_sBx(i)); /* jump back */
757 } 762 }
758 continue; 763 break;
759 } 764 }
760 case OP_SETLIST: { 765 case OP_SETLIST: {
761 int n = GETARG_B(i); 766 int n = GETARG_B(i);
@@ -777,11 +782,11 @@ void luaV_execute (lua_State *L) {
777 luaC_barriert(L, h, val); 782 luaC_barriert(L, h, val);
778 } 783 }
779 L->top = ci->top; /* correct top (in case of previous open call) */ 784 L->top = ci->top; /* correct top (in case of previous open call) */
780 continue; 785 break;
781 } 786 }
782 case OP_CLOSE: { 787 case OP_CLOSE: {
783 luaF_close(L, ra); 788 luaF_close(L, ra);
784 continue; 789 break;
785 } 790 }
786 case OP_CLOSURE: { 791 case OP_CLOSURE: {
787 Proto *p = cl->p->p[GETARG_Bx(i)]; /* prototype for new closure */ 792 Proto *p = cl->p->p[GETARG_Bx(i)]; /* prototype for new closure */
@@ -806,7 +811,7 @@ void luaV_execute (lua_State *L) {
806 ncl->l.upvals[j] = cl->upvals[uv[j].idx]; 811 ncl->l.upvals[j] = cl->upvals[uv[j].idx];
807 } 812 }
808 Protect(luaC_checkGC(L)); 813 Protect(luaC_checkGC(L));
809 continue; 814 break;
810 } 815 }
811 case OP_VARARG: { 816 case OP_VARARG: {
812 int b = GETARG_B(i) - 1; 817 int b = GETARG_B(i) - 1;
@@ -826,18 +831,13 @@ void luaV_execute (lua_State *L) {
826 setnilvalue(ra + j); 831 setnilvalue(ra + j);
827 } 832 }
828 } 833 }
829 continue; 834 break;
830 } 835 }
831 case OP_EXTRAARG: { 836 case OP_EXTRAARG: {
832 luaG_runerror(L, "bad opcode"); 837 luaG_runerror(L, "bad opcode");
833 return; 838 return;
834 } 839 }
835 } 840 }
836 /* function changed (call/return): update pointers */
837 lua_assert(ci == L->ci);
838 cl = &clvalue(ci->func)->l;
839 k = cl->p->k;
840 base = ci->u.l.base;
841 } 841 }
842} 842}
843 843