aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2012-05-23 22:21:33 +0200
committerMike Pall <mike>2012-05-23 22:22:10 +0200
commit10b9ed37e0f0605987ee2ce93542c7c44a5ec64e (patch)
tree629fd8c069b8a7e88ecdbc803492811b552ef455 /src
parent3a43ea50843e4f6db73b8edf637dfd209ffbe2ab (diff)
downloadluajit-10b9ed37e0f0605987ee2ce93542c7c44a5ec64e.tar.gz
luajit-10b9ed37e0f0605987ee2ce93542c7c44a5ec64e.tar.bz2
luajit-10b9ed37e0f0605987ee2ce93542c7c44a5ec64e.zip
PPC/e500: Fix tailcall from fast function (esp. tostring).
Diffstat (limited to 'src')
-rw-r--r--src/buildvm_ppcspe.dasc1
-rw-r--r--src/buildvm_ppcspe.h343
2 files changed, 173 insertions, 171 deletions
diff --git a/src/buildvm_ppcspe.dasc b/src/buildvm_ppcspe.dasc
index b9ee5b01..a7ef3ccd 100644
--- a/src/buildvm_ppcspe.dasc
+++ b/src/buildvm_ppcspe.dasc
@@ -1813,6 +1813,7 @@ static void build_subroutines(BuildCtx *ctx)
1813 | bne >3 1813 | bne >3
1814 | lwz INS, -4(PC) 1814 | lwz INS, -4(PC)
1815 | decode_RA8 TMP1, INS 1815 | decode_RA8 TMP1, INS
1816 | addi TMP1, TMP1, 8
1816 |3: 1817 |3:
1817 | sub TMP2, BASE, TMP1 1818 | sub TMP2, BASE, TMP1
1818 | b ->vm_call_dispatch // Resolve again for tailcall. 1819 | b ->vm_call_dispatch // Resolve again for tailcall.
diff --git a/src/buildvm_ppcspe.h b/src/buildvm_ppcspe.h
index 32571ebe..44fed683 100644
--- a/src/buildvm_ppcspe.h
+++ b/src/buildvm_ppcspe.h
@@ -12,7 +12,7 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned int build_actionlist[4995] = { 15static const unsigned int build_actionlist[4996] = {
160x00010001, 160x00010001,
170x00060014, 170x00060014,
180x72000000, 180x72000000,
@@ -2516,6 +2516,7 @@ static const unsigned int build_actionlist[4995] = {
25160x00050803, 25160x00050803,
25170x80f0fffc, 25170x80f0fffc,
25180x54e8dd78, 25180x54e8dd78,
25190x39080008,
25190x0006000d, 25200x0006000d,
25200x7d287050, 25210x7d287050,
25210x48000000, 25220x48000000,
@@ -5433,38 +5434,38 @@ static void build_subroutines(BuildCtx *ctx)
5433 dasm_put(Dst, 2417, Dt8(->f), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), 31-3, Dt1(->top), Dt7(->pc)); 5434 dasm_put(Dst, 2417, Dt8(->f), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), 31-3, Dt1(->top), Dt7(->pc));
5434 dasm_put(Dst, 2496, FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 5435 dasm_put(Dst, 2496, FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
5435#if LJ_HASJIT 5436#if LJ_HASJIT
5436 dasm_put(Dst, 2538); 5437 dasm_put(Dst, 2539);
5437#endif 5438#endif
5438 dasm_put(Dst, 2540, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, 31-LUA_HOOKLINE, DISPATCH_GL(hookcount), Dt1(->base), Dt1(->base)); 5439 dasm_put(Dst, 2541, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, 31-LUA_HOOKLINE, DISPATCH_GL(hookcount), Dt1(->base), Dt1(->base));
5439 dasm_put(Dst, 2587, GG_DISP2STATIC); 5440 dasm_put(Dst, 2588, GG_DISP2STATIC);
5440#if LJ_HASJIT 5441#if LJ_HASJIT
5441 dasm_put(Dst, 2605); 5442 dasm_put(Dst, 2606);
5442#endif 5443#endif
5443 dasm_put(Dst, 2607); 5444 dasm_put(Dst, 2608);
5444#if LJ_HASJIT 5445#if LJ_HASJIT
5445 dasm_put(Dst, 2610); 5446 dasm_put(Dst, 2611);
5446#endif 5447#endif
5447 dasm_put(Dst, 2613); 5448 dasm_put(Dst, 2614);
5448#if LJ_HASJIT 5449#if LJ_HASJIT
5449 dasm_put(Dst, 2615); 5450 dasm_put(Dst, 2616);
5450#endif 5451#endif
5451 dasm_put(Dst, 2618, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 5452 dasm_put(Dst, 2619, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
5452#if LJ_HASJIT 5453#if LJ_HASJIT
5453 dasm_put(Dst, 2640); 5454 dasm_put(Dst, 2641);
5454#endif 5455#endif
5455 dasm_put(Dst, 2642); 5456 dasm_put(Dst, 2643);
5456#if LJ_HASJIT 5457#if LJ_HASJIT
5457 dasm_put(Dst, 2644); 5458 dasm_put(Dst, 2645);
5458#endif 5459#endif
5459 dasm_put(Dst, 2646); 5460 dasm_put(Dst, 2647);
5460#if LJ_HASJIT 5461#if LJ_HASJIT
5461 dasm_put(Dst, 2730); 5462 dasm_put(Dst, 2731);
5462#else 5463#else
5463 dasm_put(Dst, 2753); 5464 dasm_put(Dst, 2754);
5464#endif 5465#endif
5465 dasm_put(Dst, 2756); 5466 dasm_put(Dst, 2757);
5466#if LJ_HASFFI 5467#if LJ_HASFFI
5467 dasm_put(Dst, 2819); 5468 dasm_put(Dst, 2820);
5468#endif 5469#endif
5469} 5470}
5470 5471
@@ -5472,7 +5473,7 @@ static void build_subroutines(BuildCtx *ctx)
5472static void build_ins(BuildCtx *ctx, BCOp op, int defop) 5473static void build_ins(BuildCtx *ctx, BCOp op, int defop)
5473{ 5474{
5474 int vk = 0; 5475 int vk = 0;
5475 dasm_put(Dst, 2821, defop); 5476 dasm_put(Dst, 2822, defop);
5476 5477
5477 switch (op) { 5478 switch (op) {
5478 5479
@@ -5481,118 +5482,118 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
5481 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 5482 /* Remember: all ops branch for a true comparison, fall through otherwise. */
5482 5483
5483 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 5484 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
5484 dasm_put(Dst, 2823, -(BCBIAS_J*4 >> 16)); 5485 dasm_put(Dst, 2824, -(BCBIAS_J*4 >> 16));
5485 if (op == BC_ISLE || op == BC_ISGT) { 5486 if (op == BC_ISLE || op == BC_ISGT) {
5486 dasm_put(Dst, 2837); 5487 dasm_put(Dst, 2838);
5487 } 5488 }
5488 if (op == BC_ISLT || op == BC_ISLE) { 5489 if (op == BC_ISLT || op == BC_ISLE) {
5489 dasm_put(Dst, 2840); 5490 dasm_put(Dst, 2841);
5490 } else { 5491 } else {
5491 dasm_put(Dst, 2842); 5492 dasm_put(Dst, 2843);
5492 } 5493 }
5493 dasm_put(Dst, 2844); 5494 dasm_put(Dst, 2845);
5494 break; 5495 break;
5495 5496
5496 case BC_ISEQV: case BC_ISNEV: 5497 case BC_ISEQV: case BC_ISNEV:
5497 vk = op == BC_ISEQV; 5498 vk = op == BC_ISEQV;
5498 dasm_put(Dst, 2855, -(BCBIAS_J*4 >> 16)); 5499 dasm_put(Dst, 2856, -(BCBIAS_J*4 >> 16));
5499 if (vk) { 5500 if (vk) {
5500 dasm_put(Dst, 2869); 5501 dasm_put(Dst, 2870);
5501 } else { 5502 } else {
5502 dasm_put(Dst, 2871); 5503 dasm_put(Dst, 2872);
5503 } 5504 }
5504 dasm_put(Dst, 2873, ~LJ_TISPRI, ~LJ_TISTABUD); 5505 dasm_put(Dst, 2874, ~LJ_TISPRI, ~LJ_TISTABUD);
5505 if (vk) { 5506 if (vk) {
5506 dasm_put(Dst, 2895); 5507 dasm_put(Dst, 2896);
5507 } else { 5508 } else {
5508 dasm_put(Dst, 2897); 5509 dasm_put(Dst, 2898);
5509 } 5510 }
5510 dasm_put(Dst, 2899); 5511 dasm_put(Dst, 2900);
5511 if (vk) { 5512 if (vk) {
5512 dasm_put(Dst, 2901); 5513 dasm_put(Dst, 2902);
5513 } else { 5514 } else {
5514 dasm_put(Dst, 2903); 5515 dasm_put(Dst, 2904);
5515 } 5516 }
5516 dasm_put(Dst, 2905, Dt6(->metatable), 1-vk, Dt6(->nomm), 1<<MM_eq); 5517 dasm_put(Dst, 2906, Dt6(->metatable), 1-vk, Dt6(->nomm), 1<<MM_eq);
5517 break; 5518 break;
5518 5519
5519 case BC_ISEQS: case BC_ISNES: 5520 case BC_ISEQS: case BC_ISNES:
5520 vk = op == BC_ISEQS; 5521 vk = op == BC_ISEQS;
5521 dasm_put(Dst, 2926, 32-1, -(BCBIAS_J*4 >> 16)); 5522 dasm_put(Dst, 2927, 32-1, -(BCBIAS_J*4 >> 16));
5522 if (vk) { 5523 if (vk) {
5523 dasm_put(Dst, 2940); 5524 dasm_put(Dst, 2941);
5524 } else { 5525 } else {
5525 dasm_put(Dst, 2942); 5526 dasm_put(Dst, 2943);
5526 } 5527 }
5527 dasm_put(Dst, 2944); 5528 dasm_put(Dst, 2945);
5528 break; 5529 break;
5529 5530
5530 case BC_ISEQN: case BC_ISNEN: 5531 case BC_ISEQN: case BC_ISNEN:
5531 vk = op == BC_ISEQN; 5532 vk = op == BC_ISEQN;
5532 dasm_put(Dst, 2955, -(BCBIAS_J*4 >> 16)); 5533 dasm_put(Dst, 2956, -(BCBIAS_J*4 >> 16));
5533 if (vk) { 5534 if (vk) {
5534 dasm_put(Dst, 2969); 5535 dasm_put(Dst, 2970);
5535 } else { 5536 } else {
5536 dasm_put(Dst, 2972); 5537 dasm_put(Dst, 2973);
5537 } 5538 }
5538 dasm_put(Dst, 2974); 5539 dasm_put(Dst, 2975);
5539 if (!vk) { 5540 if (!vk) {
5540 dasm_put(Dst, 2986); 5541 dasm_put(Dst, 2987);
5541 } 5542 }
5542 break; 5543 break;
5543 5544
5544 case BC_ISEQP: case BC_ISNEP: 5545 case BC_ISEQP: case BC_ISNEP:
5545 vk = op == BC_ISEQP; 5546 vk = op == BC_ISEQP;
5546 dasm_put(Dst, 2992, 32-3, -(BCBIAS_J*4 >> 16)); 5547 dasm_put(Dst, 2993, 32-3, -(BCBIAS_J*4 >> 16));
5547 if (vk) { 5548 if (vk) {
5548 dasm_put(Dst, 3004); 5549 dasm_put(Dst, 3005);
5549 } else { 5550 } else {
5550 dasm_put(Dst, 3006); 5551 dasm_put(Dst, 3007);
5551 } 5552 }
5552 dasm_put(Dst, 3008); 5553 dasm_put(Dst, 3009);
5553 break; 5554 break;
5554 5555
5555 /* -- Unary test and copy ops ------------------------------------------- */ 5556 /* -- Unary test and copy ops ------------------------------------------- */
5556 5557
5557 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 5558 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
5558 dasm_put(Dst, 3019); 5559 dasm_put(Dst, 3020);
5559 if (op == BC_IST || op == BC_ISF) { 5560 if (op == BC_IST || op == BC_ISF) {
5560 dasm_put(Dst, 3025, -(BCBIAS_J*4 >> 16)); 5561 dasm_put(Dst, 3026, -(BCBIAS_J*4 >> 16));
5561 if (op == BC_IST) { 5562 if (op == BC_IST) {
5562 dasm_put(Dst, 3030); 5563 dasm_put(Dst, 3031);
5563 } else { 5564 } else {
5564 dasm_put(Dst, 3032); 5565 dasm_put(Dst, 3033);
5565 } 5566 }
5566 } else { 5567 } else {
5567 if (op == BC_ISTC) { 5568 if (op == BC_ISTC) {
5568 dasm_put(Dst, 3034); 5569 dasm_put(Dst, 3035);
5569 } else { 5570 } else {
5570 dasm_put(Dst, 3037); 5571 dasm_put(Dst, 3038);
5571 } 5572 }
5572 dasm_put(Dst, 3040, -(BCBIAS_J*4 >> 16)); 5573 dasm_put(Dst, 3041, -(BCBIAS_J*4 >> 16));
5573 } 5574 }
5574 dasm_put(Dst, 3047); 5575 dasm_put(Dst, 3048);
5575 break; 5576 break;
5576 5577
5577 /* -- Unary ops --------------------------------------------------------- */ 5578 /* -- Unary ops --------------------------------------------------------- */
5578 5579
5579 case BC_MOV: 5580 case BC_MOV:
5580 dasm_put(Dst, 3058); 5581 dasm_put(Dst, 3059);
5581 break; 5582 break;
5582 case BC_NOT: 5583 case BC_NOT:
5583 dasm_put(Dst, 3071, LJ_TTRUE); 5584 dasm_put(Dst, 3072, LJ_TTRUE);
5584 break; 5585 break;
5585 case BC_UNM: 5586 case BC_UNM:
5586 dasm_put(Dst, 3087); 5587 dasm_put(Dst, 3088);
5587 break; 5588 break;
5588 case BC_LEN: 5589 case BC_LEN:
5589 dasm_put(Dst, 3104, Dt5(->len)); 5590 dasm_put(Dst, 3105, Dt5(->len));
5590#ifdef LUAJIT_ENABLE_LUA52COMPAT 5591#ifdef LUAJIT_ENABLE_LUA52COMPAT
5591 dasm_put(Dst, 3128, Dt6(->metatable)); 5592 dasm_put(Dst, 3129, Dt6(->metatable));
5592#endif 5593#endif
5593 dasm_put(Dst, 3135); 5594 dasm_put(Dst, 3136);
5594#ifdef LUAJIT_ENABLE_LUA52COMPAT 5595#ifdef LUAJIT_ENABLE_LUA52COMPAT
5595 dasm_put(Dst, 3141, Dt6(->nomm), 1<<MM_len); 5596 dasm_put(Dst, 3142, Dt6(->nomm), 1<<MM_len);
5596#endif 5597#endif
5597 break; 5598 break;
5598 5599
@@ -5603,262 +5604,262 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
5603 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 5604 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
5604 switch (vk) { 5605 switch (vk) {
5605 case 0: 5606 case 0:
5606 dasm_put(Dst, 3151); 5607 dasm_put(Dst, 3152);
5607 break; 5608 break;
5608 case 1: 5609 case 1:
5609 dasm_put(Dst, 3157); 5610 dasm_put(Dst, 3158);
5610 break; 5611 break;
5611 default: 5612 default:
5612 dasm_put(Dst, 3163); 5613 dasm_put(Dst, 3164);
5613 break; 5614 break;
5614 } 5615 }
5615 dasm_put(Dst, 3170); 5616 dasm_put(Dst, 3171);
5616 break; 5617 break;
5617 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 5618 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
5618 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 5619 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
5619 switch (vk) { 5620 switch (vk) {
5620 case 0: 5621 case 0:
5621 dasm_put(Dst, 3183); 5622 dasm_put(Dst, 3184);
5622 break; 5623 break;
5623 case 1: 5624 case 1:
5624 dasm_put(Dst, 3189); 5625 dasm_put(Dst, 3190);
5625 break; 5626 break;
5626 default: 5627 default:
5627 dasm_put(Dst, 3195); 5628 dasm_put(Dst, 3196);
5628 break; 5629 break;
5629 } 5630 }
5630 dasm_put(Dst, 3202); 5631 dasm_put(Dst, 3203);
5631 break; 5632 break;
5632 case BC_MULVN: case BC_MULNV: case BC_MULVV: 5633 case BC_MULVN: case BC_MULNV: case BC_MULVV:
5633 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 5634 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
5634 switch (vk) { 5635 switch (vk) {
5635 case 0: 5636 case 0:
5636 dasm_put(Dst, 3215); 5637 dasm_put(Dst, 3216);
5637 break; 5638 break;
5638 case 1: 5639 case 1:
5639 dasm_put(Dst, 3221); 5640 dasm_put(Dst, 3222);
5640 break; 5641 break;
5641 default: 5642 default:
5642 dasm_put(Dst, 3227); 5643 dasm_put(Dst, 3228);
5643 break; 5644 break;
5644 } 5645 }
5645 dasm_put(Dst, 3234); 5646 dasm_put(Dst, 3235);
5646 break; 5647 break;
5647 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 5648 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
5648 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 5649 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
5649 switch (vk) { 5650 switch (vk) {
5650 case 0: 5651 case 0:
5651 dasm_put(Dst, 3247); 5652 dasm_put(Dst, 3248);
5652 break; 5653 break;
5653 case 1: 5654 case 1:
5654 dasm_put(Dst, 3253); 5655 dasm_put(Dst, 3254);
5655 break; 5656 break;
5656 default: 5657 default:
5657 dasm_put(Dst, 3259); 5658 dasm_put(Dst, 3260);
5658 break; 5659 break;
5659 } 5660 }
5660 dasm_put(Dst, 3266); 5661 dasm_put(Dst, 3267);
5661 break; 5662 break;
5662 case BC_MODVN: 5663 case BC_MODVN:
5663 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 5664 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
5664 switch (vk) { 5665 switch (vk) {
5665 case 0: 5666 case 0:
5666 dasm_put(Dst, 3279); 5667 dasm_put(Dst, 3280);
5667 break; 5668 break;
5668 case 1: 5669 case 1:
5669 dasm_put(Dst, 3285); 5670 dasm_put(Dst, 3286);
5670 break; 5671 break;
5671 default: 5672 default:
5672 dasm_put(Dst, 3291); 5673 dasm_put(Dst, 3292);
5673 break; 5674 break;
5674 } 5675 }
5675 dasm_put(Dst, 3298); 5676 dasm_put(Dst, 3299);
5676 break; 5677 break;
5677 case BC_MODNV: case BC_MODVV: 5678 case BC_MODNV: case BC_MODVV:
5678 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 5679 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
5679 switch (vk) { 5680 switch (vk) {
5680 case 0: 5681 case 0:
5681 dasm_put(Dst, 3316); 5682 dasm_put(Dst, 3317);
5682 break; 5683 break;
5683 case 1: 5684 case 1:
5684 dasm_put(Dst, 3322); 5685 dasm_put(Dst, 3323);
5685 break; 5686 break;
5686 default: 5687 default:
5687 dasm_put(Dst, 3328); 5688 dasm_put(Dst, 3329);
5688 break; 5689 break;
5689 } 5690 }
5690 dasm_put(Dst, 3335); 5691 dasm_put(Dst, 3336);
5691 break; 5692 break;
5692 case BC_POW: 5693 case BC_POW:
5693 dasm_put(Dst, 3338); 5694 dasm_put(Dst, 3339);
5694 break; 5695 break;
5695 5696
5696 case BC_CAT: 5697 case BC_CAT:
5697 dasm_put(Dst, 3360, Dt1(->base), 32-3, Dt1(->base)); 5698 dasm_put(Dst, 3361, Dt1(->base), 32-3, Dt1(->base));
5698 break; 5699 break;
5699 5700
5700 /* -- Constant ops ------------------------------------------------------ */ 5701 /* -- Constant ops ------------------------------------------------------ */
5701 5702
5702 case BC_KSTR: 5703 case BC_KSTR:
5703 dasm_put(Dst, 3390, 32-1); 5704 dasm_put(Dst, 3391, 32-1);
5704 break; 5705 break;
5705 case BC_KCDATA: 5706 case BC_KCDATA:
5706#if LJ_HASFFI 5707#if LJ_HASFFI
5707 dasm_put(Dst, 3407, 32-1, LJ_TCDATA); 5708 dasm_put(Dst, 3408, 32-1, LJ_TCDATA);
5708#endif 5709#endif
5709 break; 5710 break;
5710 case BC_KSHORT: 5711 case BC_KSHORT:
5711 dasm_put(Dst, 3426, 32-3); 5712 dasm_put(Dst, 3427, 32-3);
5712 break; 5713 break;
5713 case BC_KNUM: 5714 case BC_KNUM:
5714 dasm_put(Dst, 3442); 5715 dasm_put(Dst, 3443);
5715 break; 5716 break;
5716 case BC_KPRI: 5717 case BC_KPRI:
5717 dasm_put(Dst, 3455, 32-3); 5718 dasm_put(Dst, 3456, 32-3);
5718 break; 5719 break;
5719 case BC_KNIL: 5720 case BC_KNIL:
5720 dasm_put(Dst, 3470); 5721 dasm_put(Dst, 3471);
5721 break; 5722 break;
5722 5723
5723 /* -- Upvalue and function ops ------------------------------------------ */ 5724 /* -- Upvalue and function ops ------------------------------------------ */
5724 5725
5725 case BC_UGET: 5726 case BC_UGET:
5726 dasm_put(Dst, 3489, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); 5727 dasm_put(Dst, 3490, 32-1, offsetof(GCfuncL, uvptr), DtA(->v));
5727 break; 5728 break;
5728 case BC_USETV: 5729 case BC_USETV:
5729 dasm_put(Dst, 3510, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), -(LJ_TISNUM+1), LJ_TISGCV - (LJ_TISNUM+1), Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 5730 dasm_put(Dst, 3511, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), -(LJ_TISNUM+1), LJ_TISGCV - (LJ_TISNUM+1), Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
5730 break; 5731 break;
5731 case BC_USETS: 5732 case BC_USETS:
5732 dasm_put(Dst, 3562, 32-1, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, Dt5(->marked), DtA(->closed), LJ_GC_WHITES, GG_DISP2G); 5733 dasm_put(Dst, 3563, 32-1, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, Dt5(->marked), DtA(->closed), LJ_GC_WHITES, GG_DISP2G);
5733 break; 5734 break;
5734 case BC_USETN: 5735 case BC_USETN:
5735 dasm_put(Dst, 3611, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); 5736 dasm_put(Dst, 3612, 32-1, offsetof(GCfuncL, uvptr), DtA(->v));
5736 break; 5737 break;
5737 case BC_USETP: 5738 case BC_USETP:
5738 dasm_put(Dst, 3632, 32-1, offsetof(GCfuncL, uvptr), 32-3, DtA(->v)); 5739 dasm_put(Dst, 3633, 32-1, offsetof(GCfuncL, uvptr), 32-3, DtA(->v));
5739 break; 5740 break;
5740 5741
5741 case BC_UCLO: 5742 case BC_UCLO:
5742 dasm_put(Dst, 3655, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base)); 5743 dasm_put(Dst, 3656, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base));
5743 break; 5744 break;
5744 5745
5745 case BC_FNEW: 5746 case BC_FNEW:
5746 dasm_put(Dst, 3685, 32-1, Dt1(->base), Dt1(->base)); 5747 dasm_put(Dst, 3686, 32-1, Dt1(->base), Dt1(->base));
5747 break; 5748 break;
5748 5749
5749 /* -- Table ops --------------------------------------------------------- */ 5750 /* -- Table ops --------------------------------------------------------- */
5750 5751
5751 case BC_TNEW: 5752 case BC_TNEW:
5752 case BC_TDUP: 5753 case BC_TDUP:
5753 dasm_put(Dst, 3711, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); 5754 dasm_put(Dst, 3712, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base));
5754 if (op == BC_TNEW) { 5755 if (op == BC_TNEW) {
5755 dasm_put(Dst, 3724); 5756 dasm_put(Dst, 3725);
5756 } else { 5757 } else {
5757 dasm_put(Dst, 3732, 32-1); 5758 dasm_put(Dst, 3733, 32-1);
5758 } 5759 }
5759 dasm_put(Dst, 3739, Dt1(->base)); 5760 dasm_put(Dst, 3740, Dt1(->base));
5760 break; 5761 break;
5761 5762
5762 case BC_GGET: 5763 case BC_GGET:
5763 case BC_GSET: 5764 case BC_GSET:
5764 dasm_put(Dst, 3762, 32-1, Dt7(->env)); 5765 dasm_put(Dst, 3763, 32-1, Dt7(->env));
5765 if (op == BC_GGET) { 5766 if (op == BC_GGET) {
5766 dasm_put(Dst, 3770); 5767 dasm_put(Dst, 3771);
5767 } else { 5768 } else {
5768 dasm_put(Dst, 3773); 5769 dasm_put(Dst, 3774);
5769 } 5770 }
5770 break; 5771 break;
5771 5772
5772 case BC_TGETV: 5773 case BC_TGETV:
5773 dasm_put(Dst, 3776, Dt6(->asize), Dt6(->array), 31-3, Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 5774 dasm_put(Dst, 3777, Dt6(->asize), Dt6(->array), 31-3, Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
5774 break; 5775 break;
5775 case BC_TGETS: 5776 case BC_TGETS:
5776 dasm_put(Dst, 3834, 32-1, Dt6(->hmask), Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), DtB(->val), DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 5777 dasm_put(Dst, 3835, 32-1, Dt6(->hmask), Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), DtB(->val), DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
5777 dasm_put(Dst, 3898); 5778 dasm_put(Dst, 3899);
5778 break; 5779 break;
5779 case BC_TGETB: 5780 case BC_TGETB:
5780 dasm_put(Dst, 3903, 32-3, Dt6(->asize), Dt6(->array), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 5781 dasm_put(Dst, 3904, 32-3, Dt6(->asize), Dt6(->array), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
5781 break; 5782 break;
5782 5783
5783 case BC_TSETV: 5784 case BC_TSETV:
5784 dasm_put(Dst, 3947, Dt6(->asize), Dt6(->array), 31-3, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex); 5785 dasm_put(Dst, 3948, Dt6(->asize), Dt6(->array), 31-3, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
5785 dasm_put(Dst, 4014, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); 5786 dasm_put(Dst, 4015, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
5786 break; 5787 break;
5787 case BC_TSETS: 5788 case BC_TSETS:
5788 dasm_put(Dst, 4026, 32-1, Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), 31-5, 31-3, Dt6(->marked), DtB(->key), DtB(->val), LJ_GC_BLACK, DtB(->val), Dt6(->metatable)); 5789 dasm_put(Dst, 4027, 32-1, Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), 31-5, 31-3, Dt6(->marked), DtB(->key), DtB(->val), LJ_GC_BLACK, DtB(->val), Dt6(->metatable));
5789 dasm_put(Dst, 4087, Dt6(->nomm), 1<<MM_newindex, DtB(->next), Dt6(->metatable), DISPATCH_GL(tmptv), Dt1(->base), Dt6(->nomm), 1<<MM_newindex, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); 5790 dasm_put(Dst, 4088, Dt6(->nomm), 1<<MM_newindex, DtB(->next), Dt6(->metatable), DISPATCH_GL(tmptv), Dt1(->base), Dt6(->nomm), 1<<MM_newindex, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain));
5790 dasm_put(Dst, 4138, Dt6(->marked), Dt6(->gclist)); 5791 dasm_put(Dst, 4139, Dt6(->marked), Dt6(->gclist));
5791 break; 5792 break;
5792 case BC_TSETB: 5793 case BC_TSETB:
5793 dasm_put(Dst, 4145, 32-3, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked)); 5794 dasm_put(Dst, 4146, 32-3, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked));
5794 dasm_put(Dst, 4205, Dt6(->gclist)); 5795 dasm_put(Dst, 4206, Dt6(->gclist));
5795 break; 5796 break;
5796 5797
5797 case BC_TSETM: 5798 case BC_TSETM:
5798 dasm_put(Dst, 4210, 32-3, Dt6(->asize), 31-3, Dt6(->marked), Dt6(->array), LJ_GC_BLACK, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); 5799 dasm_put(Dst, 4211, 32-3, Dt6(->asize), 31-3, Dt6(->marked), Dt6(->array), LJ_GC_BLACK, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
5799 dasm_put(Dst, 4279); 5800 dasm_put(Dst, 4280);
5800 break; 5801 break;
5801 5802
5802 /* -- Calls and vararg handling ----------------------------------------- */ 5803 /* -- Calls and vararg handling ----------------------------------------- */
5803 5804
5804 case BC_CALLM: 5805 case BC_CALLM:
5805 dasm_put(Dst, 4282); 5806 dasm_put(Dst, 4283);
5806 break; 5807 break;
5807 case BC_CALL: 5808 case BC_CALL:
5808 dasm_put(Dst, 4284, Dt7(->pc)); 5809 dasm_put(Dst, 4285, Dt7(->pc));
5809 break; 5810 break;
5810 5811
5811 case BC_CALLMT: 5812 case BC_CALLMT:
5812 dasm_put(Dst, 4304); 5813 dasm_put(Dst, 4305);
5813 break; 5814 break;
5814 case BC_CALLT: 5815 case BC_CALLT:
5815 dasm_put(Dst, 4306, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); 5816 dasm_put(Dst, 4307, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP);
5816 dasm_put(Dst, 4371, FRAME_TYPE); 5817 dasm_put(Dst, 4372, FRAME_TYPE);
5817 break; 5818 break;
5818 5819
5819 case BC_ITERC: 5820 case BC_ITERC:
5820 dasm_put(Dst, 4378, Dt7(->pc)); 5821 dasm_put(Dst, 4379, Dt7(->pc));
5821 break; 5822 break;
5822 5823
5823 case BC_ITERN: 5824 case BC_ITERN:
5824#if LJ_HASJIT 5825#if LJ_HASJIT
5825#endif 5826#endif
5826 dasm_put(Dst, 4404, Dt6(->asize), Dt6(->array), 31-3, -(BCBIAS_J*4 >> 16), Dt6(->hmask), Dt6(->node), 31-5, 31-3, DtB(->key), -(BCBIAS_J*4 >> 16)); 5827 dasm_put(Dst, 4405, Dt6(->asize), Dt6(->array), 31-3, -(BCBIAS_J*4 >> 16), Dt6(->hmask), Dt6(->node), 31-5, 31-3, DtB(->key), -(BCBIAS_J*4 >> 16));
5827 dasm_put(Dst, 4483); 5828 dasm_put(Dst, 4484);
5828 break; 5829 break;
5829 5830
5830 case BC_ISNEXT: 5831 case BC_ISNEXT:
5831 dasm_put(Dst, 4487, LJ_TTAB, LJ_TFUNC, LJ_TNIL, Dt8(->ffid), FF_next_N, 32-1, -(BCBIAS_J*4 >> 16), BC_JMP, BC_ITERC, -(BCBIAS_J*4 >> 16)); 5832 dasm_put(Dst, 4488, LJ_TTAB, LJ_TFUNC, LJ_TNIL, Dt8(->ffid), FF_next_N, 32-1, -(BCBIAS_J*4 >> 16), BC_JMP, BC_ITERC, -(BCBIAS_J*4 >> 16));
5832 break; 5833 break;
5833 5834
5834 case BC_VARG: 5835 case BC_VARG:
5835 dasm_put(Dst, 4538, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base)); 5836 dasm_put(Dst, 4539, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base));
5836 dasm_put(Dst, 4618); 5837 dasm_put(Dst, 4619);
5837 break; 5838 break;
5838 5839
5839 /* -- Returns ----------------------------------------------------------- */ 5840 /* -- Returns ----------------------------------------------------------- */
5840 5841
5841 case BC_RETM: 5842 case BC_RETM:
5842 dasm_put(Dst, 4624); 5843 dasm_put(Dst, 4625);
5843 break; 5844 break;
5844 5845
5845 case BC_RET: 5846 case BC_RET:
5846 dasm_put(Dst, 4626, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); 5847 dasm_put(Dst, 4627, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP);
5847 break; 5848 break;
5848 5849
5849 case BC_RET0: case BC_RET1: 5850 case BC_RET0: case BC_RET1:
5850 dasm_put(Dst, 4696, FRAME_TYPE, FRAME_VARG); 5851 dasm_put(Dst, 4697, FRAME_TYPE, FRAME_VARG);
5851 if (op == BC_RET1) { 5852 if (op == BC_RET1) {
5852 dasm_put(Dst, 4709); 5853 dasm_put(Dst, 4710);
5853 } 5854 }
5854 dasm_put(Dst, 4712, Dt7(->pc), PC2PROTO(k)); 5855 dasm_put(Dst, 4713, Dt7(->pc), PC2PROTO(k));
5855 break; 5856 break;
5856 5857
5857 /* -- Loops and branches ------------------------------------------------ */ 5858 /* -- Loops and branches ------------------------------------------------ */
5858 5859
5859 case BC_FORL: 5860 case BC_FORL:
5860#if LJ_HASJIT 5861#if LJ_HASJIT
5861 dasm_put(Dst, 4740); 5862 dasm_put(Dst, 4741);
5862#endif 5863#endif
5863 break; 5864 break;
5864 5865
@@ -5870,35 +5871,35 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
5870 case BC_FORI: 5871 case BC_FORI:
5871 case BC_IFORL: 5872 case BC_IFORL:
5872 vk = (op == BC_IFORL || op == BC_JFORL); 5873 vk = (op == BC_IFORL || op == BC_JFORL);
5873 dasm_put(Dst, 4742, FORL_IDX*8, FORL_STEP*8, FORL_STOP*8); 5874 dasm_put(Dst, 4743, FORL_IDX*8, FORL_STEP*8, FORL_STOP*8);
5874 if (!vk) { 5875 if (!vk) {
5875 dasm_put(Dst, 4750); 5876 dasm_put(Dst, 4751);
5876 } 5877 }
5877 if (vk) { 5878 if (vk) {
5878 dasm_put(Dst, 4758, FORL_IDX*8); 5879 dasm_put(Dst, 4759, FORL_IDX*8);
5879 } 5880 }
5880 dasm_put(Dst, 4762, FORL_EXT*8); 5881 dasm_put(Dst, 4763, FORL_EXT*8);
5881 if (op != BC_JFORL) { 5882 if (op != BC_JFORL) {
5882 dasm_put(Dst, 4770, 32-1); 5883 dasm_put(Dst, 4771, 32-1);
5883 if (op == BC_JFORI) { 5884 if (op == BC_JFORI) {
5884 dasm_put(Dst, 4774, -(BCBIAS_J*4 >> 16)); 5885 dasm_put(Dst, 4775, -(BCBIAS_J*4 >> 16));
5885 } else { 5886 } else {
5886 dasm_put(Dst, 4777, -(BCBIAS_J*4 >> 16)); 5887 dasm_put(Dst, 4778, -(BCBIAS_J*4 >> 16));
5887 } 5888 }
5888 } 5889 }
5889 if (op == BC_FORI) { 5890 if (op == BC_FORI) {
5890 dasm_put(Dst, 4780); 5891 dasm_put(Dst, 4781);
5891 } else if (op == BC_IFORL) { 5892 } else if (op == BC_IFORL) {
5892 dasm_put(Dst, 4782); 5893 dasm_put(Dst, 4783);
5893 } else { 5894 } else {
5894 dasm_put(Dst, 4784, BC_JLOOP); 5895 dasm_put(Dst, 4785, BC_JLOOP);
5895 } 5896 }
5896 dasm_put(Dst, 4787); 5897 dasm_put(Dst, 4788);
5897 break; 5898 break;
5898 5899
5899 case BC_ITERL: 5900 case BC_ITERL:
5900#if LJ_HASJIT 5901#if LJ_HASJIT
5901 dasm_put(Dst, 4802); 5902 dasm_put(Dst, 4803);
5902#endif 5903#endif
5903 break; 5904 break;
5904 5905
@@ -5907,40 +5908,40 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
5907 break; 5908 break;
5908#endif 5909#endif
5909 case BC_IITERL: 5910 case BC_IITERL:
5910 dasm_put(Dst, 4804); 5911 dasm_put(Dst, 4805);
5911 if (op == BC_JITERL) { 5912 if (op == BC_JITERL) {
5912 dasm_put(Dst, 4810); 5913 dasm_put(Dst, 4811);
5913 } else { 5914 } else {
5914 dasm_put(Dst, 4812, 32-1, -(BCBIAS_J*4 >> 16)); 5915 dasm_put(Dst, 4813, 32-1, -(BCBIAS_J*4 >> 16));
5915 } 5916 }
5916 dasm_put(Dst, 4819); 5917 dasm_put(Dst, 4820);
5917 break; 5918 break;
5918 5919
5919 case BC_LOOP: 5920 case BC_LOOP:
5920#if LJ_HASJIT 5921#if LJ_HASJIT
5921 dasm_put(Dst, 4831); 5922 dasm_put(Dst, 4832);
5922#endif 5923#endif
5923 break; 5924 break;
5924 5925
5925 case BC_ILOOP: 5926 case BC_ILOOP:
5926 dasm_put(Dst, 4833); 5927 dasm_put(Dst, 4834);
5927 break; 5928 break;
5928 5929
5929 case BC_JLOOP: 5930 case BC_JLOOP:
5930#if LJ_HASJIT 5931#if LJ_HASJIT
5931 dasm_put(Dst, 4844); 5932 dasm_put(Dst, 4845);
5932#endif 5933#endif
5933 break; 5934 break;
5934 5935
5935 case BC_JMP: 5936 case BC_JMP:
5936 dasm_put(Dst, 4846, 32-1, -(BCBIAS_J*4 >> 16)); 5937 dasm_put(Dst, 4847, 32-1, -(BCBIAS_J*4 >> 16));
5937 break; 5938 break;
5938 5939
5939 /* -- Function headers -------------------------------------------------- */ 5940 /* -- Function headers -------------------------------------------------- */
5940 5941
5941 case BC_FUNCF: 5942 case BC_FUNCF:
5942#if LJ_HASJIT 5943#if LJ_HASJIT
5943 dasm_put(Dst, 4862); 5944 dasm_put(Dst, 4863);
5944#endif 5945#endif
5945 case BC_FUNCV: /* NYI: compiled vararg functions. */ 5946 case BC_FUNCV: /* NYI: compiled vararg functions. */
5946 break; 5947 break;
@@ -5950,38 +5951,38 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
5950 break; 5951 break;
5951#endif 5952#endif
5952 case BC_IFUNCF: 5953 case BC_IFUNCF:
5953 dasm_put(Dst, 4864, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3); 5954 dasm_put(Dst, 4865, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3);
5954 if (op == BC_JFUNCF) { 5955 if (op == BC_JFUNCF) {
5955 dasm_put(Dst, 4882); 5956 dasm_put(Dst, 4883);
5956 } else { 5957 } else {
5957 dasm_put(Dst, 4884); 5958 dasm_put(Dst, 4885);
5958 } 5959 }
5959 dasm_put(Dst, 4893); 5960 dasm_put(Dst, 4894);
5960 break; 5961 break;
5961 5962
5962 case BC_JFUNCV: 5963 case BC_JFUNCV:
5963#if !LJ_HASJIT 5964#if !LJ_HASJIT
5964 break; 5965 break;
5965#endif 5966#endif
5966 dasm_put(Dst, 4899); 5967 dasm_put(Dst, 4900);
5967 break; /* NYI: compiled vararg functions. */ 5968 break; /* NYI: compiled vararg functions. */
5968 5969
5969 case BC_IFUNCV: 5970 case BC_IFUNCV:
5970 dasm_put(Dst, 4901, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams)); 5971 dasm_put(Dst, 4902, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams));
5971 break; 5972 break;
5972 5973
5973 case BC_FUNCC: 5974 case BC_FUNCC:
5974 case BC_FUNCCW: 5975 case BC_FUNCCW:
5975 if (op == BC_FUNCC) { 5976 if (op == BC_FUNCC) {
5976 dasm_put(Dst, 4951, Dt8(->f)); 5977 dasm_put(Dst, 4952, Dt8(->f));
5977 } else { 5978 } else {
5978 dasm_put(Dst, 4954, DISPATCH_GL(wrapf)); 5979 dasm_put(Dst, 4955, DISPATCH_GL(wrapf));
5979 } 5980 }
5980 dasm_put(Dst, 4957, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C); 5981 dasm_put(Dst, 4958, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C);
5981 if (op == BC_FUNCCW) { 5982 if (op == BC_FUNCCW) {
5982 dasm_put(Dst, 4970, Dt8(->f)); 5983 dasm_put(Dst, 4971, Dt8(->f));
5983 } 5984 }
5984 dasm_put(Dst, 4973, DISPATCH_GL(vmstate), Dt1(->top), 31-3, Dt1(->base), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate)); 5985 dasm_put(Dst, 4974, DISPATCH_GL(vmstate), Dt1(->top), 31-3, Dt1(->base), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate));
5985 break; 5986 break;
5986 5987
5987 /* ---------------------------------------------------------------------- */ 5988 /* ---------------------------------------------------------------------- */
@@ -6001,7 +6002,7 @@ static int build_backend(BuildCtx *ctx)
6001 6002
6002 build_subroutines(ctx); 6003 build_subroutines(ctx);
6003 6004
6004 dasm_put(Dst, 4994); 6005 dasm_put(Dst, 4995);
6005 for (op = 0; op < BC__MAX; op++) 6006 for (op = 0; op < BC__MAX; op++)
6006 build_ins(ctx, (BCOp)op, op); 6007 build_ins(ctx, (BCOp)op, op);
6007 6008