diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2010-02-27 18:16:24 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2010-02-27 18:16:24 -0300 |
| commit | 347f0c33d1911cb36f310131e55ad85aee23d44c (patch) | |
| tree | a9ae94e4e6f62b22bbc6709523364f5e46c0abbc | |
| parent | 622e44871069697b5591235c0362c0977db8c3ea (diff) | |
| download | lua-347f0c33d1911cb36f310131e55ad85aee23d44c.tar.gz lua-347f0c33d1911cb36f310131e55ad85aee23d44c.tar.bz2 lua-347f0c33d1911cb36f310131e55ad85aee23d44c.zip | |
avoid 'continue' unless necessary
| -rw-r--r-- | llex.c | 16 | ||||
| -rw-r--r-- | lvm.c | 102 |
2 files changed, 59 insertions, 59 deletions
| @@ -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); |
| @@ -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 | ||
| 449 | void luaV_execute (lua_State *L) { | 449 | void 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 | ||
