aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2011-01-06 23:37:04 +0100
committerMike Pall <mike>2011-01-06 23:37:04 +0100
commitaca1e5b3e69d8e7ed155de3d2db959bc49597bf1 (patch)
treecb923ca815f2ae7c0f1bd666e59ff92281cc4ece /src
parentfb0a18ca0bbc96aac105d903e1db92d31f1d4d3c (diff)
downloadluajit-aca1e5b3e69d8e7ed155de3d2db959bc49597bf1.tar.gz
luajit-aca1e5b3e69d8e7ed155de3d2db959bc49597bf1.tar.bz2
luajit-aca1e5b3e69d8e7ed155de3d2db959bc49597bf1.zip
Fix Windows/x86 build and update pregenerated files.
Diffstat (limited to 'src')
-rw-r--r--src/buildvm_ppcspe.h332
-rw-r--r--src/buildvm_x64.h1012
-rw-r--r--src/buildvm_x64win.h1007
-rw-r--r--src/buildvm_x86.dasc2
-rw-r--r--src/buildvm_x86.h839
5 files changed, 1619 insertions, 1573 deletions
diff --git a/src/buildvm_ppcspe.h b/src/buildvm_ppcspe.h
index 8a10c24a..96f7e55b 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[4947] = { 15static const unsigned int build_actionlist[4950] = {
160x00010001, 160x00010001,
170x00060014, 170x00060014,
180x72000000, 180x72000000,
@@ -2804,6 +2804,9 @@ static const unsigned int build_actionlist[4947] = {
28040x4e800020, 28040x4e800020,
28050x0006000c, 28050x0006000c,
28060x7c810808, 28060x7c810808,
28070x00060098,
28080x00000000,
28090x7c810808,
28070x00000000, 28100x00000000,
28080x00080000, 28110x00080000,
28090x00000000, 28120x00000000,
@@ -3263,7 +3266,7 @@ static const unsigned int build_actionlist[4947] = {
32630x40830000, 32660x40830000,
32640x0005083c, 32670x0005083c,
32650x00000000, 32680x00000000,
32660x00060098, 32690x00060099,
32670x108caae9, 32700x108caae9,
32680x48000001, 32710x48000001,
32690x00050091, 32720x00050091,
@@ -3301,7 +3304,7 @@ static const unsigned int build_actionlist[4947] = {
33010x0005083c, 33040x0005083c,
33020x00000000, 33050x00000000,
33030x48000000, 33060x48000000,
33040x00050098, 33070x00050099,
33050x00000000, 33080x00000000,
33060x108e5300, 33090x108e5300,
33070x10ce5b00, 33100x10ce5b00,
@@ -3736,10 +3739,10 @@ static const unsigned int build_actionlist[4947] = {
37360x7d6f402e, 37390x7d6f402e,
37370x00000000, 37400x00000000,
37380x48000000, 37410x48000000,
37390x00050099, 37420x0005009a,
37400x00000000, 37430x00000000,
37410x48000000, 37440x48000000,
37420x0005009a, 37450x0005009b,
37430x00000000, 37460x00000000,
37440x114e5300, 37470x114e5300,
37450x116e5b00, 37480x116e5b00,
@@ -3795,7 +3798,7 @@ static const unsigned int build_actionlist[4947] = {
37950x0006000f, 37980x0006000f,
37960x100bba34, 37990x100bba34,
37970x41800000, 38000x41800000,
37980x00050899, 38010x0005089a,
37990x48000000, 38020x48000000,
38000x0005002e, 38030x0005002e,
38010x00000000, 38040x00000000,
@@ -3807,7 +3810,7 @@ static const unsigned int build_actionlist[4947] = {
38070x7d6f402e, 38100x7d6f402e,
38080x40800000, 38110x40800000,
38090x0005082b, 38120x0005082b,
38100x00060099, 38130x0006009a,
38110x800a0000, 38140x800a0000,
38120x00098200, 38150x00098200,
38130x810b0000, 38160x810b0000,
@@ -3974,7 +3977,7 @@ static const unsigned int build_actionlist[4947] = {
39740x0006000f, 39770x0006000f,
39750x100bba34, 39780x100bba34,
39760x41800000, 39790x41800000,
39770x0005089a, 39800x0005089b,
39780x48000000, 39810x48000000,
39790x00050032, 39820x00050032,
39800x00060011, 39830x00060011,
@@ -3999,7 +4002,7 @@ static const unsigned int build_actionlist[4947] = {
39990x7d6f402e, 40020x7d6f402e,
40000x40800000, 40030x40800000,
40010x0005082f, 40040x0005082f,
40020x0006009a, 40050x0006009b,
40030x800a0000, 40060x800a0000,
40040x00098200, 40070x00098200,
40050x810b0000, 40080x810b0000,
@@ -4600,7 +4603,7 @@ static const unsigned int build_actionlist[4947] = {
46000x6a080000, 46030x6a080000,
46010x00090200, 46040x00090200,
46020x40820000, 46050x40820000,
46030x0005089b, 46060x0005089c,
46040x00060017, 46070x00060017,
46050x80f0fffc, 46080x80f0fffc,
46060x2c0c0008, 46090x2c0c0008,
@@ -4651,7 +4654,7 @@ static const unsigned int build_actionlist[4947] = {
46510x13494320, 46540x13494320,
46520x48000000, 46550x48000000,
46530x0005000f, 46560x0005000f,
46540x0006009b, 46570x0006009c,
46550x71090000, 46580x71090000,
46560x00090200, 46590x00090200,
46570x40820000, 46600x40820000,
@@ -4669,7 +4672,7 @@ static const unsigned int build_actionlist[4947] = {
46690x6a080000, 46720x6a080000,
46700x00090200, 46730x00090200,
46710x40820000, 46740x40820000,
46720x0005089b, 46750x0005089c,
46730x80f0fffc, 46760x80f0fffc,
46740x392efff8, 46770x392efff8,
46750x54ea5d78, 46780x54ea5d78,
@@ -5095,6 +5098,7 @@ enum {
5095 GLOB_vm_powi, 5098 GLOB_vm_powi,
5096 GLOB_vm_foldfpm, 5099 GLOB_vm_foldfpm,
5097 GLOB_vm_foldarith, 5100 GLOB_vm_foldarith,
5101 GLOB_vm_ffi_call,
5098 GLOB_BC_MODVN_Z, 5102 GLOB_BC_MODVN_Z,
5099 GLOB_BC_TGETS_Z, 5103 GLOB_BC_TGETS_Z,
5100 GLOB_BC_TSETS_Z, 5104 GLOB_BC_TSETS_Z,
@@ -5234,6 +5238,7 @@ static const char *const globnames[] = {
5234 "vm_powi", 5238 "vm_powi",
5235 "vm_foldfpm", 5239 "vm_foldfpm",
5236 "vm_foldarith", 5240 "vm_foldarith",
5241 "vm_ffi_call",
5237 "BC_MODVN_Z", 5242 "BC_MODVN_Z",
5238 "BC_TGETS_Z", 5243 "BC_TGETS_Z",
5239 "BC_TSETS_Z", 5244 "BC_TSETS_Z",
@@ -5409,13 +5414,16 @@ static void build_subroutines(BuildCtx *ctx)
5409 dasm_put(Dst, 2728); 5414 dasm_put(Dst, 2728);
5410#endif 5415#endif
5411 dasm_put(Dst, 2730); 5416 dasm_put(Dst, 2730);
5417#if LJ_HASFFI
5418 dasm_put(Dst, 2793);
5419#endif
5412} 5420}
5413 5421
5414/* Generate the code for a single instruction. */ 5422/* Generate the code for a single instruction. */
5415static void build_ins(BuildCtx *ctx, BCOp op, int defop) 5423static void build_ins(BuildCtx *ctx, BCOp op, int defop)
5416{ 5424{
5417 int vk = 0; 5425 int vk = 0;
5418 dasm_put(Dst, 2792, defop); 5426 dasm_put(Dst, 2795, defop);
5419 5427
5420 switch (op) { 5428 switch (op) {
5421 5429
@@ -5424,112 +5432,112 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
5424 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 5432 /* Remember: all ops branch for a true comparison, fall through otherwise. */
5425 5433
5426 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 5434 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
5427 dasm_put(Dst, 2794, -(BCBIAS_J*4 >> 16)); 5435 dasm_put(Dst, 2797, -(BCBIAS_J*4 >> 16));
5428 if (op == BC_ISLE || op == BC_ISGT) { 5436 if (op == BC_ISLE || op == BC_ISGT) {
5429 dasm_put(Dst, 2808); 5437 dasm_put(Dst, 2811);
5430 } 5438 }
5431 if (op == BC_ISLT || op == BC_ISLE) { 5439 if (op == BC_ISLT || op == BC_ISLE) {
5432 dasm_put(Dst, 2811); 5440 dasm_put(Dst, 2814);
5433 } else { 5441 } else {
5434 dasm_put(Dst, 2813); 5442 dasm_put(Dst, 2816);
5435 } 5443 }
5436 dasm_put(Dst, 2815); 5444 dasm_put(Dst, 2818);
5437 break; 5445 break;
5438 5446
5439 case BC_ISEQV: case BC_ISNEV: 5447 case BC_ISEQV: case BC_ISNEV:
5440 vk = op == BC_ISEQV; 5448 vk = op == BC_ISEQV;
5441 dasm_put(Dst, 2826, -(BCBIAS_J*4 >> 16)); 5449 dasm_put(Dst, 2829, -(BCBIAS_J*4 >> 16));
5442 if (vk) { 5450 if (vk) {
5443 dasm_put(Dst, 2840); 5451 dasm_put(Dst, 2843);
5444 } else { 5452 } else {
5445 dasm_put(Dst, 2842); 5453 dasm_put(Dst, 2845);
5446 } 5454 }
5447 dasm_put(Dst, 2844, ~LJ_TISPRI, ~LJ_TISTABUD); 5455 dasm_put(Dst, 2847, ~LJ_TISPRI, ~LJ_TISTABUD);
5448 if (vk) { 5456 if (vk) {
5449 dasm_put(Dst, 2866); 5457 dasm_put(Dst, 2869);
5450 } else { 5458 } else {
5451 dasm_put(Dst, 2868); 5459 dasm_put(Dst, 2871);
5452 } 5460 }
5453 dasm_put(Dst, 2870); 5461 dasm_put(Dst, 2873);
5454 if (vk) { 5462 if (vk) {
5455 dasm_put(Dst, 2872); 5463 dasm_put(Dst, 2875);
5456 } else { 5464 } else {
5457 dasm_put(Dst, 2874); 5465 dasm_put(Dst, 2877);
5458 } 5466 }
5459 dasm_put(Dst, 2876, Dt6(->metatable), 1-vk, Dt6(->nomm), 1<<MM_eq); 5467 dasm_put(Dst, 2879, Dt6(->metatable), 1-vk, Dt6(->nomm), 1<<MM_eq);
5460 break; 5468 break;
5461 5469
5462 case BC_ISEQS: case BC_ISNES: 5470 case BC_ISEQS: case BC_ISNES:
5463 vk = op == BC_ISEQS; 5471 vk = op == BC_ISEQS;
5464 dasm_put(Dst, 2897, 32-1, -(BCBIAS_J*4 >> 16)); 5472 dasm_put(Dst, 2900, 32-1, -(BCBIAS_J*4 >> 16));
5465 if (vk) { 5473 if (vk) {
5466 dasm_put(Dst, 2911); 5474 dasm_put(Dst, 2914);
5467 } else { 5475 } else {
5468 dasm_put(Dst, 2913); 5476 dasm_put(Dst, 2916);
5469 } 5477 }
5470 dasm_put(Dst, 2915); 5478 dasm_put(Dst, 2918);
5471 break; 5479 break;
5472 5480
5473 case BC_ISEQN: case BC_ISNEN: 5481 case BC_ISEQN: case BC_ISNEN:
5474 vk = op == BC_ISEQN; 5482 vk = op == BC_ISEQN;
5475 dasm_put(Dst, 2926, -(BCBIAS_J*4 >> 16)); 5483 dasm_put(Dst, 2929, -(BCBIAS_J*4 >> 16));
5476 if (vk) { 5484 if (vk) {
5477 dasm_put(Dst, 2940);
5478 } else {
5479 dasm_put(Dst, 2943); 5485 dasm_put(Dst, 2943);
5486 } else {
5487 dasm_put(Dst, 2946);
5480 } 5488 }
5481 dasm_put(Dst, 2945); 5489 dasm_put(Dst, 2948);
5482 if (!vk) { 5490 if (!vk) {
5483 dasm_put(Dst, 2957); 5491 dasm_put(Dst, 2960);
5484 } 5492 }
5485 break; 5493 break;
5486 5494
5487 case BC_ISEQP: case BC_ISNEP: 5495 case BC_ISEQP: case BC_ISNEP:
5488 vk = op == BC_ISEQP; 5496 vk = op == BC_ISEQP;
5489 dasm_put(Dst, 2963, 32-3, -(BCBIAS_J*4 >> 16)); 5497 dasm_put(Dst, 2966, 32-3, -(BCBIAS_J*4 >> 16));
5490 if (vk) { 5498 if (vk) {
5491 dasm_put(Dst, 2975); 5499 dasm_put(Dst, 2978);
5492 } else { 5500 } else {
5493 dasm_put(Dst, 2977); 5501 dasm_put(Dst, 2980);
5494 } 5502 }
5495 dasm_put(Dst, 2979); 5503 dasm_put(Dst, 2982);
5496 break; 5504 break;
5497 5505
5498 /* -- Unary test and copy ops ------------------------------------------- */ 5506 /* -- Unary test and copy ops ------------------------------------------- */
5499 5507
5500 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 5508 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
5501 dasm_put(Dst, 2990); 5509 dasm_put(Dst, 2993);
5502 if (op == BC_IST || op == BC_ISF) { 5510 if (op == BC_IST || op == BC_ISF) {
5503 dasm_put(Dst, 2996, -(BCBIAS_J*4 >> 16)); 5511 dasm_put(Dst, 2999, -(BCBIAS_J*4 >> 16));
5504 if (op == BC_IST) { 5512 if (op == BC_IST) {
5505 dasm_put(Dst, 3001); 5513 dasm_put(Dst, 3004);
5506 } else { 5514 } else {
5507 dasm_put(Dst, 3003); 5515 dasm_put(Dst, 3006);
5508 } 5516 }
5509 } else { 5517 } else {
5510 if (op == BC_ISTC) { 5518 if (op == BC_ISTC) {
5511 dasm_put(Dst, 3005);
5512 } else {
5513 dasm_put(Dst, 3008); 5519 dasm_put(Dst, 3008);
5520 } else {
5521 dasm_put(Dst, 3011);
5514 } 5522 }
5515 dasm_put(Dst, 3011, -(BCBIAS_J*4 >> 16)); 5523 dasm_put(Dst, 3014, -(BCBIAS_J*4 >> 16));
5516 } 5524 }
5517 dasm_put(Dst, 3018); 5525 dasm_put(Dst, 3021);
5518 break; 5526 break;
5519 5527
5520 /* -- Unary ops --------------------------------------------------------- */ 5528 /* -- Unary ops --------------------------------------------------------- */
5521 5529
5522 case BC_MOV: 5530 case BC_MOV:
5523 dasm_put(Dst, 3029); 5531 dasm_put(Dst, 3032);
5524 break; 5532 break;
5525 case BC_NOT: 5533 case BC_NOT:
5526 dasm_put(Dst, 3042, LJ_TTRUE); 5534 dasm_put(Dst, 3045, LJ_TTRUE);
5527 break; 5535 break;
5528 case BC_UNM: 5536 case BC_UNM:
5529 dasm_put(Dst, 3058); 5537 dasm_put(Dst, 3061);
5530 break; 5538 break;
5531 case BC_LEN: 5539 case BC_LEN:
5532 dasm_put(Dst, 3075, Dt5(->len)); 5540 dasm_put(Dst, 3078, Dt5(->len));
5533 break; 5541 break;
5534 5542
5535 /* -- Binary ops -------------------------------------------------------- */ 5543 /* -- Binary ops -------------------------------------------------------- */
@@ -5539,262 +5547,262 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
5539 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 5547 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
5540 switch (vk) { 5548 switch (vk) {
5541 case 0: 5549 case 0:
5542 dasm_put(Dst, 3103); 5550 dasm_put(Dst, 3106);
5543 break; 5551 break;
5544 case 1: 5552 case 1:
5545 dasm_put(Dst, 3109); 5553 dasm_put(Dst, 3112);
5546 break; 5554 break;
5547 default: 5555 default:
5548 dasm_put(Dst, 3115); 5556 dasm_put(Dst, 3118);
5549 break; 5557 break;
5550 } 5558 }
5551 dasm_put(Dst, 3122); 5559 dasm_put(Dst, 3125);
5552 break; 5560 break;
5553 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 5561 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
5554 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 5562 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
5555 switch (vk) { 5563 switch (vk) {
5556 case 0: 5564 case 0:
5557 dasm_put(Dst, 3135); 5565 dasm_put(Dst, 3138);
5558 break; 5566 break;
5559 case 1: 5567 case 1:
5560 dasm_put(Dst, 3141); 5568 dasm_put(Dst, 3144);
5561 break; 5569 break;
5562 default: 5570 default:
5563 dasm_put(Dst, 3147); 5571 dasm_put(Dst, 3150);
5564 break; 5572 break;
5565 } 5573 }
5566 dasm_put(Dst, 3154); 5574 dasm_put(Dst, 3157);
5567 break; 5575 break;
5568 case BC_MULVN: case BC_MULNV: case BC_MULVV: 5576 case BC_MULVN: case BC_MULNV: case BC_MULVV:
5569 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 5577 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
5570 switch (vk) { 5578 switch (vk) {
5571 case 0: 5579 case 0:
5572 dasm_put(Dst, 3167); 5580 dasm_put(Dst, 3170);
5573 break; 5581 break;
5574 case 1: 5582 case 1:
5575 dasm_put(Dst, 3173); 5583 dasm_put(Dst, 3176);
5576 break; 5584 break;
5577 default: 5585 default:
5578 dasm_put(Dst, 3179); 5586 dasm_put(Dst, 3182);
5579 break; 5587 break;
5580 } 5588 }
5581 dasm_put(Dst, 3186); 5589 dasm_put(Dst, 3189);
5582 break; 5590 break;
5583 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 5591 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
5584 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 5592 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
5585 switch (vk) { 5593 switch (vk) {
5586 case 0: 5594 case 0:
5587 dasm_put(Dst, 3199); 5595 dasm_put(Dst, 3202);
5588 break; 5596 break;
5589 case 1: 5597 case 1:
5590 dasm_put(Dst, 3205); 5598 dasm_put(Dst, 3208);
5591 break; 5599 break;
5592 default: 5600 default:
5593 dasm_put(Dst, 3211); 5601 dasm_put(Dst, 3214);
5594 break; 5602 break;
5595 } 5603 }
5596 dasm_put(Dst, 3218); 5604 dasm_put(Dst, 3221);
5597 break; 5605 break;
5598 case BC_MODVN: 5606 case BC_MODVN:
5599 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 5607 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
5600 switch (vk) { 5608 switch (vk) {
5601 case 0: 5609 case 0:
5602 dasm_put(Dst, 3231); 5610 dasm_put(Dst, 3234);
5603 break; 5611 break;
5604 case 1: 5612 case 1:
5605 dasm_put(Dst, 3237); 5613 dasm_put(Dst, 3240);
5606 break; 5614 break;
5607 default: 5615 default:
5608 dasm_put(Dst, 3243); 5616 dasm_put(Dst, 3246);
5609 break; 5617 break;
5610 } 5618 }
5611 dasm_put(Dst, 3250); 5619 dasm_put(Dst, 3253);
5612 break; 5620 break;
5613 case BC_MODNV: case BC_MODVV: 5621 case BC_MODNV: case BC_MODVV:
5614 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 5622 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
5615 switch (vk) { 5623 switch (vk) {
5616 case 0: 5624 case 0:
5617 dasm_put(Dst, 3268); 5625 dasm_put(Dst, 3271);
5618 break; 5626 break;
5619 case 1: 5627 case 1:
5620 dasm_put(Dst, 3274); 5628 dasm_put(Dst, 3277);
5621 break; 5629 break;
5622 default: 5630 default:
5623 dasm_put(Dst, 3280); 5631 dasm_put(Dst, 3283);
5624 break; 5632 break;
5625 } 5633 }
5626 dasm_put(Dst, 3287); 5634 dasm_put(Dst, 3290);
5627 break; 5635 break;
5628 case BC_POW: 5636 case BC_POW:
5629 dasm_put(Dst, 3290); 5637 dasm_put(Dst, 3293);
5630 break; 5638 break;
5631 5639
5632 case BC_CAT: 5640 case BC_CAT:
5633 dasm_put(Dst, 3312, Dt1(->base), 32-3, Dt1(->base)); 5641 dasm_put(Dst, 3315, Dt1(->base), 32-3, Dt1(->base));
5634 break; 5642 break;
5635 5643
5636 /* -- Constant ops ------------------------------------------------------ */ 5644 /* -- Constant ops ------------------------------------------------------ */
5637 5645
5638 case BC_KSTR: 5646 case BC_KSTR:
5639 dasm_put(Dst, 3342, 32-1); 5647 dasm_put(Dst, 3345, 32-1);
5640 break; 5648 break;
5641 case BC_KCDATA: 5649 case BC_KCDATA:
5642#if LJ_HASFFI 5650#if LJ_HASFFI
5643 dasm_put(Dst, 3359, 32-1, LJ_TCDATA); 5651 dasm_put(Dst, 3362, 32-1, LJ_TCDATA);
5644#endif 5652#endif
5645 break; 5653 break;
5646 case BC_KSHORT: 5654 case BC_KSHORT:
5647 dasm_put(Dst, 3378, 32-3); 5655 dasm_put(Dst, 3381, 32-3);
5648 break; 5656 break;
5649 case BC_KNUM: 5657 case BC_KNUM:
5650 dasm_put(Dst, 3394); 5658 dasm_put(Dst, 3397);
5651 break; 5659 break;
5652 case BC_KPRI: 5660 case BC_KPRI:
5653 dasm_put(Dst, 3407, 32-3); 5661 dasm_put(Dst, 3410, 32-3);
5654 break; 5662 break;
5655 case BC_KNIL: 5663 case BC_KNIL:
5656 dasm_put(Dst, 3422); 5664 dasm_put(Dst, 3425);
5657 break; 5665 break;
5658 5666
5659 /* -- Upvalue and function ops ------------------------------------------ */ 5667 /* -- Upvalue and function ops ------------------------------------------ */
5660 5668
5661 case BC_UGET: 5669 case BC_UGET:
5662 dasm_put(Dst, 3441, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); 5670 dasm_put(Dst, 3444, 32-1, offsetof(GCfuncL, uvptr), DtA(->v));
5663 break; 5671 break;
5664 case BC_USETV: 5672 case BC_USETV:
5665 dasm_put(Dst, 3462, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), -LJ_TISNUM, LJ_TISGCV - LJ_TISNUM, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 5673 dasm_put(Dst, 3465, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), -LJ_TISNUM, LJ_TISGCV - LJ_TISNUM, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
5666 break; 5674 break;
5667 case BC_USETS: 5675 case BC_USETS:
5668 dasm_put(Dst, 3514, 32-1, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, Dt5(->marked), DtA(->closed), LJ_GC_WHITES, GG_DISP2G); 5676 dasm_put(Dst, 3517, 32-1, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, Dt5(->marked), DtA(->closed), LJ_GC_WHITES, GG_DISP2G);
5669 break; 5677 break;
5670 case BC_USETN: 5678 case BC_USETN:
5671 dasm_put(Dst, 3563, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); 5679 dasm_put(Dst, 3566, 32-1, offsetof(GCfuncL, uvptr), DtA(->v));
5672 break; 5680 break;
5673 case BC_USETP: 5681 case BC_USETP:
5674 dasm_put(Dst, 3584, 32-1, offsetof(GCfuncL, uvptr), 32-3, DtA(->v)); 5682 dasm_put(Dst, 3587, 32-1, offsetof(GCfuncL, uvptr), 32-3, DtA(->v));
5675 break; 5683 break;
5676 5684
5677 case BC_UCLO: 5685 case BC_UCLO:
5678 dasm_put(Dst, 3607, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base)); 5686 dasm_put(Dst, 3610, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base));
5679 break; 5687 break;
5680 5688
5681 case BC_FNEW: 5689 case BC_FNEW:
5682 dasm_put(Dst, 3637, 32-1, Dt1(->base), Dt1(->base)); 5690 dasm_put(Dst, 3640, 32-1, Dt1(->base), Dt1(->base));
5683 break; 5691 break;
5684 5692
5685 /* -- Table ops --------------------------------------------------------- */ 5693 /* -- Table ops --------------------------------------------------------- */
5686 5694
5687 case BC_TNEW: 5695 case BC_TNEW:
5688 case BC_TDUP: 5696 case BC_TDUP:
5689 dasm_put(Dst, 3663, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); 5697 dasm_put(Dst, 3666, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base));
5690 if (op == BC_TNEW) { 5698 if (op == BC_TNEW) {
5691 dasm_put(Dst, 3676); 5699 dasm_put(Dst, 3679);
5692 } else { 5700 } else {
5693 dasm_put(Dst, 3684, 32-1); 5701 dasm_put(Dst, 3687, 32-1);
5694 } 5702 }
5695 dasm_put(Dst, 3691, Dt1(->base)); 5703 dasm_put(Dst, 3694, Dt1(->base));
5696 break; 5704 break;
5697 5705
5698 case BC_GGET: 5706 case BC_GGET:
5699 case BC_GSET: 5707 case BC_GSET:
5700 dasm_put(Dst, 3714, 32-1, Dt7(->env)); 5708 dasm_put(Dst, 3717, 32-1, Dt7(->env));
5701 if (op == BC_GGET) { 5709 if (op == BC_GGET) {
5702 dasm_put(Dst, 3722);
5703 } else {
5704 dasm_put(Dst, 3725); 5710 dasm_put(Dst, 3725);
5711 } else {
5712 dasm_put(Dst, 3728);
5705 } 5713 }
5706 break; 5714 break;
5707 5715
5708 case BC_TGETV: 5716 case BC_TGETV:
5709 dasm_put(Dst, 3728, Dt6(->asize), Dt6(->array), 31-3, Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 5717 dasm_put(Dst, 3731, Dt6(->asize), Dt6(->array), 31-3, Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
5710 break; 5718 break;
5711 case BC_TGETS: 5719 case BC_TGETS:
5712 dasm_put(Dst, 3786, 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); 5720 dasm_put(Dst, 3789, 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);
5713 dasm_put(Dst, 3850); 5721 dasm_put(Dst, 3853);
5714 break; 5722 break;
5715 case BC_TGETB: 5723 case BC_TGETB:
5716 dasm_put(Dst, 3855, 32-3, Dt6(->asize), Dt6(->array), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 5724 dasm_put(Dst, 3858, 32-3, Dt6(->asize), Dt6(->array), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
5717 break; 5725 break;
5718 5726
5719 case BC_TSETV: 5727 case BC_TSETV:
5720 dasm_put(Dst, 3899, Dt6(->asize), Dt6(->array), 31-3, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex); 5728 dasm_put(Dst, 3902, Dt6(->asize), Dt6(->array), 31-3, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex);
5721 dasm_put(Dst, 3966, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); 5729 dasm_put(Dst, 3969, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
5722 break; 5730 break;
5723 case BC_TSETS: 5731 case BC_TSETS:
5724 dasm_put(Dst, 3978, 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)); 5732 dasm_put(Dst, 3981, 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));
5725 dasm_put(Dst, 4039, 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)); 5733 dasm_put(Dst, 4042, 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));
5726 dasm_put(Dst, 4090, Dt6(->marked), Dt6(->gclist)); 5734 dasm_put(Dst, 4093, Dt6(->marked), Dt6(->gclist));
5727 break; 5735 break;
5728 case BC_TSETB: 5736 case BC_TSETB:
5729 dasm_put(Dst, 4097, 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)); 5737 dasm_put(Dst, 4100, 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));
5730 dasm_put(Dst, 4157, Dt6(->gclist)); 5738 dasm_put(Dst, 4160, Dt6(->gclist));
5731 break; 5739 break;
5732 5740
5733 case BC_TSETM: 5741 case BC_TSETM:
5734 dasm_put(Dst, 4162, 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)); 5742 dasm_put(Dst, 4165, 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));
5735 dasm_put(Dst, 4231); 5743 dasm_put(Dst, 4234);
5736 break; 5744 break;
5737 5745
5738 /* -- Calls and vararg handling ----------------------------------------- */ 5746 /* -- Calls and vararg handling ----------------------------------------- */
5739 5747
5740 case BC_CALLM: 5748 case BC_CALLM:
5741 dasm_put(Dst, 4234); 5749 dasm_put(Dst, 4237);
5742 break; 5750 break;
5743 case BC_CALL: 5751 case BC_CALL:
5744 dasm_put(Dst, 4236, Dt7(->pc)); 5752 dasm_put(Dst, 4239, Dt7(->pc));
5745 break; 5753 break;
5746 5754
5747 case BC_CALLMT: 5755 case BC_CALLMT:
5748 dasm_put(Dst, 4256); 5756 dasm_put(Dst, 4259);
5749 break; 5757 break;
5750 case BC_CALLT: 5758 case BC_CALLT:
5751 dasm_put(Dst, 4258, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); 5759 dasm_put(Dst, 4261, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP);
5752 dasm_put(Dst, 4323, FRAME_TYPE); 5760 dasm_put(Dst, 4326, FRAME_TYPE);
5753 break; 5761 break;
5754 5762
5755 case BC_ITERC: 5763 case BC_ITERC:
5756 dasm_put(Dst, 4330, Dt7(->pc)); 5764 dasm_put(Dst, 4333, Dt7(->pc));
5757 break; 5765 break;
5758 5766
5759 case BC_ITERN: 5767 case BC_ITERN:
5760#if LJ_HASJIT 5768#if LJ_HASJIT
5761#endif 5769#endif
5762 dasm_put(Dst, 4356, Dt6(->asize), Dt6(->array), 31-3, -(BCBIAS_J*4 >> 16), Dt6(->hmask), Dt6(->node), 31-5, 31-3, DtB(->key), -(BCBIAS_J*4 >> 16)); 5770 dasm_put(Dst, 4359, Dt6(->asize), Dt6(->array), 31-3, -(BCBIAS_J*4 >> 16), Dt6(->hmask), Dt6(->node), 31-5, 31-3, DtB(->key), -(BCBIAS_J*4 >> 16));
5763 dasm_put(Dst, 4435); 5771 dasm_put(Dst, 4438);
5764 break; 5772 break;
5765 5773
5766 case BC_ISNEXT: 5774 case BC_ISNEXT:
5767 dasm_put(Dst, 4439, 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)); 5775 dasm_put(Dst, 4442, 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));
5768 break; 5776 break;
5769 5777
5770 case BC_VARG: 5778 case BC_VARG:
5771 dasm_put(Dst, 4490, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base)); 5779 dasm_put(Dst, 4493, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base));
5772 dasm_put(Dst, 4570); 5780 dasm_put(Dst, 4573);
5773 break; 5781 break;
5774 5782
5775 /* -- Returns ----------------------------------------------------------- */ 5783 /* -- Returns ----------------------------------------------------------- */
5776 5784
5777 case BC_RETM: 5785 case BC_RETM:
5778 dasm_put(Dst, 4576); 5786 dasm_put(Dst, 4579);
5779 break; 5787 break;
5780 5788
5781 case BC_RET: 5789 case BC_RET:
5782 dasm_put(Dst, 4578, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); 5790 dasm_put(Dst, 4581, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP);
5783 break; 5791 break;
5784 5792
5785 case BC_RET0: case BC_RET1: 5793 case BC_RET0: case BC_RET1:
5786 dasm_put(Dst, 4648, FRAME_TYPE, FRAME_VARG); 5794 dasm_put(Dst, 4651, FRAME_TYPE, FRAME_VARG);
5787 if (op == BC_RET1) { 5795 if (op == BC_RET1) {
5788 dasm_put(Dst, 4661); 5796 dasm_put(Dst, 4664);
5789 } 5797 }
5790 dasm_put(Dst, 4664, Dt7(->pc), PC2PROTO(k)); 5798 dasm_put(Dst, 4667, Dt7(->pc), PC2PROTO(k));
5791 break; 5799 break;
5792 5800
5793 /* -- Loops and branches ------------------------------------------------ */ 5801 /* -- Loops and branches ------------------------------------------------ */
5794 5802
5795 case BC_FORL: 5803 case BC_FORL:
5796#if LJ_HASJIT 5804#if LJ_HASJIT
5797 dasm_put(Dst, 4692); 5805 dasm_put(Dst, 4695);
5798#endif 5806#endif
5799 break; 5807 break;
5800 5808
@@ -5806,35 +5814,35 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
5806 case BC_FORI: 5814 case BC_FORI:
5807 case BC_IFORL: 5815 case BC_IFORL:
5808 vk = (op == BC_IFORL || op == BC_JFORL); 5816 vk = (op == BC_IFORL || op == BC_JFORL);
5809 dasm_put(Dst, 4694, FORL_IDX*8, FORL_STEP*8, FORL_STOP*8); 5817 dasm_put(Dst, 4697, FORL_IDX*8, FORL_STEP*8, FORL_STOP*8);
5810 if (!vk) { 5818 if (!vk) {
5811 dasm_put(Dst, 4702); 5819 dasm_put(Dst, 4705);
5812 } 5820 }
5813 if (vk) { 5821 if (vk) {
5814 dasm_put(Dst, 4710, FORL_IDX*8); 5822 dasm_put(Dst, 4713, FORL_IDX*8);
5815 } 5823 }
5816 dasm_put(Dst, 4714, FORL_EXT*8); 5824 dasm_put(Dst, 4717, FORL_EXT*8);
5817 if (op != BC_JFORL) { 5825 if (op != BC_JFORL) {
5818 dasm_put(Dst, 4722, 32-1); 5826 dasm_put(Dst, 4725, 32-1);
5819 if (op == BC_JFORI) { 5827 if (op == BC_JFORI) {
5820 dasm_put(Dst, 4726, -(BCBIAS_J*4 >> 16));
5821 } else {
5822 dasm_put(Dst, 4729, -(BCBIAS_J*4 >> 16)); 5828 dasm_put(Dst, 4729, -(BCBIAS_J*4 >> 16));
5829 } else {
5830 dasm_put(Dst, 4732, -(BCBIAS_J*4 >> 16));
5823 } 5831 }
5824 } 5832 }
5825 if (op == BC_FORI) { 5833 if (op == BC_FORI) {
5826 dasm_put(Dst, 4732); 5834 dasm_put(Dst, 4735);
5827 } else if (op == BC_IFORL) { 5835 } else if (op == BC_IFORL) {
5828 dasm_put(Dst, 4734); 5836 dasm_put(Dst, 4737);
5829 } else { 5837 } else {
5830 dasm_put(Dst, 4736, BC_JLOOP); 5838 dasm_put(Dst, 4739, BC_JLOOP);
5831 } 5839 }
5832 dasm_put(Dst, 4739); 5840 dasm_put(Dst, 4742);
5833 break; 5841 break;
5834 5842
5835 case BC_ITERL: 5843 case BC_ITERL:
5836#if LJ_HASJIT 5844#if LJ_HASJIT
5837 dasm_put(Dst, 4754); 5845 dasm_put(Dst, 4757);
5838#endif 5846#endif
5839 break; 5847 break;
5840 5848
@@ -5843,40 +5851,40 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
5843 break; 5851 break;
5844#endif 5852#endif
5845 case BC_IITERL: 5853 case BC_IITERL:
5846 dasm_put(Dst, 4756); 5854 dasm_put(Dst, 4759);
5847 if (op == BC_JITERL) { 5855 if (op == BC_JITERL) {
5848 dasm_put(Dst, 4762); 5856 dasm_put(Dst, 4765);
5849 } else { 5857 } else {
5850 dasm_put(Dst, 4764, 32-1, -(BCBIAS_J*4 >> 16)); 5858 dasm_put(Dst, 4767, 32-1, -(BCBIAS_J*4 >> 16));
5851 } 5859 }
5852 dasm_put(Dst, 4771); 5860 dasm_put(Dst, 4774);
5853 break; 5861 break;
5854 5862
5855 case BC_LOOP: 5863 case BC_LOOP:
5856#if LJ_HASJIT 5864#if LJ_HASJIT
5857 dasm_put(Dst, 4783); 5865 dasm_put(Dst, 4786);
5858#endif 5866#endif
5859 break; 5867 break;
5860 5868
5861 case BC_ILOOP: 5869 case BC_ILOOP:
5862 dasm_put(Dst, 4785); 5870 dasm_put(Dst, 4788);
5863 break; 5871 break;
5864 5872
5865 case BC_JLOOP: 5873 case BC_JLOOP:
5866#if LJ_HASJIT 5874#if LJ_HASJIT
5867 dasm_put(Dst, 4796); 5875 dasm_put(Dst, 4799);
5868#endif 5876#endif
5869 break; 5877 break;
5870 5878
5871 case BC_JMP: 5879 case BC_JMP:
5872 dasm_put(Dst, 4798, 32-1, -(BCBIAS_J*4 >> 16)); 5880 dasm_put(Dst, 4801, 32-1, -(BCBIAS_J*4 >> 16));
5873 break; 5881 break;
5874 5882
5875 /* -- Function headers -------------------------------------------------- */ 5883 /* -- Function headers -------------------------------------------------- */
5876 5884
5877 case BC_FUNCF: 5885 case BC_FUNCF:
5878#if LJ_HASJIT 5886#if LJ_HASJIT
5879 dasm_put(Dst, 4814); 5887 dasm_put(Dst, 4817);
5880#endif 5888#endif
5881 case BC_FUNCV: /* NYI: compiled vararg functions. */ 5889 case BC_FUNCV: /* NYI: compiled vararg functions. */
5882 break; 5890 break;
@@ -5886,38 +5894,38 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
5886 break; 5894 break;
5887#endif 5895#endif
5888 case BC_IFUNCF: 5896 case BC_IFUNCF:
5889 dasm_put(Dst, 4816, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3); 5897 dasm_put(Dst, 4819, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3);
5890 if (op == BC_JFUNCF) { 5898 if (op == BC_JFUNCF) {
5891 dasm_put(Dst, 4834); 5899 dasm_put(Dst, 4837);
5892 } else { 5900 } else {
5893 dasm_put(Dst, 4836); 5901 dasm_put(Dst, 4839);
5894 } 5902 }
5895 dasm_put(Dst, 4845); 5903 dasm_put(Dst, 4848);
5896 break; 5904 break;
5897 5905
5898 case BC_JFUNCV: 5906 case BC_JFUNCV:
5899#if !LJ_HASJIT 5907#if !LJ_HASJIT
5900 break; 5908 break;
5901#endif 5909#endif
5902 dasm_put(Dst, 4851); 5910 dasm_put(Dst, 4854);
5903 break; /* NYI: compiled vararg functions. */ 5911 break; /* NYI: compiled vararg functions. */
5904 5912
5905 case BC_IFUNCV: 5913 case BC_IFUNCV:
5906 dasm_put(Dst, 4853, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams)); 5914 dasm_put(Dst, 4856, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams));
5907 break; 5915 break;
5908 5916
5909 case BC_FUNCC: 5917 case BC_FUNCC:
5910 case BC_FUNCCW: 5918 case BC_FUNCCW:
5911 if (op == BC_FUNCC) { 5919 if (op == BC_FUNCC) {
5912 dasm_put(Dst, 4903, Dt8(->f)); 5920 dasm_put(Dst, 4906, Dt8(->f));
5913 } else { 5921 } else {
5914 dasm_put(Dst, 4906, DISPATCH_GL(wrapf)); 5922 dasm_put(Dst, 4909, DISPATCH_GL(wrapf));
5915 } 5923 }
5916 dasm_put(Dst, 4909, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C); 5924 dasm_put(Dst, 4912, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C);
5917 if (op == BC_FUNCCW) { 5925 if (op == BC_FUNCCW) {
5918 dasm_put(Dst, 4922, Dt8(->f)); 5926 dasm_put(Dst, 4925, Dt8(->f));
5919 } 5927 }
5920 dasm_put(Dst, 4925, DISPATCH_GL(vmstate), Dt1(->top), 31-3, Dt1(->base), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate)); 5928 dasm_put(Dst, 4928, DISPATCH_GL(vmstate), Dt1(->top), 31-3, Dt1(->base), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate));
5921 break; 5929 break;
5922 5930
5923 /* ---------------------------------------------------------------------- */ 5931 /* ---------------------------------------------------------------------- */
@@ -5937,7 +5945,7 @@ static int build_backend(BuildCtx *ctx)
5937 5945
5938 build_subroutines(ctx); 5946 build_subroutines(ctx);
5939 5947
5940 dasm_put(Dst, 4946); 5948 dasm_put(Dst, 4949);
5941 for (op = 0; op < BC__MAX; op++) 5949 for (op = 0; op < BC__MAX; op++)
5942 build_ins(ctx, (BCOp)op, op); 5950 build_ins(ctx, (BCOp)op, op);
5943 5951
diff --git a/src/buildvm_x64.h b/src/buildvm_x64.h
index 73cbbb6d..b6756867 100644
--- a/src/buildvm_x64.h
+++ b/src/buildvm_x64.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 char build_actionlist[14278] = { 15static const unsigned char build_actionlist[14436] = {
16 254,1,248,10,252,247,195,237,15,132,244,11,131,227,252,248,41,218,72,141, 16 254,1,248,10,252,247,195,237,15,132,244,11,131,227,252,248,41,218,72,141,
17 76,25,252,248,139,90,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,4, 17 76,25,252,248,139,90,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,4,
18 252,247,195,237,15,132,244,13,248,14,129,252,243,239,252,247,195,237,15,133, 18 252,247,195,237,15,132,244,13,248,14,129,252,243,239,252,247,195,237,15,133,
@@ -469,241 +469,248 @@ static const unsigned char build_actionlist[14278] = {
469 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244, 469 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,
470 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133, 470 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,
471 244,248,217,201,248,2,221,216,195,255,248,155,137,252,248,83,15,162,137,6, 471 244,248,217,201,248,2,221,216,195,255,248,155,137,252,248,83,15,162,137,6,
472 137,94,4,137,78,8,137,86,12,91,195,255,129,124,253,202,4,239,15,135,244,41, 472 137,94,4,137,78,8,137,86,12,91,195,248,156,255,85,72,137,229,83,72,137,252,
473 129,124,253,194,4,239,15,135,244,41,255,252,242,15,16,4,194,131,195,4,102, 473 251,139,131,233,72,41,196,15,182,139,233,131,252,233,1,15,136,244,248,248,
474 15,46,4,202,255,221,4,202,221,4,194,131,195,4,255,223,252,233,221,216,255, 474 1,72,139,132,253,203,233,72,137,132,253,204,233,131,252,233,1,15,137,244,
475 218,252,233,223,224,158,255,15,134,244,248,255,15,131,244,248,255,248,1,15, 475 1,248,2,15,182,131,233,72,139,187,233,72,139,179,233,72,139,147,233,72,139,
476 183,67,252,254,141,156,253,131,233,248,2,139,3,15,182,204,15,182,232,131, 476 139,233,76,139,131,233,76,139,139,233,133,192,15,132,244,251,15,40,131,233,
477 195,4,193,232,16,65,252,255,36,252,238,255,139,108,194,4,131,195,4,129,252, 477 255,15,40,139,233,15,40,147,233,15,40,155,233,131,252,248,4,15,134,244,251,
478 253,239,15,135,244,251,129,124,253,202,4,239,15,135,244,251,255,252,242,15, 478 15,40,163,233,15,40,171,233,15,40,179,233,15,40,187,233,248,5,252,255,147,
479 16,4,194,102,15,46,4,202,255,221,4,202,221,4,194,255,15,138,244,248,15,133, 479 233,72,137,131,233,15,41,131,233,72,137,147,233,15,41,139,233,72,139,93,252,
480 244,248,255,15,138,244,248,15,132,244,247,255,248,1,15,183,67,252,254,141, 480 248,201,195,255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239,
481 156,253,131,233,248,2,255,248,2,15,183,67,252,254,141,156,253,131,233,248, 481 15,135,244,41,255,252,242,15,16,4,194,131,195,4,102,15,46,4,202,255,221,4,
482 1,255,248,5,57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12, 482 202,221,4,194,131,195,4,255,223,252,233,221,216,255,218,252,233,223,224,158,
483 202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,135,244,2,139,169,233, 483 255,15,134,244,248,255,15,131,244,248,255,248,1,15,183,67,252,254,141,156,
484 133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237, 484 253,131,233,248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,
485 255,189,1,0,0,0,255,252,233,244,45,255,72,252,247,208,131,195,4,129,124,253, 485 255,36,252,238,255,139,108,194,4,131,195,4,129,252,253,239,15,135,244,251,
486 202,4,239,15,133,244,248,139,12,202,65,59,12,135,255,131,195,4,129,124,253, 486 129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,
487 202,4,239,15,135,244,248,255,252,242,65,15,16,4,199,102,15,46,4,202,255,221, 487 202,255,221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,
488 4,202,65,221,4,199,255,72,252,247,208,131,195,4,57,68,202,4,255,139,108,194, 488 244,248,15,132,244,247,255,248,1,15,183,67,252,254,141,156,253,131,233,248,
489 4,131,195,4,129,252,253,239,255,15,131,244,247,255,15,130,244,247,255,137, 489 2,255,248,2,15,183,67,252,254,141,156,253,131,233,248,1,255,248,5,57,108,
490 108,202,4,139,44,194,137,44,202,255,15,183,67,252,254,141,156,253,131,233, 490 202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,
491 248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, 491 15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,
492 238,255,72,139,44,194,72,137,44,202,139,3,15,182,204,15,182,232,131,195,4, 492 244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,
493 193,232,16,65,252,255,36,252,238,255,49,252,237,129,124,253,194,4,239,129, 493 252,233,244,45,255,72,252,247,208,131,195,4,129,124,253,202,4,239,15,133,
494 213,239,137,108,202,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65, 494 244,248,139,12,202,65,59,12,135,255,131,195,4,129,124,253,202,4,239,15,135,
495 252,255,36,252,238,255,129,124,253,194,4,239,15,135,244,48,255,252,242,15, 495 244,248,255,252,242,65,15,16,4,199,102,15,46,4,202,255,221,4,202,65,221,4,
496 16,4,194,72,184,237,237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255, 496 199,255,72,252,247,208,131,195,4,57,68,202,4,255,139,108,194,4,131,195,4,
497 221,4,194,217,224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139, 497 129,252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,
498 4,194,255,15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219, 498 44,194,137,44,202,255,15,183,67,252,254,141,156,253,131,233,248,1,139,3,15,
499 128,233,248,1,221,28,202,255,139,3,15,182,204,15,182,232,131,195,4,193,232, 499 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,139,
500 16,65,252,255,36,252,238,248,2,129,124,253,194,4,239,15,133,244,50,139,60, 500 44,194,72,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
501 194,137,213,232,251,1,18,255,252,242,15,42,192,137,252,234,255,15,182,75, 501 252,255,36,252,238,255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,
502 252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234, 502 202,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
503 4,239,15,135,244,46,255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255, 503 238,255,129,124,253,194,4,239,15,135,244,48,255,252,242,15,16,4,194,72,184,
504 221,4,252,234,65,220,4,199,255,129,124,253,252,234,4,239,15,135,244,47,255, 504 237,237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,
505 252,242,65,15,16,4,199,252,242,15,88,4,252,234,255,65,221,4,199,220,4,252, 505 224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,
506 234,255,129,124,253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15, 506 87,192,252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,
507 135,244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252, 507 1,221,28,202,255,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,
508 234,220,4,194,255,252,242,15,16,4,252,234,252,242,65,15,92,4,199,255,221, 508 255,36,252,238,248,2,129,124,253,194,4,239,15,133,244,50,139,60,194,137,213,
509 4,252,234,65,220,36,199,255,252,242,65,15,16,4,199,252,242,15,92,4,252,234, 509 232,251,1,18,255,252,242,15,42,192,137,252,234,255,15,182,75,252,253,252,
510 255,65,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92, 510 233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,
511 4,194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,65, 511 135,244,46,255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,221,4,252,
512 15,89,4,199,255,221,4,252,234,65,220,12,199,255,252,242,65,15,16,4,199,252, 512 234,65,220,4,199,255,129,124,253,252,234,4,239,15,135,244,47,255,252,242,
513 242,15,89,4,252,234,255,65,221,4,199,220,12,252,234,255,252,242,15,16,4,252, 513 65,15,16,4,199,252,242,15,88,4,252,234,255,65,221,4,199,220,4,252,234,255,
514 234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4, 514 129,124,253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15,135,244,
515 252,234,252,242,65,15,94,4,199,255,221,4,252,234,65,220,52,199,255,252,242, 515 49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,
516 65,15,16,4,199,252,242,15,94,4,252,234,255,65,221,4,199,220,52,252,234,255, 516 4,194,255,252,242,15,16,4,252,234,252,242,65,15,92,4,199,255,221,4,252,234,
517 252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194, 517 65,220,36,199,255,252,242,65,15,16,4,199,252,242,15,92,4,252,234,255,65,221,
518 255,252,242,15,16,4,252,234,252,242,65,15,16,12,199,255,221,4,252,234,65, 518 4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,
519 221,4,199,255,252,242,65,15,16,4,199,252,242,15,16,12,252,234,255,65,221, 519 221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,65,15,89,4,199,
520 4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255, 520 255,221,4,252,234,65,220,12,199,255,252,242,65,15,16,4,199,252,242,15,89,
521 221,4,252,234,221,4,194,255,248,156,232,244,148,255,252,233,244,156,255,232, 521 4,252,234,255,65,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,
522 244,107,255,15,182,252,236,15,182,192,139,124,36,24,137,151,233,141,52,194, 522 242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,
523 137,194,41,252,234,248,33,137,252,253,137,92,36,28,232,251,1,25,139,149,233, 523 252,242,65,15,94,4,199,255,221,4,252,234,65,220,52,199,255,252,242,65,15,
524 133,192,15,133,244,42,15,182,107,252,255,15,182,75,252,253,72,139,4,252,234, 524 16,4,199,252,242,15,94,4,252,234,255,65,221,4,199,220,52,252,234,255,252,
525 72,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255, 525 242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,
526 36,252,238,255,72,252,247,208,65,139,4,135,199,68,202,4,237,137,4,202,139, 526 252,242,15,16,4,252,234,252,242,65,15,16,12,199,255,221,4,252,234,65,221,
527 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,15, 527 4,199,255,252,242,65,15,16,4,199,252,242,15,16,12,252,234,255,65,221,4,199,
528 191,192,252,242,15,42,192,252,242,15,17,4,202,255,223,67,252,254,221,28,202, 528 221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,
529 255,252,242,65,15,16,4,199,252,242,15,17,4,202,255,65,221,4,199,221,28,202, 529 252,234,221,4,194,255,248,157,232,244,148,255,252,233,244,157,255,232,244,
530 255,72,252,247,208,137,68,202,4,139,3,15,182,204,15,182,232,131,195,4,193, 530 107,255,15,182,252,236,15,182,192,139,124,36,24,137,151,233,141,52,194,137,
531 232,16,65,252,255,36,252,238,255,141,76,202,12,141,68,194,4,189,237,137,105, 531 194,41,252,234,248,33,137,252,253,137,92,36,28,232,251,1,25,139,149,233,133,
532 252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,3,15,182,204,15,182, 532 192,15,133,244,42,15,182,107,252,255,15,182,75,252,253,72,139,4,252,234,72,
533 232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,106,252,248,139,172, 533 137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
534 253,133,233,139,173,233,72,139,69,0,72,137,4,202,139,3,15,182,204,15,182, 534 252,238,255,72,252,247,208,65,139,4,135,199,68,202,4,237,137,4,202,139,3,
535 232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,106,252,248,139,172, 535 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,15,191,
536 253,141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,137,77,0,137, 536 192,252,242,15,42,192,252,242,15,17,4,202,255,223,67,252,254,221,28,202,255,
537 69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182, 537 252,242,65,15,16,4,199,252,242,15,17,4,202,255,65,221,4,199,221,28,202,255,
538 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,129,232,239, 538 72,252,247,208,137,68,202,4,139,3,15,182,204,15,182,232,131,195,4,193,232,
539 129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,137,252,238, 539 16,65,252,255,36,252,238,255,141,76,202,12,141,68,194,4,189,237,137,105,252,
540 137,213,65,141,190,233,255,232,251,1,26,137,252,234,252,233,244,1,255,72, 540 248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,3,15,182,204,15,182,232,
541 252,247,208,139,106,252,248,139,172,253,141,233,65,139,12,135,139,133,233, 541 131,195,4,193,232,16,65,252,255,36,252,238,255,139,106,252,248,139,172,253,
542 137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182, 542 133,233,139,173,233,72,139,69,0,72,137,4,202,139,3,15,182,204,15,182,232,
543 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,252,246,129, 543 131,195,4,193,232,16,65,252,255,36,252,238,255,139,106,252,248,139,172,253,
544 233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,198,65,141,190, 544 141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,
545 233,232,251,1,26,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242, 545 4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,
546 65,15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255, 546 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,129,232,239,129,
547 221,25,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233, 547 252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,137,252,238,137,
548 137,65,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, 548 213,65,141,190,233,255,232,251,1,26,137,252,234,252,233,244,1,255,72,252,
549 238,255,141,156,253,131,233,139,108,36,24,131,189,233,0,15,132,244,247,137, 549 247,208,139,106,252,248,139,172,253,141,233,65,139,12,135,139,133,233,137,
550 149,233,141,52,202,137,252,239,232,251,1,27,139,149,233,248,1,139,3,15,182, 550 8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,
551 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247, 551 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,252,246,129,233,
552 208,139,108,36,24,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137, 552 235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,198,65,141,190,233,
553 92,36,28,232,251,1,28,139,149,233,15,182,75,252,253,137,4,202,199,68,202, 553 232,251,1,26,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,65,
554 4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, 554 15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,
555 238,255,139,108,36,24,137,149,233,65,139,142,233,65,59,142,233,137,92,36, 555 25,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,
556 28,15,131,244,251,248,1,137,194,37,252,255,7,0,0,193,252,234,11,61,252,255, 556 65,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,
557 7,0,0,15,132,244,249,248,2,137,252,239,137,198,232,251,1,29,139,149,233,15, 557 255,141,156,253,131,233,139,108,36,24,131,189,233,0,15,132,244,247,137,149,
558 182,75,252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131, 558 233,141,52,202,137,252,239,232,251,1,27,139,149,233,248,1,139,3,15,182,204,
559 195,4,193,232,16,65,252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248, 559 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,
560 5,137,252,239,232,251,1,30,15,183,67,252,254,252,233,244,1,255,72,252,247, 560 139,108,36,24,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137,92,
561 208,139,108,36,24,65,139,142,233,137,92,36,28,65,59,142,233,137,149,233,15, 561 36,28,232,251,1,28,139,149,233,15,182,75,252,253,137,4,202,199,68,202,4,237,
562 131,244,249,248,2,65,139,52,135,137,252,239,232,251,1,31,139,149,233,15,182, 562 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,
563 75,252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195, 563 139,108,36,24,137,149,233,65,139,142,233,65,59,142,233,137,92,36,28,15,131,
564 4,193,232,16,65,252,255,36,252,238,248,3,137,252,239,232,251,1,30,15,183, 564 244,251,248,1,137,194,37,252,255,7,0,0,193,252,234,11,61,252,255,7,0,0,15,
565 67,252,254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248, 565 132,244,249,248,2,137,252,239,137,198,232,251,1,29,139,149,233,15,182,75,
566 139,173,233,65,139,4,135,252,233,244,157,255,72,252,247,208,139,106,252,248, 566 252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,
567 139,173,233,65,139,4,135,252,233,244,158,255,15,182,252,236,15,182,192,129, 567 193,232,16,65,252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248,5,137,
568 124,253,252,234,4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239, 568 252,239,232,251,1,30,15,183,67,252,254,252,233,244,1,255,72,252,247,208,139,
569 15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200, 569 108,36,24,65,139,142,233,137,92,36,28,65,59,142,233,137,149,233,15,131,244,
570 102,15,46,193,255,15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133, 570 249,248,2,65,139,52,135,137,252,239,232,251,1,31,139,149,233,15,182,75,252,
571 233,129,120,253,4,239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3, 571 253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193,
572 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131, 572 232,16,65,252,255,36,252,238,248,3,137,252,239,232,251,1,30,15,183,67,252,
573 189,233,0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244,36,15, 573 254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173,
574 182,75,252,253,248,3,255,199,68,202,4,237,252,233,244,1,248,5,129,124,253, 574 233,65,139,4,135,252,233,244,158,255,72,252,247,208,139,106,252,248,139,173,
575 194,4,239,15,133,244,36,139,4,194,252,233,244,157,255,15,182,252,236,15,182, 575 233,65,139,4,135,252,233,244,159,255,15,182,252,236,15,182,192,129,124,253,
576 192,72,252,247,208,65,139,4,135,129,124,253,252,234,4,239,15,133,244,34,139, 576 252,234,4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,244,
577 44,252,234,248,157,139,141,233,35,136,233,105,201,239,3,141,233,248,1,129, 577 251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,
578 185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,4,239,15, 578 193,255,15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,
579 132,244,251,15,182,67,252,253,72,139,41,72,137,44,194,248,2,255,139,3,15, 579 253,4,239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3,15,182,204,15,
580 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182, 580 182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15,
581 67,252,253,199,68,194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133, 581 132,244,249,139,141,233,252,246,129,233,235,15,132,244,36,15,182,75,252,253,
582 244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244, 582 248,3,255,199,68,202,4,237,252,233,244,1,248,5,129,124,253,194,4,239,15,133,
583 3,252,233,244,34,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239, 583 244,36,139,4,194,252,233,244,158,255,15,182,252,236,15,182,192,72,252,247,
584 15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,233, 584 208,65,139,4,135,129,124,253,252,234,4,239,15,133,244,34,139,44,252,234,248,
585 129,120,253,4,239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3,15,182, 585 158,139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,
586 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233, 586 133,244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,
587 0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244,35,255,15,182, 587 182,67,252,253,72,139,41,72,137,44,194,248,2,255,139,3,15,182,204,15,182,
588 75,252,253,248,3,199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182, 588 232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67,252,253,199,
589 192,129,124,253,252,234,4,239,15,133,244,39,139,44,252,234,129,124,253,194, 589 68,194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,
590 4,239,15,135,244,251,255,15,133,244,39,59,133,233,15,131,244,39,193,224,3, 590 141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,
591 3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133, 591 34,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,35,
592 244,253,248,2,72,139,44,202,72,137,40,139,3,15,182,204,15,182,232,131,195, 592 139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,
593 4,193,232,16,65,252,255,36,252,238,248,3,131,189,233,0,15,132,244,1,139,141, 593 239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3,15,182,204,15,182,
594 233,255,252,246,129,233,235,15,132,244,39,15,182,75,252,253,252,233,244,1, 594 232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15,132,
595 248,5,129,124,253,194,4,239,15,133,244,39,139,4,194,252,233,244,158,248,7, 595 244,249,139,141,233,252,246,129,233,235,15,132,244,35,255,15,182,75,252,253,
596 128,165,233,235,65,139,142,233,65,137,174,233,137,141,233,15,182,75,252,253, 596 248,3,199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,192,129,124,
597 252,233,244,2,255,15,182,252,236,15,182,192,72,252,247,208,65,139,4,135,129, 597 253,252,234,4,239,15,133,244,39,139,44,252,234,129,124,253,194,4,239,15,135,
598 124,253,252,234,4,239,15,133,244,37,139,44,252,234,248,158,139,141,233,35, 598 244,251,255,15,133,244,39,59,133,233,15,131,244,39,193,224,3,3,133,233,129,
599 136,233,105,201,239,198,133,233,0,3,141,233,248,1,129,185,233,239,15,133, 599 120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,
600 244,251,57,129,233,15,133,244,251,129,121,253,4,239,15,132,244,250,248,2, 600 2,72,139,44,202,72,137,40,139,3,15,182,204,15,182,232,131,195,4,193,232,16,
601 255,252,246,133,233,235,15,133,244,253,248,3,15,182,67,252,253,72,139,44, 601 65,252,255,36,252,238,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,
602 194,72,137,41,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255, 602 246,129,233,235,15,132,244,39,15,182,75,252,253,252,233,244,1,248,5,129,124,
603 36,252,238,248,4,131,189,233,0,15,132,244,2,137,12,36,139,141,233,252,246, 603 253,194,4,239,15,133,244,39,139,4,194,252,233,244,159,248,7,128,165,233,235,
604 129,233,235,15,132,244,37,139,12,36,252,233,244,2,248,5,139,137,233,133,201, 604 65,139,142,233,65,137,174,233,137,141,233,15,182,75,252,253,252,233,244,2,
605 15,133,244,1,255,139,141,233,133,201,15,132,244,252,252,246,129,233,235,15, 605 255,15,182,252,236,15,182,192,72,252,247,208,65,139,4,135,129,124,253,252,
606 132,244,37,248,6,137,4,36,199,68,36,4,237,137,108,36,8,139,124,36,24,137, 606 234,4,239,15,133,244,37,139,44,252,234,248,159,139,141,233,35,136,233,105,
607 151,233,72,141,20,36,137,252,238,137,252,253,137,92,36,28,232,251,1,32,139, 607 201,239,198,133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,
608 149,233,139,108,36,8,137,193,252,233,244,2,248,7,128,165,233,235,65,139,134, 608 233,15,133,244,251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,
609 233,65,137,174,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192, 609 233,235,15,133,244,253,248,3,15,182,67,252,253,72,139,44,194,72,137,41,139,
610 129,124,253,252,234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,
611 244,38,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,
612 133,233,235,15,133,244,253,248,2,72,139,12,202,72,137,8,139,3,15,182,204,
613 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,131,189,233,0,
614 15,132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,75,
615 252,253,252,233,244,1,248,7,128,165,233,235,65,139,142,233,65,137,174,233,
616 137,141,233,15,182,75,252,253,252,233,244,2,255,68,137,60,36,69,139,60,199,
617 248,1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,
618 139,68,36,4,131,232,1,15,132,244,250,68,1,252,248,59,133,233,15,135,244,251,
619 68,41,252,248,65,193,231,3,68,3,189,233,248,3,72,139,41,131,193,8,73,137,
620 47,65,131,199,8,131,232,1,15,133,244,3,248,4,68,139,60,36,139,3,15,182,204,
621 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,5,139,124,36,24,
622 137,151,233,137,252,238,137,194,137,252,253,137,92,36,28,232,251,1,33,139,
623 149,233,15,182,75,252,253,252,233,244,1,248,7,255,128,165,233,235,65,139,
624 134,233,65,137,174,233,137,133,233,252,233,244,2,255,3,68,36,4,255,129,124,
625 253,202,4,239,139,44,202,15,133,244,51,141,84,202,8,137,90,252,252,139,157,
626 233,139,11,15,182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,255,
627 141,76,202,8,65,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,
628 28,248,52,139,90,252,252,252,247,195,237,15,133,244,253,248,1,137,106,252,
629 248,137,68,36,4,131,232,1,15,132,244,249,248,2,72,139,41,131,193,8,73,137,
630 47,65,131,199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,4,
631 128,189,233,1,15,135,244,251,248,4,139,157,233,139,11,15,182,252,233,15,182,
632 205,131,195,4,65,252,255,36,252,238,248,5,255,252,247,195,237,15,133,244,
633 4,15,182,75,252,253,72,252,247,209,141,12,202,68,139,121,252,248,69,139,191,
634 233,69,139,191,233,252,233,244,4,248,7,129,252,235,239,252,247,195,237,15,
635 133,244,254,41,218,65,137,215,139,90,252,252,252,233,244,1,248,8,129,195,
636 239,252,233,244,1,255,141,76,202,8,72,139,105,232,72,139,65,252,240,72,137,
637 41,72,137,65,8,139,105,224,139,65,228,137,105,252,248,137,65,252,252,129,
638 252,248,239,184,237,15,133,244,28,137,202,137,90,252,252,139,157,233,139,
639 11,15,182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,255,68,137,60,
640 36,68,137,116,36,4,139,108,202,252,240,139,68,202,252,248,68,139,181,233,
641 131,195,4,68,139,189,233,248,1,68,57,252,240,15,131,244,251,65,129,124,253,
642 199,4,239,15,132,244,250,255,252,242,15,42,192,255,219,68,202,252,248,255,
643 73,139,44,199,72,137,108,202,8,131,192,1,255,137,68,202,252,248,248,2,15,
644 183,67,252,254,141,156,253,131,233,248,3,68,139,116,36,4,68,139,60,36,139,
645 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,4, 610 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,4,
646 131,192,1,255,137,68,202,252,248,255,252,233,244,1,248,5,68,41,252,240,248, 611 131,189,233,0,15,132,244,2,137,12,36,139,141,233,252,246,129,233,235,15,132,
647 6,59,133,233,15,135,244,3,68,105,252,248,239,68,3,189,233,65,129,191,233, 612 244,37,139,12,36,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,
648 239,15,132,244,253,70,141,116,48,1,73,139,175,233,73,139,135,233,72,137,44, 613 139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,
649 202,72,137,68,202,8,68,137,116,202,252,248,252,233,244,2,248,7,131,192,1, 614 6,137,4,36,199,68,36,4,237,137,108,36,8,139,124,36,24,137,151,233,72,141,
650 252,233,244,6,255,129,124,253,202,252,236,239,15,133,244,251,139,108,202, 615 20,36,137,252,238,137,252,253,137,92,36,28,232,251,1,32,139,149,233,139,108,
651 232,129,124,253,202,252,244,239,15,133,244,251,129,124,253,202,252,252,239, 616 36,8,137,193,252,233,244,2,248,7,128,165,233,235,65,139,134,233,65,137,174,
652 15,133,244,251,128,189,233,235,15,133,244,251,141,156,253,131,233,199,68, 617 233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,
653 202,252,248,0,0,0,0,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16, 618 234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,
654 65,252,255,36,252,238,248,5,198,67,252,252,235,141,156,253,131,233,198,3, 619 3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,
655 235,252,233,244,1,255,15,182,252,236,15,182,192,68,137,60,36,68,141,188,253, 620 244,253,248,2,72,139,12,202,72,137,8,139,3,15,182,204,15,182,232,131,195,
656 194,233,141,12,202,68,43,122,252,252,133,252,237,15,132,244,251,141,108,252, 621 4,193,232,16,65,252,255,36,252,238,248,3,131,189,233,0,15,132,244,1,255,139,
657 233,252,248,65,57,215,15,131,244,248,248,1,73,139,71,252,248,65,131,199,8, 622 141,233,252,246,129,233,235,15,132,244,38,15,182,75,252,253,252,233,244,1,
658 72,137,1,131,193,8,57,252,233,15,131,244,249,65,57,215,15,130,244,1,248,2, 623 248,7,128,165,233,235,65,139,142,233,65,137,174,233,137,141,233,15,182,75,
659 199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,68,139,60,36,139,3,15, 624 252,253,252,233,244,2,255,68,137,60,36,69,139,60,199,248,1,141,12,202,139,
660 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,5,199,68, 625 105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,68,36,4,131,232,
661 36,4,1,0,0,0,137,208,68,41,252,248,15,134,244,3,137,197,193,252,237,3,131, 626 1,15,132,244,250,68,1,252,248,59,133,233,15,135,244,251,68,41,252,248,65,
662 197,1,137,108,36,4,139,108,36,24,1,200,59,133,233,15,135,244,253,248,6,255, 627 193,231,3,68,3,189,233,248,3,72,139,41,131,193,8,73,137,47,65,131,199,8,131,
663 73,139,71,252,248,65,131,199,8,72,137,1,131,193,8,65,57,215,15,130,244,6, 628 232,1,15,133,244,3,248,4,68,139,60,36,139,3,15,182,204,15,182,232,131,195,
664 252,233,244,3,248,7,137,149,233,137,141,233,137,92,36,28,65,41,215,139,116, 629 4,193,232,16,65,252,255,36,252,238,248,5,139,124,36,24,137,151,233,137,252,
665 36,4,131,252,238,1,137,252,239,232,251,1,0,139,149,233,139,141,233,65,1,215, 630 238,137,194,137,252,253,137,92,36,28,232,251,1,33,139,149,233,15,182,75,252,
666 252,233,244,6,255,193,225,3,255,248,1,139,90,252,252,137,68,36,4,252,247, 631 253,252,233,244,1,248,7,255,128,165,233,235,65,139,134,233,65,137,174,233,
667 195,237,15,133,244,253,255,248,13,65,137,215,131,232,1,15,132,244,249,248, 632 137,133,233,252,233,244,2,255,3,68,36,4,255,129,124,253,202,4,239,139,44,
668 2,73,139,44,15,73,137,111,252,248,65,131,199,8,131,232,1,15,133,244,2,248, 633 202,15,133,244,51,141,84,202,8,137,90,252,252,139,157,233,139,11,15,182,252,
669 3,139,68,36,4,15,182,107,252,255,248,5,57,197,15,135,244,252,255,72,139,44, 634 233,15,182,205,131,195,4,65,252,255,36,252,238,255,141,76,202,8,65,137,215,
670 10,72,137,106,252,248,255,248,5,56,67,252,255,15,135,244,252,255,15,182,75, 635 139,105,252,248,129,121,253,252,252,239,15,133,244,28,248,52,139,90,252,252,
671 252,253,72,252,247,209,141,20,202,68,139,122,252,248,69,139,191,233,69,139, 636 252,247,195,237,15,133,244,253,248,1,137,106,252,248,137,68,36,4,131,232,
672 191,233,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252, 637 1,15,132,244,249,248,2,72,139,41,131,193,8,73,137,47,65,131,199,8,131,232,
673 238,248,6,255,65,199,71,252,252,237,65,131,199,8,255,199,68,194,252,244,237, 638 1,15,133,244,2,139,106,252,248,248,3,139,68,36,4,128,189,233,1,15,135,244,
674 255,131,192,1,252,233,244,5,248,7,141,171,233,252,247,197,237,15,133,244, 639 251,248,4,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,65,252,255,
675 14,41,252,234,255,1,252,233,255,137,221,209,252,237,129,229,239,102,65,131, 640 36,252,238,248,5,255,252,247,195,237,15,133,244,4,15,182,75,252,253,72,252,
676 172,253,46,233,1,15,132,244,140,255,141,12,202,255,129,121,253,4,239,15,135, 641 247,209,141,12,202,68,139,121,252,248,69,139,191,233,69,139,191,233,252,233,
677 244,53,129,121,253,12,239,15,135,244,53,255,139,105,20,255,129,252,253,239, 642 244,4,248,7,129,252,235,239,252,247,195,237,15,133,244,254,41,218,65,137,
678 15,135,244,53,255,252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65, 643 215,139,90,252,252,252,233,244,1,248,8,129,195,239,252,233,244,1,255,141,
679 16,252,242,15,17,1,133,252,237,15,136,244,249,255,15,140,244,249,255,102, 644 76,202,8,72,139,105,232,72,139,65,252,240,72,137,41,72,137,65,8,139,105,224,
680 15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221, 645 139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,237,15,133,
681 17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,15,140,244,247,255, 646 244,28,137,202,137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,
682 217,201,248,1,255,15,183,67,252,254,255,15,131,244,248,141,156,253,131,233, 647 131,195,4,65,252,255,36,252,238,255,68,137,60,36,68,137,116,36,4,139,108,
683 255,141,156,253,131,233,15,183,67,252,254,15,131,245,255,15,130,244,248,141, 648 202,252,240,139,68,202,252,248,68,139,181,233,131,195,4,68,139,189,233,248,
684 156,253,131,233,255,248,3,102,15,46,193,252,233,244,1,255,141,12,202,139, 649 1,68,57,252,240,15,131,244,251,65,129,124,253,199,4,239,15,132,244,250,255,
685 105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139,41,137,105,252, 650 252,242,15,42,192,255,219,68,202,252,248,255,73,139,44,199,72,137,108,202,
686 248,252,233,245,255,141,156,253,131,233,139,1,137,105,252,252,137,65,252, 651 8,131,192,1,255,137,68,202,252,248,248,2,15,183,67,252,254,141,156,253,131,
687 248,255,65,139,142,233,139,4,129,72,139,128,233,139,108,36,24,65,137,150, 652 233,248,3,68,139,116,36,4,68,139,60,36,139,3,15,182,204,15,182,232,131,195,
688 233,65,137,174,233,76,137,36,36,76,137,108,36,8,72,131,252,236,16,252,255, 653 4,193,232,16,65,252,255,36,252,238,248,4,131,192,1,255,137,68,202,252,248,
689 224,255,141,156,253,131,233,139,3,15,182,204,15,182,232,131,195,4,193,232, 654 255,252,233,244,1,248,5,68,41,252,240,248,6,59,133,233,15,135,244,3,68,105,
690 16,65,252,255,36,252,238,255,137,221,209,252,237,129,229,239,102,65,131,172, 655 252,248,239,68,3,189,233,65,129,191,233,239,15,132,244,253,70,141,116,48,
691 253,46,233,1,15,132,244,142,255,68,139,187,233,139,108,36,24,141,12,202,59, 656 1,73,139,175,233,73,139,135,233,72,137,44,202,72,137,68,202,8,68,137,116,
692 141,233,15,135,244,23,15,182,139,233,57,200,15,134,244,249,248,2,255,15,183, 657 202,252,248,252,233,244,2,248,7,131,192,1,252,233,244,6,255,129,124,253,202,
693 67,252,254,252,233,245,255,248,3,199,68,194,252,252,237,131,192,1,57,200, 658 252,236,239,15,133,244,251,139,108,202,232,129,124,253,202,252,244,239,15,
694 15,134,244,3,252,233,244,2,255,141,44,197,237,141,4,194,68,139,122,252,248, 659 133,244,251,129,124,253,202,252,252,239,15,133,244,251,128,189,233,235,15,
695 137,104,252,252,68,137,120,252,248,139,108,36,24,141,12,200,59,141,233,15, 660 133,244,251,141,156,253,131,233,199,68,202,252,248,0,0,0,0,248,1,139,3,15,
696 135,244,22,137,209,137,194,15,182,171,233,133,252,237,15,132,244,248,248, 661 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,5,198,67,
697 1,131,193,8,57,209,15,131,244,249,68,139,121,252,248,68,137,56,68,139,121, 662 252,252,235,141,156,253,131,233,198,3,235,252,233,244,1,255,15,182,252,236,
698 252,252,68,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,244, 663 15,182,192,68,137,60,36,68,141,188,253,194,233,141,12,202,68,43,122,252,252,
699 1,248,2,255,68,139,187,233,139,3,15,182,204,15,182,232,131,195,4,193,232, 664 133,252,237,15,132,244,251,141,108,252,233,252,248,65,57,215,15,131,244,248,
700 16,65,252,255,36,252,238,255,248,3,199,64,4,237,131,192,8,131,252,237,1,15, 665 248,1,73,139,71,252,248,65,131,199,8,72,137,1,131,193,8,57,252,233,15,131,
701 133,244,3,252,233,244,2,255,139,106,252,248,76,139,189,233,139,108,36,24, 666 244,249,65,57,215,15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,
702 141,68,194,252,248,137,149,233,141,136,233,59,141,233,137,133,233,255,137, 667 130,244,2,248,3,68,139,60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,
703 252,239,255,76,137,252,254,137,252,239,255,15,135,244,21,65,199,134,233,237, 668 16,65,252,255,36,252,238,248,5,199,68,36,4,1,0,0,0,137,208,68,41,252,248,
704 255,65,252,255,215,255,65,252,255,150,233,255,65,199,134,233,237,139,149, 669 15,134,244,3,137,197,193,252,237,3,131,197,1,137,108,36,4,139,108,36,24,1,
705 233,141,12,194,252,247,217,3,141,233,139,90,252,252,252,233,244,12,255,254, 670 200,59,133,233,15,135,244,253,248,6,255,73,139,71,252,248,65,131,199,8,72,
706 0 671 137,1,131,193,8,65,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,
672 141,233,137,92,36,28,65,41,215,139,116,36,4,131,252,238,1,137,252,239,232,
673 251,1,0,139,149,233,139,141,233,65,1,215,252,233,244,6,255,193,225,3,255,
674 248,1,139,90,252,252,137,68,36,4,252,247,195,237,15,133,244,253,255,248,13,
675 65,137,215,131,232,1,15,132,244,249,248,2,73,139,44,15,73,137,111,252,248,
676 65,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,4,15,182,107,252,255,
677 248,5,57,197,15,135,244,252,255,72,139,44,10,72,137,106,252,248,255,248,5,
678 56,67,252,255,15,135,244,252,255,15,182,75,252,253,72,252,247,209,141,20,
679 202,68,139,122,252,248,69,139,191,233,69,139,191,233,139,3,15,182,204,15,
680 182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,6,255,65,199,71,252,
681 252,237,65,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,
682 5,248,7,141,171,233,252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,
683 255,137,221,209,252,237,129,229,239,102,65,131,172,253,46,233,1,15,132,244,
684 140,255,141,12,202,255,129,121,253,4,239,15,135,244,53,129,121,253,12,239,
685 15,135,244,53,255,139,105,20,255,129,252,253,239,15,135,244,53,255,252,242,
686 15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,
687 237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,
688 17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,
689 136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,67,
690 252,254,255,15,131,244,248,141,156,253,131,233,255,141,156,253,131,233,15,
691 183,67,252,254,15,131,245,255,15,130,244,248,141,156,253,131,233,255,248,
692 3,102,15,46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,
693 132,244,247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,
694 156,253,131,233,139,1,137,105,252,252,137,65,252,248,255,65,139,142,233,139,
695 4,129,72,139,128,233,139,108,36,24,65,137,150,233,65,137,174,233,76,137,36,
696 36,76,137,108,36,8,72,131,252,236,16,252,255,224,255,141,156,253,131,233,
697 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,
698 137,221,209,252,237,129,229,239,102,65,131,172,253,46,233,1,15,132,244,142,
699 255,68,139,187,233,139,108,36,24,141,12,202,59,141,233,15,135,244,23,15,182,
700 139,233,57,200,15,134,244,249,248,2,255,15,183,67,252,254,252,233,245,255,
701 248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,
702 255,141,44,197,237,141,4,194,68,139,122,252,248,137,104,252,252,68,137,120,
703 252,248,139,108,36,24,141,12,200,59,141,233,15,135,244,22,137,209,137,194,
704 15,182,171,233,133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244,
705 249,68,139,121,252,248,68,137,56,68,139,121,252,252,68,137,120,4,131,192,
706 8,199,65,252,252,237,131,252,237,1,15,133,244,1,248,2,255,68,139,187,233,
707 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,
708 248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,
709 139,106,252,248,76,139,189,233,139,108,36,24,141,68,194,252,248,137,149,233,
710 141,136,233,59,141,233,137,133,233,255,137,252,239,255,76,137,252,254,137,
711 252,239,255,15,135,244,21,65,199,134,233,237,255,65,252,255,215,255,65,252,
712 255,150,233,255,65,199,134,233,237,139,149,233,141,12,194,252,247,217,3,141,
713 233,139,90,252,252,252,233,244,12,255,254,0
707}; 714};
708 715
709enum { 716enum {
@@ -853,6 +860,7 @@ enum {
853 GLOB_vm_foldfpm, 860 GLOB_vm_foldfpm,
854 GLOB_vm_foldarith, 861 GLOB_vm_foldarith,
855 GLOB_vm_cpuid, 862 GLOB_vm_cpuid,
863 GLOB_vm_ffi_call,
856 GLOB_BC_MODVN_Z, 864 GLOB_BC_MODVN_Z,
857 GLOB_BC_TGETS_Z, 865 GLOB_BC_TGETS_Z,
858 GLOB_BC_TSETS_Z, 866 GLOB_BC_TSETS_Z,
@@ -1005,6 +1013,7 @@ static const char *const globnames[] = {
1005 "vm_foldfpm", 1013 "vm_foldfpm",
1006 "vm_foldarith", 1014 "vm_foldarith",
1007 "vm_cpuid", 1015 "vm_cpuid",
1016 "vm_ffi_call@4",
1008 "BC_MODVN_Z", 1017 "BC_MODVN_Z",
1009 "BC_TGETS_Z", 1018 "BC_TGETS_Z",
1010 "BC_TSETS_Z", 1019 "BC_TSETS_Z",
@@ -1444,6 +1453,11 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1444 dasm_put(Dst, 8989); 1453 dasm_put(Dst, 8989);
1445 } 1454 }
1446 dasm_put(Dst, 9407); 1455 dasm_put(Dst, 9407);
1456#if LJ_HASFFI
1457#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
1458 dasm_put(Dst, 9431, DtE(->spadj), DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->gpr[4]), DtE(->gpr[5]), DtE(->fpr[0]));
1459 dasm_put(Dst, 9521, DtE(->fpr[1]), DtE(->fpr[2]), DtE(->fpr[3]), DtE(->fpr[4]), DtE(->fpr[5]), DtE(->fpr[6]), DtE(->fpr[7]), DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]), DtE(->gpr[1]), DtE(->fpr[1]));
1460#endif
1447} 1461}
1448 1462
1449/* Generate the code for a single instruction. */ 1463/* Generate the code for a single instruction. */
@@ -1459,20 +1473,20 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1459 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1473 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1460 1474
1461 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1475 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1462 dasm_put(Dst, 9429, LJ_TISNUM, LJ_TISNUM); 1476 dasm_put(Dst, 9587, LJ_TISNUM, LJ_TISNUM);
1463 if (sse) { 1477 if (sse) {
1464 dasm_put(Dst, 9450); 1478 dasm_put(Dst, 9608);
1465 } else { 1479 } else {
1466 dasm_put(Dst, 9465); 1480 dasm_put(Dst, 9623);
1467 if (cmov) { 1481 if (cmov) {
1468 dasm_put(Dst, 9475); 1482 dasm_put(Dst, 9633);
1469 } else { 1483 } else {
1470 dasm_put(Dst, 9481); 1484 dasm_put(Dst, 9639);
1471 } 1485 }
1472 } 1486 }
1473 switch (op) { 1487 switch (op) {
1474 case BC_ISLT: 1488 case BC_ISLT:
1475 dasm_put(Dst, 9488); 1489 dasm_put(Dst, 9646);
1476 break; 1490 break;
1477 case BC_ISGE: 1491 case BC_ISGE:
1478 dasm_put(Dst, 9287); 1492 dasm_put(Dst, 9287);
@@ -1481,599 +1495,599 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1481 dasm_put(Dst, 5894); 1495 dasm_put(Dst, 5894);
1482 break; 1496 break;
1483 case BC_ISGT: 1497 case BC_ISGT:
1484 dasm_put(Dst, 9493); 1498 dasm_put(Dst, 9651);
1485 break; 1499 break;
1486 default: break; /* Shut up GCC. */ 1500 default: break; /* Shut up GCC. */
1487 } 1501 }
1488 dasm_put(Dst, 9498, -BCBIAS_J*4); 1502 dasm_put(Dst, 9656, -BCBIAS_J*4);
1489 break; 1503 break;
1490 1504
1491 case BC_ISEQV: case BC_ISNEV: 1505 case BC_ISEQV: case BC_ISNEV:
1492 vk = op == BC_ISEQV; 1506 vk = op == BC_ISEQV;
1493 dasm_put(Dst, 9533, LJ_TISNUM, LJ_TISNUM); 1507 dasm_put(Dst, 9691, LJ_TISNUM, LJ_TISNUM);
1494 if (sse) { 1508 if (sse) {
1495 dasm_put(Dst, 9559); 1509 dasm_put(Dst, 9717);
1496 } else { 1510 } else {
1497 dasm_put(Dst, 9571); 1511 dasm_put(Dst, 9729);
1498 if (cmov) { 1512 if (cmov) {
1499 dasm_put(Dst, 9475); 1513 dasm_put(Dst, 9633);
1500 } else { 1514 } else {
1501 dasm_put(Dst, 9481); 1515 dasm_put(Dst, 9639);
1502 } 1516 }
1503 } 1517 }
1504 iseqne_fp: 1518 iseqne_fp:
1505 if (vk) { 1519 if (vk) {
1506 dasm_put(Dst, 9578); 1520 dasm_put(Dst, 9736);
1507 } else { 1521 } else {
1508 dasm_put(Dst, 9587); 1522 dasm_put(Dst, 9745);
1509 } 1523 }
1510 iseqne_end: 1524 iseqne_end:
1511 if (vk) { 1525 if (vk) {
1512 dasm_put(Dst, 9596, -BCBIAS_J*4); 1526 dasm_put(Dst, 9754, -BCBIAS_J*4);
1513 } else { 1527 } else {
1514 dasm_put(Dst, 9611, -BCBIAS_J*4); 1528 dasm_put(Dst, 9769, -BCBIAS_J*4);
1515 } 1529 }
1516 dasm_put(Dst, 9512); 1530 dasm_put(Dst, 9670);
1517 if (op == BC_ISEQV || op == BC_ISNEV) { 1531 if (op == BC_ISEQV || op == BC_ISNEV) {
1518 dasm_put(Dst, 9626, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1532 dasm_put(Dst, 9784, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1519 if (vk) { 1533 if (vk) {
1520 dasm_put(Dst, 9684); 1534 dasm_put(Dst, 9842);
1521 } else { 1535 } else {
1522 dasm_put(Dst, 9688); 1536 dasm_put(Dst, 9846);
1523 } 1537 }
1524 dasm_put(Dst, 9694); 1538 dasm_put(Dst, 9852);
1525 } 1539 }
1526 break; 1540 break;
1527 case BC_ISEQS: case BC_ISNES: 1541 case BC_ISEQS: case BC_ISNES:
1528 vk = op == BC_ISEQS; 1542 vk = op == BC_ISEQS;
1529 dasm_put(Dst, 9699, LJ_TSTR); 1543 dasm_put(Dst, 9857, LJ_TSTR);
1530 iseqne_test: 1544 iseqne_test:
1531 if (vk) { 1545 if (vk) {
1532 dasm_put(Dst, 9582); 1546 dasm_put(Dst, 9740);
1533 } else { 1547 } else {
1534 dasm_put(Dst, 2803); 1548 dasm_put(Dst, 2803);
1535 } 1549 }
1536 goto iseqne_end; 1550 goto iseqne_end;
1537 case BC_ISEQN: case BC_ISNEN: 1551 case BC_ISEQN: case BC_ISNEN:
1538 vk = op == BC_ISEQN; 1552 vk = op == BC_ISEQN;
1539 dasm_put(Dst, 9724, LJ_TISNUM); 1553 dasm_put(Dst, 9882, LJ_TISNUM);
1540 if (sse) { 1554 if (sse) {
1541 dasm_put(Dst, 9738); 1555 dasm_put(Dst, 9896);
1542 } else { 1556 } else {
1543 dasm_put(Dst, 9751); 1557 dasm_put(Dst, 9909);
1544 if (cmov) { 1558 if (cmov) {
1545 dasm_put(Dst, 9475); 1559 dasm_put(Dst, 9633);
1546 } else { 1560 } else {
1547 dasm_put(Dst, 9481); 1561 dasm_put(Dst, 9639);
1548 } 1562 }
1549 } 1563 }
1550 goto iseqne_fp; 1564 goto iseqne_fp;
1551 case BC_ISEQP: case BC_ISNEP: 1565 case BC_ISEQP: case BC_ISNEP:
1552 vk = op == BC_ISEQP; 1566 vk = op == BC_ISEQP;
1553 dasm_put(Dst, 9759); 1567 dasm_put(Dst, 9917);
1554 goto iseqne_test; 1568 goto iseqne_test;
1555 1569
1556 /* -- Unary test and copy ops ------------------------------------------- */ 1570 /* -- Unary test and copy ops ------------------------------------------- */
1557 1571
1558 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 1572 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1559 dasm_put(Dst, 9771, LJ_TISTRUECOND); 1573 dasm_put(Dst, 9929, LJ_TISTRUECOND);
1560 if (op == BC_IST || op == BC_ISTC) { 1574 if (op == BC_IST || op == BC_ISTC) {
1561 dasm_put(Dst, 9783); 1575 dasm_put(Dst, 9941);
1562 } else { 1576 } else {
1563 dasm_put(Dst, 9788); 1577 dasm_put(Dst, 9946);
1564 } 1578 }
1565 if (op == BC_ISTC || op == BC_ISFC) { 1579 if (op == BC_ISTC || op == BC_ISFC) {
1566 dasm_put(Dst, 9793); 1580 dasm_put(Dst, 9951);
1567 } 1581 }
1568 dasm_put(Dst, 9804, -BCBIAS_J*4); 1582 dasm_put(Dst, 9962, -BCBIAS_J*4);
1569 break; 1583 break;
1570 1584
1571 /* -- Unary ops --------------------------------------------------------- */ 1585 /* -- Unary ops --------------------------------------------------------- */
1572 1586
1573 case BC_MOV: 1587 case BC_MOV:
1574 dasm_put(Dst, 9837); 1588 dasm_put(Dst, 9995);
1575 break; 1589 break;
1576 case BC_NOT: 1590 case BC_NOT:
1577 dasm_put(Dst, 9866, LJ_TISTRUECOND, LJ_TTRUE); 1591 dasm_put(Dst, 10024, LJ_TISTRUECOND, LJ_TTRUE);
1578 break; 1592 break;
1579 case BC_UNM: 1593 case BC_UNM:
1580 dasm_put(Dst, 9903, LJ_TISNUM); 1594 dasm_put(Dst, 10061, LJ_TISNUM);
1581 if (sse) { 1595 if (sse) {
1582 dasm_put(Dst, 9914, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1596 dasm_put(Dst, 10072, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1583 } else { 1597 } else {
1584 dasm_put(Dst, 9939); 1598 dasm_put(Dst, 10097);
1585 } 1599 }
1586 dasm_put(Dst, 9512); 1600 dasm_put(Dst, 9670);
1587 break; 1601 break;
1588 case BC_LEN: 1602 case BC_LEN:
1589 dasm_put(Dst, 9948, LJ_TSTR); 1603 dasm_put(Dst, 10106, LJ_TSTR);
1590 if (sse) { 1604 if (sse) {
1591 dasm_put(Dst, 9962, Dt5(->len)); 1605 dasm_put(Dst, 10120, Dt5(->len));
1592 } else { 1606 } else {
1593 dasm_put(Dst, 9980, Dt5(->len)); 1607 dasm_put(Dst, 10138, Dt5(->len));
1594 } 1608 }
1595 dasm_put(Dst, 9989, LJ_TTAB); 1609 dasm_put(Dst, 10147, LJ_TTAB);
1596 if (sse) { 1610 if (sse) {
1597 dasm_put(Dst, 10031); 1611 dasm_put(Dst, 10189);
1598 } else { 1612 } else {
1599 } 1613 }
1600 dasm_put(Dst, 10040); 1614 dasm_put(Dst, 10198);
1601 break; 1615 break;
1602 1616
1603 /* -- Binary ops -------------------------------------------------------- */ 1617 /* -- Binary ops -------------------------------------------------------- */
1604 1618
1605 1619
1606 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 1620 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1607 dasm_put(Dst, 10050); 1621 dasm_put(Dst, 10208);
1608 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1622 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1609 switch (vk) { 1623 switch (vk) {
1610 case 0: 1624 case 0:
1611 dasm_put(Dst, 10058, LJ_TISNUM); 1625 dasm_put(Dst, 10216, LJ_TISNUM);
1612 if (sse) { 1626 if (sse) {
1613 dasm_put(Dst, 10070); 1627 dasm_put(Dst, 10228);
1614 } else { 1628 } else {
1615 dasm_put(Dst, 10085); 1629 dasm_put(Dst, 10243);
1616 } 1630 }
1617 break; 1631 break;
1618 case 1: 1632 case 1:
1619 dasm_put(Dst, 10094, LJ_TISNUM); 1633 dasm_put(Dst, 10252, LJ_TISNUM);
1620 if (sse) { 1634 if (sse) {
1621 dasm_put(Dst, 10106); 1635 dasm_put(Dst, 10264);
1622 } else { 1636 } else {
1623 dasm_put(Dst, 10121); 1637 dasm_put(Dst, 10279);
1624 } 1638 }
1625 break; 1639 break;
1626 default: 1640 default:
1627 dasm_put(Dst, 10130, LJ_TISNUM, LJ_TISNUM); 1641 dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM);
1628 if (sse) { 1642 if (sse) {
1629 dasm_put(Dst, 10152); 1643 dasm_put(Dst, 10310);
1630 } else { 1644 } else {
1631 dasm_put(Dst, 10166); 1645 dasm_put(Dst, 10324);
1632 } 1646 }
1633 break; 1647 break;
1634 } 1648 }
1635 if (sse) { 1649 if (sse) {
1636 dasm_put(Dst, 9932); 1650 dasm_put(Dst, 10090);
1637 } else { 1651 } else {
1638 dasm_put(Dst, 9944); 1652 dasm_put(Dst, 10102);
1639 } 1653 }
1640 dasm_put(Dst, 9512); 1654 dasm_put(Dst, 9670);
1641 break; 1655 break;
1642 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 1656 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1643 dasm_put(Dst, 10050); 1657 dasm_put(Dst, 10208);
1644 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1658 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1645 switch (vk) { 1659 switch (vk) {
1646 case 0: 1660 case 0:
1647 dasm_put(Dst, 10058, LJ_TISNUM); 1661 dasm_put(Dst, 10216, LJ_TISNUM);
1648 if (sse) { 1662 if (sse) {
1649 dasm_put(Dst, 10174); 1663 dasm_put(Dst, 10332);
1650 } else { 1664 } else {
1651 dasm_put(Dst, 10189); 1665 dasm_put(Dst, 10347);
1652 } 1666 }
1653 break; 1667 break;
1654 case 1: 1668 case 1:
1655 dasm_put(Dst, 10094, LJ_TISNUM); 1669 dasm_put(Dst, 10252, LJ_TISNUM);
1656 if (sse) { 1670 if (sse) {
1657 dasm_put(Dst, 10198); 1671 dasm_put(Dst, 10356);
1658 } else { 1672 } else {
1659 dasm_put(Dst, 10213); 1673 dasm_put(Dst, 10371);
1660 } 1674 }
1661 break; 1675 break;
1662 default: 1676 default:
1663 dasm_put(Dst, 10130, LJ_TISNUM, LJ_TISNUM); 1677 dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM);
1664 if (sse) { 1678 if (sse) {
1665 dasm_put(Dst, 10222); 1679 dasm_put(Dst, 10380);
1666 } else { 1680 } else {
1667 dasm_put(Dst, 10236); 1681 dasm_put(Dst, 10394);
1668 } 1682 }
1669 break; 1683 break;
1670 } 1684 }
1671 if (sse) { 1685 if (sse) {
1672 dasm_put(Dst, 9932); 1686 dasm_put(Dst, 10090);
1673 } else { 1687 } else {
1674 dasm_put(Dst, 9944); 1688 dasm_put(Dst, 10102);
1675 } 1689 }
1676 dasm_put(Dst, 9512); 1690 dasm_put(Dst, 9670);
1677 break; 1691 break;
1678 case BC_MULVN: case BC_MULNV: case BC_MULVV: 1692 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1679 dasm_put(Dst, 10050); 1693 dasm_put(Dst, 10208);
1680 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1694 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1681 switch (vk) { 1695 switch (vk) {
1682 case 0: 1696 case 0:
1683 dasm_put(Dst, 10058, LJ_TISNUM); 1697 dasm_put(Dst, 10216, LJ_TISNUM);
1684 if (sse) { 1698 if (sse) {
1685 dasm_put(Dst, 10244); 1699 dasm_put(Dst, 10402);
1686 } else { 1700 } else {
1687 dasm_put(Dst, 10259); 1701 dasm_put(Dst, 10417);
1688 } 1702 }
1689 break; 1703 break;
1690 case 1: 1704 case 1:
1691 dasm_put(Dst, 10094, LJ_TISNUM); 1705 dasm_put(Dst, 10252, LJ_TISNUM);
1692 if (sse) { 1706 if (sse) {
1693 dasm_put(Dst, 10268); 1707 dasm_put(Dst, 10426);
1694 } else { 1708 } else {
1695 dasm_put(Dst, 10283); 1709 dasm_put(Dst, 10441);
1696 } 1710 }
1697 break; 1711 break;
1698 default: 1712 default:
1699 dasm_put(Dst, 10130, LJ_TISNUM, LJ_TISNUM); 1713 dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM);
1700 if (sse) { 1714 if (sse) {
1701 dasm_put(Dst, 10292); 1715 dasm_put(Dst, 10450);
1702 } else { 1716 } else {
1703 dasm_put(Dst, 10306); 1717 dasm_put(Dst, 10464);
1704 } 1718 }
1705 break; 1719 break;
1706 } 1720 }
1707 if (sse) { 1721 if (sse) {
1708 dasm_put(Dst, 9932); 1722 dasm_put(Dst, 10090);
1709 } else { 1723 } else {
1710 dasm_put(Dst, 9944); 1724 dasm_put(Dst, 10102);
1711 } 1725 }
1712 dasm_put(Dst, 9512); 1726 dasm_put(Dst, 9670);
1713 break; 1727 break;
1714 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 1728 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1715 dasm_put(Dst, 10050); 1729 dasm_put(Dst, 10208);
1716 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1730 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1717 switch (vk) { 1731 switch (vk) {
1718 case 0: 1732 case 0:
1719 dasm_put(Dst, 10058, LJ_TISNUM); 1733 dasm_put(Dst, 10216, LJ_TISNUM);
1720 if (sse) { 1734 if (sse) {
1721 dasm_put(Dst, 10314); 1735 dasm_put(Dst, 10472);
1722 } else { 1736 } else {
1723 dasm_put(Dst, 10329); 1737 dasm_put(Dst, 10487);
1724 } 1738 }
1725 break; 1739 break;
1726 case 1: 1740 case 1:
1727 dasm_put(Dst, 10094, LJ_TISNUM); 1741 dasm_put(Dst, 10252, LJ_TISNUM);
1728 if (sse) { 1742 if (sse) {
1729 dasm_put(Dst, 10338); 1743 dasm_put(Dst, 10496);
1730 } else { 1744 } else {
1731 dasm_put(Dst, 10353); 1745 dasm_put(Dst, 10511);
1732 } 1746 }
1733 break; 1747 break;
1734 default: 1748 default:
1735 dasm_put(Dst, 10130, LJ_TISNUM, LJ_TISNUM); 1749 dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM);
1736 if (sse) { 1750 if (sse) {
1737 dasm_put(Dst, 10362); 1751 dasm_put(Dst, 10520);
1738 } else { 1752 } else {
1739 dasm_put(Dst, 10376); 1753 dasm_put(Dst, 10534);
1740 } 1754 }
1741 break; 1755 break;
1742 } 1756 }
1743 if (sse) { 1757 if (sse) {
1744 dasm_put(Dst, 9932); 1758 dasm_put(Dst, 10090);
1745 } else { 1759 } else {
1746 dasm_put(Dst, 9944); 1760 dasm_put(Dst, 10102);
1747 } 1761 }
1748 dasm_put(Dst, 9512); 1762 dasm_put(Dst, 9670);
1749 break; 1763 break;
1750 case BC_MODVN: 1764 case BC_MODVN:
1751 dasm_put(Dst, 10050); 1765 dasm_put(Dst, 10208);
1752 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1766 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1753 switch (vk) { 1767 switch (vk) {
1754 case 0: 1768 case 0:
1755 dasm_put(Dst, 10058, LJ_TISNUM); 1769 dasm_put(Dst, 10216, LJ_TISNUM);
1756 if (sse) { 1770 if (sse) {
1757 dasm_put(Dst, 10384); 1771 dasm_put(Dst, 10542);
1758 } else { 1772 } else {
1759 dasm_put(Dst, 10399); 1773 dasm_put(Dst, 10557);
1760 } 1774 }
1761 break; 1775 break;
1762 case 1: 1776 case 1:
1763 dasm_put(Dst, 10094, LJ_TISNUM); 1777 dasm_put(Dst, 10252, LJ_TISNUM);
1764 if (sse) { 1778 if (sse) {
1765 dasm_put(Dst, 10408); 1779 dasm_put(Dst, 10566);
1766 } else { 1780 } else {
1767 dasm_put(Dst, 10423); 1781 dasm_put(Dst, 10581);
1768 } 1782 }
1769 break; 1783 break;
1770 default: 1784 default:
1771 dasm_put(Dst, 10130, LJ_TISNUM, LJ_TISNUM); 1785 dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM);
1772 if (sse) { 1786 if (sse) {
1773 dasm_put(Dst, 10432); 1787 dasm_put(Dst, 10590);
1774 } else { 1788 } else {
1775 dasm_put(Dst, 10446); 1789 dasm_put(Dst, 10604);
1776 } 1790 }
1777 break; 1791 break;
1778 } 1792 }
1779 dasm_put(Dst, 10454); 1793 dasm_put(Dst, 10612);
1780 if (sse) { 1794 if (sse) {
1781 dasm_put(Dst, 9932); 1795 dasm_put(Dst, 10090);
1782 } else { 1796 } else {
1783 dasm_put(Dst, 9944); 1797 dasm_put(Dst, 10102);
1784 } 1798 }
1785 dasm_put(Dst, 9512); 1799 dasm_put(Dst, 9670);
1786 break; 1800 break;
1787 case BC_MODNV: case BC_MODVV: 1801 case BC_MODNV: case BC_MODVV:
1788 dasm_put(Dst, 10050); 1802 dasm_put(Dst, 10208);
1789 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1803 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1790 switch (vk) { 1804 switch (vk) {
1791 case 0: 1805 case 0:
1792 dasm_put(Dst, 10058, LJ_TISNUM); 1806 dasm_put(Dst, 10216, LJ_TISNUM);
1793 if (sse) { 1807 if (sse) {
1794 dasm_put(Dst, 10384); 1808 dasm_put(Dst, 10542);
1795 } else { 1809 } else {
1796 dasm_put(Dst, 10399); 1810 dasm_put(Dst, 10557);
1797 } 1811 }
1798 break; 1812 break;
1799 case 1: 1813 case 1:
1800 dasm_put(Dst, 10094, LJ_TISNUM); 1814 dasm_put(Dst, 10252, LJ_TISNUM);
1801 if (sse) { 1815 if (sse) {
1802 dasm_put(Dst, 10408); 1816 dasm_put(Dst, 10566);
1803 } else { 1817 } else {
1804 dasm_put(Dst, 10423); 1818 dasm_put(Dst, 10581);
1805 } 1819 }
1806 break; 1820 break;
1807 default: 1821 default:
1808 dasm_put(Dst, 10130, LJ_TISNUM, LJ_TISNUM); 1822 dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM);
1809 if (sse) { 1823 if (sse) {
1810 dasm_put(Dst, 10432); 1824 dasm_put(Dst, 10590);
1811 } else { 1825 } else {
1812 dasm_put(Dst, 10446); 1826 dasm_put(Dst, 10604);
1813 } 1827 }
1814 break; 1828 break;
1815 } 1829 }
1816 dasm_put(Dst, 10460); 1830 dasm_put(Dst, 10618);
1817 break; 1831 break;
1818 case BC_POW: 1832 case BC_POW:
1819 dasm_put(Dst, 10050); 1833 dasm_put(Dst, 10208);
1820 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1834 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1821 switch (vk) { 1835 switch (vk) {
1822 case 0: 1836 case 0:
1823 dasm_put(Dst, 10058, LJ_TISNUM); 1837 dasm_put(Dst, 10216, LJ_TISNUM);
1824 if (sse) { 1838 if (sse) {
1825 dasm_put(Dst, 10384); 1839 dasm_put(Dst, 10542);
1826 } else { 1840 } else {
1827 dasm_put(Dst, 10399); 1841 dasm_put(Dst, 10557);
1828 } 1842 }
1829 break; 1843 break;
1830 case 1: 1844 case 1:
1831 dasm_put(Dst, 10094, LJ_TISNUM); 1845 dasm_put(Dst, 10252, LJ_TISNUM);
1832 if (sse) { 1846 if (sse) {
1833 dasm_put(Dst, 10408); 1847 dasm_put(Dst, 10566);
1834 } else { 1848 } else {
1835 dasm_put(Dst, 10423); 1849 dasm_put(Dst, 10581);
1836 } 1850 }
1837 break; 1851 break;
1838 default: 1852 default:
1839 dasm_put(Dst, 10130, LJ_TISNUM, LJ_TISNUM); 1853 dasm_put(Dst, 10288, LJ_TISNUM, LJ_TISNUM);
1840 if (sse) { 1854 if (sse) {
1841 dasm_put(Dst, 10432); 1855 dasm_put(Dst, 10590);
1842 } else { 1856 } else {
1843 dasm_put(Dst, 10446); 1857 dasm_put(Dst, 10604);
1844 } 1858 }
1845 break; 1859 break;
1846 } 1860 }
1847 dasm_put(Dst, 10465); 1861 dasm_put(Dst, 10623);
1848 if (sse) { 1862 if (sse) {
1849 dasm_put(Dst, 9932); 1863 dasm_put(Dst, 10090);
1850 } else { 1864 } else {
1851 dasm_put(Dst, 9944); 1865 dasm_put(Dst, 10102);
1852 } 1866 }
1853 dasm_put(Dst, 9512); 1867 dasm_put(Dst, 9670);
1854 break; 1868 break;
1855 1869
1856 case BC_CAT: 1870 case BC_CAT:
1857 dasm_put(Dst, 10469, Dt1(->base), Dt1(->base)); 1871 dasm_put(Dst, 10627, Dt1(->base), Dt1(->base));
1858 break; 1872 break;
1859 1873
1860 /* -- Constant ops ------------------------------------------------------ */ 1874 /* -- Constant ops ------------------------------------------------------ */
1861 1875
1862 case BC_KSTR: 1876 case BC_KSTR:
1863 dasm_put(Dst, 10553, LJ_TSTR); 1877 dasm_put(Dst, 10711, LJ_TSTR);
1864 break; 1878 break;
1865 case BC_KCDATA: 1879 case BC_KCDATA:
1866#if LJ_HASFFI 1880#if LJ_HASFFI
1867 dasm_put(Dst, 10553, LJ_TCDATA); 1881 dasm_put(Dst, 10711, LJ_TCDATA);
1868#endif 1882#endif
1869 break; 1883 break;
1870 case BC_KSHORT: 1884 case BC_KSHORT:
1871 if (sse) { 1885 if (sse) {
1872 dasm_put(Dst, 10590); 1886 dasm_put(Dst, 10748);
1873 } else { 1887 } else {
1874 dasm_put(Dst, 10605); 1888 dasm_put(Dst, 10763);
1875 } 1889 }
1876 dasm_put(Dst, 9512); 1890 dasm_put(Dst, 9670);
1877 break; 1891 break;
1878 case BC_KNUM: 1892 case BC_KNUM:
1879 if (sse) { 1893 if (sse) {
1880 dasm_put(Dst, 10613); 1894 dasm_put(Dst, 10771);
1881 } else { 1895 } else {
1882 dasm_put(Dst, 10627); 1896 dasm_put(Dst, 10785);
1883 } 1897 }
1884 dasm_put(Dst, 9512); 1898 dasm_put(Dst, 9670);
1885 break; 1899 break;
1886 case BC_KPRI: 1900 case BC_KPRI:
1887 dasm_put(Dst, 10635); 1901 dasm_put(Dst, 10793);
1888 break; 1902 break;
1889 case BC_KNIL: 1903 case BC_KNIL:
1890 dasm_put(Dst, 10664, LJ_TNIL); 1904 dasm_put(Dst, 10822, LJ_TNIL);
1891 break; 1905 break;
1892 1906
1893 /* -- Upvalue and function ops ------------------------------------------ */ 1907 /* -- Upvalue and function ops ------------------------------------------ */
1894 1908
1895 case BC_UGET: 1909 case BC_UGET:
1896 dasm_put(Dst, 10712, offsetof(GCfuncL, uvptr), DtA(->v)); 1910 dasm_put(Dst, 10870, offsetof(GCfuncL, uvptr), DtA(->v));
1897 break; 1911 break;
1898 case BC_USETV: 1912 case BC_USETV:
1899#define TV2MARKOFS \ 1913#define TV2MARKOFS \
1900 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 1914 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
1901 dasm_put(Dst, 10753, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 1915 dasm_put(Dst, 10911, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
1902 dasm_put(Dst, 10849); 1916 dasm_put(Dst, 11007);
1903 break; 1917 break;
1904#undef TV2MARKOFS 1918#undef TV2MARKOFS
1905 case BC_USETS: 1919 case BC_USETS:
1906 dasm_put(Dst, 10861, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 1920 dasm_put(Dst, 11019, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
1907 break; 1921 break;
1908 case BC_USETN: 1922 case BC_USETN:
1909 dasm_put(Dst, 10957); 1923 dasm_put(Dst, 11115);
1910 if (sse) { 1924 if (sse) {
1911 dasm_put(Dst, 10962); 1925 dasm_put(Dst, 11120);
1912 } else { 1926 } else {
1913 dasm_put(Dst, 9754); 1927 dasm_put(Dst, 9912);
1914 } 1928 }
1915 dasm_put(Dst, 10970, offsetof(GCfuncL, uvptr), DtA(->v)); 1929 dasm_put(Dst, 11128, offsetof(GCfuncL, uvptr), DtA(->v));
1916 if (sse) { 1930 if (sse) {
1917 dasm_put(Dst, 10979); 1931 dasm_put(Dst, 11137);
1918 } else { 1932 } else {
1919 dasm_put(Dst, 10985); 1933 dasm_put(Dst, 11143);
1920 } 1934 }
1921 dasm_put(Dst, 9512); 1935 dasm_put(Dst, 9670);
1922 break; 1936 break;
1923 case BC_USETP: 1937 case BC_USETP:
1924 dasm_put(Dst, 10988, offsetof(GCfuncL, uvptr), DtA(->v)); 1938 dasm_put(Dst, 11146, offsetof(GCfuncL, uvptr), DtA(->v));
1925 break; 1939 break;
1926 case BC_UCLO: 1940 case BC_UCLO:
1927 dasm_put(Dst, 11028, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 1941 dasm_put(Dst, 11186, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
1928 break; 1942 break;
1929 1943
1930 case BC_FNEW: 1944 case BC_FNEW:
1931 dasm_put(Dst, 11084, Dt1(->base), Dt1(->base), LJ_TFUNC); 1945 dasm_put(Dst, 11242, Dt1(->base), Dt1(->base), LJ_TFUNC);
1932 break; 1946 break;
1933 1947
1934 /* -- Table ops --------------------------------------------------------- */ 1948 /* -- Table ops --------------------------------------------------------- */
1935 1949
1936 case BC_TNEW: 1950 case BC_TNEW:
1937 dasm_put(Dst, 11151, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 1951 dasm_put(Dst, 11309, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
1938 break; 1952 break;
1939 case BC_TDUP: 1953 case BC_TDUP:
1940 dasm_put(Dst, 11275, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 1954 dasm_put(Dst, 11433, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
1941 break; 1955 break;
1942 1956
1943 case BC_GGET: 1957 case BC_GGET:
1944 dasm_put(Dst, 11374, Dt7(->env)); 1958 dasm_put(Dst, 11532, Dt7(->env));
1945 break; 1959 break;
1946 case BC_GSET: 1960 case BC_GSET:
1947 dasm_put(Dst, 11394, Dt7(->env)); 1961 dasm_put(Dst, 11552, Dt7(->env));
1948 break; 1962 break;
1949 1963
1950 case BC_TGETV: 1964 case BC_TGETV:
1951 dasm_put(Dst, 11414, LJ_TTAB, LJ_TISNUM); 1965 dasm_put(Dst, 11572, LJ_TTAB, LJ_TISNUM);
1952 if (sse) { 1966 if (sse) {
1953 dasm_put(Dst, 11447); 1967 dasm_put(Dst, 11605);
1954 } else { 1968 } else {
1955 } 1969 }
1956 dasm_put(Dst, 11468, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1970 dasm_put(Dst, 11626, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1957 dasm_put(Dst, 11553, LJ_TNIL, LJ_TSTR); 1971 dasm_put(Dst, 11711, LJ_TNIL, LJ_TSTR);
1958 break; 1972 break;
1959 case BC_TGETS: 1973 case BC_TGETS:
1960 dasm_put(Dst, 11582, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 1974 dasm_put(Dst, 11740, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1961 dasm_put(Dst, 11667, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1975 dasm_put(Dst, 11825, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1962 break; 1976 break;
1963 case BC_TGETB: 1977 case BC_TGETB:
1964 dasm_put(Dst, 11739, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1978 dasm_put(Dst, 11897, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1965 dasm_put(Dst, 11835, LJ_TNIL); 1979 dasm_put(Dst, 11993, LJ_TNIL);
1966 break; 1980 break;
1967 1981
1968 case BC_TSETV: 1982 case BC_TSETV:
1969 dasm_put(Dst, 11852, LJ_TTAB, LJ_TISNUM); 1983 dasm_put(Dst, 12010, LJ_TTAB, LJ_TISNUM);
1970 if (sse) { 1984 if (sse) {
1971 dasm_put(Dst, 11447); 1985 dasm_put(Dst, 11605);
1972 } else { 1986 } else {
1973 } 1987 }
1974 dasm_put(Dst, 11885, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 1988 dasm_put(Dst, 12043, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
1975 dasm_put(Dst, 11965, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1989 dasm_put(Dst, 12123, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1976 break; 1990 break;
1977 case BC_TSETS: 1991 case BC_TSETS:
1978 dasm_put(Dst, 12029, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 1992 dasm_put(Dst, 12187, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1979 dasm_put(Dst, 12106, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 1993 dasm_put(Dst, 12264, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
1980 dasm_put(Dst, 12193, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1994 dasm_put(Dst, 12351, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1981 break; 1995 break;
1982 case BC_TSETB: 1996 case BC_TSETB:
1983 dasm_put(Dst, 12285, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 1997 dasm_put(Dst, 12443, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
1984 dasm_put(Dst, 12380, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1998 dasm_put(Dst, 12538, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1985 break; 1999 break;
1986 2000
1987 case BC_TSETM: 2001 case BC_TSETM:
1988 dasm_put(Dst, 12428, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); 2002 dasm_put(Dst, 12586, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
1989 dasm_put(Dst, 12578, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2003 dasm_put(Dst, 12736, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1990 break; 2004 break;
1991 2005
1992 /* -- Calls and vararg handling ----------------------------------------- */ 2006 /* -- Calls and vararg handling ----------------------------------------- */
1993 2007
1994 case BC_CALL: case BC_CALLM: 2008 case BC_CALL: case BC_CALLM:
1995 dasm_put(Dst, 10054); 2009 dasm_put(Dst, 10212);
1996 if (op == BC_CALLM) { 2010 if (op == BC_CALLM) {
1997 dasm_put(Dst, 12598); 2011 dasm_put(Dst, 12756);
1998 } 2012 }
1999 dasm_put(Dst, 12603, LJ_TFUNC, Dt7(->pc)); 2013 dasm_put(Dst, 12761, LJ_TFUNC, Dt7(->pc));
2000 break; 2014 break;
2001 2015
2002 case BC_CALLMT: 2016 case BC_CALLMT:
2003 dasm_put(Dst, 12598); 2017 dasm_put(Dst, 12756);
2004 break; 2018 break;
2005 case BC_CALLT: 2019 case BC_CALLT:
2006 dasm_put(Dst, 12646, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); 2020 dasm_put(Dst, 12804, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
2007 dasm_put(Dst, 12764, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); 2021 dasm_put(Dst, 12922, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
2008 break; 2022 break;
2009 2023
2010 case BC_ITERC: 2024 case BC_ITERC:
2011 dasm_put(Dst, 12838, LJ_TFUNC, 2+1, Dt7(->pc)); 2025 dasm_put(Dst, 12996, LJ_TFUNC, 2+1, Dt7(->pc));
2012 break; 2026 break;
2013 2027
2014 case BC_ITERN: 2028 case BC_ITERN:
2015#if LJ_HASJIT 2029#if LJ_HASJIT
2016#endif 2030#endif
2017 dasm_put(Dst, 12910, Dt6(->asize), Dt6(->array), LJ_TNIL); 2031 dasm_put(Dst, 13068, Dt6(->asize), Dt6(->array), LJ_TNIL);
2018 if (sse) { 2032 if (sse) {
2019 dasm_put(Dst, 12962); 2033 dasm_put(Dst, 13120);
2020 } else { 2034 } else {
2021 dasm_put(Dst, 12968); 2035 dasm_put(Dst, 13126);
2022 } 2036 }
2023 dasm_put(Dst, 12974); 2037 dasm_put(Dst, 13132);
2024 if (sse) { 2038 if (sse) {
2025 dasm_put(Dst, 9932); 2039 dasm_put(Dst, 10090);
2026 } else { 2040 } else {
2027 dasm_put(Dst, 9944); 2041 dasm_put(Dst, 10102);
2028 } 2042 }
2029 dasm_put(Dst, 12987, -BCBIAS_J*4); 2043 dasm_put(Dst, 13145, -BCBIAS_J*4);
2030 if (!sse) { 2044 if (!sse) {
2031 dasm_put(Dst, 13041); 2045 dasm_put(Dst, 13199);
2032 } 2046 }
2033 dasm_put(Dst, 13047, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val)); 2047 dasm_put(Dst, 13205, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
2034 break; 2048 break;
2035 2049
2036 case BC_ISNEXT: 2050 case BC_ISNEXT:
2037 dasm_put(Dst, 13126, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); 2051 dasm_put(Dst, 13284, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
2038 break; 2052 break;
2039 2053
2040 case BC_VARG: 2054 case BC_VARG:
2041 dasm_put(Dst, 13227, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); 2055 dasm_put(Dst, 13385, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
2042 dasm_put(Dst, 13394, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2056 dasm_put(Dst, 13552, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2043 break; 2057 break;
2044 2058
2045 /* -- Returns ----------------------------------------------------------- */ 2059 /* -- Returns ----------------------------------------------------------- */
2046 2060
2047 case BC_RETM: 2061 case BC_RETM:
2048 dasm_put(Dst, 12598); 2062 dasm_put(Dst, 12756);
2049 break; 2063 break;
2050 2064
2051 case BC_RET: case BC_RET0: case BC_RET1: 2065 case BC_RET: case BC_RET0: case BC_RET1:
2052 if (op != BC_RET0) { 2066 if (op != BC_RET0) {
2053 dasm_put(Dst, 13464); 2067 dasm_put(Dst, 13622);
2054 } 2068 }
2055 dasm_put(Dst, 13468, FRAME_TYPE); 2069 dasm_put(Dst, 13626, FRAME_TYPE);
2056 switch (op) { 2070 switch (op) {
2057 case BC_RET: 2071 case BC_RET:
2058 dasm_put(Dst, 13487); 2072 dasm_put(Dst, 13645);
2059 break; 2073 break;
2060 case BC_RET1: 2074 case BC_RET1:
2061 dasm_put(Dst, 13541); 2075 dasm_put(Dst, 13699);
2062 /* fallthrough */ 2076 /* fallthrough */
2063 case BC_RET0: 2077 case BC_RET0:
2064 dasm_put(Dst, 13551); 2078 dasm_put(Dst, 13709);
2065 default: 2079 default:
2066 break; 2080 break;
2067 } 2081 }
2068 dasm_put(Dst, 13562, Dt7(->pc), PC2PROTO(k)); 2082 dasm_put(Dst, 13720, Dt7(->pc), PC2PROTO(k));
2069 if (op == BC_RET) { 2083 if (op == BC_RET) {
2070 dasm_put(Dst, 13610, LJ_TNIL); 2084 dasm_put(Dst, 13768, LJ_TNIL);
2071 } else { 2085 } else {
2072 dasm_put(Dst, 13621, LJ_TNIL); 2086 dasm_put(Dst, 13779, LJ_TNIL);
2073 } 2087 }
2074 dasm_put(Dst, 13628, -FRAME_VARG, FRAME_TYPEP); 2088 dasm_put(Dst, 13786, -FRAME_VARG, FRAME_TYPEP);
2075 if (op != BC_RET0) { 2089 if (op != BC_RET0) {
2076 dasm_put(Dst, 13652); 2090 dasm_put(Dst, 13810);
2077 } 2091 }
2078 dasm_put(Dst, 4546); 2092 dasm_put(Dst, 4546);
2079 break; 2093 break;
@@ -2083,7 +2097,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2083 2097
2084 case BC_FORL: 2098 case BC_FORL:
2085#if LJ_HASJIT 2099#if LJ_HASJIT
2086 dasm_put(Dst, 13656, HOTCOUNT_PCMASK, GG_DISP2HOT); 2100 dasm_put(Dst, 13814, HOTCOUNT_PCMASK, GG_DISP2HOT);
2087#endif 2101#endif
2088 break; 2102 break;
2089 2103
@@ -2095,57 +2109,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2095 case BC_FORI: 2109 case BC_FORI:
2096 case BC_IFORL: 2110 case BC_IFORL:
2097 vk = (op == BC_IFORL || op == BC_JFORL); 2111 vk = (op == BC_IFORL || op == BC_JFORL);
2098 dasm_put(Dst, 13677); 2112 dasm_put(Dst, 13835);
2099 if (!vk) { 2113 if (!vk) {
2100 dasm_put(Dst, 13681, LJ_TISNUM, LJ_TISNUM); 2114 dasm_put(Dst, 13839, LJ_TISNUM, LJ_TISNUM);
2101 } 2115 }
2102 dasm_put(Dst, 13700); 2116 dasm_put(Dst, 13858);
2103 if (!vk) { 2117 if (!vk) {
2104 dasm_put(Dst, 13704, LJ_TISNUM); 2118 dasm_put(Dst, 13862, LJ_TISNUM);
2105 } 2119 }
2106 if (sse) { 2120 if (sse) {
2107 dasm_put(Dst, 13713); 2121 dasm_put(Dst, 13871);
2108 if (vk) { 2122 if (vk) {
2109 dasm_put(Dst, 13725); 2123 dasm_put(Dst, 13883);
2110 } else { 2124 } else {
2111 dasm_put(Dst, 13744); 2125 dasm_put(Dst, 13902);
2112 } 2126 }
2113 dasm_put(Dst, 13749); 2127 dasm_put(Dst, 13907);
2114 } else { 2128 } else {
2115 dasm_put(Dst, 13762); 2129 dasm_put(Dst, 13920);
2116 if (vk) { 2130 if (vk) {
2117 dasm_put(Dst, 13768); 2131 dasm_put(Dst, 13926);
2118 } else { 2132 } else {
2119 dasm_put(Dst, 13784); 2133 dasm_put(Dst, 13942);
2120 } 2134 }
2121 dasm_put(Dst, 13792); 2135 dasm_put(Dst, 13950);
2122 if (cmov) { 2136 if (cmov) {
2123 dasm_put(Dst, 9475); 2137 dasm_put(Dst, 9633);
2124 } else { 2138 } else {
2125 dasm_put(Dst, 9481); 2139 dasm_put(Dst, 9639);
2126 } 2140 }
2127 if (!cmov) { 2141 if (!cmov) {
2128 dasm_put(Dst, 13797); 2142 dasm_put(Dst, 13955);
2129 } 2143 }
2130 } 2144 }
2131 if (op == BC_FORI) { 2145 if (op == BC_FORI) {
2132 dasm_put(Dst, 13803, -BCBIAS_J*4); 2146 dasm_put(Dst, 13961, -BCBIAS_J*4);
2133 } else if (op == BC_JFORI) { 2147 } else if (op == BC_JFORI) {
2134 dasm_put(Dst, 13813, -BCBIAS_J*4, BC_JLOOP); 2148 dasm_put(Dst, 13971, -BCBIAS_J*4, BC_JLOOP);
2135 } else if (op == BC_IFORL) { 2149 } else if (op == BC_IFORL) {
2136 dasm_put(Dst, 13827, -BCBIAS_J*4); 2150 dasm_put(Dst, 13985, -BCBIAS_J*4);
2137 } else { 2151 } else {
2138 dasm_put(Dst, 13823, BC_JLOOP); 2152 dasm_put(Dst, 13981, BC_JLOOP);
2139 } 2153 }
2140 dasm_put(Dst, 9510); 2154 dasm_put(Dst, 9668);
2141 if (sse) { 2155 if (sse) {
2142 dasm_put(Dst, 13837); 2156 dasm_put(Dst, 13995);
2143 } 2157 }
2144 break; 2158 break;
2145 2159
2146 case BC_ITERL: 2160 case BC_ITERL:
2147#if LJ_HASJIT 2161#if LJ_HASJIT
2148 dasm_put(Dst, 13656, HOTCOUNT_PCMASK, GG_DISP2HOT); 2162 dasm_put(Dst, 13814, HOTCOUNT_PCMASK, GG_DISP2HOT);
2149#endif 2163#endif
2150 break; 2164 break;
2151 2165
@@ -2154,33 +2168,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2154 break; 2168 break;
2155#endif 2169#endif
2156 case BC_IITERL: 2170 case BC_IITERL:
2157 dasm_put(Dst, 13848, LJ_TNIL); 2171 dasm_put(Dst, 14006, LJ_TNIL);
2158 if (op == BC_JITERL) { 2172 if (op == BC_JITERL) {
2159 dasm_put(Dst, 13863, BC_JLOOP); 2173 dasm_put(Dst, 14021, BC_JLOOP);
2160 } else { 2174 } else {
2161 dasm_put(Dst, 13877, -BCBIAS_J*4); 2175 dasm_put(Dst, 14035, -BCBIAS_J*4);
2162 } 2176 }
2163 dasm_put(Dst, 9814); 2177 dasm_put(Dst, 9972);
2164 break; 2178 break;
2165 2179
2166 case BC_LOOP: 2180 case BC_LOOP:
2167#if LJ_HASJIT 2181#if LJ_HASJIT
2168 dasm_put(Dst, 13656, HOTCOUNT_PCMASK, GG_DISP2HOT); 2182 dasm_put(Dst, 13814, HOTCOUNT_PCMASK, GG_DISP2HOT);
2169#endif 2183#endif
2170 break; 2184 break;
2171 2185
2172 case BC_ILOOP: 2186 case BC_ILOOP:
2173 dasm_put(Dst, 9512); 2187 dasm_put(Dst, 9670);
2174 break; 2188 break;
2175 2189
2176 case BC_JLOOP: 2190 case BC_JLOOP:
2177#if LJ_HASJIT 2191#if LJ_HASJIT
2178 dasm_put(Dst, 13893, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 2192 dasm_put(Dst, 14051, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
2179#endif 2193#endif
2180 break; 2194 break;
2181 2195
2182 case BC_JMP: 2196 case BC_JMP:
2183 dasm_put(Dst, 13934, -BCBIAS_J*4); 2197 dasm_put(Dst, 14092, -BCBIAS_J*4);
2184 break; 2198 break;
2185 2199
2186 /* -- Function headers -------------------------------------------------- */ 2200 /* -- Function headers -------------------------------------------------- */
@@ -2194,7 +2208,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2194 2208
2195 case BC_FUNCF: 2209 case BC_FUNCF:
2196#if LJ_HASJIT 2210#if LJ_HASJIT
2197 dasm_put(Dst, 13960, HOTCOUNT_PCMASK, GG_DISP2HOT); 2211 dasm_put(Dst, 14118, HOTCOUNT_PCMASK, GG_DISP2HOT);
2198#endif 2212#endif
2199 case BC_FUNCV: /* NYI: compiled vararg functions. */ 2213 case BC_FUNCV: /* NYI: compiled vararg functions. */
2200 break; 2214 break;
@@ -2204,13 +2218,13 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2204 break; 2218 break;
2205#endif 2219#endif
2206 case BC_IFUNCF: 2220 case BC_IFUNCF:
2207 dasm_put(Dst, 13981, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); 2221 dasm_put(Dst, 14139, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2208 if (op == BC_JFUNCF) { 2222 if (op == BC_JFUNCF) {
2209 dasm_put(Dst, 14012, BC_JLOOP); 2223 dasm_put(Dst, 14170, BC_JLOOP);
2210 } else { 2224 } else {
2211 dasm_put(Dst, 9512); 2225 dasm_put(Dst, 9670);
2212 } 2226 }
2213 dasm_put(Dst, 14021, LJ_TNIL); 2227 dasm_put(Dst, 14179, LJ_TNIL);
2214 break; 2228 break;
2215 2229
2216 case BC_JFUNCV: 2230 case BC_JFUNCV:
@@ -2221,30 +2235,30 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2221 break; /* NYI: compiled vararg functions. */ 2235 break; /* NYI: compiled vararg functions. */
2222 2236
2223 case BC_IFUNCV: 2237 case BC_IFUNCV:
2224 dasm_put(Dst, 14043, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); 2238 dasm_put(Dst, 14201, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2225 if (op == BC_JFUNCV) { 2239 if (op == BC_JFUNCV) {
2226 dasm_put(Dst, 14012, BC_JLOOP); 2240 dasm_put(Dst, 14170, BC_JLOOP);
2227 } else { 2241 } else {
2228 dasm_put(Dst, 14140, -4+PC2PROTO(k)); 2242 dasm_put(Dst, 14298, -4+PC2PROTO(k));
2229 } 2243 }
2230 dasm_put(Dst, 14165, LJ_TNIL); 2244 dasm_put(Dst, 14323, LJ_TNIL);
2231 break; 2245 break;
2232 2246
2233 case BC_FUNCC: 2247 case BC_FUNCC:
2234 case BC_FUNCCW: 2248 case BC_FUNCCW:
2235 dasm_put(Dst, 14187, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); 2249 dasm_put(Dst, 14345, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2236 if (op == BC_FUNCC) { 2250 if (op == BC_FUNCC) {
2237 dasm_put(Dst, 14217); 2251 dasm_put(Dst, 14375);
2238 } else { 2252 } else {
2239 dasm_put(Dst, 14221); 2253 dasm_put(Dst, 14379);
2240 } 2254 }
2241 dasm_put(Dst, 14229, DISPATCH_GL(vmstate), ~LJ_VMST_C); 2255 dasm_put(Dst, 14387, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2242 if (op == BC_FUNCC) { 2256 if (op == BC_FUNCC) {
2243 dasm_put(Dst, 14239); 2257 dasm_put(Dst, 14397);
2244 } else { 2258 } else {
2245 dasm_put(Dst, 14244, DISPATCH_GL(wrapf)); 2259 dasm_put(Dst, 14402, DISPATCH_GL(wrapf));
2246 } 2260 }
2247 dasm_put(Dst, 14250, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 2261 dasm_put(Dst, 14408, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2248 break; 2262 break;
2249 2263
2250 /* ---------------------------------------------------------------------- */ 2264 /* ---------------------------------------------------------------------- */
@@ -2272,7 +2286,7 @@ static int build_backend(BuildCtx *ctx)
2272 2286
2273 build_subroutines(ctx, cmov, sse); 2287 build_subroutines(ctx, cmov, sse);
2274 2288
2275 dasm_put(Dst, 14276); 2289 dasm_put(Dst, 14434);
2276 for (op = 0; op < BC__MAX; op++) 2290 for (op = 0; op < BC__MAX; op++)
2277 build_ins(ctx, (BCOp)op, op, cmov, sse); 2291 build_ins(ctx, (BCOp)op, op, cmov, sse);
2278 2292
diff --git a/src/buildvm_x64win.h b/src/buildvm_x64win.h
index 94dbe50f..84b94f1a 100644
--- a/src/buildvm_x64win.h
+++ b/src/buildvm_x64win.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 char build_actionlist[14223] = { 15static const unsigned char build_actionlist[14340] = {
16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,72, 16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,72,
17 141,76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68, 17 141,76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,
18 36,84,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237, 18 36,84,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237,
@@ -471,239 +471,245 @@ static const unsigned char build_actionlist[14223] = {
471 221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,248,217,201,248, 471 221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,248,217,201,248,
472 2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,244,248,217,201, 472 2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,244,248,217,201,
473 248,2,221,216,195,255,248,155,137,200,86,72,137,214,83,15,162,137,6,137,94, 473 248,2,221,216,195,255,248,155,137,200,86,72,137,214,83,15,162,137,6,137,94,
474 4,137,78,8,137,86,12,91,94,195,255,129,124,253,202,4,239,15,135,244,41,129, 474 4,137,78,8,137,86,12,91,94,195,248,156,255,85,72,137,229,83,72,137,203,139,
475 124,253,194,4,239,15,135,244,41,255,252,242,15,16,4,194,131,198,4,102,15, 475 131,233,72,41,196,15,182,139,233,131,252,233,1,15,136,244,248,248,1,72,139,
476 46,4,202,255,221,4,202,221,4,194,131,198,4,255,223,252,233,221,216,255,218, 476 132,253,203,233,72,137,132,253,204,233,131,252,233,1,15,137,244,1,248,2,15,
477 252,233,223,224,158,255,15,134,244,248,255,15,131,244,248,255,248,1,15,183, 477 182,131,233,72,139,139,233,72,139,147,233,76,139,131,233,76,139,139,233,133,
478 70,252,254,141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198, 478 192,15,132,244,251,15,40,131,233,15,40,139,233,15,40,147,233,255,15,40,155,
479 4,193,232,16,252,255,36,252,235,255,139,108,194,4,131,198,4,129,252,253,239, 479 233,248,5,252,255,147,233,72,137,131,233,15,41,131,233,72,139,93,252,248,
480 15,135,244,251,129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,4,194, 480 201,195,255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,
481 102,15,46,4,202,255,221,4,202,221,4,194,255,15,138,244,248,15,133,244,248, 481 135,244,41,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,
482 255,15,138,244,248,15,132,244,247,255,248,1,15,183,70,252,254,141,180,253, 482 221,4,194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,
483 134,233,248,2,255,248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,248, 483 15,134,244,248,255,15,131,244,248,255,248,1,15,183,70,252,254,141,180,253,
484 5,57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4, 484 134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
485 194,57,193,15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252, 485 252,235,255,139,108,194,4,131,198,4,129,252,253,239,15,135,244,251,129,124,
486 237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189, 486 253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,
487 1,0,0,0,255,252,233,244,45,255,72,252,247,208,131,198,4,129,124,253,202,4, 487 221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,
488 239,15,133,244,248,139,12,202,59,12,135,255,131,198,4,129,124,253,202,4,239, 488 15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,255,
489 15,135,244,248,255,252,242,15,16,4,199,102,15,46,4,202,255,221,4,202,221, 489 248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,248,5,57,108,202,4,
490 4,199,255,72,252,247,208,131,198,4,57,68,202,4,255,139,108,194,4,131,198, 490 15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,
491 4,129,252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4, 491 132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,
492 139,44,194,137,44,202,255,15,183,70,252,254,141,180,253,134,233,248,1,139, 492 2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,
493 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,139, 493 233,244,45,255,72,252,247,208,131,198,4,129,124,253,202,4,239,15,133,244,
494 44,194,72,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 494 248,139,12,202,59,12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,248,
495 255,36,252,235,255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202, 495 255,252,242,15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,72,252,
496 4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255, 496 247,208,131,198,4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,239,
497 129,124,253,194,4,239,15,135,244,48,255,252,242,15,16,4,194,72,184,237,237, 497 255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,
498 102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221, 498 202,255,15,183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,
499 28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252, 499 232,131,198,4,193,232,16,252,255,36,252,235,255,72,139,44,194,72,137,44,202,
500 242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28, 500 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,49,
501 202,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 501 252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,
502 248,2,129,124,253,194,4,239,15,133,244,50,139,12,194,137,213,232,251,1,18, 502 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,129,124,253,194,4,
503 255,252,242,15,42,192,137,252,234,255,15,182,78,252,253,252,233,244,1,255, 503 239,15,135,244,48,255,252,242,15,16,4,194,72,184,237,237,102,72,15,110,200,
504 15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,46,255, 504 15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,
505 252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255, 505 253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,15,42,128,233,
506 129,124,253,252,234,4,239,15,135,244,47,255,252,242,15,16,4,199,252,242,15, 506 248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,
507 88,4,252,234,255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15, 507 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129,124,253,
508 135,244,49,129,124,253,194,4,239,15,135,244,49,255,252,242,15,16,4,252,234, 508 194,4,239,15,133,244,50,139,12,194,137,213,232,251,1,18,255,252,242,15,42,
509 252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252,234, 509 192,137,252,234,255,15,182,78,252,253,252,233,244,1,255,15,182,252,236,15,
510 252,242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,199, 510 182,192,255,129,124,253,252,234,4,239,15,135,244,46,255,252,242,15,16,4,252,
511 252,242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,4, 511 234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,253,252,234,
512 252,234,252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,252,242,15,16, 512 4,239,15,135,244,47,255,252,242,15,16,4,199,252,242,15,88,4,252,234,255,221,
513 4,252,234,252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15, 513 4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,135,244,49,129,124,253,
514 16,4,199,252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242, 514 194,4,239,15,135,244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,
515 15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252, 515 221,4,252,234,220,4,194,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255,
516 242,15,16,4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255, 516 221,4,252,234,220,36,199,255,252,242,15,16,4,199,252,242,15,92,4,252,234,
517 252,242,15,16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234, 517 255,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,
518 255,252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52, 518 194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,15,89,
519 194,255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,221, 519 4,199,255,221,4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,
520 4,199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,221, 520 4,252,234,255,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,
521 4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252, 521 15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,
522 234,221,4,194,255,248,156,232,244,148,255,252,233,244,156,255,232,244,107, 522 242,15,94,4,199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252,
523 255,15,182,252,236,15,182,192,139,76,36,96,137,145,233,141,20,194,65,137, 523 242,15,94,4,252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252,
524 192,65,41,232,248,33,137,205,137,116,36,100,232,251,1,25,139,149,233,133, 524 234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,
525 192,15,133,244,42,15,182,110,252,255,15,182,78,252,253,72,139,4,252,234,72, 525 252,234,252,242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16,
526 137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, 526 4,199,252,242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15,
527 235,255,72,252,247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,182, 527 16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,157,
528 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,15,191,192,252, 528 232,244,148,255,252,233,244,157,255,232,244,107,255,15,182,252,236,15,182,
529 242,15,42,192,252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242, 529 192,139,76,36,96,137,145,233,141,20,194,65,137,192,65,41,232,248,33,137,205,
530 15,16,4,199,252,242,15,17,4,202,255,221,4,199,221,28,202,255,72,252,247,208, 530 137,116,36,100,232,251,1,25,139,149,233,133,192,15,133,244,42,15,182,110,
531 137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 531 252,255,15,182,78,252,253,72,139,4,252,234,72,137,4,202,139,6,15,182,204,
532 252,235,255,141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137, 532 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139,
533 41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193, 533 4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,
534 232,16,252,255,36,252,235,255,139,106,252,248,139,172,253,133,233,139,173, 534 232,16,252,255,36,252,235,255,15,191,192,252,242,15,42,192,252,242,15,17,
535 233,72,139,69,0,72,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232, 535 4,202,255,223,70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,
536 16,252,255,36,252,235,255,139,106,252,248,139,172,253,141,233,128,189,233, 536 4,202,255,221,4,199,221,28,202,255,72,252,247,208,137,68,202,4,139,6,15,182,
537 0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252, 537 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,141,76,202,12,
538 246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198, 538 141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,
539 4,193,232,16,252,255,36,252,235,248,2,129,232,239,129,252,248,239,15,134, 539 244,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
540 244,1,252,246,129,233,235,15,132,244,1,135,213,141,139,233,255,232,251,1, 540 255,139,106,252,248,139,172,253,133,233,139,173,233,72,139,69,0,72,137,4,
541 26,137,252,234,252,233,244,1,255,72,252,247,208,139,106,252,248,139,172,253, 541 202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,
542 141,233,139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15, 542 139,106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,
543 133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 543 139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,
544 36,252,235,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244, 544 244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
545 1,137,213,137,194,141,139,233,232,251,1,26,137,252,234,252,233,244,1,255, 545 252,235,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233,235,
546 139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,233, 546 15,132,244,1,135,213,141,139,233,255,232,251,1,26,137,252,234,252,233,244,
547 255,252,242,15,17,1,255,221,25,255,72,252,247,208,139,106,252,248,139,172, 547 1,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,12,135,139,133,
548 253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193, 548 233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6,15,
549 232,16,252,255,36,252,235,255,141,180,253,134,233,139,108,36,96,131,189,233, 549 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,252,246,
550 0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,27,139,149, 550 129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,
551 233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, 551 233,232,251,1,26,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,
552 235,255,72,252,247,208,139,108,36,96,137,149,233,68,139,66,252,248,139,20, 552 15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,
553 135,137,252,233,137,116,36,100,232,251,1,28,139,149,233,15,182,78,252,253, 553 25,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,
554 65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
555 255,141,180,253,134,233,139,108,36,96,131,189,233,0,15,132,244,247,137,149,
556 233,141,20,202,137,252,233,232,251,1,27,139,149,233,248,1,139,6,15,182,204,
557 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139,
558 108,36,96,137,149,233,68,139,66,252,248,139,20,135,137,252,233,137,116,36,
559 100,232,251,1,28,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,
560 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,
561 108,36,96,137,149,233,139,139,233,59,139,233,137,116,36,100,15,131,244,251,
562 248,1,65,137,192,37,252,255,7,0,0,65,193,232,11,61,252,255,7,0,0,15,132,244,
563 249,248,2,137,252,233,137,194,232,251,1,29,139,149,233,15,182,78,252,253,
554 137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232, 564 137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,
555 16,252,255,36,252,235,255,139,108,36,96,137,149,233,139,139,233,59,139,233, 565 16,252,255,36,252,235,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232,
556 137,116,36,100,15,131,244,251,248,1,65,137,192,37,252,255,7,0,0,65,193,232, 566 251,1,30,15,183,70,252,254,252,233,244,1,255,72,252,247,208,139,108,36,96,
557 11,61,252,255,7,0,0,15,132,244,249,248,2,137,252,233,137,194,232,251,1,29, 567 139,139,233,137,116,36,100,59,139,233,137,149,233,15,131,244,249,248,2,139,
558 139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204, 568 20,135,137,252,233,232,251,1,31,139,149,233,15,182,78,252,253,137,4,202,199,
559 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,184,1,8,0,0,252, 569 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
560 233,244,2,248,5,137,252,233,232,251,1,30,15,183,70,252,254,252,233,244,1, 570 252,235,248,3,137,252,233,232,251,1,30,15,183,70,252,254,72,252,247,208,252,
561 255,72,252,247,208,139,108,36,96,139,139,233,137,116,36,100,59,139,233,137, 571 233,244,2,255,72,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,
562 149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,31,139,149, 572 244,158,255,72,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,
563 233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182, 573 244,159,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,
564 232,131,198,4,193,232,16,252,255,36,252,235,248,3,137,252,233,232,251,1,30, 574 36,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,252,242,15,16,
565 15,183,70,252,254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106, 575 4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255,15,133,244,36,
566 252,248,139,173,233,139,4,135,252,233,244,157,255,72,252,247,208,139,106, 576 59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4,239,15,132,244,
567 252,248,139,173,233,139,4,135,252,233,244,158,255,15,182,252,236,15,182,192, 577 248,72,139,40,72,137,44,202,248,1,139,6,15,182,204,15,182,232,131,198,4,193,
568 129,124,253,252,234,4,239,15,133,244,36,139,44,252,234,129,124,253,194,4, 578 232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244,249,139,141,233,
569 239,15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42, 579 252,246,129,233,235,15,132,244,36,15,182,78,252,253,248,3,255,199,68,202,
570 200,102,15,46,193,255,15,133,244,36,59,133,233,15,131,244,36,193,224,3,3, 580 4,237,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,36,139,4,194,252,
571 133,233,129,120,253,4,239,15,132,244,248,72,139,40,72,137,44,202,248,1,139, 581 233,244,158,255,15,182,252,236,15,182,192,72,252,247,208,139,4,135,129,124,
572 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,131, 582 253,252,234,4,239,15,133,244,34,139,44,252,234,248,158,139,141,233,35,136,
573 189,233,0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244,36,15, 583 233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,244,250,57,129,233,
574 182,78,252,253,248,3,255,199,68,202,4,237,252,233,244,1,248,5,129,124,253, 584 15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,70,252,253,72,139,
575 194,4,239,15,133,244,36,139,4,194,252,233,244,157,255,15,182,252,236,15,182, 585 41,72,137,44,194,248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232,
576 192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,34,139, 586 16,252,255,36,252,235,248,3,15,182,70,252,253,199,68,194,4,237,252,233,244,
577 44,252,234,248,157,139,141,233,35,136,233,105,201,239,3,141,233,248,1,129, 587 2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141,233,133,201,15,132,
578 185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,4,239,15, 588 244,3,252,246,129,233,235,15,133,244,3,252,233,244,34,255,15,182,252,236,
579 132,244,251,15,182,70,252,253,72,139,41,72,137,44,194,248,2,255,139,6,15, 589 15,182,192,129,124,253,252,234,4,239,15,133,244,35,139,44,252,234,59,133,
580 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,15,182,70, 590 233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,72,
581 252,253,199,68,194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244, 591 139,40,72,137,44,202,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,
582 1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3, 592 16,252,255,36,252,235,248,2,131,189,233,0,15,132,244,249,139,141,233,252,
583 252,233,244,34,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15, 593 246,129,233,235,15,132,244,35,255,15,182,78,252,253,248,3,199,68,202,4,237,
584 133,244,35,139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,233,129, 594 252,233,244,1,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,
585 120,253,4,239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,6,15,182,204, 595 133,244,39,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,
586 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,131,189,233,0,15, 596 244,39,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,
587 132,244,249,139,141,233,252,246,129,233,235,15,132,244,35,255,15,182,78,252, 597 132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72,139,44,202,
588 253,248,3,199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,192,129, 598 72,137,40,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
589 124,253,252,234,4,239,15,133,244,39,139,44,252,234,129,124,253,194,4,239, 599 235,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,
590 15,135,244,251,255,15,133,244,39,59,133,233,15,131,244,39,193,224,3,3,133, 600 15,132,244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,
591 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244, 601 15,133,244,39,139,4,194,252,233,244,159,248,7,128,165,233,235,139,139,233,
592 253,248,2,72,139,44,202,72,137,40,139,6,15,182,204,15,182,232,131,198,4,193, 602 137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,
593 232,16,252,255,36,252,235,248,3,131,189,233,0,15,132,244,1,139,141,233,255, 603 15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,
594 252,246,129,233,235,15,132,244,39,15,182,78,252,253,252,233,244,1,248,5,129, 604 37,139,44,252,234,248,159,139,141,233,35,136,233,105,201,239,198,133,233,
595 124,253,194,4,239,15,133,244,39,139,4,194,252,233,244,158,248,7,128,165,233, 605 0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,
596 235,139,139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255, 606 129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,
597 15,182,252,236,15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,4, 607 253,248,3,15,182,70,252,253,72,139,44,194,72,137,41,139,6,15,182,204,15,182,
598 239,15,133,244,37,139,44,252,234,248,158,139,141,233,35,136,233,105,201,239, 608 232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,189,233,0,15,132,244,
599 198,133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15, 609 2,137,76,36,80,139,141,233,252,246,129,233,235,15,132,244,37,139,76,36,80,
600 133,244,251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235, 610 252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,
601 15,133,244,253,248,3,15,182,70,252,253,72,139,44,194,72,137,41,139,6,15,182, 611 201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,68,36,80,199,
602 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,189,233, 612 68,36,84,237,137,108,36,32,139,76,36,96,137,145,233,76,141,68,36,80,137,252,
603 0,15,132,244,2,137,76,36,80,139,141,233,252,246,129,233,235,15,132,244,37, 613 234,137,205,137,116,36,100,232,251,1,32,139,149,233,139,108,36,32,137,193,
604 139,76,36,80,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139, 614 252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233,137,133,233,252,
605 141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137, 615 233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,
606 68,36,80,199,68,36,84,237,137,108,36,32,139,76,36,96,137,145,233,76,141,68, 616 244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,
607 36,80,137,252,234,137,205,137,116,36,100,232,251,1,32,139,149,233,139,108, 617 253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72,
608 36,32,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233, 618 139,12,202,72,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
609 137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234, 619 255,36,252,235,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,
610 4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133, 620 233,235,15,132,244,38,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,
611 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244, 621 139,139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,
612 253,248,2,72,139,12,202,72,137,8,139,6,15,182,204,15,182,232,131,198,4,193, 622 124,36,80,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233,235,
613 232,16,252,255,36,252,235,248,3,131,189,233,0,15,132,244,1,255,139,141,233, 623 15,133,244,253,248,2,139,68,36,84,131,232,1,15,132,244,250,1,252,248,59,133,
614 252,246,129,233,235,15,132,244,38,15,182,78,252,253,252,233,244,1,248,7,128, 624 233,15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,72,139,41,131,193,
615 165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,252,253,252,233, 625 8,72,137,47,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139,6,15,
616 244,2,255,137,124,36,80,139,60,199,248,1,141,12,202,139,105,252,248,252,246, 626 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139,76,36,
617 133,233,235,15,133,244,253,248,2,139,68,36,84,131,232,1,15,132,244,250,1, 627 96,137,145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251,1,33,
618 252,248,59,133,233,15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,72, 628 139,149,233,15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235,139,
619 139,41,131,193,8,72,137,47,131,199,8,131,232,1,15,133,244,3,248,4,139,124, 629 131,233,137,171,233,137,133,233,252,233,244,2,255,3,68,36,84,255,129,124,
620 36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 630 253,202,4,239,139,44,202,15,133,244,51,141,84,202,8,137,114,252,252,139,181,
621 248,5,139,76,36,96,137,145,233,137,252,234,65,137,192,137,205,137,116,36, 631 233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,141,
622 100,232,251,1,33,139,149,233,15,182,78,252,253,252,233,244,1,248,7,255,128, 632 76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,28,248,
623 165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,2,255,3,68,36, 633 52,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,
624 84,255,129,124,253,202,4,239,139,44,202,15,133,244,51,141,84,202,8,137,114, 634 68,36,84,131,232,1,15,132,244,249,248,2,72,139,41,131,193,8,72,137,47,131,
625 252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36, 635 199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,84,128,189,233,
626 252,235,255,141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239, 636 1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198,
627 15,133,244,28,248,52,139,114,252,252,252,247,198,237,15,133,244,253,248,1, 637 4,252,255,36,252,235,248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,
628 137,106,252,248,137,68,36,84,131,232,1,15,132,244,249,248,2,72,139,41,131, 638 253,72,252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252,
629 193,8,72,137,47,131,199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139, 639 233,244,4,248,7,129,252,238,239,252,247,198,237,15,133,244,254,41,252,242,
630 68,36,84,128,189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182,252, 640 137,215,139,114,252,252,252,233,244,1,248,8,129,198,239,252,233,244,1,255,
631 233,15,182,205,131,198,4,252,255,36,252,235,248,5,255,252,247,198,237,15, 641 141,76,202,8,72,139,105,232,72,139,65,252,240,72,137,41,72,137,65,8,139,105,
632 133,244,4,15,182,78,252,253,72,252,247,209,141,12,202,139,121,252,248,139, 642 224,139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,237,15,
633 191,233,139,191,233,252,233,244,4,248,7,129,252,238,239,252,247,198,237,15, 643 133,244,28,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,
634 133,244,254,41,252,242,137,215,139,114,252,252,252,233,244,1,248,8,129,198, 644 205,131,198,4,252,255,36,252,235,255,137,124,36,80,137,92,36,84,139,108,202,
635 239,252,233,244,1,255,141,76,202,8,72,139,105,232,72,139,65,252,240,72,137, 645 252,240,139,68,202,252,248,139,157,233,131,198,4,139,189,233,248,1,57,216,
636 41,72,137,65,8,139,105,224,139,65,228,137,105,252,248,137,65,252,252,129, 646 15,131,244,251,129,124,253,199,4,239,15,132,244,250,255,252,242,15,42,192,
637 252,248,239,184,237,15,133,244,28,137,202,137,114,252,252,139,181,233,139, 647 255,219,68,202,252,248,255,72,139,44,199,72,137,108,202,8,131,192,1,255,137,
638 14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,137,124,36, 648 68,202,252,248,248,2,15,183,70,252,254,141,180,253,134,233,248,3,139,92,36,
639 80,137,92,36,84,139,108,202,252,240,139,68,202,252,248,139,157,233,131,198, 649 84,139,124,36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
640 4,139,189,233,248,1,57,216,15,131,244,251,129,124,253,199,4,239,15,132,244, 650 36,252,235,248,4,131,192,1,255,137,68,202,252,248,255,252,233,244,1,248,5,
641 250,255,252,242,15,42,192,255,219,68,202,252,248,255,72,139,44,199,72,137, 651 41,216,248,6,59,133,233,15,135,244,3,105,252,248,239,3,189,233,129,191,233,
642 108,202,8,131,192,1,255,137,68,202,252,248,248,2,15,183,70,252,254,141,180, 652 239,15,132,244,253,141,92,24,1,72,139,175,233,72,139,135,233,72,137,44,202,
643 253,134,233,248,3,139,92,36,84,139,124,36,80,139,6,15,182,204,15,182,232, 653 72,137,68,202,8,137,92,202,252,248,252,233,244,2,248,7,131,192,1,252,233,
644 131,198,4,193,232,16,252,255,36,252,235,248,4,131,192,1,255,137,68,202,252, 654 244,6,255,129,124,253,202,252,236,239,15,133,244,251,139,108,202,232,129,
645 248,255,252,233,244,1,248,5,41,216,248,6,59,133,233,15,135,244,3,105,252, 655 124,253,202,252,244,239,15,133,244,251,129,124,253,202,252,252,239,15,133,
646 248,239,3,189,233,129,191,233,239,15,132,244,253,141,92,24,1,72,139,175,233, 656 244,251,128,189,233,235,15,133,244,251,141,180,253,134,233,199,68,202,252,
647 72,139,135,233,72,137,44,202,72,137,68,202,8,137,92,202,252,248,252,233,244, 657 248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
648 2,248,7,131,192,1,252,233,244,6,255,129,124,253,202,252,236,239,15,133,244, 658 36,252,235,248,5,198,70,252,252,235,141,180,253,134,233,198,6,235,252,233,
649 251,139,108,202,232,129,124,253,202,252,244,239,15,133,244,251,129,124,253, 659 244,1,255,15,182,252,236,15,182,192,137,124,36,80,141,188,253,194,233,141,
650 202,252,252,239,15,133,244,251,128,189,233,235,15,133,244,251,141,180,253, 660 12,202,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233,252,248,
651 134,233,199,68,202,252,248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131, 661 57,215,15,131,244,248,248,1,72,139,71,252,248,131,199,8,72,137,1,131,193,
652 198,4,193,232,16,252,255,36,252,235,248,5,198,70,252,252,235,141,180,253, 662 8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,2,199,65,4,237,131,193,
653 134,233,198,6,235,252,233,244,1,255,15,182,252,236,15,182,192,137,124,36, 663 8,57,252,233,15,130,244,2,248,3,139,124,36,80,139,6,15,182,204,15,182,232,
654 80,141,188,253,194,233,141,12,202,43,122,252,252,133,252,237,15,132,244,251, 664 131,198,4,193,232,16,252,255,36,252,235,248,5,199,68,36,84,1,0,0,0,137,208,
655 141,108,252,233,252,248,57,215,15,131,244,248,248,1,72,139,71,252,248,131, 665 41,252,248,15,134,244,3,137,197,193,252,237,3,131,197,1,137,108,36,84,139,
656 199,8,72,137,1,131,193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248, 666 108,36,96,1,200,59,133,233,15,135,244,253,248,6,255,72,139,71,252,248,131,
657 2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124,36,80,139, 667 199,8,72,137,1,131,193,8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,
658 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,199, 668 233,137,141,233,137,116,36,100,41,215,139,84,36,84,131,252,234,1,137,252,
659 68,36,84,1,0,0,0,137,208,41,252,248,15,134,244,3,137,197,193,252,237,3,131, 669 233,232,251,1,0,139,149,233,139,141,233,1,215,252,233,244,6,255,193,225,3,
660 197,1,137,108,36,84,139,108,36,96,1,200,59,133,233,15,135,244,253,248,6,255, 670 255,248,1,139,114,252,252,137,68,36,84,252,247,198,237,15,133,244,253,255,
661 72,139,71,252,248,131,199,8,72,137,1,131,193,8,57,215,15,130,244,6,252,233, 671 248,13,137,215,131,232,1,15,132,244,249,248,2,72,139,44,15,72,137,111,252,
662 244,3,248,7,137,149,233,137,141,233,137,116,36,100,41,215,139,84,36,84,131, 672 248,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,84,15,182,110,252,255,
663 252,234,1,137,252,233,232,251,1,0,139,149,233,139,141,233,1,215,252,233,244, 673 248,5,57,197,15,135,244,252,255,72,139,44,10,72,137,106,252,248,255,248,5,
664 6,255,193,225,3,255,248,1,139,114,252,252,137,68,36,84,252,247,198,237,15, 674 56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252,247,209,141,20,
665 133,244,253,255,248,13,137,215,131,232,1,15,132,244,249,248,2,72,139,44,15, 675 202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131,
666 72,137,111,252,248,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,84,15, 676 198,4,193,232,16,252,255,36,252,235,248,6,255,199,71,252,252,237,131,199,
667 182,110,252,255,248,5,57,197,15,135,244,252,255,72,139,44,10,72,137,106,252, 677 8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,141,174,233,
668 248,255,248,5,56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252,247, 678 252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,255,137,252,245,209,
669 209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,15, 679 252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,140,255,141,12,202,
670 182,232,131,198,4,193,232,16,252,255,36,252,235,248,6,255,199,71,252,252, 680 255,129,121,253,4,239,15,135,244,53,129,121,253,12,239,15,135,244,53,255,
671 237,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248, 681 139,105,20,255,129,252,253,239,15,135,244,53,255,252,242,15,16,1,252,242,
672 7,141,174,233,252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,255, 682 15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,
673 137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,140, 683 249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,
674 255,141,12,202,255,129,121,253,4,239,15,135,244,53,129,121,253,12,239,15, 684 65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,
675 135,244,53,255,139,105,20,255,129,252,253,239,15,135,244,53,255,252,242,15, 685 221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,252,254,255,15,131,
676 16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237, 686 244,248,141,180,253,134,233,255,141,180,253,134,233,15,183,70,252,254,15,
677 15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65, 687 131,245,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15,46,193,252,
678 24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244, 688 233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244,247,255,137,
679 247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,252,254, 689 105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253,134,233,139,
680 255,15,131,244,248,141,180,253,134,233,255,141,180,253,134,233,15,183,70, 690 1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,72,139,128,233,
681 252,254,15,131,245,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15, 691 139,108,36,96,137,147,233,137,171,233,76,137,100,36,80,76,137,108,36,32,76,
682 46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244, 692 137,116,36,24,76,137,124,36,16,72,137,225,72,129,252,236,239,102,15,127,49,
683 247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253, 693 102,15,127,185,233,102,68,15,127,129,233,102,68,15,127,137,233,102,68,15,
684 134,233,139,1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,72, 694 127,145,233,102,68,15,127,153,233,102,68,15,127,161,233,102,68,15,127,169,
685 139,128,233,139,108,36,96,137,147,233,137,171,233,76,137,100,36,80,76,137, 695 233,102,68,15,127,177,233,102,68,15,127,185,233,252,255,224,255,141,180,253,
686 108,36,32,76,137,116,36,24,76,137,124,36,16,72,137,225,72,129,252,236,239, 696 134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
687 102,15,127,49,102,15,127,185,233,102,68,15,127,129,233,102,68,15,127,137, 697 255,137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,
688 233,102,68,15,127,145,233,102,68,15,127,153,233,102,68,15,127,161,233,102, 698 142,255,139,190,233,139,108,36,96,141,12,202,59,141,233,15,135,244,23,15,
689 68,15,127,169,233,102,68,15,127,177,233,102,68,15,127,185,233,252,255,224, 699 182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233,245,
690 255,141,180,253,134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 700 255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244,
691 252,255,36,252,235,255,137,252,245,209,252,237,129,229,239,102,131,172,253, 701 2,255,141,44,197,237,141,4,194,139,122,252,248,137,104,252,252,137,120,252,
692 43,233,1,15,132,244,142,255,139,190,233,139,108,36,96,141,12,202,59,141,233, 702 248,139,108,36,96,141,12,200,59,141,233,15,135,244,22,137,209,137,194,15,
693 15,135,244,23,15,182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252, 703 182,174,233,133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244,
694 254,252,233,245,255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134, 704 249,139,121,252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,252,
695 244,3,252,233,244,2,255,141,44,197,237,141,4,194,139,122,252,248,137,104, 705 252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,204,
696 252,252,137,120,252,248,139,108,36,96,141,12,200,59,141,233,15,135,244,22, 706 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,248,3,199,64,4,237,
697 137,209,137,194,15,182,174,233,133,252,237,15,132,244,248,248,1,131,193,8, 707 131,192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,72,
698 57,209,15,131,244,249,139,121,252,248,137,56,139,121,252,252,137,120,4,131, 708 139,189,233,139,108,36,96,141,68,194,252,248,137,149,233,141,136,233,59,141,
699 192,8,199,65,252,252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233, 709 233,137,133,233,255,137,252,233,255,72,137,252,250,137,252,233,255,15,135,
700 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,248, 710 244,21,199,131,233,237,255,252,255,215,255,252,255,147,233,255,199,131,233,
701 3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139, 711 237,139,149,233,141,12,194,252,247,217,3,141,233,139,114,252,252,252,233,
702 106,252,248,72,139,189,233,139,108,36,96,141,68,194,252,248,137,149,233,141, 712 244,12,255,254,0
703 136,233,59,141,233,137,133,233,255,137,252,233,255,72,137,252,250,137,252,
704 233,255,15,135,244,21,199,131,233,237,255,252,255,215,255,252,255,147,233,
705 255,199,131,233,237,139,149,233,141,12,194,252,247,217,3,141,233,139,114,
706 252,252,252,233,244,12,255,254,0
707}; 713};
708 714
709enum { 715enum {
@@ -853,6 +859,7 @@ enum {
853 GLOB_vm_foldfpm, 859 GLOB_vm_foldfpm,
854 GLOB_vm_foldarith, 860 GLOB_vm_foldarith,
855 GLOB_vm_cpuid, 861 GLOB_vm_cpuid,
862 GLOB_vm_ffi_call,
856 GLOB_BC_MODVN_Z, 863 GLOB_BC_MODVN_Z,
857 GLOB_BC_TGETS_Z, 864 GLOB_BC_TGETS_Z,
858 GLOB_BC_TSETS_Z, 865 GLOB_BC_TSETS_Z,
@@ -1005,6 +1012,7 @@ static const char *const globnames[] = {
1005 "vm_foldfpm", 1012 "vm_foldfpm",
1006 "vm_foldarith", 1013 "vm_foldarith",
1007 "vm_cpuid", 1014 "vm_cpuid",
1015 "vm_ffi_call@4",
1008 "BC_MODVN_Z", 1016 "BC_MODVN_Z",
1009 "BC_TGETS_Z", 1017 "BC_TGETS_Z",
1010 "BC_TSETS_Z", 1018 "BC_TSETS_Z",
@@ -1445,6 +1453,11 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1445 dasm_put(Dst, 8995); 1453 dasm_put(Dst, 8995);
1446 } 1454 }
1447 dasm_put(Dst, 9413); 1455 dasm_put(Dst, 9413);
1456#if LJ_HASFFI
1457#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
1458 dasm_put(Dst, 9441, DtE(->spadj), DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->fpr[0]), DtE(->fpr[1]), DtE(->fpr[2]));
1459 dasm_put(Dst, 9530, DtE(->fpr[3]), DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]));
1460#endif
1448} 1461}
1449 1462
1450/* Generate the code for a single instruction. */ 1463/* Generate the code for a single instruction. */
@@ -1460,20 +1473,20 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1460 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1473 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1461 1474
1462 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1475 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1463 dasm_put(Dst, 9439, LJ_TISNUM, LJ_TISNUM); 1476 dasm_put(Dst, 9556, LJ_TISNUM, LJ_TISNUM);
1464 if (sse) { 1477 if (sse) {
1465 dasm_put(Dst, 9460); 1478 dasm_put(Dst, 9577);
1466 } else { 1479 } else {
1467 dasm_put(Dst, 9475); 1480 dasm_put(Dst, 9592);
1468 if (cmov) { 1481 if (cmov) {
1469 dasm_put(Dst, 9485); 1482 dasm_put(Dst, 9602);
1470 } else { 1483 } else {
1471 dasm_put(Dst, 9491); 1484 dasm_put(Dst, 9608);
1472 } 1485 }
1473 } 1486 }
1474 switch (op) { 1487 switch (op) {
1475 case BC_ISLT: 1488 case BC_ISLT:
1476 dasm_put(Dst, 9498); 1489 dasm_put(Dst, 9615);
1477 break; 1490 break;
1478 case BC_ISGE: 1491 case BC_ISGE:
1479 dasm_put(Dst, 9293); 1492 dasm_put(Dst, 9293);
@@ -1482,599 +1495,599 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1482 dasm_put(Dst, 5854); 1495 dasm_put(Dst, 5854);
1483 break; 1496 break;
1484 case BC_ISGT: 1497 case BC_ISGT:
1485 dasm_put(Dst, 9503); 1498 dasm_put(Dst, 9620);
1486 break; 1499 break;
1487 default: break; /* Shut up GCC. */ 1500 default: break; /* Shut up GCC. */
1488 } 1501 }
1489 dasm_put(Dst, 9508, -BCBIAS_J*4); 1502 dasm_put(Dst, 9625, -BCBIAS_J*4);
1490 break; 1503 break;
1491 1504
1492 case BC_ISEQV: case BC_ISNEV: 1505 case BC_ISEQV: case BC_ISNEV:
1493 vk = op == BC_ISEQV; 1506 vk = op == BC_ISEQV;
1494 dasm_put(Dst, 9542, LJ_TISNUM, LJ_TISNUM); 1507 dasm_put(Dst, 9659, LJ_TISNUM, LJ_TISNUM);
1495 if (sse) { 1508 if (sse) {
1496 dasm_put(Dst, 9568); 1509 dasm_put(Dst, 9685);
1497 } else { 1510 } else {
1498 dasm_put(Dst, 9580); 1511 dasm_put(Dst, 9697);
1499 if (cmov) { 1512 if (cmov) {
1500 dasm_put(Dst, 9485); 1513 dasm_put(Dst, 9602);
1501 } else { 1514 } else {
1502 dasm_put(Dst, 9491); 1515 dasm_put(Dst, 9608);
1503 } 1516 }
1504 } 1517 }
1505 iseqne_fp: 1518 iseqne_fp:
1506 if (vk) { 1519 if (vk) {
1507 dasm_put(Dst, 9587); 1520 dasm_put(Dst, 9704);
1508 } else { 1521 } else {
1509 dasm_put(Dst, 9596); 1522 dasm_put(Dst, 9713);
1510 } 1523 }
1511 iseqne_end: 1524 iseqne_end:
1512 if (vk) { 1525 if (vk) {
1513 dasm_put(Dst, 9605, -BCBIAS_J*4); 1526 dasm_put(Dst, 9722, -BCBIAS_J*4);
1514 } else { 1527 } else {
1515 dasm_put(Dst, 9620, -BCBIAS_J*4); 1528 dasm_put(Dst, 9737, -BCBIAS_J*4);
1516 } 1529 }
1517 dasm_put(Dst, 9522); 1530 dasm_put(Dst, 9639);
1518 if (op == BC_ISEQV || op == BC_ISNEV) { 1531 if (op == BC_ISEQV || op == BC_ISNEV) {
1519 dasm_put(Dst, 9635, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1532 dasm_put(Dst, 9752, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1520 if (vk) { 1533 if (vk) {
1521 dasm_put(Dst, 9693); 1534 dasm_put(Dst, 9810);
1522 } else { 1535 } else {
1523 dasm_put(Dst, 9697); 1536 dasm_put(Dst, 9814);
1524 } 1537 }
1525 dasm_put(Dst, 9703); 1538 dasm_put(Dst, 9820);
1526 } 1539 }
1527 break; 1540 break;
1528 case BC_ISEQS: case BC_ISNES: 1541 case BC_ISEQS: case BC_ISNES:
1529 vk = op == BC_ISEQS; 1542 vk = op == BC_ISEQS;
1530 dasm_put(Dst, 9708, LJ_TSTR); 1543 dasm_put(Dst, 9825, LJ_TSTR);
1531 iseqne_test: 1544 iseqne_test:
1532 if (vk) { 1545 if (vk) {
1533 dasm_put(Dst, 9591); 1546 dasm_put(Dst, 9708);
1534 } else { 1547 } else {
1535 dasm_put(Dst, 2772); 1548 dasm_put(Dst, 2772);
1536 } 1549 }
1537 goto iseqne_end; 1550 goto iseqne_end;
1538 case BC_ISEQN: case BC_ISNEN: 1551 case BC_ISEQN: case BC_ISNEN:
1539 vk = op == BC_ISEQN; 1552 vk = op == BC_ISEQN;
1540 dasm_put(Dst, 9732, LJ_TISNUM); 1553 dasm_put(Dst, 9849, LJ_TISNUM);
1541 if (sse) { 1554 if (sse) {
1542 dasm_put(Dst, 9746); 1555 dasm_put(Dst, 9863);
1543 } else { 1556 } else {
1544 dasm_put(Dst, 9758); 1557 dasm_put(Dst, 9875);
1545 if (cmov) { 1558 if (cmov) {
1546 dasm_put(Dst, 9485); 1559 dasm_put(Dst, 9602);
1547 } else { 1560 } else {
1548 dasm_put(Dst, 9491); 1561 dasm_put(Dst, 9608);
1549 } 1562 }
1550 } 1563 }
1551 goto iseqne_fp; 1564 goto iseqne_fp;
1552 case BC_ISEQP: case BC_ISNEP: 1565 case BC_ISEQP: case BC_ISNEP:
1553 vk = op == BC_ISEQP; 1566 vk = op == BC_ISEQP;
1554 dasm_put(Dst, 9765); 1567 dasm_put(Dst, 9882);
1555 goto iseqne_test; 1568 goto iseqne_test;
1556 1569
1557 /* -- Unary test and copy ops ------------------------------------------- */ 1570 /* -- Unary test and copy ops ------------------------------------------- */
1558 1571
1559 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 1572 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1560 dasm_put(Dst, 9777, LJ_TISTRUECOND); 1573 dasm_put(Dst, 9894, LJ_TISTRUECOND);
1561 if (op == BC_IST || op == BC_ISTC) { 1574 if (op == BC_IST || op == BC_ISTC) {
1562 dasm_put(Dst, 9789); 1575 dasm_put(Dst, 9906);
1563 } else { 1576 } else {
1564 dasm_put(Dst, 9794); 1577 dasm_put(Dst, 9911);
1565 } 1578 }
1566 if (op == BC_ISTC || op == BC_ISFC) { 1579 if (op == BC_ISTC || op == BC_ISFC) {
1567 dasm_put(Dst, 9799); 1580 dasm_put(Dst, 9916);
1568 } 1581 }
1569 dasm_put(Dst, 9810, -BCBIAS_J*4); 1582 dasm_put(Dst, 9927, -BCBIAS_J*4);
1570 break; 1583 break;
1571 1584
1572 /* -- Unary ops --------------------------------------------------------- */ 1585 /* -- Unary ops --------------------------------------------------------- */
1573 1586
1574 case BC_MOV: 1587 case BC_MOV:
1575 dasm_put(Dst, 9842); 1588 dasm_put(Dst, 9959);
1576 break; 1589 break;
1577 case BC_NOT: 1590 case BC_NOT:
1578 dasm_put(Dst, 9870, LJ_TISTRUECOND, LJ_TTRUE); 1591 dasm_put(Dst, 9987, LJ_TISTRUECOND, LJ_TTRUE);
1579 break; 1592 break;
1580 case BC_UNM: 1593 case BC_UNM:
1581 dasm_put(Dst, 9906, LJ_TISNUM); 1594 dasm_put(Dst, 10023, LJ_TISNUM);
1582 if (sse) { 1595 if (sse) {
1583 dasm_put(Dst, 9917, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1596 dasm_put(Dst, 10034, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1584 } else { 1597 } else {
1585 dasm_put(Dst, 9942); 1598 dasm_put(Dst, 10059);
1586 } 1599 }
1587 dasm_put(Dst, 9522); 1600 dasm_put(Dst, 9639);
1588 break; 1601 break;
1589 case BC_LEN: 1602 case BC_LEN:
1590 dasm_put(Dst, 9951, LJ_TSTR); 1603 dasm_put(Dst, 10068, LJ_TSTR);
1591 if (sse) { 1604 if (sse) {
1592 dasm_put(Dst, 9965, Dt5(->len)); 1605 dasm_put(Dst, 10082, Dt5(->len));
1593 } else { 1606 } else {
1594 dasm_put(Dst, 9983, Dt5(->len)); 1607 dasm_put(Dst, 10100, Dt5(->len));
1595 } 1608 }
1596 dasm_put(Dst, 9992, LJ_TTAB); 1609 dasm_put(Dst, 10109, LJ_TTAB);
1597 if (sse) { 1610 if (sse) {
1598 dasm_put(Dst, 10033); 1611 dasm_put(Dst, 10150);
1599 } else { 1612 } else {
1600 } 1613 }
1601 dasm_put(Dst, 10042); 1614 dasm_put(Dst, 10159);
1602 break; 1615 break;
1603 1616
1604 /* -- Binary ops -------------------------------------------------------- */ 1617 /* -- Binary ops -------------------------------------------------------- */
1605 1618
1606 1619
1607 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 1620 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1608 dasm_put(Dst, 10052); 1621 dasm_put(Dst, 10169);
1609 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1622 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1610 switch (vk) { 1623 switch (vk) {
1611 case 0: 1624 case 0:
1612 dasm_put(Dst, 10060, LJ_TISNUM); 1625 dasm_put(Dst, 10177, LJ_TISNUM);
1613 if (sse) { 1626 if (sse) {
1614 dasm_put(Dst, 10072); 1627 dasm_put(Dst, 10189);
1615 } else { 1628 } else {
1616 dasm_put(Dst, 10086); 1629 dasm_put(Dst, 10203);
1617 } 1630 }
1618 break; 1631 break;
1619 case 1: 1632 case 1:
1620 dasm_put(Dst, 10094, LJ_TISNUM); 1633 dasm_put(Dst, 10211, LJ_TISNUM);
1621 if (sse) { 1634 if (sse) {
1622 dasm_put(Dst, 10106); 1635 dasm_put(Dst, 10223);
1623 } else { 1636 } else {
1624 dasm_put(Dst, 10120); 1637 dasm_put(Dst, 10237);
1625 } 1638 }
1626 break; 1639 break;
1627 default: 1640 default:
1628 dasm_put(Dst, 10128, LJ_TISNUM, LJ_TISNUM); 1641 dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM);
1629 if (sse) { 1642 if (sse) {
1630 dasm_put(Dst, 10150); 1643 dasm_put(Dst, 10267);
1631 } else { 1644 } else {
1632 dasm_put(Dst, 10164); 1645 dasm_put(Dst, 10281);
1633 } 1646 }
1634 break; 1647 break;
1635 } 1648 }
1636 if (sse) { 1649 if (sse) {
1637 dasm_put(Dst, 9935); 1650 dasm_put(Dst, 10052);
1638 } else { 1651 } else {
1639 dasm_put(Dst, 9947); 1652 dasm_put(Dst, 10064);
1640 } 1653 }
1641 dasm_put(Dst, 9522); 1654 dasm_put(Dst, 9639);
1642 break; 1655 break;
1643 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 1656 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1644 dasm_put(Dst, 10052); 1657 dasm_put(Dst, 10169);
1645 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1658 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1646 switch (vk) { 1659 switch (vk) {
1647 case 0: 1660 case 0:
1648 dasm_put(Dst, 10060, LJ_TISNUM); 1661 dasm_put(Dst, 10177, LJ_TISNUM);
1649 if (sse) { 1662 if (sse) {
1650 dasm_put(Dst, 10172); 1663 dasm_put(Dst, 10289);
1651 } else { 1664 } else {
1652 dasm_put(Dst, 10186); 1665 dasm_put(Dst, 10303);
1653 } 1666 }
1654 break; 1667 break;
1655 case 1: 1668 case 1:
1656 dasm_put(Dst, 10094, LJ_TISNUM); 1669 dasm_put(Dst, 10211, LJ_TISNUM);
1657 if (sse) { 1670 if (sse) {
1658 dasm_put(Dst, 10194); 1671 dasm_put(Dst, 10311);
1659 } else { 1672 } else {
1660 dasm_put(Dst, 10208); 1673 dasm_put(Dst, 10325);
1661 } 1674 }
1662 break; 1675 break;
1663 default: 1676 default:
1664 dasm_put(Dst, 10128, LJ_TISNUM, LJ_TISNUM); 1677 dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM);
1665 if (sse) { 1678 if (sse) {
1666 dasm_put(Dst, 10216); 1679 dasm_put(Dst, 10333);
1667 } else { 1680 } else {
1668 dasm_put(Dst, 10230); 1681 dasm_put(Dst, 10347);
1669 } 1682 }
1670 break; 1683 break;
1671 } 1684 }
1672 if (sse) { 1685 if (sse) {
1673 dasm_put(Dst, 9935); 1686 dasm_put(Dst, 10052);
1674 } else { 1687 } else {
1675 dasm_put(Dst, 9947); 1688 dasm_put(Dst, 10064);
1676 } 1689 }
1677 dasm_put(Dst, 9522); 1690 dasm_put(Dst, 9639);
1678 break; 1691 break;
1679 case BC_MULVN: case BC_MULNV: case BC_MULVV: 1692 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1680 dasm_put(Dst, 10052); 1693 dasm_put(Dst, 10169);
1681 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1694 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1682 switch (vk) { 1695 switch (vk) {
1683 case 0: 1696 case 0:
1684 dasm_put(Dst, 10060, LJ_TISNUM); 1697 dasm_put(Dst, 10177, LJ_TISNUM);
1685 if (sse) { 1698 if (sse) {
1686 dasm_put(Dst, 10238); 1699 dasm_put(Dst, 10355);
1687 } else { 1700 } else {
1688 dasm_put(Dst, 10252); 1701 dasm_put(Dst, 10369);
1689 } 1702 }
1690 break; 1703 break;
1691 case 1: 1704 case 1:
1692 dasm_put(Dst, 10094, LJ_TISNUM); 1705 dasm_put(Dst, 10211, LJ_TISNUM);
1693 if (sse) { 1706 if (sse) {
1694 dasm_put(Dst, 10260); 1707 dasm_put(Dst, 10377);
1695 } else { 1708 } else {
1696 dasm_put(Dst, 10274); 1709 dasm_put(Dst, 10391);
1697 } 1710 }
1698 break; 1711 break;
1699 default: 1712 default:
1700 dasm_put(Dst, 10128, LJ_TISNUM, LJ_TISNUM); 1713 dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM);
1701 if (sse) { 1714 if (sse) {
1702 dasm_put(Dst, 10282); 1715 dasm_put(Dst, 10399);
1703 } else { 1716 } else {
1704 dasm_put(Dst, 10296); 1717 dasm_put(Dst, 10413);
1705 } 1718 }
1706 break; 1719 break;
1707 } 1720 }
1708 if (sse) { 1721 if (sse) {
1709 dasm_put(Dst, 9935); 1722 dasm_put(Dst, 10052);
1710 } else { 1723 } else {
1711 dasm_put(Dst, 9947); 1724 dasm_put(Dst, 10064);
1712 } 1725 }
1713 dasm_put(Dst, 9522); 1726 dasm_put(Dst, 9639);
1714 break; 1727 break;
1715 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 1728 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1716 dasm_put(Dst, 10052); 1729 dasm_put(Dst, 10169);
1717 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1730 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1718 switch (vk) { 1731 switch (vk) {
1719 case 0: 1732 case 0:
1720 dasm_put(Dst, 10060, LJ_TISNUM); 1733 dasm_put(Dst, 10177, LJ_TISNUM);
1721 if (sse) { 1734 if (sse) {
1722 dasm_put(Dst, 10304); 1735 dasm_put(Dst, 10421);
1723 } else { 1736 } else {
1724 dasm_put(Dst, 10318); 1737 dasm_put(Dst, 10435);
1725 } 1738 }
1726 break; 1739 break;
1727 case 1: 1740 case 1:
1728 dasm_put(Dst, 10094, LJ_TISNUM); 1741 dasm_put(Dst, 10211, LJ_TISNUM);
1729 if (sse) { 1742 if (sse) {
1730 dasm_put(Dst, 10326); 1743 dasm_put(Dst, 10443);
1731 } else { 1744 } else {
1732 dasm_put(Dst, 10340); 1745 dasm_put(Dst, 10457);
1733 } 1746 }
1734 break; 1747 break;
1735 default: 1748 default:
1736 dasm_put(Dst, 10128, LJ_TISNUM, LJ_TISNUM); 1749 dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM);
1737 if (sse) { 1750 if (sse) {
1738 dasm_put(Dst, 10348); 1751 dasm_put(Dst, 10465);
1739 } else { 1752 } else {
1740 dasm_put(Dst, 10362); 1753 dasm_put(Dst, 10479);
1741 } 1754 }
1742 break; 1755 break;
1743 } 1756 }
1744 if (sse) { 1757 if (sse) {
1745 dasm_put(Dst, 9935); 1758 dasm_put(Dst, 10052);
1746 } else { 1759 } else {
1747 dasm_put(Dst, 9947); 1760 dasm_put(Dst, 10064);
1748 } 1761 }
1749 dasm_put(Dst, 9522); 1762 dasm_put(Dst, 9639);
1750 break; 1763 break;
1751 case BC_MODVN: 1764 case BC_MODVN:
1752 dasm_put(Dst, 10052); 1765 dasm_put(Dst, 10169);
1753 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1766 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1754 switch (vk) { 1767 switch (vk) {
1755 case 0: 1768 case 0:
1756 dasm_put(Dst, 10060, LJ_TISNUM); 1769 dasm_put(Dst, 10177, LJ_TISNUM);
1757 if (sse) { 1770 if (sse) {
1758 dasm_put(Dst, 10370); 1771 dasm_put(Dst, 10487);
1759 } else { 1772 } else {
1760 dasm_put(Dst, 10384); 1773 dasm_put(Dst, 10501);
1761 } 1774 }
1762 break; 1775 break;
1763 case 1: 1776 case 1:
1764 dasm_put(Dst, 10094, LJ_TISNUM); 1777 dasm_put(Dst, 10211, LJ_TISNUM);
1765 if (sse) { 1778 if (sse) {
1766 dasm_put(Dst, 10392); 1779 dasm_put(Dst, 10509);
1767 } else { 1780 } else {
1768 dasm_put(Dst, 10406); 1781 dasm_put(Dst, 10523);
1769 } 1782 }
1770 break; 1783 break;
1771 default: 1784 default:
1772 dasm_put(Dst, 10128, LJ_TISNUM, LJ_TISNUM); 1785 dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM);
1773 if (sse) { 1786 if (sse) {
1774 dasm_put(Dst, 10414); 1787 dasm_put(Dst, 10531);
1775 } else { 1788 } else {
1776 dasm_put(Dst, 10428); 1789 dasm_put(Dst, 10545);
1777 } 1790 }
1778 break; 1791 break;
1779 } 1792 }
1780 dasm_put(Dst, 10436); 1793 dasm_put(Dst, 10553);
1781 if (sse) { 1794 if (sse) {
1782 dasm_put(Dst, 9935); 1795 dasm_put(Dst, 10052);
1783 } else { 1796 } else {
1784 dasm_put(Dst, 9947); 1797 dasm_put(Dst, 10064);
1785 } 1798 }
1786 dasm_put(Dst, 9522); 1799 dasm_put(Dst, 9639);
1787 break; 1800 break;
1788 case BC_MODNV: case BC_MODVV: 1801 case BC_MODNV: case BC_MODVV:
1789 dasm_put(Dst, 10052); 1802 dasm_put(Dst, 10169);
1790 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1803 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1791 switch (vk) { 1804 switch (vk) {
1792 case 0: 1805 case 0:
1793 dasm_put(Dst, 10060, LJ_TISNUM); 1806 dasm_put(Dst, 10177, LJ_TISNUM);
1794 if (sse) { 1807 if (sse) {
1795 dasm_put(Dst, 10370); 1808 dasm_put(Dst, 10487);
1796 } else { 1809 } else {
1797 dasm_put(Dst, 10384); 1810 dasm_put(Dst, 10501);
1798 } 1811 }
1799 break; 1812 break;
1800 case 1: 1813 case 1:
1801 dasm_put(Dst, 10094, LJ_TISNUM); 1814 dasm_put(Dst, 10211, LJ_TISNUM);
1802 if (sse) { 1815 if (sse) {
1803 dasm_put(Dst, 10392); 1816 dasm_put(Dst, 10509);
1804 } else { 1817 } else {
1805 dasm_put(Dst, 10406); 1818 dasm_put(Dst, 10523);
1806 } 1819 }
1807 break; 1820 break;
1808 default: 1821 default:
1809 dasm_put(Dst, 10128, LJ_TISNUM, LJ_TISNUM); 1822 dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM);
1810 if (sse) { 1823 if (sse) {
1811 dasm_put(Dst, 10414); 1824 dasm_put(Dst, 10531);
1812 } else { 1825 } else {
1813 dasm_put(Dst, 10428); 1826 dasm_put(Dst, 10545);
1814 } 1827 }
1815 break; 1828 break;
1816 } 1829 }
1817 dasm_put(Dst, 10442); 1830 dasm_put(Dst, 10559);
1818 break; 1831 break;
1819 case BC_POW: 1832 case BC_POW:
1820 dasm_put(Dst, 10052); 1833 dasm_put(Dst, 10169);
1821 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1834 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1822 switch (vk) { 1835 switch (vk) {
1823 case 0: 1836 case 0:
1824 dasm_put(Dst, 10060, LJ_TISNUM); 1837 dasm_put(Dst, 10177, LJ_TISNUM);
1825 if (sse) { 1838 if (sse) {
1826 dasm_put(Dst, 10370); 1839 dasm_put(Dst, 10487);
1827 } else { 1840 } else {
1828 dasm_put(Dst, 10384); 1841 dasm_put(Dst, 10501);
1829 } 1842 }
1830 break; 1843 break;
1831 case 1: 1844 case 1:
1832 dasm_put(Dst, 10094, LJ_TISNUM); 1845 dasm_put(Dst, 10211, LJ_TISNUM);
1833 if (sse) { 1846 if (sse) {
1834 dasm_put(Dst, 10392); 1847 dasm_put(Dst, 10509);
1835 } else { 1848 } else {
1836 dasm_put(Dst, 10406); 1849 dasm_put(Dst, 10523);
1837 } 1850 }
1838 break; 1851 break;
1839 default: 1852 default:
1840 dasm_put(Dst, 10128, LJ_TISNUM, LJ_TISNUM); 1853 dasm_put(Dst, 10245, LJ_TISNUM, LJ_TISNUM);
1841 if (sse) { 1854 if (sse) {
1842 dasm_put(Dst, 10414); 1855 dasm_put(Dst, 10531);
1843 } else { 1856 } else {
1844 dasm_put(Dst, 10428); 1857 dasm_put(Dst, 10545);
1845 } 1858 }
1846 break; 1859 break;
1847 } 1860 }
1848 dasm_put(Dst, 10447); 1861 dasm_put(Dst, 10564);
1849 if (sse) { 1862 if (sse) {
1850 dasm_put(Dst, 9935); 1863 dasm_put(Dst, 10052);
1851 } else { 1864 } else {
1852 dasm_put(Dst, 9947); 1865 dasm_put(Dst, 10064);
1853 } 1866 }
1854 dasm_put(Dst, 9522); 1867 dasm_put(Dst, 9639);
1855 break; 1868 break;
1856 1869
1857 case BC_CAT: 1870 case BC_CAT:
1858 dasm_put(Dst, 10451, Dt1(->base), Dt1(->base)); 1871 dasm_put(Dst, 10568, Dt1(->base), Dt1(->base));
1859 break; 1872 break;
1860 1873
1861 /* -- Constant ops ------------------------------------------------------ */ 1874 /* -- Constant ops ------------------------------------------------------ */
1862 1875
1863 case BC_KSTR: 1876 case BC_KSTR:
1864 dasm_put(Dst, 10534, LJ_TSTR); 1877 dasm_put(Dst, 10651, LJ_TSTR);
1865 break; 1878 break;
1866 case BC_KCDATA: 1879 case BC_KCDATA:
1867#if LJ_HASFFI 1880#if LJ_HASFFI
1868 dasm_put(Dst, 10534, LJ_TCDATA); 1881 dasm_put(Dst, 10651, LJ_TCDATA);
1869#endif 1882#endif
1870 break; 1883 break;
1871 case BC_KSHORT: 1884 case BC_KSHORT:
1872 if (sse) { 1885 if (sse) {
1873 dasm_put(Dst, 10569); 1886 dasm_put(Dst, 10686);
1874 } else { 1887 } else {
1875 dasm_put(Dst, 10584); 1888 dasm_put(Dst, 10701);
1876 } 1889 }
1877 dasm_put(Dst, 9522); 1890 dasm_put(Dst, 9639);
1878 break; 1891 break;
1879 case BC_KNUM: 1892 case BC_KNUM:
1880 if (sse) { 1893 if (sse) {
1881 dasm_put(Dst, 10592); 1894 dasm_put(Dst, 10709);
1882 } else { 1895 } else {
1883 dasm_put(Dst, 10605); 1896 dasm_put(Dst, 10722);
1884 } 1897 }
1885 dasm_put(Dst, 9522); 1898 dasm_put(Dst, 9639);
1886 break; 1899 break;
1887 case BC_KPRI: 1900 case BC_KPRI:
1888 dasm_put(Dst, 10612); 1901 dasm_put(Dst, 10729);
1889 break; 1902 break;
1890 case BC_KNIL: 1903 case BC_KNIL:
1891 dasm_put(Dst, 10640, LJ_TNIL); 1904 dasm_put(Dst, 10757, LJ_TNIL);
1892 break; 1905 break;
1893 1906
1894 /* -- Upvalue and function ops ------------------------------------------ */ 1907 /* -- Upvalue and function ops ------------------------------------------ */
1895 1908
1896 case BC_UGET: 1909 case BC_UGET:
1897 dasm_put(Dst, 10687, offsetof(GCfuncL, uvptr), DtA(->v)); 1910 dasm_put(Dst, 10804, offsetof(GCfuncL, uvptr), DtA(->v));
1898 break; 1911 break;
1899 case BC_USETV: 1912 case BC_USETV:
1900#define TV2MARKOFS \ 1913#define TV2MARKOFS \
1901 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 1914 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
1902 dasm_put(Dst, 10727, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 1915 dasm_put(Dst, 10844, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
1903 dasm_put(Dst, 10818); 1916 dasm_put(Dst, 10935);
1904 break; 1917 break;
1905#undef TV2MARKOFS 1918#undef TV2MARKOFS
1906 case BC_USETS: 1919 case BC_USETS:
1907 dasm_put(Dst, 10830, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 1920 dasm_put(Dst, 10947, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
1908 break; 1921 break;
1909 case BC_USETN: 1922 case BC_USETN:
1910 dasm_put(Dst, 10923); 1923 dasm_put(Dst, 11040);
1911 if (sse) { 1924 if (sse) {
1912 dasm_put(Dst, 10928); 1925 dasm_put(Dst, 11045);
1913 } else { 1926 } else {
1914 dasm_put(Dst, 9761); 1927 dasm_put(Dst, 9878);
1915 } 1928 }
1916 dasm_put(Dst, 10935, offsetof(GCfuncL, uvptr), DtA(->v)); 1929 dasm_put(Dst, 11052, offsetof(GCfuncL, uvptr), DtA(->v));
1917 if (sse) { 1930 if (sse) {
1918 dasm_put(Dst, 10944); 1931 dasm_put(Dst, 11061);
1919 } else { 1932 } else {
1920 dasm_put(Dst, 10950); 1933 dasm_put(Dst, 11067);
1921 } 1934 }
1922 dasm_put(Dst, 9522); 1935 dasm_put(Dst, 9639);
1923 break; 1936 break;
1924 case BC_USETP: 1937 case BC_USETP:
1925 dasm_put(Dst, 10953, offsetof(GCfuncL, uvptr), DtA(->v)); 1938 dasm_put(Dst, 11070, offsetof(GCfuncL, uvptr), DtA(->v));
1926 break; 1939 break;
1927 case BC_UCLO: 1940 case BC_UCLO:
1928 dasm_put(Dst, 10992, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 1941 dasm_put(Dst, 11109, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
1929 break; 1942 break;
1930 1943
1931 case BC_FNEW: 1944 case BC_FNEW:
1932 dasm_put(Dst, 11047, Dt1(->base), Dt1(->base), LJ_TFUNC); 1945 dasm_put(Dst, 11164, Dt1(->base), Dt1(->base), LJ_TFUNC);
1933 break; 1946 break;
1934 1947
1935 /* -- Table ops --------------------------------------------------------- */ 1948 /* -- Table ops --------------------------------------------------------- */
1936 1949
1937 case BC_TNEW: 1950 case BC_TNEW:
1938 dasm_put(Dst, 11113, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 1951 dasm_put(Dst, 11230, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
1939 break; 1952 break;
1940 case BC_TDUP: 1953 case BC_TDUP:
1941 dasm_put(Dst, 11235, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 1954 dasm_put(Dst, 11352, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
1942 break; 1955 break;
1943 1956
1944 case BC_GGET: 1957 case BC_GGET:
1945 dasm_put(Dst, 11330, Dt7(->env)); 1958 dasm_put(Dst, 11447, Dt7(->env));
1946 break; 1959 break;
1947 case BC_GSET: 1960 case BC_GSET:
1948 dasm_put(Dst, 11349, Dt7(->env)); 1961 dasm_put(Dst, 11466, Dt7(->env));
1949 break; 1962 break;
1950 1963
1951 case BC_TGETV: 1964 case BC_TGETV:
1952 dasm_put(Dst, 11368, LJ_TTAB, LJ_TISNUM); 1965 dasm_put(Dst, 11485, LJ_TTAB, LJ_TISNUM);
1953 if (sse) { 1966 if (sse) {
1954 dasm_put(Dst, 11401); 1967 dasm_put(Dst, 11518);
1955 } else { 1968 } else {
1956 } 1969 }
1957 dasm_put(Dst, 11422, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1970 dasm_put(Dst, 11539, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1958 dasm_put(Dst, 11506, LJ_TNIL, LJ_TSTR); 1971 dasm_put(Dst, 11623, LJ_TNIL, LJ_TSTR);
1959 break; 1972 break;
1960 case BC_TGETS: 1973 case BC_TGETS:
1961 dasm_put(Dst, 11535, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 1974 dasm_put(Dst, 11652, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1962 dasm_put(Dst, 11619, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1975 dasm_put(Dst, 11736, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1963 break; 1976 break;
1964 case BC_TGETB: 1977 case BC_TGETB:
1965 dasm_put(Dst, 11690, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1978 dasm_put(Dst, 11807, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1966 dasm_put(Dst, 11785, LJ_TNIL); 1979 dasm_put(Dst, 11902, LJ_TNIL);
1967 break; 1980 break;
1968 1981
1969 case BC_TSETV: 1982 case BC_TSETV:
1970 dasm_put(Dst, 11802, LJ_TTAB, LJ_TISNUM); 1983 dasm_put(Dst, 11919, LJ_TTAB, LJ_TISNUM);
1971 if (sse) { 1984 if (sse) {
1972 dasm_put(Dst, 11401); 1985 dasm_put(Dst, 11518);
1973 } else { 1986 } else {
1974 } 1987 }
1975 dasm_put(Dst, 11835, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 1988 dasm_put(Dst, 11952, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
1976 dasm_put(Dst, 11914, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1989 dasm_put(Dst, 12031, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1977 break; 1990 break;
1978 case BC_TSETS: 1991 case BC_TSETS:
1979 dasm_put(Dst, 11976, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 1992 dasm_put(Dst, 12093, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1980 dasm_put(Dst, 12052, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 1993 dasm_put(Dst, 12169, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
1981 dasm_put(Dst, 12140, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1994 dasm_put(Dst, 12257, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1982 break; 1995 break;
1983 case BC_TSETB: 1996 case BC_TSETB:
1984 dasm_put(Dst, 12231, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 1997 dasm_put(Dst, 12348, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
1985 dasm_put(Dst, 12325, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1998 dasm_put(Dst, 12442, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1986 break; 1999 break;
1987 2000
1988 case BC_TSETM: 2001 case BC_TSETM:
1989 dasm_put(Dst, 12371, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); 2002 dasm_put(Dst, 12488, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
1990 dasm_put(Dst, 12514, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2003 dasm_put(Dst, 12631, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1991 break; 2004 break;
1992 2005
1993 /* -- Calls and vararg handling ----------------------------------------- */ 2006 /* -- Calls and vararg handling ----------------------------------------- */
1994 2007
1995 case BC_CALL: case BC_CALLM: 2008 case BC_CALL: case BC_CALLM:
1996 dasm_put(Dst, 10056); 2009 dasm_put(Dst, 10173);
1997 if (op == BC_CALLM) { 2010 if (op == BC_CALLM) {
1998 dasm_put(Dst, 12532); 2011 dasm_put(Dst, 12649);
1999 } 2012 }
2000 dasm_put(Dst, 12537, LJ_TFUNC, Dt7(->pc)); 2013 dasm_put(Dst, 12654, LJ_TFUNC, Dt7(->pc));
2001 break; 2014 break;
2002 2015
2003 case BC_CALLMT: 2016 case BC_CALLMT:
2004 dasm_put(Dst, 12532); 2017 dasm_put(Dst, 12649);
2005 break; 2018 break;
2006 case BC_CALLT: 2019 case BC_CALLT:
2007 dasm_put(Dst, 12579, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); 2020 dasm_put(Dst, 12696, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
2008 dasm_put(Dst, 12694, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); 2021 dasm_put(Dst, 12811, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
2009 break; 2022 break;
2010 2023
2011 case BC_ITERC: 2024 case BC_ITERC:
2012 dasm_put(Dst, 12765, LJ_TFUNC, 2+1, Dt7(->pc)); 2025 dasm_put(Dst, 12882, LJ_TFUNC, 2+1, Dt7(->pc));
2013 break; 2026 break;
2014 2027
2015 case BC_ITERN: 2028 case BC_ITERN:
2016#if LJ_HASJIT 2029#if LJ_HASJIT
2017#endif 2030#endif
2018 dasm_put(Dst, 12836, Dt6(->asize), Dt6(->array), LJ_TNIL); 2031 dasm_put(Dst, 12953, Dt6(->asize), Dt6(->array), LJ_TNIL);
2019 if (sse) { 2032 if (sse) {
2020 dasm_put(Dst, 12882); 2033 dasm_put(Dst, 12999);
2021 } else { 2034 } else {
2022 dasm_put(Dst, 12888); 2035 dasm_put(Dst, 13005);
2023 } 2036 }
2024 dasm_put(Dst, 12894); 2037 dasm_put(Dst, 13011);
2025 if (sse) { 2038 if (sse) {
2026 dasm_put(Dst, 9935); 2039 dasm_put(Dst, 10052);
2027 } else { 2040 } else {
2028 dasm_put(Dst, 9947); 2041 dasm_put(Dst, 10064);
2029 } 2042 }
2030 dasm_put(Dst, 12907, -BCBIAS_J*4); 2043 dasm_put(Dst, 13024, -BCBIAS_J*4);
2031 if (!sse) { 2044 if (!sse) {
2032 dasm_put(Dst, 12959); 2045 dasm_put(Dst, 13076);
2033 } 2046 }
2034 dasm_put(Dst, 12965, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val)); 2047 dasm_put(Dst, 13082, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
2035 break; 2048 break;
2036 2049
2037 case BC_ISNEXT: 2050 case BC_ISNEXT:
2038 dasm_put(Dst, 13037, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); 2051 dasm_put(Dst, 13154, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
2039 break; 2052 break;
2040 2053
2041 case BC_VARG: 2054 case BC_VARG:
2042 dasm_put(Dst, 13137, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); 2055 dasm_put(Dst, 13254, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
2043 dasm_put(Dst, 13297, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2056 dasm_put(Dst, 13414, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2044 break; 2057 break;
2045 2058
2046 /* -- Returns ----------------------------------------------------------- */ 2059 /* -- Returns ----------------------------------------------------------- */
2047 2060
2048 case BC_RETM: 2061 case BC_RETM:
2049 dasm_put(Dst, 12532); 2062 dasm_put(Dst, 12649);
2050 break; 2063 break;
2051 2064
2052 case BC_RET: case BC_RET0: case BC_RET1: 2065 case BC_RET: case BC_RET0: case BC_RET1:
2053 if (op != BC_RET0) { 2066 if (op != BC_RET0) {
2054 dasm_put(Dst, 13363); 2067 dasm_put(Dst, 13480);
2055 } 2068 }
2056 dasm_put(Dst, 13367, FRAME_TYPE); 2069 dasm_put(Dst, 13484, FRAME_TYPE);
2057 switch (op) { 2070 switch (op) {
2058 case BC_RET: 2071 case BC_RET:
2059 dasm_put(Dst, 13386); 2072 dasm_put(Dst, 13503);
2060 break; 2073 break;
2061 case BC_RET1: 2074 case BC_RET1:
2062 dasm_put(Dst, 13438); 2075 dasm_put(Dst, 13555);
2063 /* fallthrough */ 2076 /* fallthrough */
2064 case BC_RET0: 2077 case BC_RET0:
2065 dasm_put(Dst, 13448); 2078 dasm_put(Dst, 13565);
2066 default: 2079 default:
2067 break; 2080 break;
2068 } 2081 }
2069 dasm_put(Dst, 13459, Dt7(->pc), PC2PROTO(k)); 2082 dasm_put(Dst, 13576, Dt7(->pc), PC2PROTO(k));
2070 if (op == BC_RET) { 2083 if (op == BC_RET) {
2071 dasm_put(Dst, 13503, LJ_TNIL); 2084 dasm_put(Dst, 13620, LJ_TNIL);
2072 } else { 2085 } else {
2073 dasm_put(Dst, 13512, LJ_TNIL); 2086 dasm_put(Dst, 13629, LJ_TNIL);
2074 } 2087 }
2075 dasm_put(Dst, 13519, -FRAME_VARG, FRAME_TYPEP); 2088 dasm_put(Dst, 13636, -FRAME_VARG, FRAME_TYPEP);
2076 if (op != BC_RET0) { 2089 if (op != BC_RET0) {
2077 dasm_put(Dst, 13543); 2090 dasm_put(Dst, 13660);
2078 } 2091 }
2079 dasm_put(Dst, 4522); 2092 dasm_put(Dst, 4522);
2080 break; 2093 break;
@@ -2084,7 +2097,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2084 2097
2085 case BC_FORL: 2098 case BC_FORL:
2086#if LJ_HASJIT 2099#if LJ_HASJIT
2087 dasm_put(Dst, 13547, HOTCOUNT_PCMASK, GG_DISP2HOT); 2100 dasm_put(Dst, 13664, HOTCOUNT_PCMASK, GG_DISP2HOT);
2088#endif 2101#endif
2089 break; 2102 break;
2090 2103
@@ -2096,57 +2109,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2096 case BC_FORI: 2109 case BC_FORI:
2097 case BC_IFORL: 2110 case BC_IFORL:
2098 vk = (op == BC_IFORL || op == BC_JFORL); 2111 vk = (op == BC_IFORL || op == BC_JFORL);
2099 dasm_put(Dst, 13568); 2112 dasm_put(Dst, 13685);
2100 if (!vk) { 2113 if (!vk) {
2101 dasm_put(Dst, 13572, LJ_TISNUM, LJ_TISNUM); 2114 dasm_put(Dst, 13689, LJ_TISNUM, LJ_TISNUM);
2102 } 2115 }
2103 dasm_put(Dst, 13591); 2116 dasm_put(Dst, 13708);
2104 if (!vk) { 2117 if (!vk) {
2105 dasm_put(Dst, 13595, LJ_TISNUM); 2118 dasm_put(Dst, 13712, LJ_TISNUM);
2106 } 2119 }
2107 if (sse) { 2120 if (sse) {
2108 dasm_put(Dst, 13604); 2121 dasm_put(Dst, 13721);
2109 if (vk) { 2122 if (vk) {
2110 dasm_put(Dst, 13616); 2123 dasm_put(Dst, 13733);
2111 } else { 2124 } else {
2112 dasm_put(Dst, 13635); 2125 dasm_put(Dst, 13752);
2113 } 2126 }
2114 dasm_put(Dst, 13640); 2127 dasm_put(Dst, 13757);
2115 } else { 2128 } else {
2116 dasm_put(Dst, 13653); 2129 dasm_put(Dst, 13770);
2117 if (vk) { 2130 if (vk) {
2118 dasm_put(Dst, 13659); 2131 dasm_put(Dst, 13776);
2119 } else { 2132 } else {
2120 dasm_put(Dst, 13675); 2133 dasm_put(Dst, 13792);
2121 } 2134 }
2122 dasm_put(Dst, 13683); 2135 dasm_put(Dst, 13800);
2123 if (cmov) { 2136 if (cmov) {
2124 dasm_put(Dst, 9485); 2137 dasm_put(Dst, 9602);
2125 } else { 2138 } else {
2126 dasm_put(Dst, 9491); 2139 dasm_put(Dst, 9608);
2127 } 2140 }
2128 if (!cmov) { 2141 if (!cmov) {
2129 dasm_put(Dst, 13688); 2142 dasm_put(Dst, 13805);
2130 } 2143 }
2131 } 2144 }
2132 if (op == BC_FORI) { 2145 if (op == BC_FORI) {
2133 dasm_put(Dst, 13694, -BCBIAS_J*4); 2146 dasm_put(Dst, 13811, -BCBIAS_J*4);
2134 } else if (op == BC_JFORI) { 2147 } else if (op == BC_JFORI) {
2135 dasm_put(Dst, 13704, -BCBIAS_J*4, BC_JLOOP); 2148 dasm_put(Dst, 13821, -BCBIAS_J*4, BC_JLOOP);
2136 } else if (op == BC_IFORL) { 2149 } else if (op == BC_IFORL) {
2137 dasm_put(Dst, 13718, -BCBIAS_J*4); 2150 dasm_put(Dst, 13835, -BCBIAS_J*4);
2138 } else { 2151 } else {
2139 dasm_put(Dst, 13714, BC_JLOOP); 2152 dasm_put(Dst, 13831, BC_JLOOP);
2140 } 2153 }
2141 dasm_put(Dst, 9520); 2154 dasm_put(Dst, 9637);
2142 if (sse) { 2155 if (sse) {
2143 dasm_put(Dst, 13728); 2156 dasm_put(Dst, 13845);
2144 } 2157 }
2145 break; 2158 break;
2146 2159
2147 case BC_ITERL: 2160 case BC_ITERL:
2148#if LJ_HASJIT 2161#if LJ_HASJIT
2149 dasm_put(Dst, 13547, HOTCOUNT_PCMASK, GG_DISP2HOT); 2162 dasm_put(Dst, 13664, HOTCOUNT_PCMASK, GG_DISP2HOT);
2150#endif 2163#endif
2151 break; 2164 break;
2152 2165
@@ -2155,33 +2168,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2155 break; 2168 break;
2156#endif 2169#endif
2157 case BC_IITERL: 2170 case BC_IITERL:
2158 dasm_put(Dst, 13739, LJ_TNIL); 2171 dasm_put(Dst, 13856, LJ_TNIL);
2159 if (op == BC_JITERL) { 2172 if (op == BC_JITERL) {
2160 dasm_put(Dst, 13754, BC_JLOOP); 2173 dasm_put(Dst, 13871, BC_JLOOP);
2161 } else { 2174 } else {
2162 dasm_put(Dst, 13768, -BCBIAS_J*4); 2175 dasm_put(Dst, 13885, -BCBIAS_J*4);
2163 } 2176 }
2164 dasm_put(Dst, 9820); 2177 dasm_put(Dst, 9937);
2165 break; 2178 break;
2166 2179
2167 case BC_LOOP: 2180 case BC_LOOP:
2168#if LJ_HASJIT 2181#if LJ_HASJIT
2169 dasm_put(Dst, 13547, HOTCOUNT_PCMASK, GG_DISP2HOT); 2182 dasm_put(Dst, 13664, HOTCOUNT_PCMASK, GG_DISP2HOT);
2170#endif 2183#endif
2171 break; 2184 break;
2172 2185
2173 case BC_ILOOP: 2186 case BC_ILOOP:
2174 dasm_put(Dst, 9522); 2187 dasm_put(Dst, 9639);
2175 break; 2188 break;
2176 2189
2177 case BC_JLOOP: 2190 case BC_JLOOP:
2178#if LJ_HASJIT 2191#if LJ_HASJIT
2179 dasm_put(Dst, 13784, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), 9*16+4*8, -1*16, -2*16, -3*16, -4*16, -5*16, -6*16, -7*16, -8*16, -9*16); 2192 dasm_put(Dst, 13901, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), 9*16+4*8, -1*16, -2*16, -3*16, -4*16, -5*16, -6*16, -7*16, -8*16, -9*16);
2180#endif 2193#endif
2181 break; 2194 break;
2182 2195
2183 case BC_JMP: 2196 case BC_JMP:
2184 dasm_put(Dst, 13893, -BCBIAS_J*4); 2197 dasm_put(Dst, 14010, -BCBIAS_J*4);
2185 break; 2198 break;
2186 2199
2187 /* -- Function headers -------------------------------------------------- */ 2200 /* -- Function headers -------------------------------------------------- */
@@ -2195,7 +2208,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2195 2208
2196 case BC_FUNCF: 2209 case BC_FUNCF:
2197#if LJ_HASJIT 2210#if LJ_HASJIT
2198 dasm_put(Dst, 13918, HOTCOUNT_PCMASK, GG_DISP2HOT); 2211 dasm_put(Dst, 14035, HOTCOUNT_PCMASK, GG_DISP2HOT);
2199#endif 2212#endif
2200 case BC_FUNCV: /* NYI: compiled vararg functions. */ 2213 case BC_FUNCV: /* NYI: compiled vararg functions. */
2201 break; 2214 break;
@@ -2205,13 +2218,13 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2205 break; 2218 break;
2206#endif 2219#endif
2207 case BC_IFUNCF: 2220 case BC_IFUNCF:
2208 dasm_put(Dst, 13939, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); 2221 dasm_put(Dst, 14056, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2209 if (op == BC_JFUNCF) { 2222 if (op == BC_JFUNCF) {
2210 dasm_put(Dst, 13969, BC_JLOOP); 2223 dasm_put(Dst, 14086, BC_JLOOP);
2211 } else { 2224 } else {
2212 dasm_put(Dst, 9522); 2225 dasm_put(Dst, 9639);
2213 } 2226 }
2214 dasm_put(Dst, 13978, LJ_TNIL); 2227 dasm_put(Dst, 14095, LJ_TNIL);
2215 break; 2228 break;
2216 2229
2217 case BC_JFUNCV: 2230 case BC_JFUNCV:
@@ -2222,30 +2235,30 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2222 break; /* NYI: compiled vararg functions. */ 2235 break; /* NYI: compiled vararg functions. */
2223 2236
2224 case BC_IFUNCV: 2237 case BC_IFUNCV:
2225 dasm_put(Dst, 14000, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); 2238 dasm_put(Dst, 14117, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2226 if (op == BC_JFUNCV) { 2239 if (op == BC_JFUNCV) {
2227 dasm_put(Dst, 13969, BC_JLOOP); 2240 dasm_put(Dst, 14086, BC_JLOOP);
2228 } else { 2241 } else {
2229 dasm_put(Dst, 14091, -4+PC2PROTO(k)); 2242 dasm_put(Dst, 14208, -4+PC2PROTO(k));
2230 } 2243 }
2231 dasm_put(Dst, 14114, LJ_TNIL); 2244 dasm_put(Dst, 14231, LJ_TNIL);
2232 break; 2245 break;
2233 2246
2234 case BC_FUNCC: 2247 case BC_FUNCC:
2235 case BC_FUNCCW: 2248 case BC_FUNCCW:
2236 dasm_put(Dst, 14136, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); 2249 dasm_put(Dst, 14253, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2237 if (op == BC_FUNCC) { 2250 if (op == BC_FUNCC) {
2238 dasm_put(Dst, 14166); 2251 dasm_put(Dst, 14283);
2239 } else { 2252 } else {
2240 dasm_put(Dst, 14170); 2253 dasm_put(Dst, 14287);
2241 } 2254 }
2242 dasm_put(Dst, 14178, DISPATCH_GL(vmstate), ~LJ_VMST_C); 2255 dasm_put(Dst, 14295, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2243 if (op == BC_FUNCC) { 2256 if (op == BC_FUNCC) {
2244 dasm_put(Dst, 14187); 2257 dasm_put(Dst, 14304);
2245 } else { 2258 } else {
2246 dasm_put(Dst, 14191, DISPATCH_GL(wrapf)); 2259 dasm_put(Dst, 14308, DISPATCH_GL(wrapf));
2247 } 2260 }
2248 dasm_put(Dst, 14196, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 2261 dasm_put(Dst, 14313, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2249 break; 2262 break;
2250 2263
2251 /* ---------------------------------------------------------------------- */ 2264 /* ---------------------------------------------------------------------- */
@@ -2273,7 +2286,7 @@ static int build_backend(BuildCtx *ctx)
2273 2286
2274 build_subroutines(ctx, cmov, sse); 2287 build_subroutines(ctx, cmov, sse);
2275 2288
2276 dasm_put(Dst, 14221); 2289 dasm_put(Dst, 14338);
2277 for (op = 0; op < BC__MAX; op++) 2290 for (op = 0; op < BC__MAX; op++)
2278 build_ins(ctx, (BCOp)op, op, cmov, sse); 2291 build_ins(ctx, (BCOp)op, op, cmov, sse);
2279 2292
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc
index 31a09b7e..d8e6a88c 100644
--- a/src/buildvm_x86.dasc
+++ b/src/buildvm_x86.dasc
@@ -3412,7 +3412,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
3412 |//-- FFI helper functions ----------------------------------------------- 3412 |//-- FFI helper functions -----------------------------------------------
3413 |//----------------------------------------------------------------------- 3413 |//-----------------------------------------------------------------------
3414 | 3414 |
3415 |->vm_ffi_call: 3415 |->vm_ffi_call@4:
3416#if LJ_HASFFI 3416#if LJ_HASFFI
3417 |.if X64 3417 |.if X64
3418 | .type CCSTATE, CCallState, rbx 3418 | .type CCSTATE, CCallState, rbx
diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h
index 555fe67a..a2691d37 100644
--- a/src/buildvm_x86.h
+++ b/src/buildvm_x86.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 char build_actionlist[15591] = { 15static const unsigned char build_actionlist[15684] = {
16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,141, 16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,141,
17 76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36, 17 76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,
18 20,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237,15, 18 20,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237,15,
@@ -532,146 +532,150 @@ static const unsigned char build_actionlist[15591] = {
532 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133, 532 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,
533 244,248,217,201,248,2,221,216,195,255,248,155,156,90,137,209,129,252,242, 533 244,248,217,201,248,2,221,216,195,255,248,155,156,90,137,209,129,252,242,
534 0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15, 534 0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15,
535 162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,255,249, 535 162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,248,156,
536 255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244, 536 255,85,137,229,83,137,203,43,163,233,15,182,139,233,131,252,233,1,15,136,
537 41,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4, 537 244,248,248,1,139,132,253,139,233,137,4,140,131,252,233,1,15,137,244,1,248,
538 194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15, 538 2,139,139,233,139,147,233,252,255,147,233,137,131,233,137,147,233,128,187,
539 134,244,248,255,15,131,244,248,255,248,1,15,183,70,252,254,141,180,253,134, 539 233,1,15,130,244,253,15,132,244,252,221,155,233,255,252,233,244,253,248,6,
540 233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, 540 217,155,233,248,7,139,93,252,252,201,195,255,249,255,129,124,253,202,4,239,
541 255,139,108,194,4,131,198,4,129,252,253,239,15,135,244,251,129,124,253,202, 541 15,135,244,41,129,124,253,194,4,239,15,135,244,41,255,252,242,15,16,4,194,
542 4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202, 542 131,198,4,102,15,46,4,202,255,221,4,202,221,4,194,131,198,4,255,223,252,233,
543 221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15,132,244, 543 221,216,255,218,252,233,223,224,158,255,15,134,244,248,255,15,131,244,248,
544 247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183, 544 255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182,204,15,
545 70,252,254,141,180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,2, 545 182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,4,131,198,4,129,
546 129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129, 546 252,253,239,15,135,244,251,129,124,253,202,4,239,15,135,244,251,255,252,242,
547 252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133, 547 15,16,4,194,102,15,46,4,202,255,221,4,202,221,4,194,255,15,138,244,248,15,
548 233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,45,255, 548 133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15,183,70,252,254,
549 252,247,208,131,198,4,129,124,253,202,4,239,15,133,244,248,139,12,202,59, 549 141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141,180,253,134,233,
550 12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,248,255,252,242,15, 550 248,1,255,248,5,57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,
551 16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,252,247,208,131,198, 551 12,202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,135,244,2,139,169,
552 4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,239,255,15,131,244, 552 233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,
553 247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,202,255,15,183, 553 237,255,189,1,0,0,0,255,252,233,244,45,255,252,247,208,131,198,4,129,124,
554 70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198, 554 253,202,4,239,15,133,244,248,139,12,202,59,12,135,255,131,198,4,129,124,253,
555 4,193,232,16,252,255,36,171,255,139,108,194,4,139,4,194,137,108,202,4,137, 555 202,4,239,15,135,244,248,255,252,242,15,16,4,199,102,15,46,4,202,255,221,
556 4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255, 556 4,202,221,4,199,255,252,247,208,131,198,4,57,68,202,4,255,139,108,194,4,131,
557 49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,204, 557 198,4,129,252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,
558 15,182,232,131,198,4,193,232,16,252,255,36,171,255,129,124,253,194,4,239, 558 4,139,44,194,137,44,202,255,15,183,70,252,254,141,180,253,134,233,248,1,139,
559 15,135,244,48,255,252,242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,15, 559 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,
560 112,201,81,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202, 560 4,139,4,194,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,
561 255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242, 561 193,232,16,252,255,36,171,255,49,252,237,129,124,253,194,4,239,129,213,239,
562 15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202, 562 137,108,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
563 255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2, 563 171,255,129,124,253,194,4,239,15,135,244,48,255,252,242,15,16,4,194,184,0,
564 129,124,253,194,4,239,15,133,244,50,139,12,194,137,213,232,251,1,18,255,252, 564 0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,242,15,17,4,202,255,
565 242,15,42,192,137,252,234,255,137,4,36,137,252,234,219,4,36,255,15,182,78, 565 221,4,194,217,224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,
566 252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234, 566 4,194,255,15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,
567 4,239,15,135,244,46,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221, 567 128,233,248,1,221,28,202,255,139,6,15,182,204,15,182,232,131,198,4,193,232,
568 4,252,234,220,4,199,255,129,124,253,252,234,4,239,15,135,244,47,255,252,242, 568 16,252,255,36,171,248,2,129,124,253,194,4,239,15,133,244,50,139,12,194,137,
569 15,16,4,199,252,242,15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124, 569 213,232,251,1,18,255,252,242,15,42,192,137,252,234,255,137,4,36,137,252,234,
570 253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15,135,244,49,255,252, 570 219,4,36,255,15,182,78,252,253,252,233,244,1,255,15,182,252,236,15,182,192,
571 242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252, 571 255,129,124,253,252,234,4,239,15,135,244,46,255,252,242,15,16,4,252,234,252,
572 242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,234,220,36,199,255, 572 242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,253,252,234,4,239,
573 252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,199,220,36,252,234, 573 15,135,244,47,255,252,242,15,16,4,199,252,242,15,88,4,252,234,255,221,4,199,
574 255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,4,252,234,220,36, 574 220,4,252,234,255,129,124,253,252,234,4,239,15,135,244,49,129,124,253,194,
575 194,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221,4,252,234,220, 575 4,239,15,135,244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,
576 12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,255,221,4,199,220, 576 4,252,234,220,4,194,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255,221,
577 12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,252, 577 4,252,234,220,36,199,255,252,242,15,16,4,199,252,242,15,92,4,252,234,255,
578 234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,4,199,255,221,4, 578 221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,
579 252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,4,252,234,255,221, 579 255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,15,89,4,
580 4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,15,94,4,194,255, 580 199,255,221,4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,4,
581 221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,199, 581 252,234,255,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,
582 255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,252, 582 15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,
583 234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16, 583 242,15,94,4,199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252,
584 12,194,255,221,4,252,234,221,4,194,255,248,156,232,244,148,255,252,233,244, 584 242,15,94,4,252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252,
585 156,255,232,244,107,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76, 585 234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,
586 36,4,137,68,36,8,248,33,139,108,36,48,137,44,36,137,149,233,137,116,36,24, 586 252,234,252,242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16,
587 232,251,1,25,139,149,233,133,192,15,133,244,42,15,182,110,252,255,15,182, 587 4,199,252,242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15,
588 78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6, 588 16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,157,
589 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208, 589 232,244,148,255,252,233,244,157,255,232,244,107,255,15,182,252,236,15,182,
590 139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198, 590 192,141,12,194,41,232,137,76,36,4,137,68,36,8,248,33,139,108,36,48,137,44,
591 4,193,232,16,252,255,36,171,255,15,191,192,252,242,15,42,192,252,242,15,17, 591 36,137,149,233,137,116,36,24,232,251,1,25,139,149,233,133,192,15,133,244,
592 4,202,255,223,70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17, 592 42,15,182,110,252,255,15,182,78,252,253,139,68,252,234,4,139,44,252,234,137,
593 4,202,255,221,4,199,221,28,202,255,252,247,208,137,68,202,4,139,6,15,182, 593 68,202,4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
594 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141,76,202,12,141, 594 255,36,171,255,252,247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,
595 68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244, 595 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,15,191,192,252,
596 1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139, 596 242,15,42,192,252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242,
597 106,252,248,139,172,253,133,233,139,173,233,139,69,4,139,109,0,137,68,202, 597 15,16,4,199,252,242,15,17,4,202,255,221,4,199,221,28,202,255,252,247,208,
598 4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 598 137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
599 171,255,139,106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139, 599 171,255,141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,
600 12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235, 600 193,8,57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
601 15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 601 252,255,36,171,255,139,106,252,248,139,172,253,133,233,139,173,233,139,69,
602 255,36,171,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233, 602 4,139,109,0,137,68,202,4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,
603 235,15,132,244,1,135,213,141,139,233,255,232,251,1,26,137,252,234,252,233, 603 193,232,16,252,255,36,171,255,139,106,252,248,139,172,253,141,233,128,189,
604 244,1,255,252,247,208,139,106,252,248,139,172,253,141,233,139,12,135,139, 604 233,0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,
605 133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6, 605 252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,
606 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,252,246,129, 606 198,4,193,232,16,252,255,36,171,248,2,129,232,239,129,252,248,239,15,134,
607 233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233, 607 244,1,252,246,129,233,235,15,132,244,1,135,213,141,139,233,255,232,251,1,
608 232,251,1,26,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,15, 608 26,137,252,234,252,233,244,1,255,252,247,208,139,106,252,248,139,172,253,
609 16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221, 609 141,233,139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,
610 25,255,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65, 610 133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
611 4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141, 611 36,171,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,
612 180,253,134,233,139,108,36,48,131,189,233,0,15,132,244,247,137,149,233,141, 612 137,213,137,194,141,139,233,232,251,1,26,137,252,234,252,233,244,1,255,139,
613 20,202,137,252,233,232,251,1,27,139,149,233,248,1,139,6,15,182,204,15,182, 613 106,252,248,255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,233,255,
614 232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,74,252,248,139, 614 252,242,15,17,1,255,221,25,255,252,247,208,139,106,252,248,139,172,253,141,
615 4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,44,36,137,149,233,137,116, 615 233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
616 36,24,232,251,1,28,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237, 616 252,255,36,171,255,141,180,253,134,233,139,108,36,48,131,189,233,0,15,132,
617 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108, 617 244,247,137,149,233,141,20,202,137,252,233,232,251,1,27,139,149,233,248,1,
618 36,48,137,149,233,139,139,233,59,139,233,137,116,36,24,15,131,244,251,248, 618 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,
619 1,137,193,37,252,255,7,0,0,193,252,233,11,137,76,36,8,61,252,255,7,0,0,15, 619 208,139,74,252,248,139,4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,44,
620 132,244,249,248,2,137,44,36,137,68,36,4,232,251,1,29,139,149,233,15,182,78, 620 36,137,149,233,137,116,36,24,232,251,1,28,139,149,233,15,182,78,252,253,137,
621 252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4, 621 4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
622 193,232,16,252,255,36,171,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233, 622 255,36,171,255,139,108,36,48,137,149,233,139,139,233,59,139,233,137,116,36,
623 232,251,1,30,15,183,70,252,254,252,233,244,1,255,252,247,208,139,108,36,48, 623 24,15,131,244,251,248,1,137,193,37,252,255,7,0,0,193,252,233,11,137,76,36,
624 139,139,233,137,116,36,24,59,139,233,137,149,233,15,131,244,249,248,2,139, 624 8,61,252,255,7,0,0,15,132,244,249,248,2,137,44,36,137,68,36,4,232,251,1,29,
625 20,135,137,252,233,232,251,1,31,139,149,233,15,182,78,252,253,137,4,202,199, 625 139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,
626 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 626 15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,184,1,8,0,0,252,233,
627 171,248,3,137,252,233,232,251,1,30,15,183,70,252,254,252,247,208,252,233, 627 244,2,248,5,137,252,233,232,251,1,30,15,183,70,252,254,252,233,244,1,255,
628 244,2,255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,157, 628 252,247,208,139,108,36,48,139,139,233,137,116,36,24,59,139,233,137,149,233,
629 255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,158,255, 629 15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,31,139,149,233,15,182,
630 15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,36,139,44, 630 78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,
631 252,234,129,124,253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252, 631 4,193,232,16,252,255,36,171,248,3,137,252,233,232,251,1,30,15,183,70,252,
632 242,15,45,192,252,242,15,42,200,102,15,46,193,255,221,4,194,219,20,36,219, 632 254,252,247,208,252,233,244,2,255,252,247,208,139,106,252,248,139,173,233,
633 4,36,255,15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120, 633 139,4,135,252,233,244,158,255,252,247,208,139,106,252,248,139,173,233,139,
634 253,4,239,15,132,244,248,139,40,139,64,4,137,44,202,137,68,202,4,248,1,139, 634 4,135,252,233,244,159,255,15,182,252,236,15,182,192,129,124,253,252,234,4,
635 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,131,189, 635 239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,
636 233,0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244,36,15,182, 636 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255,
637 78,252,253,248,3,255,199,68,202,4,237,252,233,244,1,248,5,129,124,253,194, 637 221,4,194,219,20,36,219,4,36,255,15,133,244,36,59,133,233,15,131,244,36,193,
638 4,239,15,133,244,36,139,4,194,252,233,244,157,255,15,182,252,236,15,182,192, 638 224,3,3,133,233,129,120,253,4,239,15,132,244,248,139,40,139,64,4,137,44,202,
639 252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,34,139,44,252, 639 137,68,202,4,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
640 234,248,157,139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233, 640 36,171,248,2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,235,
641 239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244, 641 15,132,244,36,15,182,78,252,253,248,3,255,199,68,202,4,237,252,233,244,1,
642 251,15,182,70,252,253,139,41,139,73,4,137,44,194,137,76,194,4,248,2,255,139, 642 248,5,129,124,253,194,4,239,15,133,244,36,139,4,194,252,233,244,158,255,15,
643 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,15,182, 643 182,252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,
644 70,252,253,199,68,194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133, 644 133,244,34,139,44,252,234,248,158,139,141,233,35,136,233,105,201,239,3,141,
645 244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244, 645 233,248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,
646 3,252,233,244,34,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239, 646 253,4,239,15,132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,137,
647 15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,233, 647 76,194,4,248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
648 129,120,253,4,239,15,132,244,248,139,40,139,64,4,137,44,202,137,68,202,4, 648 36,171,248,3,15,182,70,252,253,199,68,194,4,237,252,233,244,2,248,4,139,137,
649 248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, 649 233,133,201,15,133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,
650 2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244, 650 233,235,15,133,244,3,252,233,244,34,255,15,182,252,236,15,182,192,129,124,
651 35,255,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1,255,15,182, 651 253,252,234,4,239,15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,193,
652 252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,139,44,252,234, 652 224,3,3,133,233,129,120,253,4,239,15,132,244,248,139,40,139,64,4,137,44,202,
653 129,124,253,194,4,239,15,135,244,251,255,15,133,244,39,59,133,233,15,131, 653 137,68,202,4,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
654 244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246, 654 36,171,248,2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,235,
655 133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8, 655 15,132,244,35,255,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1,
656 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,131, 656 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,139,
657 189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132,244,39, 657 44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,39,59,133,
658 15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,39, 658 233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,
659 139,4,194,252,233,244,158,248,7,128,165,233,235,139,139,233,137,171,233,137, 659 1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,
660 141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182,192,252, 660 4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,
661 247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234, 661 3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132,244,
662 248,158,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,248,1, 662 39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,
663 129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,4,239, 663 39,139,4,194,252,233,244,159,248,7,128,165,233,235,139,139,233,137,171,233,
664 15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15,182, 664 137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182,192,
665 70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,6,15,182,204,15,182, 665 252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,
666 232,131,198,4,193,232,16,252,255,36,171,248,4,131,189,233,0,15,132,244,2, 666 234,248,159,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,248,
667 137,76,36,16,139,141,233,252,246,129,233,235,15,132,244,37,139,76,36,16,252, 667 1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,4,
668 233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,201, 668 239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15,
669 15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,68,36,16,199,68, 669 182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,6,15,182,204,15,
670 36,20,237,137,108,36,12,141,68,36,16,137,108,36,4,139,108,36,48,137,68,36, 670 182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,189,233,0,15,132,244,
671 8,137,44,36,137,149,233,137,116,36,24,232,251,1,32,139,149,233,139,108,36, 671 2,137,76,36,16,139,141,233,252,246,129,233,235,15,132,244,37,139,76,36,16,
672 12,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233,137, 672 252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,
673 133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234,4, 673 201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,68,36,16,199,
674 239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133, 674 68,36,20,237,137,108,36,12,141,68,36,16,137,108,36,4,139,108,36,48,137,68,
675 36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,32,139,149,233,139,108,
676 36,12,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233,
677 137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234,
678 4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,
675 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244, 679 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,
676 253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182, 680 253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,
677 232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1, 681 232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,
@@ -915,6 +919,7 @@ enum {
915 GLOB_vm_foldfpm, 919 GLOB_vm_foldfpm,
916 GLOB_vm_foldarith, 920 GLOB_vm_foldarith,
917 GLOB_vm_cpuid, 921 GLOB_vm_cpuid,
922 GLOB_vm_ffi_call,
918 GLOB_BC_MODVN_Z, 923 GLOB_BC_MODVN_Z,
919 GLOB_BC_TGETS_Z, 924 GLOB_BC_TGETS_Z,
920 GLOB_BC_TSETS_Z, 925 GLOB_BC_TSETS_Z,
@@ -1067,6 +1072,7 @@ static const char *const globnames[] = {
1067 "vm_foldfpm", 1072 "vm_foldfpm",
1068 "vm_foldarith", 1073 "vm_foldarith",
1069 "vm_cpuid", 1074 "vm_cpuid",
1075 "vm_ffi_call@4",
1070 "BC_MODVN_Z", 1076 "BC_MODVN_Z",
1071 "BC_TGETS_Z", 1077 "BC_TGETS_Z",
1072 "BC_TSETS_Z", 1078 "BC_TSETS_Z",
@@ -1563,13 +1569,18 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1563 dasm_put(Dst, 10266); 1569 dasm_put(Dst, 10266);
1564 } 1570 }
1565 dasm_put(Dst, 10731); 1571 dasm_put(Dst, 10731);
1572#if LJ_HASFFI
1573#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
1574 dasm_put(Dst, 10787, DtE(->spadj), DtE(->nsp), offsetof(CCallState, stack), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->func), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->resx87), DtE(->fpr[0].d[0]));
1575 dasm_put(Dst, 10860, DtE(->fpr[0].f[0]));
1576#endif
1566} 1577}
1567 1578
1568/* Generate the code for a single instruction. */ 1579/* Generate the code for a single instruction. */
1569static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1580static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1570{ 1581{
1571 int vk = 0; 1582 int vk = 0;
1572 dasm_put(Dst, 10785, defop); 1583 dasm_put(Dst, 10878, defop);
1573 1584
1574 switch (op) { 1585 switch (op) {
1575 1586
@@ -1578,20 +1589,20 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1578 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1589 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1579 1590
1580 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1591 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1581 dasm_put(Dst, 10787, LJ_TISNUM, LJ_TISNUM); 1592 dasm_put(Dst, 10880, LJ_TISNUM, LJ_TISNUM);
1582 if (sse) { 1593 if (sse) {
1583 dasm_put(Dst, 10808); 1594 dasm_put(Dst, 10901);
1584 } else { 1595 } else {
1585 dasm_put(Dst, 10823); 1596 dasm_put(Dst, 10916);
1586 if (cmov) { 1597 if (cmov) {
1587 dasm_put(Dst, 10833); 1598 dasm_put(Dst, 10926);
1588 } else { 1599 } else {
1589 dasm_put(Dst, 10839); 1600 dasm_put(Dst, 10932);
1590 } 1601 }
1591 } 1602 }
1592 switch (op) { 1603 switch (op) {
1593 case BC_ISLT: 1604 case BC_ISLT:
1594 dasm_put(Dst, 10846); 1605 dasm_put(Dst, 10939);
1595 break; 1606 break;
1596 case BC_ISGE: 1607 case BC_ISGE:
1597 dasm_put(Dst, 10081); 1608 dasm_put(Dst, 10081);
@@ -1600,615 +1611,615 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1600 dasm_put(Dst, 6207); 1611 dasm_put(Dst, 6207);
1601 break; 1612 break;
1602 case BC_ISGT: 1613 case BC_ISGT:
1603 dasm_put(Dst, 10851); 1614 dasm_put(Dst, 10944);
1604 break; 1615 break;
1605 default: break; /* Shut up GCC. */ 1616 default: break; /* Shut up GCC. */
1606 } 1617 }
1607 dasm_put(Dst, 10856, -BCBIAS_J*4); 1618 dasm_put(Dst, 10949, -BCBIAS_J*4);
1608 break; 1619 break;
1609 1620
1610 case BC_ISEQV: case BC_ISNEV: 1621 case BC_ISEQV: case BC_ISNEV:
1611 vk = op == BC_ISEQV; 1622 vk = op == BC_ISEQV;
1612 dasm_put(Dst, 10889, LJ_TISNUM, LJ_TISNUM); 1623 dasm_put(Dst, 10982, LJ_TISNUM, LJ_TISNUM);
1613 if (sse) { 1624 if (sse) {
1614 dasm_put(Dst, 10915); 1625 dasm_put(Dst, 11008);
1615 } else { 1626 } else {
1616 dasm_put(Dst, 10927); 1627 dasm_put(Dst, 11020);
1617 if (cmov) { 1628 if (cmov) {
1618 dasm_put(Dst, 10833); 1629 dasm_put(Dst, 10926);
1619 } else { 1630 } else {
1620 dasm_put(Dst, 10839); 1631 dasm_put(Dst, 10932);
1621 } 1632 }
1622 } 1633 }
1623 iseqne_fp: 1634 iseqne_fp:
1624 if (vk) { 1635 if (vk) {
1625 dasm_put(Dst, 10934); 1636 dasm_put(Dst, 11027);
1626 } else { 1637 } else {
1627 dasm_put(Dst, 10943); 1638 dasm_put(Dst, 11036);
1628 } 1639 }
1629 iseqne_end: 1640 iseqne_end:
1630 if (vk) { 1641 if (vk) {
1631 dasm_put(Dst, 10952, -BCBIAS_J*4); 1642 dasm_put(Dst, 11045, -BCBIAS_J*4);
1632 } else { 1643 } else {
1633 dasm_put(Dst, 10967, -BCBIAS_J*4); 1644 dasm_put(Dst, 11060, -BCBIAS_J*4);
1634 } 1645 }
1635 dasm_put(Dst, 10870); 1646 dasm_put(Dst, 10963);
1636 if (op == BC_ISEQV || op == BC_ISNEV) { 1647 if (op == BC_ISEQV || op == BC_ISNEV) {
1637 dasm_put(Dst, 10982, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1648 dasm_put(Dst, 11075, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1638 if (vk) { 1649 if (vk) {
1639 dasm_put(Dst, 11040); 1650 dasm_put(Dst, 11133);
1640 } else { 1651 } else {
1641 dasm_put(Dst, 11044); 1652 dasm_put(Dst, 11137);
1642 } 1653 }
1643 dasm_put(Dst, 11050); 1654 dasm_put(Dst, 11143);
1644 } 1655 }
1645 break; 1656 break;
1646 case BC_ISEQS: case BC_ISNES: 1657 case BC_ISEQS: case BC_ISNES:
1647 vk = op == BC_ISEQS; 1658 vk = op == BC_ISEQS;
1648 dasm_put(Dst, 11055, LJ_TSTR); 1659 dasm_put(Dst, 11148, LJ_TSTR);
1649 iseqne_test: 1660 iseqne_test:
1650 if (vk) { 1661 if (vk) {
1651 dasm_put(Dst, 10938); 1662 dasm_put(Dst, 11031);
1652 } else { 1663 } else {
1653 dasm_put(Dst, 2829); 1664 dasm_put(Dst, 2829);
1654 } 1665 }
1655 goto iseqne_end; 1666 goto iseqne_end;
1656 case BC_ISEQN: case BC_ISNEN: 1667 case BC_ISEQN: case BC_ISNEN:
1657 vk = op == BC_ISEQN; 1668 vk = op == BC_ISEQN;
1658 dasm_put(Dst, 11078, LJ_TISNUM); 1669 dasm_put(Dst, 11171, LJ_TISNUM);
1659 if (sse) { 1670 if (sse) {
1660 dasm_put(Dst, 11092); 1671 dasm_put(Dst, 11185);
1661 } else { 1672 } else {
1662 dasm_put(Dst, 11104); 1673 dasm_put(Dst, 11197);
1663 if (cmov) { 1674 if (cmov) {
1664 dasm_put(Dst, 10833); 1675 dasm_put(Dst, 10926);
1665 } else { 1676 } else {
1666 dasm_put(Dst, 10839); 1677 dasm_put(Dst, 10932);
1667 } 1678 }
1668 } 1679 }
1669 goto iseqne_fp; 1680 goto iseqne_fp;
1670 case BC_ISEQP: case BC_ISNEP: 1681 case BC_ISEQP: case BC_ISNEP:
1671 vk = op == BC_ISEQP; 1682 vk = op == BC_ISEQP;
1672 dasm_put(Dst, 11111); 1683 dasm_put(Dst, 11204);
1673 goto iseqne_test; 1684 goto iseqne_test;
1674 1685
1675 /* -- Unary test and copy ops ------------------------------------------- */ 1686 /* -- Unary test and copy ops ------------------------------------------- */
1676 1687
1677 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 1688 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1678 dasm_put(Dst, 11122, LJ_TISTRUECOND); 1689 dasm_put(Dst, 11215, LJ_TISTRUECOND);
1679 if (op == BC_IST || op == BC_ISTC) { 1690 if (op == BC_IST || op == BC_ISTC) {
1680 dasm_put(Dst, 11134); 1691 dasm_put(Dst, 11227);
1681 } else { 1692 } else {
1682 dasm_put(Dst, 11139); 1693 dasm_put(Dst, 11232);
1683 } 1694 }
1684 if (op == BC_ISTC || op == BC_ISFC) { 1695 if (op == BC_ISTC || op == BC_ISFC) {
1685 dasm_put(Dst, 11144); 1696 dasm_put(Dst, 11237);
1686 } 1697 }
1687 dasm_put(Dst, 11155, -BCBIAS_J*4); 1698 dasm_put(Dst, 11248, -BCBIAS_J*4);
1688 break; 1699 break;
1689 1700
1690 /* -- Unary ops --------------------------------------------------------- */ 1701 /* -- Unary ops --------------------------------------------------------- */
1691 1702
1692 case BC_MOV: 1703 case BC_MOV:
1693 dasm_put(Dst, 11186); 1704 dasm_put(Dst, 11279);
1694 break; 1705 break;
1695 case BC_NOT: 1706 case BC_NOT:
1696 dasm_put(Dst, 11219, LJ_TISTRUECOND, LJ_TTRUE); 1707 dasm_put(Dst, 11312, LJ_TISTRUECOND, LJ_TTRUE);
1697 break; 1708 break;
1698 case BC_UNM: 1709 case BC_UNM:
1699 dasm_put(Dst, 11254, LJ_TISNUM); 1710 dasm_put(Dst, 11347, LJ_TISNUM);
1700 if (sse) { 1711 if (sse) {
1701 dasm_put(Dst, 11265); 1712 dasm_put(Dst, 11358);
1702 } else { 1713 } else {
1703 dasm_put(Dst, 11295); 1714 dasm_put(Dst, 11388);
1704 } 1715 }
1705 dasm_put(Dst, 10870); 1716 dasm_put(Dst, 10963);
1706 break; 1717 break;
1707 case BC_LEN: 1718 case BC_LEN:
1708 dasm_put(Dst, 11304, LJ_TSTR); 1719 dasm_put(Dst, 11397, LJ_TSTR);
1709 if (sse) { 1720 if (sse) {
1710 dasm_put(Dst, 11318, Dt5(->len)); 1721 dasm_put(Dst, 11411, Dt5(->len));
1711 } else { 1722 } else {
1712 dasm_put(Dst, 11336, Dt5(->len)); 1723 dasm_put(Dst, 11429, Dt5(->len));
1713 } 1724 }
1714 dasm_put(Dst, 11345, LJ_TTAB); 1725 dasm_put(Dst, 11438, LJ_TTAB);
1715 if (sse) { 1726 if (sse) {
1716 dasm_put(Dst, 11385); 1727 dasm_put(Dst, 11478);
1717 } else { 1728 } else {
1718 dasm_put(Dst, 11394); 1729 dasm_put(Dst, 11487);
1719 } 1730 }
1720 dasm_put(Dst, 11404); 1731 dasm_put(Dst, 11497);
1721 break; 1732 break;
1722 1733
1723 /* -- Binary ops -------------------------------------------------------- */ 1734 /* -- Binary ops -------------------------------------------------------- */
1724 1735
1725 1736
1726 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 1737 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1727 dasm_put(Dst, 11414); 1738 dasm_put(Dst, 11507);
1728 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1739 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1729 switch (vk) { 1740 switch (vk) {
1730 case 0: 1741 case 0:
1731 dasm_put(Dst, 11422, LJ_TISNUM); 1742 dasm_put(Dst, 11515, LJ_TISNUM);
1732 if (sse) { 1743 if (sse) {
1733 dasm_put(Dst, 11434); 1744 dasm_put(Dst, 11527);
1734 } else { 1745 } else {
1735 dasm_put(Dst, 11448); 1746 dasm_put(Dst, 11541);
1736 } 1747 }
1737 break; 1748 break;
1738 case 1: 1749 case 1:
1739 dasm_put(Dst, 11456, LJ_TISNUM); 1750 dasm_put(Dst, 11549, LJ_TISNUM);
1740 if (sse) { 1751 if (sse) {
1741 dasm_put(Dst, 11468); 1752 dasm_put(Dst, 11561);
1742 } else { 1753 } else {
1743 dasm_put(Dst, 11482); 1754 dasm_put(Dst, 11575);
1744 } 1755 }
1745 break; 1756 break;
1746 default: 1757 default:
1747 dasm_put(Dst, 11490, LJ_TISNUM, LJ_TISNUM); 1758 dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM);
1748 if (sse) { 1759 if (sse) {
1749 dasm_put(Dst, 11512); 1760 dasm_put(Dst, 11605);
1750 } else { 1761 } else {
1751 dasm_put(Dst, 11526); 1762 dasm_put(Dst, 11619);
1752 } 1763 }
1753 break; 1764 break;
1754 } 1765 }
1755 if (sse) { 1766 if (sse) {
1756 dasm_put(Dst, 11288); 1767 dasm_put(Dst, 11381);
1757 } else { 1768 } else {
1758 dasm_put(Dst, 11300); 1769 dasm_put(Dst, 11393);
1759 } 1770 }
1760 dasm_put(Dst, 10870); 1771 dasm_put(Dst, 10963);
1761 break; 1772 break;
1762 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 1773 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1763 dasm_put(Dst, 11414); 1774 dasm_put(Dst, 11507);
1764 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1775 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1765 switch (vk) { 1776 switch (vk) {
1766 case 0: 1777 case 0:
1767 dasm_put(Dst, 11422, LJ_TISNUM); 1778 dasm_put(Dst, 11515, LJ_TISNUM);
1768 if (sse) { 1779 if (sse) {
1769 dasm_put(Dst, 11534); 1780 dasm_put(Dst, 11627);
1770 } else { 1781 } else {
1771 dasm_put(Dst, 11548); 1782 dasm_put(Dst, 11641);
1772 } 1783 }
1773 break; 1784 break;
1774 case 1: 1785 case 1:
1775 dasm_put(Dst, 11456, LJ_TISNUM); 1786 dasm_put(Dst, 11549, LJ_TISNUM);
1776 if (sse) { 1787 if (sse) {
1777 dasm_put(Dst, 11556); 1788 dasm_put(Dst, 11649);
1778 } else { 1789 } else {
1779 dasm_put(Dst, 11570); 1790 dasm_put(Dst, 11663);
1780 } 1791 }
1781 break; 1792 break;
1782 default: 1793 default:
1783 dasm_put(Dst, 11490, LJ_TISNUM, LJ_TISNUM); 1794 dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM);
1784 if (sse) { 1795 if (sse) {
1785 dasm_put(Dst, 11578); 1796 dasm_put(Dst, 11671);
1786 } else { 1797 } else {
1787 dasm_put(Dst, 11592); 1798 dasm_put(Dst, 11685);
1788 } 1799 }
1789 break; 1800 break;
1790 } 1801 }
1791 if (sse) { 1802 if (sse) {
1792 dasm_put(Dst, 11288); 1803 dasm_put(Dst, 11381);
1793 } else { 1804 } else {
1794 dasm_put(Dst, 11300); 1805 dasm_put(Dst, 11393);
1795 } 1806 }
1796 dasm_put(Dst, 10870); 1807 dasm_put(Dst, 10963);
1797 break; 1808 break;
1798 case BC_MULVN: case BC_MULNV: case BC_MULVV: 1809 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1799 dasm_put(Dst, 11414); 1810 dasm_put(Dst, 11507);
1800 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1811 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1801 switch (vk) { 1812 switch (vk) {
1802 case 0: 1813 case 0:
1803 dasm_put(Dst, 11422, LJ_TISNUM); 1814 dasm_put(Dst, 11515, LJ_TISNUM);
1804 if (sse) { 1815 if (sse) {
1805 dasm_put(Dst, 11600); 1816 dasm_put(Dst, 11693);
1806 } else { 1817 } else {
1807 dasm_put(Dst, 11614); 1818 dasm_put(Dst, 11707);
1808 } 1819 }
1809 break; 1820 break;
1810 case 1: 1821 case 1:
1811 dasm_put(Dst, 11456, LJ_TISNUM); 1822 dasm_put(Dst, 11549, LJ_TISNUM);
1812 if (sse) { 1823 if (sse) {
1813 dasm_put(Dst, 11622); 1824 dasm_put(Dst, 11715);
1814 } else { 1825 } else {
1815 dasm_put(Dst, 11636); 1826 dasm_put(Dst, 11729);
1816 } 1827 }
1817 break; 1828 break;
1818 default: 1829 default:
1819 dasm_put(Dst, 11490, LJ_TISNUM, LJ_TISNUM); 1830 dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM);
1820 if (sse) { 1831 if (sse) {
1821 dasm_put(Dst, 11644); 1832 dasm_put(Dst, 11737);
1822 } else { 1833 } else {
1823 dasm_put(Dst, 11658); 1834 dasm_put(Dst, 11751);
1824 } 1835 }
1825 break; 1836 break;
1826 } 1837 }
1827 if (sse) { 1838 if (sse) {
1828 dasm_put(Dst, 11288); 1839 dasm_put(Dst, 11381);
1829 } else { 1840 } else {
1830 dasm_put(Dst, 11300); 1841 dasm_put(Dst, 11393);
1831 } 1842 }
1832 dasm_put(Dst, 10870); 1843 dasm_put(Dst, 10963);
1833 break; 1844 break;
1834 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 1845 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1835 dasm_put(Dst, 11414); 1846 dasm_put(Dst, 11507);
1836 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1847 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1837 switch (vk) { 1848 switch (vk) {
1838 case 0: 1849 case 0:
1839 dasm_put(Dst, 11422, LJ_TISNUM); 1850 dasm_put(Dst, 11515, LJ_TISNUM);
1840 if (sse) { 1851 if (sse) {
1841 dasm_put(Dst, 11666); 1852 dasm_put(Dst, 11759);
1842 } else { 1853 } else {
1843 dasm_put(Dst, 11680); 1854 dasm_put(Dst, 11773);
1844 } 1855 }
1845 break; 1856 break;
1846 case 1: 1857 case 1:
1847 dasm_put(Dst, 11456, LJ_TISNUM); 1858 dasm_put(Dst, 11549, LJ_TISNUM);
1848 if (sse) { 1859 if (sse) {
1849 dasm_put(Dst, 11688); 1860 dasm_put(Dst, 11781);
1850 } else { 1861 } else {
1851 dasm_put(Dst, 11702); 1862 dasm_put(Dst, 11795);
1852 } 1863 }
1853 break; 1864 break;
1854 default: 1865 default:
1855 dasm_put(Dst, 11490, LJ_TISNUM, LJ_TISNUM); 1866 dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM);
1856 if (sse) { 1867 if (sse) {
1857 dasm_put(Dst, 11710); 1868 dasm_put(Dst, 11803);
1858 } else { 1869 } else {
1859 dasm_put(Dst, 11724); 1870 dasm_put(Dst, 11817);
1860 } 1871 }
1861 break; 1872 break;
1862 } 1873 }
1863 if (sse) { 1874 if (sse) {
1864 dasm_put(Dst, 11288); 1875 dasm_put(Dst, 11381);
1865 } else { 1876 } else {
1866 dasm_put(Dst, 11300); 1877 dasm_put(Dst, 11393);
1867 } 1878 }
1868 dasm_put(Dst, 10870); 1879 dasm_put(Dst, 10963);
1869 break; 1880 break;
1870 case BC_MODVN: 1881 case BC_MODVN:
1871 dasm_put(Dst, 11414); 1882 dasm_put(Dst, 11507);
1872 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1883 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1873 switch (vk) { 1884 switch (vk) {
1874 case 0: 1885 case 0:
1875 dasm_put(Dst, 11422, LJ_TISNUM); 1886 dasm_put(Dst, 11515, LJ_TISNUM);
1876 if (sse) { 1887 if (sse) {
1877 dasm_put(Dst, 11732); 1888 dasm_put(Dst, 11825);
1878 } else { 1889 } else {
1879 dasm_put(Dst, 11746); 1890 dasm_put(Dst, 11839);
1880 } 1891 }
1881 break; 1892 break;
1882 case 1: 1893 case 1:
1883 dasm_put(Dst, 11456, LJ_TISNUM); 1894 dasm_put(Dst, 11549, LJ_TISNUM);
1884 if (sse) { 1895 if (sse) {
1885 dasm_put(Dst, 11754); 1896 dasm_put(Dst, 11847);
1886 } else { 1897 } else {
1887 dasm_put(Dst, 11768); 1898 dasm_put(Dst, 11861);
1888 } 1899 }
1889 break; 1900 break;
1890 default: 1901 default:
1891 dasm_put(Dst, 11490, LJ_TISNUM, LJ_TISNUM); 1902 dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM);
1892 if (sse) { 1903 if (sse) {
1893 dasm_put(Dst, 11776); 1904 dasm_put(Dst, 11869);
1894 } else { 1905 } else {
1895 dasm_put(Dst, 11790); 1906 dasm_put(Dst, 11883);
1896 } 1907 }
1897 break; 1908 break;
1898 } 1909 }
1899 dasm_put(Dst, 11798); 1910 dasm_put(Dst, 11891);
1900 if (sse) { 1911 if (sse) {
1901 dasm_put(Dst, 11288); 1912 dasm_put(Dst, 11381);
1902 } else { 1913 } else {
1903 dasm_put(Dst, 11300); 1914 dasm_put(Dst, 11393);
1904 } 1915 }
1905 dasm_put(Dst, 10870); 1916 dasm_put(Dst, 10963);
1906 break; 1917 break;
1907 case BC_MODNV: case BC_MODVV: 1918 case BC_MODNV: case BC_MODVV:
1908 dasm_put(Dst, 11414); 1919 dasm_put(Dst, 11507);
1909 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1920 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1910 switch (vk) { 1921 switch (vk) {
1911 case 0: 1922 case 0:
1912 dasm_put(Dst, 11422, LJ_TISNUM); 1923 dasm_put(Dst, 11515, LJ_TISNUM);
1913 if (sse) { 1924 if (sse) {
1914 dasm_put(Dst, 11732); 1925 dasm_put(Dst, 11825);
1915 } else { 1926 } else {
1916 dasm_put(Dst, 11746); 1927 dasm_put(Dst, 11839);
1917 } 1928 }
1918 break; 1929 break;
1919 case 1: 1930 case 1:
1920 dasm_put(Dst, 11456, LJ_TISNUM); 1931 dasm_put(Dst, 11549, LJ_TISNUM);
1921 if (sse) { 1932 if (sse) {
1922 dasm_put(Dst, 11754); 1933 dasm_put(Dst, 11847);
1923 } else { 1934 } else {
1924 dasm_put(Dst, 11768); 1935 dasm_put(Dst, 11861);
1925 } 1936 }
1926 break; 1937 break;
1927 default: 1938 default:
1928 dasm_put(Dst, 11490, LJ_TISNUM, LJ_TISNUM); 1939 dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM);
1929 if (sse) { 1940 if (sse) {
1930 dasm_put(Dst, 11776); 1941 dasm_put(Dst, 11869);
1931 } else { 1942 } else {
1932 dasm_put(Dst, 11790); 1943 dasm_put(Dst, 11883);
1933 } 1944 }
1934 break; 1945 break;
1935 } 1946 }
1936 dasm_put(Dst, 11804); 1947 dasm_put(Dst, 11897);
1937 break; 1948 break;
1938 case BC_POW: 1949 case BC_POW:
1939 dasm_put(Dst, 11414); 1950 dasm_put(Dst, 11507);
1940 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1951 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1941 switch (vk) { 1952 switch (vk) {
1942 case 0: 1953 case 0:
1943 dasm_put(Dst, 11422, LJ_TISNUM); 1954 dasm_put(Dst, 11515, LJ_TISNUM);
1944 if (sse) { 1955 if (sse) {
1945 dasm_put(Dst, 11732); 1956 dasm_put(Dst, 11825);
1946 } else { 1957 } else {
1947 dasm_put(Dst, 11746); 1958 dasm_put(Dst, 11839);
1948 } 1959 }
1949 break; 1960 break;
1950 case 1: 1961 case 1:
1951 dasm_put(Dst, 11456, LJ_TISNUM); 1962 dasm_put(Dst, 11549, LJ_TISNUM);
1952 if (sse) { 1963 if (sse) {
1953 dasm_put(Dst, 11754); 1964 dasm_put(Dst, 11847);
1954 } else { 1965 } else {
1955 dasm_put(Dst, 11768); 1966 dasm_put(Dst, 11861);
1956 } 1967 }
1957 break; 1968 break;
1958 default: 1969 default:
1959 dasm_put(Dst, 11490, LJ_TISNUM, LJ_TISNUM); 1970 dasm_put(Dst, 11583, LJ_TISNUM, LJ_TISNUM);
1960 if (sse) { 1971 if (sse) {
1961 dasm_put(Dst, 11776); 1972 dasm_put(Dst, 11869);
1962 } else { 1973 } else {
1963 dasm_put(Dst, 11790); 1974 dasm_put(Dst, 11883);
1964 } 1975 }
1965 break; 1976 break;
1966 } 1977 }
1967 dasm_put(Dst, 11809); 1978 dasm_put(Dst, 11902);
1968 if (sse) { 1979 if (sse) {
1969 dasm_put(Dst, 11288); 1980 dasm_put(Dst, 11381);
1970 } else { 1981 } else {
1971 dasm_put(Dst, 11300); 1982 dasm_put(Dst, 11393);
1972 } 1983 }
1973 dasm_put(Dst, 10870); 1984 dasm_put(Dst, 10963);
1974 break; 1985 break;
1975 1986
1976 case BC_CAT: 1987 case BC_CAT:
1977 dasm_put(Dst, 11813, Dt1(->base), Dt1(->base)); 1988 dasm_put(Dst, 11906, Dt1(->base), Dt1(->base));
1978 break; 1989 break;
1979 1990
1980 /* -- Constant ops ------------------------------------------------------ */ 1991 /* -- Constant ops ------------------------------------------------------ */
1981 1992
1982 case BC_KSTR: 1993 case BC_KSTR:
1983 dasm_put(Dst, 11907, LJ_TSTR); 1994 dasm_put(Dst, 12000, LJ_TSTR);
1984 break; 1995 break;
1985 case BC_KCDATA: 1996 case BC_KCDATA:
1986#if LJ_HASFFI 1997#if LJ_HASFFI
1987 dasm_put(Dst, 11907, LJ_TCDATA); 1998 dasm_put(Dst, 12000, LJ_TCDATA);
1988#endif 1999#endif
1989 break; 2000 break;
1990 case BC_KSHORT: 2001 case BC_KSHORT:
1991 if (sse) { 2002 if (sse) {
1992 dasm_put(Dst, 11940); 2003 dasm_put(Dst, 12033);
1993 } else { 2004 } else {
1994 dasm_put(Dst, 11955); 2005 dasm_put(Dst, 12048);
1995 } 2006 }
1996 dasm_put(Dst, 10870); 2007 dasm_put(Dst, 10963);
1997 break; 2008 break;
1998 case BC_KNUM: 2009 case BC_KNUM:
1999 if (sse) { 2010 if (sse) {
2000 dasm_put(Dst, 11963); 2011 dasm_put(Dst, 12056);
2001 } else { 2012 } else {
2002 dasm_put(Dst, 11976); 2013 dasm_put(Dst, 12069);
2003 } 2014 }
2004 dasm_put(Dst, 10870); 2015 dasm_put(Dst, 10963);
2005 break; 2016 break;
2006 case BC_KPRI: 2017 case BC_KPRI:
2007 dasm_put(Dst, 11983); 2018 dasm_put(Dst, 12076);
2008 break; 2019 break;
2009 case BC_KNIL: 2020 case BC_KNIL:
2010 dasm_put(Dst, 12009, LJ_TNIL); 2021 dasm_put(Dst, 12102, LJ_TNIL);
2011 break; 2022 break;
2012 2023
2013 /* -- Upvalue and function ops ------------------------------------------ */ 2024 /* -- Upvalue and function ops ------------------------------------------ */
2014 2025
2015 case BC_UGET: 2026 case BC_UGET:
2016 dasm_put(Dst, 12055, offsetof(GCfuncL, uvptr), DtA(->v)); 2027 dasm_put(Dst, 12148, offsetof(GCfuncL, uvptr), DtA(->v));
2017 break; 2028 break;
2018 case BC_USETV: 2029 case BC_USETV:
2019#define TV2MARKOFS \ 2030#define TV2MARKOFS \
2020 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 2031 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
2021 dasm_put(Dst, 12099, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 2032 dasm_put(Dst, 12192, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
2022 dasm_put(Dst, 12189); 2033 dasm_put(Dst, 12282);
2023 break; 2034 break;
2024#undef TV2MARKOFS 2035#undef TV2MARKOFS
2025 case BC_USETS: 2036 case BC_USETS:
2026 dasm_put(Dst, 12201, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 2037 dasm_put(Dst, 12294, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
2027 break; 2038 break;
2028 case BC_USETN: 2039 case BC_USETN:
2029 dasm_put(Dst, 12292); 2040 dasm_put(Dst, 12385);
2030 if (sse) { 2041 if (sse) {
2031 dasm_put(Dst, 12297); 2042 dasm_put(Dst, 12390);
2032 } else { 2043 } else {
2033 dasm_put(Dst, 11107); 2044 dasm_put(Dst, 11200);
2034 } 2045 }
2035 dasm_put(Dst, 12304, offsetof(GCfuncL, uvptr), DtA(->v)); 2046 dasm_put(Dst, 12397, offsetof(GCfuncL, uvptr), DtA(->v));
2036 if (sse) { 2047 if (sse) {
2037 dasm_put(Dst, 12313); 2048 dasm_put(Dst, 12406);
2038 } else { 2049 } else {
2039 dasm_put(Dst, 12319); 2050 dasm_put(Dst, 12412);
2040 } 2051 }
2041 dasm_put(Dst, 10870); 2052 dasm_put(Dst, 10963);
2042 break; 2053 break;
2043 case BC_USETP: 2054 case BC_USETP:
2044 dasm_put(Dst, 12322, offsetof(GCfuncL, uvptr), DtA(->v)); 2055 dasm_put(Dst, 12415, offsetof(GCfuncL, uvptr), DtA(->v));
2045 break; 2056 break;
2046 case BC_UCLO: 2057 case BC_UCLO:
2047 dasm_put(Dst, 12359, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 2058 dasm_put(Dst, 12452, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
2048 break; 2059 break;
2049 2060
2050 case BC_FNEW: 2061 case BC_FNEW:
2051 dasm_put(Dst, 12413, Dt1(->base), Dt1(->base), LJ_TFUNC); 2062 dasm_put(Dst, 12506, Dt1(->base), Dt1(->base), LJ_TFUNC);
2052 break; 2063 break;
2053 2064
2054 /* -- Table ops --------------------------------------------------------- */ 2065 /* -- Table ops --------------------------------------------------------- */
2055 2066
2056 case BC_TNEW: 2067 case BC_TNEW:
2057 dasm_put(Dst, 12484, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 2068 dasm_put(Dst, 12577, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
2058 break; 2069 break;
2059 case BC_TDUP: 2070 case BC_TDUP:
2060 dasm_put(Dst, 12610, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2071 dasm_put(Dst, 12703, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
2061 break; 2072 break;
2062 2073
2063 case BC_GGET: 2074 case BC_GGET:
2064 dasm_put(Dst, 12702, Dt7(->env)); 2075 dasm_put(Dst, 12795, Dt7(->env));
2065 break; 2076 break;
2066 case BC_GSET: 2077 case BC_GSET:
2067 dasm_put(Dst, 12720, Dt7(->env)); 2078 dasm_put(Dst, 12813, Dt7(->env));
2068 break; 2079 break;
2069 2080
2070 case BC_TGETV: 2081 case BC_TGETV:
2071 dasm_put(Dst, 12738, LJ_TTAB, LJ_TISNUM); 2082 dasm_put(Dst, 12831, LJ_TTAB, LJ_TISNUM);
2072 if (sse) { 2083 if (sse) {
2073 dasm_put(Dst, 12771); 2084 dasm_put(Dst, 12864);
2074 } else { 2085 } else {
2075 dasm_put(Dst, 12792); 2086 dasm_put(Dst, 12885);
2076 if (cmov) { 2087 if (cmov) {
2077 dasm_put(Dst, 10833); 2088 dasm_put(Dst, 10926);
2078 } else { 2089 } else {
2079 dasm_put(Dst, 10839); 2090 dasm_put(Dst, 10932);
2080 } 2091 }
2081 dasm_put(Dst, 2539); 2092 dasm_put(Dst, 2539);
2082 } 2093 }
2083 dasm_put(Dst, 12802, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2094 dasm_put(Dst, 12895, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2084 dasm_put(Dst, 12890, LJ_TNIL, LJ_TSTR); 2095 dasm_put(Dst, 12983, LJ_TNIL, LJ_TSTR);
2085 break; 2096 break;
2086 case BC_TGETS: 2097 case BC_TGETS:
2087 dasm_put(Dst, 12919, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2098 dasm_put(Dst, 13012, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2088 dasm_put(Dst, 13007, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2099 dasm_put(Dst, 13100, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2089 break; 2100 break;
2090 case BC_TGETB: 2101 case BC_TGETB:
2091 dasm_put(Dst, 13077, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2102 dasm_put(Dst, 13170, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2092 dasm_put(Dst, 13176, LJ_TNIL); 2103 dasm_put(Dst, 13269, LJ_TNIL);
2093 break; 2104 break;
2094 2105
2095 case BC_TSETV: 2106 case BC_TSETV:
2096 dasm_put(Dst, 13193, LJ_TTAB, LJ_TISNUM); 2107 dasm_put(Dst, 13286, LJ_TTAB, LJ_TISNUM);
2097 if (sse) { 2108 if (sse) {
2098 dasm_put(Dst, 12771); 2109 dasm_put(Dst, 12864);
2099 } else { 2110 } else {
2100 dasm_put(Dst, 12792); 2111 dasm_put(Dst, 12885);
2101 if (cmov) { 2112 if (cmov) {
2102 dasm_put(Dst, 10833); 2113 dasm_put(Dst, 10926);
2103 } else { 2114 } else {
2104 dasm_put(Dst, 10839); 2115 dasm_put(Dst, 10932);
2105 } 2116 }
2106 dasm_put(Dst, 2539); 2117 dasm_put(Dst, 2539);
2107 } 2118 }
2108 dasm_put(Dst, 13226, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 2119 dasm_put(Dst, 13319, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
2109 dasm_put(Dst, 13309, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2120 dasm_put(Dst, 13402, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2110 break; 2121 break;
2111 case BC_TSETS: 2122 case BC_TSETS:
2112 dasm_put(Dst, 13371, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2123 dasm_put(Dst, 13464, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2113 dasm_put(Dst, 13446, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 2124 dasm_put(Dst, 13539, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
2114 dasm_put(Dst, 13538, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2125 dasm_put(Dst, 13631, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2115 break; 2126 break;
2116 case BC_TSETB: 2127 case BC_TSETB:
2117 dasm_put(Dst, 13634, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 2128 dasm_put(Dst, 13727, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
2118 dasm_put(Dst, 13732, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2129 dasm_put(Dst, 13825, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2119 break; 2130 break;
2120 2131
2121 case BC_TSETM: 2132 case BC_TSETM:
2122 dasm_put(Dst, 13778, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); 2133 dasm_put(Dst, 13871, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
2123 dasm_put(Dst, 13927, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2134 dasm_put(Dst, 14020, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2124 break; 2135 break;
2125 2136
2126 /* -- Calls and vararg handling ----------------------------------------- */ 2137 /* -- Calls and vararg handling ----------------------------------------- */
2127 2138
2128 case BC_CALL: case BC_CALLM: 2139 case BC_CALL: case BC_CALLM:
2129 dasm_put(Dst, 11418); 2140 dasm_put(Dst, 11511);
2130 if (op == BC_CALLM) { 2141 if (op == BC_CALLM) {
2131 dasm_put(Dst, 13945); 2142 dasm_put(Dst, 14038);
2132 } 2143 }
2133 dasm_put(Dst, 13950, LJ_TFUNC, Dt7(->pc)); 2144 dasm_put(Dst, 14043, LJ_TFUNC, Dt7(->pc));
2134 break; 2145 break;
2135 2146
2136 case BC_CALLMT: 2147 case BC_CALLMT:
2137 dasm_put(Dst, 13945); 2148 dasm_put(Dst, 14038);
2138 break; 2149 break;
2139 case BC_CALLT: 2150 case BC_CALLT:
2140 dasm_put(Dst, 13991, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); 2151 dasm_put(Dst, 14084, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
2141 dasm_put(Dst, 14109, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); 2152 dasm_put(Dst, 14202, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
2142 break; 2153 break;
2143 2154
2144 case BC_ITERC: 2155 case BC_ITERC:
2145 dasm_put(Dst, 14179, LJ_TFUNC, 2+1, Dt7(->pc)); 2156 dasm_put(Dst, 14272, LJ_TFUNC, 2+1, Dt7(->pc));
2146 break; 2157 break;
2147 2158
2148 case BC_ITERN: 2159 case BC_ITERN:
2149#if LJ_HASJIT 2160#if LJ_HASJIT
2150#endif 2161#endif
2151 dasm_put(Dst, 14259, Dt6(->asize), Dt6(->array), LJ_TNIL); 2162 dasm_put(Dst, 14352, Dt6(->asize), Dt6(->array), LJ_TNIL);
2152 if (sse) { 2163 if (sse) {
2153 dasm_put(Dst, 14305); 2164 dasm_put(Dst, 14398);
2154 } else { 2165 } else {
2155 dasm_put(Dst, 14311); 2166 dasm_put(Dst, 14404);
2156 } 2167 }
2157 dasm_put(Dst, 14317); 2168 dasm_put(Dst, 14410);
2158 if (sse) { 2169 if (sse) {
2159 dasm_put(Dst, 11288); 2170 dasm_put(Dst, 11381);
2160 } else { 2171 } else {
2161 dasm_put(Dst, 11300); 2172 dasm_put(Dst, 11393);
2162 } 2173 }
2163 dasm_put(Dst, 14336, -BCBIAS_J*4); 2174 dasm_put(Dst, 14429, -BCBIAS_J*4);
2164 if (!sse) { 2175 if (!sse) {
2165 dasm_put(Dst, 14387); 2176 dasm_put(Dst, 14480);
2166 } 2177 }
2167 dasm_put(Dst, 14393, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key.gcr), DtB(->key.it), DtB(->val.gcr), DtB(->val.it)); 2178 dasm_put(Dst, 14486, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key.gcr), DtB(->key.it), DtB(->val.gcr), DtB(->val.it));
2168 dasm_put(Dst, 14468); 2179 dasm_put(Dst, 14561);
2169 break; 2180 break;
2170 2181
2171 case BC_ISNEXT: 2182 case BC_ISNEXT:
2172 dasm_put(Dst, 14476, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); 2183 dasm_put(Dst, 14569, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
2173 break; 2184 break;
2174 2185
2175 case BC_VARG: 2186 case BC_VARG:
2176 dasm_put(Dst, 14575, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); 2187 dasm_put(Dst, 14668, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
2177 dasm_put(Dst, 14739, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2188 dasm_put(Dst, 14832, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2178 break; 2189 break;
2179 2190
2180 /* -- Returns ----------------------------------------------------------- */ 2191 /* -- Returns ----------------------------------------------------------- */
2181 2192
2182 case BC_RETM: 2193 case BC_RETM:
2183 dasm_put(Dst, 13945); 2194 dasm_put(Dst, 14038);
2184 break; 2195 break;
2185 2196
2186 case BC_RET: case BC_RET0: case BC_RET1: 2197 case BC_RET: case BC_RET0: case BC_RET1:
2187 if (op != BC_RET0) { 2198 if (op != BC_RET0) {
2188 dasm_put(Dst, 14810); 2199 dasm_put(Dst, 14903);
2189 } 2200 }
2190 dasm_put(Dst, 14814, FRAME_TYPE); 2201 dasm_put(Dst, 14907, FRAME_TYPE);
2191 switch (op) { 2202 switch (op) {
2192 case BC_RET: 2203 case BC_RET:
2193 dasm_put(Dst, 14833); 2204 dasm_put(Dst, 14926);
2194 break; 2205 break;
2195 case BC_RET1: 2206 case BC_RET1:
2196 dasm_put(Dst, 14891); 2207 dasm_put(Dst, 14984);
2197 /* fallthrough */ 2208 /* fallthrough */
2198 case BC_RET0: 2209 case BC_RET0:
2199 dasm_put(Dst, 14907); 2210 dasm_put(Dst, 15000);
2200 default: 2211 default:
2201 break; 2212 break;
2202 } 2213 }
2203 dasm_put(Dst, 14918, Dt7(->pc), PC2PROTO(k)); 2214 dasm_put(Dst, 15011, Dt7(->pc), PC2PROTO(k));
2204 if (op == BC_RET) { 2215 if (op == BC_RET) {
2205 dasm_put(Dst, 14960, LJ_TNIL); 2216 dasm_put(Dst, 15053, LJ_TNIL);
2206 } else { 2217 } else {
2207 dasm_put(Dst, 14969, LJ_TNIL); 2218 dasm_put(Dst, 15062, LJ_TNIL);
2208 } 2219 }
2209 dasm_put(Dst, 14976, -FRAME_VARG, FRAME_TYPEP); 2220 dasm_put(Dst, 15069, -FRAME_VARG, FRAME_TYPEP);
2210 if (op != BC_RET0) { 2221 if (op != BC_RET0) {
2211 dasm_put(Dst, 15000); 2222 dasm_put(Dst, 15093);
2212 } 2223 }
2213 dasm_put(Dst, 4704); 2224 dasm_put(Dst, 4704);
2214 break; 2225 break;
@@ -2218,7 +2229,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2218 2229
2219 case BC_FORL: 2230 case BC_FORL:
2220#if LJ_HASJIT 2231#if LJ_HASJIT
2221 dasm_put(Dst, 15004, HOTCOUNT_PCMASK, GG_DISP2HOT); 2232 dasm_put(Dst, 15097, HOTCOUNT_PCMASK, GG_DISP2HOT);
2222#endif 2233#endif
2223 break; 2234 break;
2224 2235
@@ -2230,57 +2241,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2230 case BC_FORI: 2241 case BC_FORI:
2231 case BC_IFORL: 2242 case BC_IFORL:
2232 vk = (op == BC_IFORL || op == BC_JFORL); 2243 vk = (op == BC_IFORL || op == BC_JFORL);
2233 dasm_put(Dst, 15025); 2244 dasm_put(Dst, 15118);
2234 if (!vk) { 2245 if (!vk) {
2235 dasm_put(Dst, 15029, LJ_TISNUM, LJ_TISNUM); 2246 dasm_put(Dst, 15122, LJ_TISNUM, LJ_TISNUM);
2236 } 2247 }
2237 dasm_put(Dst, 15048); 2248 dasm_put(Dst, 15141);
2238 if (!vk) { 2249 if (!vk) {
2239 dasm_put(Dst, 15052, LJ_TISNUM); 2250 dasm_put(Dst, 15145, LJ_TISNUM);
2240 } 2251 }
2241 if (sse) { 2252 if (sse) {
2242 dasm_put(Dst, 15061); 2253 dasm_put(Dst, 15154);
2243 if (vk) { 2254 if (vk) {
2244 dasm_put(Dst, 15073); 2255 dasm_put(Dst, 15166);
2245 } else { 2256 } else {
2246 dasm_put(Dst, 15092); 2257 dasm_put(Dst, 15185);
2247 } 2258 }
2248 dasm_put(Dst, 15097); 2259 dasm_put(Dst, 15190);
2249 } else { 2260 } else {
2250 dasm_put(Dst, 15110); 2261 dasm_put(Dst, 15203);
2251 if (vk) { 2262 if (vk) {
2252 dasm_put(Dst, 15116); 2263 dasm_put(Dst, 15209);
2253 } else { 2264 } else {
2254 dasm_put(Dst, 15132); 2265 dasm_put(Dst, 15225);
2255 } 2266 }
2256 dasm_put(Dst, 15140); 2267 dasm_put(Dst, 15233);
2257 if (cmov) { 2268 if (cmov) {
2258 dasm_put(Dst, 10833); 2269 dasm_put(Dst, 10926);
2259 } else { 2270 } else {
2260 dasm_put(Dst, 10839); 2271 dasm_put(Dst, 10932);
2261 } 2272 }
2262 if (!cmov) { 2273 if (!cmov) {
2263 dasm_put(Dst, 15145); 2274 dasm_put(Dst, 15238);
2264 } 2275 }
2265 } 2276 }
2266 if (op == BC_FORI) { 2277 if (op == BC_FORI) {
2267 dasm_put(Dst, 15151, -BCBIAS_J*4); 2278 dasm_put(Dst, 15244, -BCBIAS_J*4);
2268 } else if (op == BC_JFORI) { 2279 } else if (op == BC_JFORI) {
2269 dasm_put(Dst, 15161, -BCBIAS_J*4, BC_JLOOP); 2280 dasm_put(Dst, 15254, -BCBIAS_J*4, BC_JLOOP);
2270 } else if (op == BC_IFORL) { 2281 } else if (op == BC_IFORL) {
2271 dasm_put(Dst, 15175, -BCBIAS_J*4); 2282 dasm_put(Dst, 15268, -BCBIAS_J*4);
2272 } else { 2283 } else {
2273 dasm_put(Dst, 15171, BC_JLOOP); 2284 dasm_put(Dst, 15264, BC_JLOOP);
2274 } 2285 }
2275 dasm_put(Dst, 10868); 2286 dasm_put(Dst, 10961);
2276 if (sse) { 2287 if (sse) {
2277 dasm_put(Dst, 15185); 2288 dasm_put(Dst, 15278);
2278 } 2289 }
2279 break; 2290 break;
2280 2291
2281 case BC_ITERL: 2292 case BC_ITERL:
2282#if LJ_HASJIT 2293#if LJ_HASJIT
2283 dasm_put(Dst, 15004, HOTCOUNT_PCMASK, GG_DISP2HOT); 2294 dasm_put(Dst, 15097, HOTCOUNT_PCMASK, GG_DISP2HOT);
2284#endif 2295#endif
2285 break; 2296 break;
2286 2297
@@ -2289,33 +2300,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2289 break; 2300 break;
2290#endif 2301#endif
2291 case BC_IITERL: 2302 case BC_IITERL:
2292 dasm_put(Dst, 15196, LJ_TNIL); 2303 dasm_put(Dst, 15289, LJ_TNIL);
2293 if (op == BC_JITERL) { 2304 if (op == BC_JITERL) {
2294 dasm_put(Dst, 15211, BC_JLOOP); 2305 dasm_put(Dst, 15304, BC_JLOOP);
2295 } else { 2306 } else {
2296 dasm_put(Dst, 15225, -BCBIAS_J*4); 2307 dasm_put(Dst, 15318, -BCBIAS_J*4);
2297 } 2308 }
2298 dasm_put(Dst, 11165); 2309 dasm_put(Dst, 11258);
2299 break; 2310 break;
2300 2311
2301 case BC_LOOP: 2312 case BC_LOOP:
2302#if LJ_HASJIT 2313#if LJ_HASJIT
2303 dasm_put(Dst, 15004, HOTCOUNT_PCMASK, GG_DISP2HOT); 2314 dasm_put(Dst, 15097, HOTCOUNT_PCMASK, GG_DISP2HOT);
2304#endif 2315#endif
2305 break; 2316 break;
2306 2317
2307 case BC_ILOOP: 2318 case BC_ILOOP:
2308 dasm_put(Dst, 10870); 2319 dasm_put(Dst, 10963);
2309 break; 2320 break;
2310 2321
2311 case BC_JLOOP: 2322 case BC_JLOOP:
2312#if LJ_HASJIT 2323#if LJ_HASJIT
2313 dasm_put(Dst, 15241, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 2324 dasm_put(Dst, 15334, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
2314#endif 2325#endif
2315 break; 2326 break;
2316 2327
2317 case BC_JMP: 2328 case BC_JMP:
2318 dasm_put(Dst, 15264, -BCBIAS_J*4); 2329 dasm_put(Dst, 15357, -BCBIAS_J*4);
2319 break; 2330 break;
2320 2331
2321 /* -- Function headers -------------------------------------------------- */ 2332 /* -- Function headers -------------------------------------------------- */
@@ -2329,7 +2340,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2329 2340
2330 case BC_FUNCF: 2341 case BC_FUNCF:
2331#if LJ_HASJIT 2342#if LJ_HASJIT
2332 dasm_put(Dst, 15288, HOTCOUNT_PCMASK, GG_DISP2HOT); 2343 dasm_put(Dst, 15381, HOTCOUNT_PCMASK, GG_DISP2HOT);
2333#endif 2344#endif
2334 case BC_FUNCV: /* NYI: compiled vararg functions. */ 2345 case BC_FUNCV: /* NYI: compiled vararg functions. */
2335 break; 2346 break;
@@ -2339,13 +2350,13 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2339 break; 2350 break;
2340#endif 2351#endif
2341 case BC_IFUNCF: 2352 case BC_IFUNCF:
2342 dasm_put(Dst, 15309, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); 2353 dasm_put(Dst, 15402, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2343 if (op == BC_JFUNCF) { 2354 if (op == BC_JFUNCF) {
2344 dasm_put(Dst, 15339, BC_JLOOP); 2355 dasm_put(Dst, 15432, BC_JLOOP);
2345 } else { 2356 } else {
2346 dasm_put(Dst, 10870); 2357 dasm_put(Dst, 10963);
2347 } 2358 }
2348 dasm_put(Dst, 15348, LJ_TNIL); 2359 dasm_put(Dst, 15441, LJ_TNIL);
2349 break; 2360 break;
2350 2361
2351 case BC_JFUNCV: 2362 case BC_JFUNCV:
@@ -2356,30 +2367,30 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2356 break; /* NYI: compiled vararg functions. */ 2367 break; /* NYI: compiled vararg functions. */
2357 2368
2358 case BC_IFUNCV: 2369 case BC_IFUNCV:
2359 dasm_put(Dst, 15370, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); 2370 dasm_put(Dst, 15463, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2360 if (op == BC_JFUNCV) { 2371 if (op == BC_JFUNCV) {
2361 dasm_put(Dst, 15339, BC_JLOOP); 2372 dasm_put(Dst, 15432, BC_JLOOP);
2362 } else { 2373 } else {
2363 dasm_put(Dst, 15461, -4+PC2PROTO(k)); 2374 dasm_put(Dst, 15554, -4+PC2PROTO(k));
2364 } 2375 }
2365 dasm_put(Dst, 15483, LJ_TNIL); 2376 dasm_put(Dst, 15576, LJ_TNIL);
2366 break; 2377 break;
2367 2378
2368 case BC_FUNCC: 2379 case BC_FUNCC:
2369 case BC_FUNCCW: 2380 case BC_FUNCCW:
2370 dasm_put(Dst, 15505, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); 2381 dasm_put(Dst, 15598, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2371 if (op == BC_FUNCC) { 2382 if (op == BC_FUNCC) {
2372 dasm_put(Dst, 15534); 2383 dasm_put(Dst, 15627);
2373 } else { 2384 } else {
2374 dasm_put(Dst, 15538); 2385 dasm_put(Dst, 15631);
2375 } 2386 }
2376 dasm_put(Dst, 15546, DISPATCH_GL(vmstate), ~LJ_VMST_C); 2387 dasm_put(Dst, 15639, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2377 if (op == BC_FUNCC) { 2388 if (op == BC_FUNCC) {
2378 dasm_put(Dst, 15555); 2389 dasm_put(Dst, 15648);
2379 } else { 2390 } else {
2380 dasm_put(Dst, 15559, DISPATCH_GL(wrapf)); 2391 dasm_put(Dst, 15652, DISPATCH_GL(wrapf));
2381 } 2392 }
2382 dasm_put(Dst, 15564, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 2393 dasm_put(Dst, 15657, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2383 break; 2394 break;
2384 2395
2385 /* ---------------------------------------------------------------------- */ 2396 /* ---------------------------------------------------------------------- */
@@ -2407,7 +2418,7 @@ static int build_backend(BuildCtx *ctx)
2407 2418
2408 build_subroutines(ctx, cmov, sse); 2419 build_subroutines(ctx, cmov, sse);
2409 2420
2410 dasm_put(Dst, 15589); 2421 dasm_put(Dst, 15682);
2411 for (op = 0; op < BC__MAX; op++) 2422 for (op = 0; op < BC__MAX; op++)
2412 build_ins(ctx, (BCOp)op, op, cmov, sse); 2423 build_ins(ctx, (BCOp)op, op, cmov, sse);
2413 2424