diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2010-05-12 17:40:35 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2010-05-12 17:40:35 -0300 |
| commit | b6e9fcbd70b8e006417ef771f9789d54d075b552 (patch) | |
| tree | 789abbc9b43a1696f59a85ba4b18c81b20dad739 | |
| parent | 8554baeacf8e2af3e87d5f1c0e033fc9d1f9dc8e (diff) | |
| download | lua-b6e9fcbd70b8e006417ef771f9789d54d075b552.tar.gz lua-b6e9fcbd70b8e006417ef771f9789d54d075b552.tar.bz2 lua-b6e9fcbd70b8e006417ef771f9789d54d075b552.zip | |
use of macro ('vmcase') to format all cases in main switch of
'luaV_execute' (to facilitate experiences with direct threading)
| -rw-r--r-- | lvm.c | 204 |
1 files changed, 83 insertions, 121 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lvm.c,v 2.117 2010/05/05 18:49:56 roberto Exp roberto $ | 2 | ** $Id: lvm.c,v 2.118 2010/05/12 20:31:33 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 | */ |
| @@ -436,11 +436,10 @@ void luaV_finishOp (lua_State *L) { | |||
| 436 | lua_Number nb = nvalue(rb), nc = nvalue(rc); \ | 436 | lua_Number nb = nvalue(rb), nc = nvalue(rc); \ |
| 437 | setnvalue(ra, op(L, nb, nc)); \ | 437 | setnvalue(ra, op(L, nb, nc)); \ |
| 438 | } \ | 438 | } \ |
| 439 | else \ | 439 | else { Protect(luaV_arith(L, ra, rb, rc, tm)); } } |
| 440 | Protect(luaV_arith(L, ra, rb, rc, tm)); \ | ||
| 441 | } | ||
| 442 | 440 | ||
| 443 | 441 | ||
| 442 | #define vmcase(l,b) case l: {b} break; | ||
| 444 | 443 | ||
| 445 | void luaV_execute (lua_State *L) { | 444 | void luaV_execute (lua_State *L) { |
| 446 | CallInfo *ci = L->ci; | 445 | CallInfo *ci = L->ci; |
| @@ -466,57 +465,47 @@ void luaV_execute (lua_State *L) { | |||
| 466 | lua_assert(base == ci->u.l.base); | 465 | lua_assert(base == ci->u.l.base); |
| 467 | lua_assert(base <= L->top && L->top < L->stack + L->stacksize); | 466 | lua_assert(base <= L->top && L->top < L->stack + L->stacksize); |
| 468 | switch (GET_OPCODE(i)) { | 467 | switch (GET_OPCODE(i)) { |
| 469 | case OP_MOVE: { | 468 | vmcase(OP_MOVE, |
| 470 | setobjs2s(L, ra, RB(i)); | 469 | setobjs2s(L, ra, RB(i)); |
| 471 | break; | 470 | ) |
| 472 | } | 471 | vmcase(OP_LOADK, |
| 473 | case OP_LOADK: { | ||
| 474 | TValue *rb = KBx(i); | 472 | TValue *rb = KBx(i); |
| 475 | setobj2s(L, ra, rb); | 473 | setobj2s(L, ra, rb); |
| 476 | break; | 474 | ) |
| 477 | } | 475 | vmcase(OP_LOADBOOL, |
| 478 | case OP_LOADBOOL: { | ||
| 479 | setbvalue(ra, GETARG_B(i)); | 476 | setbvalue(ra, GETARG_B(i)); |
| 480 | if (GETARG_C(i)) ci->u.l.savedpc++; /* skip next instruction (if C) */ | 477 | if (GETARG_C(i)) ci->u.l.savedpc++; /* skip next instruction (if C) */ |
| 481 | break; | 478 | ) |
| 482 | } | 479 | vmcase(OP_LOADNIL, |
| 483 | case OP_LOADNIL: { | ||
| 484 | TValue *rb = RB(i); | 480 | TValue *rb = RB(i); |
| 485 | do { | 481 | do { |
| 486 | setnilvalue(rb--); | 482 | setnilvalue(rb--); |
| 487 | } while (rb >= ra); | 483 | } while (rb >= ra); |
| 488 | break; | 484 | ) |
| 489 | } | 485 | vmcase(OP_GETUPVAL, |
| 490 | case OP_GETUPVAL: { | ||
| 491 | int b = GETARG_B(i); | 486 | int b = GETARG_B(i); |
| 492 | setobj2s(L, ra, cl->upvals[b]->v); | 487 | setobj2s(L, ra, cl->upvals[b]->v); |
| 493 | break; | 488 | ) |
| 494 | } | 489 | vmcase(OP_GETTABUP, |
| 495 | case OP_GETTABUP: { | ||
| 496 | int b = GETARG_B(i); | 490 | int b = GETARG_B(i); |
| 497 | Protect(luaV_gettable(L, cl->upvals[b]->v, RKC(i), ra)); | 491 | Protect(luaV_gettable(L, cl->upvals[b]->v, RKC(i), ra)); |
| 498 | break; | 492 | ) |
| 499 | } | 493 | vmcase(OP_GETTABLE, |
| 500 | case OP_GETTABLE: { | ||
| 501 | Protect(luaV_gettable(L, RB(i), RKC(i), ra)); | 494 | Protect(luaV_gettable(L, RB(i), RKC(i), ra)); |
| 502 | break; | 495 | ) |
| 503 | } | 496 | vmcase(OP_SETTABUP, |
| 504 | case OP_SETTABUP: { | ||
| 505 | int a = GETARG_A(i); | 497 | int a = GETARG_A(i); |
| 506 | Protect(luaV_settable(L, cl->upvals[a]->v, RKB(i), RKC(i))); | 498 | Protect(luaV_settable(L, cl->upvals[a]->v, RKB(i), RKC(i))); |
| 507 | break; | 499 | ) |
| 508 | } | 500 | vmcase(OP_SETUPVAL, |
| 509 | case OP_SETUPVAL: { | ||
| 510 | UpVal *uv = cl->upvals[GETARG_B(i)]; | 501 | UpVal *uv = cl->upvals[GETARG_B(i)]; |
| 511 | setobj(L, uv->v, ra); | 502 | setobj(L, uv->v, ra); |
| 512 | luaC_barrier(L, uv, ra); | 503 | luaC_barrier(L, uv, ra); |
| 513 | break; | 504 | ) |
| 514 | } | 505 | vmcase(OP_SETTABLE, |
| 515 | case OP_SETTABLE: { | ||
| 516 | Protect(luaV_settable(L, ra, RKB(i), RKC(i))); | 506 | Protect(luaV_settable(L, ra, RKB(i), RKC(i))); |
| 517 | break; | 507 | ) |
| 518 | } | 508 | vmcase(OP_NEWTABLE, |
| 519 | case OP_NEWTABLE: { | ||
| 520 | int b = GETARG_B(i); | 509 | int b = GETARG_B(i); |
| 521 | int c = GETARG_C(i); | 510 | int c = GETARG_C(i); |
| 522 | Table *t = luaH_new(L); | 511 | Table *t = luaH_new(L); |
| @@ -524,39 +513,31 @@ void luaV_execute (lua_State *L) { | |||
| 524 | if (b != 0 || c != 0) | 513 | if (b != 0 || c != 0) |
| 525 | luaH_resize(L, t, luaO_fb2int(b), luaO_fb2int(c)); | 514 | luaH_resize(L, t, luaO_fb2int(b), luaO_fb2int(c)); |
| 526 | checkGC(L); | 515 | checkGC(L); |
| 527 | break; | 516 | ) |
| 528 | } | 517 | vmcase(OP_SELF, |
| 529 | case OP_SELF: { | ||
| 530 | StkId rb = RB(i); | 518 | StkId rb = RB(i); |
| 531 | setobjs2s(L, ra+1, rb); | 519 | setobjs2s(L, ra+1, rb); |
| 532 | Protect(luaV_gettable(L, rb, RKC(i), ra)); | 520 | Protect(luaV_gettable(L, rb, RKC(i), ra)); |
| 533 | break; | 521 | ) |
| 534 | } | 522 | vmcase(OP_ADD, |
| 535 | case OP_ADD: { | ||
| 536 | arith_op(luai_numadd, TM_ADD); | 523 | arith_op(luai_numadd, TM_ADD); |
| 537 | break; | 524 | ) |
| 538 | } | 525 | vmcase(OP_SUB, |
| 539 | case OP_SUB: { | ||
| 540 | arith_op(luai_numsub, TM_SUB); | 526 | arith_op(luai_numsub, TM_SUB); |
| 541 | break; | 527 | ) |
| 542 | } | 528 | vmcase(OP_MUL, |
| 543 | case OP_MUL: { | ||
| 544 | arith_op(luai_nummul, TM_MUL); | 529 | arith_op(luai_nummul, TM_MUL); |
| 545 | break; | 530 | ) |
| 546 | } | 531 | vmcase(OP_DIV, |
| 547 | case OP_DIV: { | ||
| 548 | arith_op(luai_numdiv, TM_DIV); | 532 | arith_op(luai_numdiv, TM_DIV); |
| 549 | break; | 533 | ) |
| 550 | } | 534 | vmcase(OP_MOD, |
| 551 | case OP_MOD: { | ||
| 552 | arith_op(luai_nummod, TM_MOD); | 535 | arith_op(luai_nummod, TM_MOD); |
| 553 | break; | 536 | ) |
| 554 | } | 537 | vmcase(OP_POW, |
| 555 | case OP_POW: { | ||
| 556 | arith_op(luai_numpow, TM_POW); | 538 | arith_op(luai_numpow, TM_POW); |
| 557 | break; | 539 | ) |
| 558 | } | 540 | vmcase(OP_UNM, |
| 559 | case OP_UNM: { | ||
| 560 | TValue *rb = RB(i); | 541 | TValue *rb = RB(i); |
| 561 | if (ttisnumber(rb)) { | 542 | if (ttisnumber(rb)) { |
| 562 | lua_Number nb = nvalue(rb); | 543 | lua_Number nb = nvalue(rb); |
| @@ -565,31 +546,26 @@ void luaV_execute (lua_State *L) { | |||
| 565 | else { | 546 | else { |
| 566 | Protect(luaV_arith(L, ra, rb, rb, TM_UNM)); | 547 | Protect(luaV_arith(L, ra, rb, rb, TM_UNM)); |
| 567 | } | 548 | } |
| 568 | break; | 549 | ) |
| 569 | } | 550 | vmcase(OP_NOT, |
| 570 | case OP_NOT: { | ||
| 571 | int res = l_isfalse(RB(i)); /* next assignment may change this value */ | 551 | int res = l_isfalse(RB(i)); /* next assignment may change this value */ |
| 572 | setbvalue(ra, res); | 552 | setbvalue(ra, res); |
| 573 | break; | 553 | ) |
| 574 | } | 554 | vmcase(OP_LEN, |
| 575 | case OP_LEN: { | ||
| 576 | Protect(luaV_objlen(L, ra, RB(i))); | 555 | Protect(luaV_objlen(L, ra, RB(i))); |
| 577 | break; | 556 | ) |
| 578 | } | 557 | vmcase(OP_CONCAT, |
| 579 | case OP_CONCAT: { | ||
| 580 | int b = GETARG_B(i); | 558 | int b = GETARG_B(i); |
| 581 | int c = GETARG_C(i); | 559 | int c = GETARG_C(i); |
| 582 | L->top = base + c + 1; /* mark the end of concat operands */ | 560 | L->top = base + c + 1; /* mark the end of concat operands */ |
| 583 | Protect(luaV_concat(L, c-b+1); checkGC(L);) | 561 | Protect(luaV_concat(L, c-b+1); checkGC(L);) |
| 584 | L->top = ci->top; /* restore top */ | 562 | L->top = ci->top; /* restore top */ |
| 585 | setobjs2s(L, RA(i), base+b); | 563 | setobjs2s(L, RA(i), base+b); |
| 586 | break; | 564 | ) |
| 587 | } | 565 | vmcase(OP_JMP, |
| 588 | case OP_JMP: { | ||
| 589 | dojump(GETARG_sBx(i)); | 566 | dojump(GETARG_sBx(i)); |
| 590 | break; | 567 | ) |
| 591 | } | 568 | vmcase(OP_EQ, |
| 592 | case OP_EQ: { | ||
| 593 | TValue *rb = RKB(i); | 569 | TValue *rb = RKB(i); |
| 594 | TValue *rc = RKC(i); | 570 | TValue *rc = RKC(i); |
| 595 | Protect( | 571 | Protect( |
| @@ -597,40 +573,35 @@ void luaV_execute (lua_State *L) { | |||
| 597 | dojump(GETARG_sBx(*ci->u.l.savedpc)); | 573 | dojump(GETARG_sBx(*ci->u.l.savedpc)); |
| 598 | ) | 574 | ) |
| 599 | ci->u.l.savedpc++; | 575 | ci->u.l.savedpc++; |
| 600 | break; | 576 | ) |
| 601 | } | 577 | vmcase(OP_LT, |
| 602 | case OP_LT: { | ||
| 603 | Protect( | 578 | Protect( |
| 604 | if (luaV_lessthan(L, RKB(i), RKC(i)) == GETARG_A(i)) | 579 | if (luaV_lessthan(L, RKB(i), RKC(i)) == GETARG_A(i)) |
| 605 | dojump(GETARG_sBx(*ci->u.l.savedpc)); | 580 | dojump(GETARG_sBx(*ci->u.l.savedpc)); |
| 606 | ) | 581 | ) |
| 607 | ci->u.l.savedpc++; | 582 | ci->u.l.savedpc++; |
| 608 | break; | 583 | ) |
| 609 | } | 584 | vmcase(OP_LE, |
| 610 | case OP_LE: { | ||
| 611 | Protect( | 585 | Protect( |
| 612 | if (luaV_lessequal(L, RKB(i), RKC(i)) == GETARG_A(i)) | 586 | if (luaV_lessequal(L, RKB(i), RKC(i)) == GETARG_A(i)) |
| 613 | dojump(GETARG_sBx(*ci->u.l.savedpc)); | 587 | dojump(GETARG_sBx(*ci->u.l.savedpc)); |
| 614 | ) | 588 | ) |
| 615 | ci->u.l.savedpc++; | 589 | ci->u.l.savedpc++; |
| 616 | break; | 590 | ) |
| 617 | } | 591 | vmcase(OP_TEST, |
| 618 | case OP_TEST: { | ||
| 619 | if (GETARG_C(i) ? !l_isfalse(ra) : l_isfalse(ra)) | 592 | if (GETARG_C(i) ? !l_isfalse(ra) : l_isfalse(ra)) |
| 620 | dojump(GETARG_sBx(*ci->u.l.savedpc)); | 593 | dojump(GETARG_sBx(*ci->u.l.savedpc)); |
| 621 | ci->u.l.savedpc++; | 594 | ci->u.l.savedpc++; |
| 622 | break; | 595 | ) |
| 623 | } | 596 | vmcase(OP_TESTSET, |
| 624 | case OP_TESTSET: { | ||
| 625 | TValue *rb = RB(i); | 597 | TValue *rb = RB(i); |
| 626 | if (GETARG_C(i) ? !l_isfalse(rb) : l_isfalse(rb)) { | 598 | if (GETARG_C(i) ? !l_isfalse(rb) : l_isfalse(rb)) { |
| 627 | setobjs2s(L, ra, rb); | 599 | setobjs2s(L, ra, rb); |
| 628 | dojump(GETARG_sBx(*ci->u.l.savedpc)); | 600 | dojump(GETARG_sBx(*ci->u.l.savedpc)); |
| 629 | } | 601 | } |
| 630 | ci->u.l.savedpc++; | 602 | ci->u.l.savedpc++; |
| 631 | break; | 603 | ) |
| 632 | } | 604 | vmcase(OP_CALL, |
| 633 | case OP_CALL: { | ||
| 634 | int b = GETARG_B(i); | 605 | int b = GETARG_B(i); |
| 635 | int nresults = GETARG_C(i) - 1; | 606 | int nresults = GETARG_C(i) - 1; |
| 636 | if (b != 0) L->top = ra+b; /* else previous instruction set top */ | 607 | if (b != 0) L->top = ra+b; /* else previous instruction set top */ |
| @@ -643,9 +614,8 @@ void luaV_execute (lua_State *L) { | |||
| 643 | ci->callstatus |= CIST_REENTRY; | 614 | ci->callstatus |= CIST_REENTRY; |
| 644 | goto newframe; /* restart luaV_execute over new Lua function */ | 615 | goto newframe; /* restart luaV_execute over new Lua function */ |
| 645 | } | 616 | } |
| 646 | break; | 617 | ) |
| 647 | } | 618 | vmcase(OP_TAILCALL, |
| 648 | case OP_TAILCALL: { | ||
| 649 | int b = GETARG_B(i); | 619 | int b = GETARG_B(i); |
| 650 | if (b != 0) L->top = ra+b; /* else previous instruction set top */ | 620 | if (b != 0) L->top = ra+b; /* else previous instruction set top */ |
| 651 | lua_assert(GETARG_C(i) - 1 == LUA_MULTRET); | 621 | lua_assert(GETARG_C(i) - 1 == LUA_MULTRET); |
| @@ -673,9 +643,8 @@ void luaV_execute (lua_State *L) { | |||
| 673 | lua_assert(L->top == oci->u.l.base + getproto(ofunc)->maxstacksize); | 643 | lua_assert(L->top == oci->u.l.base + getproto(ofunc)->maxstacksize); |
| 674 | goto newframe; /* restart luaV_execute over new Lua function */ | 644 | goto newframe; /* restart luaV_execute over new Lua function */ |
| 675 | } | 645 | } |
| 676 | break; | 646 | ) |
| 677 | } | 647 | vmcase(OP_RETURN, |
| 678 | case OP_RETURN: { | ||
| 679 | int b = GETARG_B(i); | 648 | int b = GETARG_B(i); |
| 680 | if (b != 0) L->top = ra+b-1; | 649 | if (b != 0) L->top = ra+b-1; |
| 681 | if (cl->p->sizep > 0) luaF_close(L, base); | 650 | if (cl->p->sizep > 0) luaF_close(L, base); |
| @@ -689,8 +658,8 @@ void luaV_execute (lua_State *L) { | |||
| 689 | lua_assert(GET_OPCODE(*((ci)->u.l.savedpc - 1)) == OP_CALL); | 658 | lua_assert(GET_OPCODE(*((ci)->u.l.savedpc - 1)) == OP_CALL); |
| 690 | goto newframe; /* restart luaV_execute over new Lua function */ | 659 | goto newframe; /* restart luaV_execute over new Lua function */ |
| 691 | } | 660 | } |
| 692 | } | 661 | ) |
| 693 | case OP_FORLOOP: { | 662 | vmcase(OP_FORLOOP, |
| 694 | lua_Number step = nvalue(ra+2); | 663 | lua_Number step = nvalue(ra+2); |
| 695 | lua_Number idx = luai_numadd(L, nvalue(ra), step); /* increment index */ | 664 | lua_Number idx = luai_numadd(L, nvalue(ra), step); /* increment index */ |
| 696 | lua_Number limit = nvalue(ra+1); | 665 | lua_Number limit = nvalue(ra+1); |
| @@ -700,9 +669,8 @@ void luaV_execute (lua_State *L) { | |||
| 700 | setnvalue(ra, idx); /* update internal index... */ | 669 | setnvalue(ra, idx); /* update internal index... */ |
| 701 | setnvalue(ra+3, idx); /* ...and external index */ | 670 | setnvalue(ra+3, idx); /* ...and external index */ |
| 702 | } | 671 | } |
| 703 | break; | 672 | ) |
| 704 | } | 673 | vmcase(OP_FORPREP, |
| 705 | case OP_FORPREP: { | ||
| 706 | const TValue *init = ra; | 674 | const TValue *init = ra; |
| 707 | const TValue *plimit = ra+1; | 675 | const TValue *plimit = ra+1; |
| 708 | const TValue *pstep = ra+2; | 676 | const TValue *pstep = ra+2; |
| @@ -714,9 +682,8 @@ void luaV_execute (lua_State *L) { | |||
| 714 | luaG_runerror(L, LUA_QL("for") " step must be a number"); | 682 | luaG_runerror(L, LUA_QL("for") " step must be a number"); |
| 715 | setnvalue(ra, luai_numsub(L, nvalue(ra), nvalue(pstep))); | 683 | setnvalue(ra, luai_numsub(L, nvalue(ra), nvalue(pstep))); |
| 716 | dojump(GETARG_sBx(i)); | 684 | dojump(GETARG_sBx(i)); |
| 717 | break; | 685 | ) |
| 718 | } | 686 | vmcase(OP_TFORCALL, |
| 719 | case OP_TFORCALL: { | ||
| 720 | StkId cb = ra + 3; /* call base */ | 687 | StkId cb = ra + 3; /* call base */ |
| 721 | setobjs2s(L, cb+2, ra+2); | 688 | setobjs2s(L, cb+2, ra+2); |
| 722 | setobjs2s(L, cb+1, ra+1); | 689 | setobjs2s(L, cb+1, ra+1); |
| @@ -728,16 +695,15 @@ void luaV_execute (lua_State *L) { | |||
| 728 | ra = RA(i); | 695 | ra = RA(i); |
| 729 | lua_assert(GET_OPCODE(i) == OP_TFORLOOP); | 696 | lua_assert(GET_OPCODE(i) == OP_TFORLOOP); |
| 730 | goto l_tforloop; | 697 | goto l_tforloop; |
| 731 | } | 698 | ) |
| 732 | case OP_TFORLOOP: { | 699 | vmcase(OP_TFORLOOP, |
| 733 | l_tforloop: | 700 | l_tforloop: |
| 734 | if (!ttisnil(ra + 1)) { /* continue loop? */ | 701 | if (!ttisnil(ra + 1)) { /* continue loop? */ |
| 735 | setobjs2s(L, ra, ra + 1); /* save control variable */ | 702 | setobjs2s(L, ra, ra + 1); /* save control variable */ |
| 736 | dojump(GETARG_sBx(i)); /* jump back */ | 703 | dojump(GETARG_sBx(i)); /* jump back */ |
| 737 | } | 704 | } |
| 738 | break; | 705 | ) |
| 739 | } | 706 | vmcase(OP_SETLIST, |
| 740 | case OP_SETLIST: { | ||
| 741 | int n = GETARG_B(i); | 707 | int n = GETARG_B(i); |
| 742 | int c = GETARG_C(i); | 708 | int c = GETARG_C(i); |
| 743 | int last; | 709 | int last; |
| @@ -757,13 +723,11 @@ void luaV_execute (lua_State *L) { | |||
| 757 | luaC_barriert(L, h, val); | 723 | luaC_barriert(L, h, val); |
| 758 | } | 724 | } |
| 759 | L->top = ci->top; /* correct top (in case of previous open call) */ | 725 | L->top = ci->top; /* correct top (in case of previous open call) */ |
| 760 | break; | 726 | ) |
| 761 | } | 727 | vmcase(OP_CLOSE, |
| 762 | case OP_CLOSE: { | ||
| 763 | luaF_close(L, ra); | 728 | luaF_close(L, ra); |
| 764 | break; | 729 | ) |
| 765 | } | 730 | vmcase(OP_CLOSURE, |
| 766 | case OP_CLOSURE: { | ||
| 767 | Proto *p = cl->p->p[GETARG_Bx(i)]; /* prototype for new closure */ | 731 | Proto *p = cl->p->p[GETARG_Bx(i)]; /* prototype for new closure */ |
| 768 | int nup = p->sizeupvalues; | 732 | int nup = p->sizeupvalues; |
| 769 | Closure *ncl = luaF_newLclosure(L, nup); | 733 | Closure *ncl = luaF_newLclosure(L, nup); |
| @@ -778,9 +742,8 @@ void luaV_execute (lua_State *L) { | |||
| 778 | ncl->l.upvals[j] = cl->upvals[uv[j].idx]; | 742 | ncl->l.upvals[j] = cl->upvals[uv[j].idx]; |
| 779 | } | 743 | } |
| 780 | checkGC(L); | 744 | checkGC(L); |
| 781 | break; | 745 | ) |
| 782 | } | 746 | vmcase(OP_VARARG, |
| 783 | case OP_VARARG: { | ||
| 784 | int b = GETARG_B(i) - 1; | 747 | int b = GETARG_B(i) - 1; |
| 785 | int j; | 748 | int j; |
| 786 | int n = cast_int(base - ci->func) - cl->p->numparams - 1; | 749 | int n = cast_int(base - ci->func) - cl->p->numparams - 1; |
| @@ -798,11 +761,10 @@ void luaV_execute (lua_State *L) { | |||
| 798 | setnilvalue(ra + j); | 761 | setnilvalue(ra + j); |
| 799 | } | 762 | } |
| 800 | } | 763 | } |
| 801 | break; | 764 | ) |
| 802 | } | 765 | vmcase(OP_EXTRAARG, |
| 803 | case OP_EXTRAARG: { | ||
| 804 | lua_assert(0); | 766 | lua_assert(0); |
| 805 | } | 767 | ) |
| 806 | } | 768 | } |
| 807 | } | 769 | } |
| 808 | } | 770 | } |
