aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2010-01-02 17:42:11 +0100
committerMike Pall <mike>2010-01-02 17:42:11 +0100
commit93ee10642e285f972daff59492c05aa04dc2aa86 (patch)
treed1bb1c4060419a5cfbfed6f5e79b042d1720ec24 /src
parent8fc9430d067e255202f6b89fae7065bc50e0c668 (diff)
downloadluajit-93ee10642e285f972daff59492c05aa04dc2aa86.tar.gz
luajit-93ee10642e285f972daff59492c05aa04dc2aa86.tar.bz2
luajit-93ee10642e285f972daff59492c05aa04dc2aa86.zip
Major rewrite of error handling to allow external/internal unwinding.
Make external unwinding the default on x64. It's mandatory on WIN64 due to the abundance of callee-saved regs. Allow piecewise internal frame unwinding and optional cleanup. Store ERRMEM, ERRERR and ERRCPP early and copy down later. Use FRAME_CP for lj_vm_resume. Add lj_vm_unwind_*_eh variants as landing pads for external unwinder. Use fastcall for lj_vm_unwind_*. Can drop r12/r13 saves in POSIX/x64 interpreter now.
Diffstat (limited to 'src')
-rw-r--r--src/buildvm_x86.dasc30
-rw-r--r--src/buildvm_x86.h1636
-rw-r--r--src/lj_err.c399
-rw-r--r--src/lj_err.h1
-rw-r--r--src/lj_frame.h2
-rw-r--r--src/lj_vm.h6
6 files changed, 1107 insertions, 967 deletions
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc
index b9dddd1f..f19ecbc0 100644
--- a/src/buildvm_x86.dasc
+++ b/src/buildvm_x86.dasc
@@ -213,18 +213,16 @@
213| 213|
214|.define CFRAME_SPACE, aword*5 // Delta for rsp (see <--). 214|.define CFRAME_SPACE, aword*5 // Delta for rsp (see <--).
215|.macro saveregs 215|.macro saveregs
216| push rbp; push rbx; push r15; push r14; push r13; push r12 216| push rbp; push rbx; push r15; push r14
217| sub rsp, CFRAME_SPACE 217| sub rsp, CFRAME_SPACE
218|.endmacro 218|.endmacro
219|.macro restoreregs 219|.macro restoreregs
220| add rsp, CFRAME_SPACE 220| add rsp, CFRAME_SPACE
221| pop r12; pop r13; pop r14; pop r15; pop rbx; pop rbp 221| pop r14; pop r15; pop rbx; pop rbp
222|.endmacro 222|.endmacro
223| 223|
224|//----- 16 byte aligned, 224|//----- 16 byte aligned,
225|.define SAVE_RET, aword [rsp+aword*11] //<-- rsp entering interpreter. 225|.define SAVE_RET, aword [rsp+aword*9] //<-- rsp entering interpreter.
226|.define SAVE_R6, aword [rsp+aword*10]
227|.define SAVE_R5, aword [rsp+aword*9]
228|.define SAVE_R4, aword [rsp+aword*8] 226|.define SAVE_R4, aword [rsp+aword*8]
229|.define SAVE_R3, aword [rsp+aword*7] 227|.define SAVE_R3, aword [rsp+aword*7]
230|.define SAVE_R2, aword [rsp+aword*6] 228|.define SAVE_R2, aword [rsp+aword*6]
@@ -621,10 +619,10 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
621 | mov eax, CARG2d // Error return status for vm_pcall. 619 | mov eax, CARG2d // Error return status for vm_pcall.
622 | mov rsp, CARG1 620 | mov rsp, CARG1
623 |.else 621 |.else
624 | mov ecx, [esp+4] 622 | mov eax, FCARG2 // Error return status for vm_pcall.
625 | mov eax, [esp+8] // Error return status for vm_pcall. 623 | mov esp, FCARG1
626 | mov esp, ecx
627 |.endif 624 |.endif
625 |->vm_unwind_c_eh: // Landing pad for external unwinder.
628 | mov L:RB, SAVE_L 626 | mov L:RB, SAVE_L
629 | mov GL:RB, L:RB->glref 627 | mov GL:RB, L:RB->glref
630 | mov dword GL:RB->vmstate, ~LJ_VMST_C 628 | mov dword GL:RB->vmstate, ~LJ_VMST_C
@@ -636,10 +634,10 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
636 | and CARG1, CFRAME_RAWMASK 634 | and CARG1, CFRAME_RAWMASK
637 | mov rsp, CARG1 635 | mov rsp, CARG1
638 |.else 636 |.else
639 | mov ecx, [esp+4] 637 | and FCARG1, CFRAME_RAWMASK
640 | and ecx, CFRAME_RAWMASK 638 | mov esp, FCARG1
641 | mov esp, ecx
642 |.endif 639 |.endif
640 |->vm_unwind_ff_eh: // Landing pad for external unwinder.
643 | mov L:RB, SAVE_L 641 | mov L:RB, SAVE_L
644 | mov RAa, -8 // Results start at BASE+RA = BASE-8. 642 | mov RAa, -8 // Results start at BASE+RA = BASE-8.
645 | mov RD, 1+1 // Really 1+2 results, incr. later. 643 | mov RD, 1+1 // Really 1+2 results, incr. later.
@@ -718,7 +716,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
718 | mov L:RB, SAVE_L 716 | mov L:RB, SAVE_L
719 | mov RA, INARG_BASE // Caveat: overlaps SAVE_CFRAME! 717 | mov RA, INARG_BASE // Caveat: overlaps SAVE_CFRAME!
720 |.endif 718 |.endif
721 | mov PC, FRAME_C 719 | mov PC, FRAME_CP
722 | xor RD, RD 720 | xor RD, RD
723 | lea KBASEa, [esp+CFRAME_RESUME] 721 | lea KBASEa, [esp+CFRAME_RESUME]
724 | mov DISPATCH, L:RB->glref // Setup pointer to dispatch table. 722 | mov DISPATCH, L:RB->glref // Setup pointer to dispatch table.
@@ -4689,7 +4687,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
4689 | movsd FOR_IDX, xmm0 4687 | movsd FOR_IDX, xmm0
4690 | test RB, RB; js >3 4688 | test RB, RB; js >3
4691 } else { 4689 } else {
4692 | jl >3 4690 | jl >3
4693 } 4691 }
4694 | ucomisd xmm1, xmm0 4692 | ucomisd xmm1, xmm0
4695 |1: 4693 |1:
@@ -4876,8 +4874,6 @@ static void emit_asm_debug(BuildCtx *ctx)
4876 "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ 4874 "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */
4877 "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */ 4875 "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */
4878 "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */ 4876 "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */
4879 "\t.byte 0x8d\n\t.uleb128 0x6\n" /* offset r13 */
4880 "\t.byte 0x8c\n\t.uleb128 0x7\n" /* offset r12 */
4881#else 4877#else
4882 "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */ 4878 "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */
4883 "\t.byte 0x87\n\t.uleb128 0x3\n" /* offset edi */ 4879 "\t.byte 0x87\n\t.uleb128 0x3\n" /* offset edi */
@@ -4919,8 +4915,6 @@ static void emit_asm_debug(BuildCtx *ctx)
4919 "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ 4915 "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */
4920 "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */ 4916 "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */
4921 "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */ 4917 "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */
4922 "\t.byte 0x8d\n\t.uleb128 0x6\n" /* offset r13 */
4923 "\t.byte 0x8c\n\t.uleb128 0x7\n" /* offset r12 */
4924#else 4918#else
4925 "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */ 4919 "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */
4926 "\t.byte 0x87\n\t.uleb128 0x3\n" /* offset edi */ 4920 "\t.byte 0x87\n\t.uleb128 0x3\n" /* offset edi */
@@ -4971,8 +4965,6 @@ static void emit_asm_debug(BuildCtx *ctx)
4971 "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ 4965 "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */
4972 "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */ 4966 "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */
4973 "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */ 4967 "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */
4974 "\t.byte 0x8d\n\t.uleb128 0x6\n" /* offset r13 */
4975 "\t.byte 0x8c\n\t.uleb128 0x7\n" /* offset r12 */
4976#else 4968#else
4977 "\t.byte 0x84\n\t.byte 0x2\n" /* offset ebp (4 for MACH-O)*/ 4969 "\t.byte 0x84\n\t.byte 0x2\n" /* offset ebp (4 for MACH-O)*/
4978 "\t.byte 0x87\n\t.byte 0x3\n" /* offset edi */ 4970 "\t.byte 0x87\n\t.byte 0x3\n" /* offset edi */
diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h
index 0affad6a..8ae53756 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[15191] = { 15static const unsigned char build_actionlist[15185] = {
16 254,1,248,10,137,202,139,173,233,137,114,252,252,15,182,141,233,139,181,233, 16 254,1,248,10,137,202,139,173,233,137,114,252,252,15,182,141,233,139,181,233,
17 139,189,233,139,108,36,48,141,12,202,141,68,194,252,252,59,141,233,15,135, 17 139,189,233,139,108,36,48,141,12,202,141,68,194,252,252,59,141,233,15,135,
18 244,11,248,9,189,237,248,1,137,40,137,104,8,131,192,16,57,200,15,130,244, 18 244,11,248,9,189,237,248,1,137,40,137,104,8,131,192,16,57,200,15,130,244,
@@ -40,138 +40,138 @@ static const unsigned char build_actionlist[15191] = {
40 15,135,244,254,199,66,252,252,237,131,194,8,131,192,1,252,233,244,4,248,7, 40 15,135,244,254,199,66,252,252,237,131,194,8,131,192,1,252,233,244,4,248,7,
41 133,201,15,132,244,5,41,193,141,20,202,252,233,244,5,248,8,137,149,233,255, 41 133,201,15,132,244,5,41,193,141,20,202,252,233,244,5,248,8,137,149,233,255,
42 137,68,36,20,137,202,137,252,233,232,251,1,0,139,149,233,252,233,244,3,248, 42 137,68,36,20,137,202,137,252,233,232,251,1,0,139,149,233,252,233,244,3,248,
43 23,139,76,36,4,139,68,36,8,137,204,139,108,36,48,139,173,233,199,133,233, 43 23,137,208,137,204,248,24,139,108,36,48,139,173,233,199,133,233,237,252,233,
44 237,252,233,244,22,248,24,139,76,36,4,129,225,239,137,204,139,108,36,48,185, 44 244,22,248,25,129,225,239,137,204,248,26,139,108,36,48,185,252,248,252,255,
45 252,248,252,255,252,255,252,255,184,237,139,149,233,139,157,233,129,195,239, 45 252,255,252,255,184,237,139,149,233,139,157,233,129,195,239,139,114,252,252,
46 139,114,252,252,199,66,252,252,237,199,131,233,237,252,233,244,16,248,20, 46 199,66,252,252,237,199,131,233,237,255,252,233,244,16,248,20,252,247,198,
47 255,252,247,198,237,15,132,244,25,131,230,252,248,41,252,242,141,76,49,252, 47 237,15,132,244,27,131,230,252,248,41,252,242,141,76,49,252,248,139,114,252,
48 248,139,114,252,252,199,68,10,4,237,252,233,244,16,248,15,186,237,252,233, 48 252,199,68,10,4,237,252,233,244,16,248,15,186,237,252,233,244,247,248,13,
49 244,247,248,13,131,232,8,137,202,137,252,249,139,181,233,139,108,36,48,248, 49 131,232,8,137,202,137,252,249,139,181,233,139,108,36,48,248,11,131,232,4,
50 11,131,232,4,41,209,193,252,233,3,131,198,4,137,149,233,137,133,233,137,116, 50 41,209,193,252,233,3,131,198,4,137,149,233,137,133,233,137,116,36,24,137,
51 36,24,137,202,248,1,137,252,233,232,251,1,0,139,141,233,139,133,233,139,105, 51 202,248,1,137,252,233,232,251,1,0,139,141,233,255,139,133,233,139,105,252,
52 252,248,139,113,252,252,41,200,193,232,3,131,192,1,252,255,165,233,248,26, 52 248,139,113,252,252,41,200,193,232,3,131,192,1,252,255,165,233,248,28,85,
53 255,85,87,86,83,131,252,236,28,139,108,36,48,139,76,36,52,190,237,49,192, 53 87,86,83,131,252,236,28,139,108,36,48,139,76,36,52,190,237,49,192,141,188,
54 141,188,253,36,233,139,157,233,129,195,239,137,189,233,137,68,36,24,137,68, 54 253,36,233,139,157,233,129,195,239,137,189,233,137,68,36,24,137,68,36,52,
55 36,52,56,133,233,15,132,244,249,199,131,233,237,136,133,233,139,149,233,139, 55 56,133,233,15,132,244,249,199,131,233,237,136,133,233,139,149,233,139,133,
56 133,233,41,200,193,232,3,131,192,1,41,209,139,114,252,252,137,68,36,20,252, 56 233,41,200,193,232,3,131,192,1,41,209,139,114,252,252,137,68,36,20,252,247,
57 247,198,237,15,132,244,17,252,233,244,18,248,27,85,87,86,83,131,252,236,28, 57 198,237,15,132,244,17,252,233,244,18,248,29,255,85,87,86,83,131,252,236,28,
58 190,237,255,252,233,244,247,248,28,85,87,86,83,131,252,236,28,190,237,248, 58 190,237,252,233,244,247,248,30,85,87,86,83,131,252,236,28,190,237,248,1,139,
59 1,139,108,36,48,139,76,36,52,248,2,139,189,233,137,124,36,52,137,108,36,24, 59 108,36,48,139,76,36,52,248,2,139,189,233,137,124,36,52,137,108,36,24,137,
60 137,165,233,139,157,233,129,195,239,248,3,199,131,233,237,139,149,233,1,206, 60 165,233,139,157,233,129,195,239,248,3,199,131,233,237,139,149,233,1,206,41,
61 41,214,139,133,233,41,200,193,232,3,131,192,1,139,105,252,248,129,121,253, 61 214,139,133,233,41,200,193,232,3,131,192,1,139,105,252,248,129,121,253,252,
62 252,252,239,15,133,244,29,252,255,165,233,248,30,255,85,87,86,83,131,252, 62 252,239,15,133,244,31,252,255,165,233,248,32,255,85,87,86,83,131,252,236,
63 236,28,139,108,36,48,139,68,36,56,139,76,36,52,139,84,36,60,137,108,36,24, 63 28,139,108,36,48,139,68,36,56,139,76,36,52,139,84,36,60,137,108,36,24,139,
64 139,189,233,43,189,233,199,68,36,60,0,0,0,0,137,124,36,56,137,68,36,8,137, 64 189,233,43,189,233,199,68,36,60,0,0,0,0,137,124,36,56,137,68,36,8,137,76,
65 76,36,4,137,44,36,139,189,233,137,124,36,52,137,165,233,252,255,210,133,192, 65 36,4,137,44,36,139,189,233,137,124,36,52,137,165,233,252,255,210,133,192,
66 15,132,244,21,137,193,190,237,252,233,244,2,248,25,1,209,131,230,252,248, 66 15,132,244,21,137,193,190,237,252,233,244,2,248,27,1,209,131,230,252,248,
67 137,213,41,252,242,199,68,193,252,252,237,137,200,139,117,252,244,139,77, 67 137,213,41,252,242,199,68,193,252,252,237,137,200,139,117,252,244,139,77,
68 252,240,139,122,252,248,139,191,233,139,191,233,252,255,225,248,31,15,182, 68 252,240,139,122,252,248,139,191,233,139,191,233,252,255,225,248,33,15,182,
69 78,252,255,131,252,237,16,141,12,202,41,252,233,15,132,244,32,252,247,217, 69 78,252,255,131,252,237,16,141,12,202,41,252,233,15,132,244,34,252,247,217,
70 193,252,233,3,137,76,36,8,139,72,4,139,0,137,77,4,137,69,0,137,108,36,4,252, 70 193,252,233,3,137,76,36,8,139,72,4,139,0,137,77,4,137,69,0,137,108,36,4,252,
71 233,244,33,248,34,137,68,36,16,199,68,36,20,237,255,141,68,36,16,128,126, 71 233,244,35,248,36,137,68,36,16,199,68,36,20,237,255,141,68,36,16,128,126,
72 252,252,235,15,133,244,247,141,139,233,137,41,199,65,4,237,137,205,252,233, 72 252,252,235,15,133,244,247,141,139,233,137,41,199,65,4,237,137,205,252,233,
73 244,248,248,35,15,182,70,252,254,255,252,242,15,42,192,252,242,15,17,68,36, 73 244,248,248,37,15,182,70,252,254,255,252,242,15,42,192,252,242,15,17,68,36,
74 16,255,137,68,36,12,219,68,36,12,221,92,36,16,255,141,68,36,16,252,233,244, 74 16,255,137,68,36,12,219,68,36,12,221,92,36,16,255,141,68,36,16,252,233,244,
75 247,248,36,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252, 75 247,248,38,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,
76 234,248,2,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137, 76 234,248,2,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,
77 116,36,24,232,251,1,1,139,149,233,133,192,15,132,244,249,248,32,15,182,78, 77 116,36,24,232,251,1,1,139,149,233,133,192,15,132,244,249,248,34,15,182,78,
78 252,253,139,104,4,139,0,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232, 78 252,253,139,104,4,139,0,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,
79 131,198,4,193,232,16,252,255,36,171,248,3,139,141,233,137,113,252,244,141, 79 131,198,4,193,232,16,252,255,36,171,248,3,139,141,233,137,113,252,244,141,
80 177,233,41,214,139,105,252,248,184,3,0,0,0,252,255,165,233,248,37,137,68, 80 177,233,41,214,139,105,252,248,184,3,0,0,0,252,255,165,233,248,39,137,68,
81 36,16,199,68,36,20,237,141,68,36,16,128,126,252,252,235,15,133,244,247,141, 81 36,16,199,68,36,20,237,141,68,36,16,128,126,252,252,235,15,133,244,247,141,
82 139,233,255,137,41,199,65,4,237,137,205,252,233,244,248,248,38,15,182,70, 82 139,233,255,137,41,199,65,4,237,137,205,252,233,244,248,248,40,15,182,70,
83 252,254,255,141,68,36,16,252,233,244,247,248,39,15,182,70,252,254,141,4,194, 83 252,254,255,141,68,36,16,252,233,244,247,248,41,15,182,70,252,254,141,4,194,
84 248,1,15,182,110,252,255,141,44,252,234,248,2,137,108,36,4,139,108,36,48, 84 248,1,15,182,110,252,255,141,44,252,234,248,2,137,108,36,4,139,108,36,48,
85 137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,2,139,149,233,133, 85 137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,2,139,149,233,133,
86 192,15,132,244,249,15,182,78,252,253,139,108,202,4,139,12,202,137,104,4,137, 86 192,15,132,244,249,15,182,78,252,253,139,108,202,4,139,12,202,137,104,4,137,
87 8,248,40,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, 87 8,248,42,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
88 248,3,139,141,233,137,113,252,244,15,182,70,252,253,139,108,194,4,139,4,194, 88 248,3,139,141,233,137,113,252,244,15,182,70,252,253,139,108,194,4,139,4,194,
89 137,105,20,137,65,16,141,177,233,41,214,139,105,252,248,184,4,0,0,0,252,255, 89 137,105,20,137,65,16,141,177,233,41,214,139,105,252,248,184,4,0,0,0,252,255,
90 165,233,248,41,15,182,110,252,252,141,4,194,141,12,202,137,108,36,12,139, 90 165,233,248,43,15,182,110,252,252,141,4,194,141,12,202,137,108,36,12,139,
91 108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,233,137,116,36,24,232, 91 108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,233,137,116,36,24,232,
92 251,1,3,248,3,139,149,233,131,252,248,1,15,135,244,42,248,4,255,141,118,4, 92 251,1,3,248,3,139,149,233,131,252,248,1,15,135,244,44,248,4,255,141,118,4,
93 15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248,6,139,6,15, 93 15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248,6,139,6,15,
94 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,43,131,198,4,129, 94 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,45,131,198,4,129,
95 120,253,4,239,15,130,244,5,252,233,244,6,248,44,129,120,253,4,239,252,233, 95 120,253,4,239,15,130,244,5,252,233,244,6,248,46,129,120,253,4,239,252,233,
96 244,4,248,45,131,252,238,4,137,108,36,12,139,108,36,48,137,68,36,8,137,76, 96 244,4,248,47,131,252,238,4,137,108,36,12,139,108,36,48,137,68,36,8,137,76,
97 36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,4,252,233,244,3,248,46, 97 36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,4,252,233,244,3,248,48,
98 255,141,4,199,252,233,244,247,248,47,141,4,199,141,44,252,234,149,252,233, 98 255,141,4,199,252,233,244,247,248,49,141,4,199,141,44,252,234,149,252,233,
99 244,248,248,48,141,4,194,137,197,252,233,244,248,248,49,141,4,194,248,1,141, 99 244,248,248,50,141,4,194,137,197,252,233,244,248,248,51,141,4,194,248,1,141,
100 44,252,234,248,2,141,12,202,137,108,36,8,139,108,36,48,137,68,36,12,15,182, 100 44,252,234,248,2,141,12,202,137,108,36,8,139,108,36,48,137,68,36,12,15,182,
101 70,252,252,137,76,36,4,137,68,36,16,137,44,36,137,149,233,137,116,36,24,232, 101 70,252,252,137,76,36,4,137,68,36,16,137,44,36,137,149,233,137,116,36,24,232,
102 251,1,5,139,149,233,133,192,15,132,244,40,248,42,137,193,41,208,137,113,252, 102 251,1,5,139,149,233,133,192,15,132,244,42,248,44,137,193,41,208,137,113,252,
103 244,141,176,233,139,105,252,248,184,3,0,0,0,129,121,253,252,252,239,15,133, 103 244,141,176,233,139,105,252,248,184,3,0,0,0,129,121,253,252,252,239,15,133,
104 244,29,255,252,255,165,233,248,50,139,108,36,48,137,149,233,141,20,194,137, 104 244,31,255,252,255,165,233,248,52,139,108,36,48,137,149,233,141,20,194,137,
105 252,233,137,116,36,24,232,251,1,6,139,149,233,252,233,244,42,248,29,137,76, 105 252,233,137,116,36,24,232,251,1,6,139,149,233,252,233,244,44,248,31,137,76,
106 36,20,137,68,36,16,131,252,233,8,141,4,193,139,108,36,48,137,76,36,4,137, 106 36,20,137,68,36,16,131,252,233,8,141,4,193,139,108,36,48,137,76,36,4,137,
107 68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,7,139,149,233,139,76, 107 68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,7,139,149,233,139,76,
108 36,20,139,68,36,16,139,105,252,248,131,192,1,57,215,15,132,244,51,252,255, 108 36,20,139,68,36,16,139,105,252,248,131,192,1,57,215,15,132,244,53,252,255,
109 165,233,248,52,139,108,36,48,137,149,233,137,202,137,252,233,137,116,36,24, 109 165,233,248,54,139,108,36,48,137,149,233,137,202,137,252,233,137,116,36,24,
110 232,251,1,8,139,149,233,139,70,252,252,15,182,204,15,182,232,193,232,16,252, 110 232,251,1,8,139,149,233,139,70,252,252,15,182,204,15,182,232,193,232,16,252,
111 255,164,253,171,233,248,53,129,252,248,239,15,130,244,54,255,139,105,4,129, 111 255,164,253,171,233,248,55,129,252,248,239,15,130,244,56,255,139,105,4,129,
112 252,253,239,15,131,244,54,137,68,36,20,137,105,252,252,139,41,137,105,252, 112 252,253,239,15,131,244,56,137,68,36,20,137,105,252,252,139,41,137,105,252,
113 248,131,232,2,15,132,244,248,137,76,36,16,248,1,131,193,8,139,105,4,137,105, 113 248,131,232,2,15,132,244,248,137,76,36,16,248,1,131,193,8,139,105,4,137,105,
114 252,252,139,41,137,105,252,248,131,232,1,15,133,244,1,139,76,36,16,248,2, 114 252,252,139,41,137,105,252,248,131,232,1,15,133,244,1,139,76,36,16,248,2,
115 139,68,36,20,252,233,244,55,248,56,129,252,248,239,15,130,244,54,139,105, 115 139,68,36,20,252,233,244,57,248,58,129,252,248,239,15,130,244,56,139,105,
116 4,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248, 116 4,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248,
117 1,255,139,105,252,248,139,132,253,197,233,199,65,252,252,237,137,65,252,248, 117 1,255,139,105,252,248,139,132,253,197,233,199,65,252,252,237,137,65,252,248,
118 252,233,244,57,248,58,129,252,248,239,15,130,244,54,139,105,4,129,252,253, 118 252,233,244,59,248,60,129,252,248,239,15,130,244,56,139,105,4,129,252,253,
119 239,15,133,244,252,248,1,139,41,139,173,233,248,2,133,252,237,199,65,252, 119 239,15,133,244,252,248,1,139,41,139,173,233,248,2,133,252,237,199,65,252,
120 252,237,15,132,244,57,139,65,252,248,139,131,233,199,65,252,252,237,137,105, 120 252,237,15,132,244,59,139,65,252,248,139,131,233,199,65,252,252,237,137,105,
121 252,248,137,76,36,16,139,141,233,255,35,136,233,105,201,239,3,141,233,248, 121 252,248,137,76,36,16,139,141,233,255,35,136,233,105,201,239,3,141,233,248,
122 3,129,185,233,239,15,133,244,250,57,129,233,15,132,244,251,248,4,139,137, 122 3,129,185,233,239,15,133,244,250,57,129,233,15,132,244,251,248,4,139,137,
123 233,133,201,15,133,244,3,252,233,244,57,248,5,139,105,4,129,252,253,239,15, 123 233,133,201,15,133,244,3,252,233,244,59,248,5,139,105,4,129,252,253,239,15,
124 132,244,57,255,139,1,139,76,36,16,137,105,252,252,137,65,252,248,252,233, 124 132,244,59,255,139,1,139,76,36,16,137,105,252,252,137,65,252,248,252,233,
125 244,57,248,6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,244,253, 125 244,59,248,6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,244,253,
126 189,237,248,7,252,247,213,139,172,253,171,233,252,233,244,2,248,59,129,252, 126 189,237,248,7,252,247,213,139,172,253,171,233,252,233,244,2,248,61,129,252,
127 248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,255,139,41,131,189, 127 248,239,15,130,244,56,129,121,253,4,239,15,133,244,56,255,139,41,131,189,
128 233,0,15,133,244,54,129,121,253,12,239,15,133,244,54,139,65,8,137,133,233, 128 233,0,15,133,244,56,129,121,253,12,239,15,133,244,56,139,65,8,137,133,233,
129 199,65,252,252,237,137,105,252,248,252,246,133,233,235,15,132,244,247,128, 129 199,65,252,252,237,137,105,252,248,252,246,133,233,235,15,132,244,247,128,
130 165,233,235,139,131,233,137,171,233,137,133,233,248,1,252,233,244,57,248, 130 165,233,235,139,131,233,137,171,233,137,133,233,248,1,252,233,244,59,248,
131 60,255,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,139, 131 62,255,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244,56,139,
132 1,139,108,36,48,137,68,36,4,137,44,36,137,205,137,84,36,16,131,193,8,137, 132 1,139,108,36,48,137,68,36,4,137,44,36,137,205,137,84,36,16,131,193,8,137,
133 76,36,8,232,251,1,9,137,252,233,139,84,36,16,139,40,139,64,4,137,105,252, 133 76,36,8,232,251,1,9,137,252,233,139,84,36,16,139,40,139,64,4,137,105,252,
134 248,137,65,252,252,252,233,244,57,248,61,129,252,248,239,15,133,244,54,129, 134 248,137,65,252,252,252,233,244,59,248,63,129,252,248,239,15,133,244,56,129,
135 121,253,4,239,15,135,244,54,255,252,242,15,16,1,252,233,244,62,255,221,1, 135 121,253,4,239,15,135,244,56,255,252,242,15,16,1,252,233,244,64,255,221,1,
136 252,233,244,63,255,248,64,129,252,248,239,15,130,244,54,129,121,253,4,239, 136 252,233,244,65,255,248,66,129,252,248,239,15,130,244,56,129,121,253,4,239,
137 15,133,244,249,139,1,248,2,199,65,252,252,237,137,65,252,248,252,233,244, 137 15,133,244,249,139,1,248,2,199,65,252,252,237,137,65,252,248,252,233,244,
138 57,248,3,129,121,253,4,239,15,135,244,54,131,187,233,0,15,133,244,54,139, 138 59,248,3,129,121,253,4,239,15,135,244,56,131,187,233,0,15,133,244,56,139,
139 171,233,59,171,233,255,15,130,244,247,232,244,65,248,1,139,108,36,48,137, 139 171,233,59,171,233,255,15,130,244,247,232,244,67,248,1,139,108,36,48,137,
140 141,233,137,113,252,252,137,116,36,24,137,84,36,16,137,202,137,252,233,232, 140 141,233,137,113,252,252,137,116,36,24,137,84,36,16,137,202,137,252,233,232,
141 251,1,10,139,141,233,139,84,36,16,252,233,244,2,248,66,129,252,248,239,15, 141 251,1,10,139,141,233,139,84,36,16,252,233,244,2,248,68,129,252,248,239,15,
142 130,244,54,15,132,244,248,248,1,129,121,253,4,239,15,133,244,54,139,41,137, 142 130,244,56,15,132,244,248,248,1,129,121,253,4,239,15,133,244,56,139,41,137,
143 108,36,4,139,108,36,48,137,44,36,137,141,233,255,137,113,252,252,137,84,36, 143 108,36,4,139,108,36,48,137,44,36,137,141,233,255,137,113,252,252,137,84,36,
144 16,131,193,8,137,76,36,8,137,116,36,24,232,251,1,11,139,141,233,139,84,36, 144 16,131,193,8,137,76,36,8,137,116,36,24,232,251,1,11,139,141,233,139,84,36,
145 16,133,192,15,132,244,249,139,105,8,139,65,12,137,105,252,248,137,65,252, 145 16,133,192,15,132,244,249,139,105,8,139,65,12,137,105,252,248,137,65,252,
146 252,139,105,16,139,65,20,137,41,137,65,4,248,67,184,237,252,233,244,68,248, 146 252,139,105,16,139,65,20,137,41,137,65,4,248,69,184,237,252,233,244,70,248,
147 2,199,65,12,237,252,233,244,1,248,3,199,65,252,252,237,252,233,244,57,248, 147 2,199,65,12,237,252,233,244,1,248,3,199,65,252,252,237,252,233,244,59,248,
148 69,129,252,248,239,15,130,244,54,129,121,253,4,239,255,15,133,244,54,139, 148 71,129,252,248,239,15,130,244,56,129,121,253,4,239,255,15,133,244,56,139,
149 133,233,199,65,252,252,237,137,65,252,248,199,65,12,237,184,237,252,233,244, 149 133,233,199,65,252,252,237,137,65,252,248,199,65,12,237,184,237,252,233,244,
150 68,248,70,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,129, 150 70,248,72,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244,56,129,
151 121,253,12,239,15,135,244,54,255,252,242,15,16,65,8,189,0,0,252,240,63,102, 151 121,253,12,239,15,135,244,56,255,252,242,15,16,65,8,189,0,0,252,240,63,102,
152 15,110,205,102,15,112,201,81,252,242,15,88,193,252,242,15,45,192,252,242, 152 15,110,205,102,15,112,201,81,252,242,15,88,193,252,242,15,45,192,252,242,
153 15,17,65,252,248,255,221,65,8,217,232,222,193,219,20,36,221,89,252,248,139, 153 15,17,65,252,248,255,221,65,8,217,232,222,193,219,20,36,221,89,252,248,139,
154 4,36,255,139,41,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120, 154 4,36,255,139,41,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120,
155 253,4,239,15,132,244,71,139,40,139,64,4,137,41,137,65,4,252,233,244,67,248, 155 253,4,239,15,132,244,73,139,40,139,64,4,137,41,137,65,4,252,233,244,69,248,
156 2,131,189,233,0,15,132,244,71,137,84,36,16,135,205,137,194,232,251,1,12,137, 156 2,131,189,233,0,15,132,244,73,137,84,36,16,135,205,137,194,232,251,1,12,137,
157 252,233,139,84,36,16,133,192,15,133,244,1,248,71,184,237,252,233,244,68,248, 157 252,233,139,84,36,16,133,192,15,133,244,1,248,73,184,237,252,233,244,70,248,
158 72,255,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,139, 158 74,255,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244,56,139,
159 133,233,199,65,252,252,237,137,65,252,248,255,15,87,192,252,242,15,17,65, 159 133,233,199,65,252,252,237,137,65,252,248,255,15,87,192,252,242,15,17,65,
160 8,255,217,252,238,221,89,8,255,184,237,252,233,244,68,248,73,129,252,248, 160 8,255,217,252,238,221,89,8,255,184,237,252,233,244,70,248,75,129,252,248,
161 239,15,130,244,54,137,113,252,252,190,237,137,202,131,193,8,131,232,1,139, 161 239,15,130,244,56,137,113,252,252,190,237,137,202,131,193,8,131,232,1,139,
162 105,252,248,248,1,252,246,131,233,235,15,133,244,249,248,2,129,121,253,252, 162 105,252,248,248,1,252,246,131,233,235,15,133,244,249,248,2,129,121,253,252,
163 252,239,15,133,244,29,252,255,165,233,248,3,131,198,1,252,233,244,2,248,74, 163 252,239,15,133,244,31,252,255,165,233,248,3,131,198,1,252,233,244,2,248,76,
164 255,129,252,248,239,15,130,244,54,129,121,253,12,239,15,133,244,54,137,113, 164 255,129,252,248,239,15,130,244,56,129,121,253,12,239,15,133,244,56,137,113,
165 252,252,139,105,4,137,105,12,199,65,4,237,139,41,139,113,8,137,105,8,137, 165 252,252,139,105,4,137,105,12,199,65,4,237,139,41,139,113,8,137,105,8,137,
166 49,190,237,137,202,129,193,239,131,232,2,252,233,244,1,248,9,139,116,36,24, 166 49,190,237,137,202,129,193,239,131,232,2,252,233,244,1,248,9,139,116,36,24,
167 252,233,244,54,248,75,129,252,248,239,15,130,244,54,139,41,137,113,252,252, 167 252,233,244,56,248,77,129,252,248,239,15,130,244,56,139,41,137,113,252,252,
168 137,116,36,24,137,44,36,129,121,253,4,239,15,133,244,9,255,131,189,233,0, 168 137,116,36,24,137,44,36,129,121,253,4,239,15,133,244,9,255,131,189,233,0,
169 15,133,244,9,128,189,233,235,15,135,244,9,139,181,233,137,116,36,4,15,132, 169 15,133,244,9,128,189,233,235,15,135,244,9,139,181,233,137,116,36,4,15,132,
170 244,247,59,181,233,15,132,244,9,248,1,141,116,198,252,240,59,181,233,15,135, 170 244,247,59,181,233,15,132,244,9,248,1,141,116,198,252,240,59,181,233,15,135,
171 244,9,137,181,233,139,108,36,48,137,141,233,131,193,8,137,141,233,255,139, 171 244,9,137,181,233,139,108,36,48,137,141,233,131,193,8,137,141,233,255,139,
172 108,36,4,141,76,193,232,41,252,241,57,252,238,15,132,244,249,248,2,139,68, 172 108,36,4,141,76,193,232,41,252,241,57,252,238,15,132,244,249,248,2,139,68,
173 14,4,137,70,252,252,139,4,14,137,70,252,248,131,252,238,8,57,252,238,15,133, 173 14,4,137,70,252,252,139,4,14,137,70,252,248,131,252,238,8,57,252,238,15,133,
174 244,2,248,3,49,201,137,76,36,12,137,76,36,8,232,244,26,199,131,233,237,139, 174 244,2,248,3,49,201,137,76,36,12,137,76,36,8,232,244,28,199,131,233,237,139,
175 108,36,48,139,52,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139, 175 108,36,48,139,52,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,
176 142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,255,141, 176 142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,255,141,
177 4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,41,205,248,5,139,1,137, 177 4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,41,205,248,5,139,1,137,
@@ -181,13 +181,13 @@ static const unsigned char build_actionlist[15191] = {
181 252,252,237,139,142,233,131,252,233,8,137,142,233,139,1,137,2,139,65,4,137, 181 252,252,237,139,142,233,131,252,233,8,137,142,233,139,1,137,2,139,65,4,137,
182 66,4,184,237,252,233,244,7,248,9,255,139,12,36,137,185,233,137,252,242,137, 182 66,4,184,237,252,233,244,7,248,9,255,139,12,36,137,185,233,137,252,242,137,
183 252,233,232,251,1,0,139,149,233,252,233,244,4,248,9,139,116,36,24,252,233, 183 252,233,232,251,1,0,139,149,233,252,233,244,4,248,9,139,116,36,24,252,233,
184 244,54,248,76,139,173,233,137,113,252,252,137,116,36,24,137,44,36,131,189, 184 244,56,248,78,139,173,233,137,113,252,252,137,116,36,24,137,44,36,131,189,
185 233,0,15,133,244,9,128,189,233,235,15,135,244,9,139,181,233,137,116,36,4, 185 233,0,15,133,244,9,128,189,233,235,15,135,244,9,139,181,233,137,116,36,4,
186 15,132,244,247,59,181,233,255,15,132,244,9,248,1,141,116,198,252,248,59,181, 186 15,132,244,247,59,181,233,255,15,132,244,9,248,1,141,116,198,252,248,59,181,
187 233,15,135,244,9,137,181,233,139,108,36,48,137,141,233,137,141,233,139,108, 187 233,15,135,244,9,137,181,233,139,108,36,48,137,141,233,137,141,233,139,108,
188 36,4,141,76,193,252,240,41,252,241,57,252,238,15,132,244,249,248,2,139,68, 188 36,4,141,76,193,252,240,41,252,241,57,252,238,15,132,244,249,248,2,139,68,
189 14,4,137,70,252,252,139,4,14,137,70,252,248,131,252,238,8,57,252,238,15,133, 189 14,4,137,70,252,252,139,4,14,137,70,252,248,131,252,238,8,57,252,238,15,133,
190 244,2,248,3,49,201,137,76,36,12,137,76,36,8,232,244,26,199,131,233,237,139, 190 244,2,248,3,49,201,137,76,36,12,137,76,36,8,232,244,28,199,131,233,237,139,
191 108,36,48,139,52,36,139,149,233,255,129,252,248,239,15,135,244,254,248,4, 191 108,36,48,139,52,36,139,149,233,255,129,252,248,239,15,135,244,254,248,4,
192 139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141, 192 139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,
193 4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,41,205,248,5,139,1,137, 193 4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,41,205,248,5,139,1,137,
@@ -195,238 +195,238 @@ static const unsigned char build_actionlist[15191] = {
195 1,248,7,139,116,36,24,137,68,36,20,49,201,252,247,198,237,15,132,244,17,255, 195 1,248,7,139,116,36,24,137,68,36,20,49,201,252,247,198,237,15,132,244,17,255,
196 252,233,244,18,248,8,137,252,242,137,252,233,232,251,1,13,248,9,139,12,36, 196 252,233,244,18,248,8,137,252,242,137,252,233,232,251,1,13,248,9,139,12,36,
197 137,185,233,137,252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4, 197 137,185,233,137,252,242,137,252,233,232,251,1,0,139,149,233,252,233,244,4,
198 248,77,139,108,36,48,137,113,252,252,252,247,133,233,237,15,132,244,54,137, 198 248,79,139,108,36,48,137,113,252,252,252,247,133,233,237,15,132,244,56,137,
199 141,233,141,68,193,252,248,137,133,233,49,192,137,133,233,176,235,136,133, 199 141,233,141,68,193,252,248,137,133,233,49,192,137,133,233,176,235,136,133,
200 233,252,233,244,22,255,248,63,221,89,252,248,252,233,244,57,248,78,129,252, 200 233,252,233,244,22,255,248,65,221,89,252,248,252,233,244,59,248,80,129,252,
201 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,102, 201 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,102,
202 15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,248,62,252,242,15, 202 15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,248,64,252,242,15,
203 17,65,252,248,255,248,78,129,252,248,239,15,130,244,54,129,121,253,4,239, 203 17,65,252,248,255,248,80,129,252,248,239,15,130,244,56,129,121,253,4,239,
204 15,135,244,54,221,1,217,225,248,62,248,63,221,89,252,248,255,248,57,184,237, 204 15,135,244,56,221,1,217,225,248,64,248,65,221,89,252,248,255,248,59,184,237,
205 248,68,137,68,36,20,248,55,252,247,198,237,15,133,244,253,248,5,56,70,252, 205 248,70,137,68,36,20,248,57,252,247,198,237,15,133,244,253,248,5,56,70,252,
206 255,15,135,244,252,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 206 255,15,135,244,252,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
207 36,171,248,6,199,68,193,252,244,237,131,192,1,252,233,244,5,248,7,137,202, 207 36,171,248,6,199,68,193,252,244,237,131,192,1,252,233,244,5,248,7,137,202,
208 185,252,248,252,255,252,255,252,255,252,233,244,18,255,248,79,129,252,248, 208 185,252,248,252,255,252,255,252,255,252,233,244,18,255,248,81,129,252,248,
209 239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,81,1,252,233, 209 239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,81,1,252,233,
210 244,62,248,80,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244, 210 244,64,248,82,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
211 54,252,242,15,16,1,232,244,81,252,233,244,62,248,82,255,129,252,248,239,15, 211 56,252,242,15,16,1,232,244,83,252,233,244,64,248,84,255,129,252,248,239,15,
212 130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,232,244,83,252, 212 130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,232,244,85,252,
213 233,244,62,255,248,79,129,252,248,239,15,130,244,54,129,121,253,4,239,15, 213 233,244,64,255,248,81,129,252,248,239,15,130,244,56,129,121,253,4,239,15,
214 135,244,54,221,1,217,252,250,252,233,244,63,248,80,129,252,248,239,15,130, 214 135,244,56,221,1,217,252,250,252,233,244,65,248,82,129,252,248,239,15,130,
215 244,54,129,121,253,4,239,15,135,244,54,221,1,232,244,81,252,233,244,63,248, 215 244,56,129,121,253,4,239,15,135,244,56,221,1,232,244,83,252,233,244,65,248,
216 82,255,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221, 216 84,255,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,
217 1,232,244,83,252,233,244,63,255,248,84,129,252,248,239,15,130,244,54,129, 217 1,232,244,85,252,233,244,65,255,248,86,129,252,248,239,15,130,244,56,129,
218 121,253,4,239,15,135,244,54,217,252,237,221,1,217,252,241,252,233,244,63, 218 121,253,4,239,15,135,244,56,217,252,237,221,1,217,252,241,252,233,244,65,
219 248,85,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,217, 219 248,87,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,217,
220 252,236,221,1,217,252,241,252,233,244,63,248,86,129,252,248,239,255,15,130, 220 252,236,221,1,217,252,241,252,233,244,65,248,88,129,252,248,239,255,15,130,
221 244,54,129,121,253,4,239,15,135,244,54,221,1,232,244,87,252,233,244,63,248, 221 244,56,129,121,253,4,239,15,135,244,56,221,1,232,244,89,252,233,244,65,248,
222 88,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,217, 222 90,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,
223 252,254,252,233,244,63,248,89,129,252,248,239,255,15,130,244,54,129,121,253, 223 252,254,252,233,244,65,248,91,129,252,248,239,255,15,130,244,56,129,121,253,
224 4,239,15,135,244,54,221,1,217,252,255,252,233,244,63,248,90,129,252,248,239, 224 4,239,15,135,244,56,221,1,217,252,255,252,233,244,65,248,92,129,252,248,239,
225 15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,217,252,242,221,216,252, 225 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,217,252,242,221,216,252,
226 233,244,63,248,91,129,252,248,239,15,130,244,54,255,129,121,253,4,239,15, 226 233,244,65,248,93,129,252,248,239,15,130,244,56,255,129,121,253,4,239,15,
227 135,244,54,221,1,217,192,216,200,217,232,222,225,217,252,250,217,252,243, 227 135,244,56,221,1,217,192,216,200,217,232,222,225,217,252,250,217,252,243,
228 252,233,244,63,248,92,129,252,248,239,15,130,244,54,129,121,253,4,239,15, 228 252,233,244,65,248,94,129,252,248,239,15,130,244,56,129,121,253,4,239,15,
229 135,244,54,221,1,217,192,216,200,217,232,222,225,217,252,250,217,201,217, 229 135,244,56,221,1,217,192,216,200,217,232,222,225,217,252,250,217,201,217,
230 252,243,252,233,244,63,248,93,129,252,248,239,15,130,244,54,129,121,253,4, 230 252,243,252,233,244,65,248,95,129,252,248,239,15,130,244,56,129,121,253,4,
231 239,15,135,244,54,255,221,1,217,232,217,252,243,252,233,244,63,255,248,94, 231 239,15,135,244,56,255,221,1,217,232,217,252,243,252,233,244,65,255,248,96,
232 129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15, 232 129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,
233 16,1,252,242,15,17,4,36,255,248,94,129,252,248,239,15,130,244,54,129,121, 233 16,1,252,242,15,17,4,36,255,248,96,129,252,248,239,15,130,244,56,129,121,
234 253,4,239,15,135,244,54,221,1,221,28,36,255,137,76,36,16,137,213,232,251, 234 253,4,239,15,135,244,56,221,1,221,28,36,255,137,76,36,16,137,213,232,251,
235 1,14,139,76,36,16,137,252,234,252,233,244,63,255,248,95,129,252,248,239,15, 235 1,14,139,76,36,16,137,252,234,252,233,244,65,255,248,97,129,252,248,239,15,
236 130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,252,242,15,17, 236 130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,252,242,15,17,
237 4,36,255,248,95,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244, 237 4,36,255,248,97,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
238 54,221,1,221,28,36,255,137,76,36,16,137,213,232,251,1,15,139,76,36,16,137, 238 56,221,1,221,28,36,255,137,76,36,16,137,213,232,251,1,15,139,76,36,16,137,
239 252,234,252,233,244,63,255,248,96,129,252,248,239,15,130,244,54,129,121,253, 239 252,234,252,233,244,65,255,248,98,129,252,248,239,15,130,244,56,129,121,253,
240 4,239,15,135,244,54,252,242,15,16,1,252,242,15,17,4,36,255,248,96,129,252, 240 4,239,15,135,244,56,252,242,15,16,1,252,242,15,17,4,36,255,248,98,129,252,
241 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,221,28,36,255, 241 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,221,28,36,255,
242 137,76,36,16,137,213,232,251,1,16,139,76,36,16,137,252,234,252,233,244,63, 242 137,76,36,16,137,213,232,251,1,16,139,76,36,16,137,252,234,252,233,244,65,
243 248,97,255,248,98,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135, 243 248,99,255,248,100,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,
244 244,54,252,242,15,16,1,252,242,15,89,133,233,252,233,244,62,255,248,98,129, 244 244,56,252,242,15,16,1,252,242,15,89,133,233,252,233,244,64,255,248,100,129,
245 252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,220,141,233, 245 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,220,141,233,
246 252,233,244,63,255,248,99,129,252,248,239,15,130,244,54,129,121,253,4,239, 246 252,233,244,65,255,248,101,129,252,248,239,15,130,244,56,129,121,253,4,239,
247 15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,217,252,243, 247 15,135,244,56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,217,252,243,
248 252,233,244,63,248,100,129,252,248,239,15,130,244,54,129,121,253,4,239,15, 248 252,233,244,65,248,102,129,252,248,239,15,130,244,56,129,121,253,4,239,15,
249 135,244,54,129,121,253,12,239,255,15,135,244,54,221,65,8,221,1,217,252,253, 249 135,244,56,129,121,253,12,239,255,15,135,244,56,221,65,8,221,1,217,252,253,
250 221,217,252,233,244,63,248,101,129,252,248,239,15,130,244,54,139,105,4,129, 250 221,217,252,233,244,65,248,103,129,252,248,239,15,130,244,56,139,105,4,129,
251 252,253,239,15,135,244,54,139,1,137,105,252,252,137,65,252,248,209,229,129, 251 252,253,239,15,135,244,56,139,1,137,105,252,252,137,65,252,248,209,229,129,
252 252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,184,252,254,3, 252 252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,184,252,254,3,
253 0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41,197,255,252, 253 0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,
254 242,15,42,197,255,137,108,36,16,219,68,36,16,255,139,105,252,252,129,229, 254 242,15,42,197,255,137,108,36,16,219,68,36,16,255,139,105,252,252,129,229,
255 252,255,252,255,15,128,129,205,0,0,224,63,137,105,252,252,248,2,255,252,242, 255 252,255,252,255,15,128,129,205,0,0,224,63,137,105,252,252,248,2,255,252,242,
256 15,17,1,255,221,25,255,184,237,252,233,244,68,248,3,255,15,87,192,252,233, 256 15,17,1,255,221,25,255,184,237,252,233,244,70,248,3,255,15,87,192,252,233,
257 244,2,255,217,252,238,252,233,244,2,255,252,242,15,16,1,189,0,0,80,67,102, 257 244,2,255,217,252,238,252,233,244,2,255,252,242,15,16,1,189,0,0,80,67,102,
258 15,110,205,102,15,112,201,81,252,242,15,89,193,252,242,15,17,65,252,248,255, 258 15,110,205,102,15,112,201,81,252,242,15,89,193,252,242,15,17,65,252,248,255,
259 221,1,199,68,36,16,0,0,128,90,216,76,36,16,221,89,252,248,255,139,105,252, 259 221,1,199,68,36,16,0,0,128,90,216,76,36,16,221,89,252,248,255,139,105,252,
260 252,184,52,4,0,0,209,229,252,233,244,1,255,248,102,129,252,248,239,15,130, 260 252,184,52,4,0,0,209,229,252,233,244,1,255,248,104,129,252,248,239,15,130,
261 244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,255,248,102,129,252, 261 244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,255,248,104,129,252,
262 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,255,139,105,4, 262 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,255,139,105,4,
263 209,229,129,252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,244, 263 209,229,129,252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,244,
264 103,252,242,15,92,224,248,1,252,242,15,17,65,252,248,252,242,15,17,33,255, 264 105,252,242,15,92,224,248,1,252,242,15,17,65,252,248,252,242,15,17,33,255,
265 217,192,232,244,103,220,252,233,248,1,221,89,252,248,221,25,255,139,65,252, 265 217,192,232,244,105,220,252,233,248,1,221,89,252,248,221,25,255,139,65,252,
266 252,139,105,4,49,232,15,136,244,249,248,2,184,237,252,233,244,68,248,3,129, 266 252,139,105,4,49,232,15,136,244,249,248,2,184,237,252,233,244,70,248,3,129,
267 252,245,0,0,0,128,137,105,4,252,233,244,2,248,4,255,15,87,228,252,233,244, 267 252,245,0,0,0,128,137,105,4,252,233,244,2,248,4,255,15,87,228,252,233,244,
268 1,255,217,252,238,217,201,252,233,244,1,255,248,104,129,252,248,239,15,130, 268 1,255,217,252,238,217,201,252,233,244,1,255,248,106,129,252,248,239,15,130,
269 244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,221, 269 244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,221,
270 65,8,221,1,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,233,244, 270 65,8,221,1,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,233,244,
271 63,255,248,105,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244, 271 65,255,248,107,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
272 54,129,121,253,12,239,15,135,244,54,252,242,15,16,1,252,242,15,16,73,8,232, 272 56,129,121,253,12,239,15,135,244,56,252,242,15,16,1,252,242,15,16,73,8,232,
273 244,106,252,233,244,62,255,248,105,129,252,248,239,15,130,244,54,129,121, 273 244,108,252,233,244,64,255,248,107,129,252,248,239,15,130,244,56,129,121,
274 253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,232, 274 253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,232,
275 244,106,252,233,244,63,255,248,107,129,252,248,239,15,130,244,54,129,121, 275 244,108,252,233,244,65,255,248,109,129,252,248,239,15,130,244,56,129,121,
276 253,4,239,15,135,244,54,252,242,15,16,1,189,2,0,0,0,248,1,57,197,15,131,244, 276 253,4,239,15,135,244,56,252,242,15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,
277 62,129,124,253,252,233,252,252,239,15,135,244,54,252,242,15,16,76,252,233, 277 64,129,124,253,252,233,252,252,239,15,135,244,56,252,242,15,16,76,252,233,
278 252,248,252,242,15,93,193,131,197,1,252,233,244,1,255,248,107,129,252,248, 278 252,248,252,242,15,93,193,131,197,1,252,233,244,1,255,248,109,129,252,248,
279 239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,189,2,0,0,0,248,1, 279 239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,189,2,0,0,0,248,1,
280 57,197,15,131,244,63,129,124,253,252,233,252,252,239,15,135,244,251,221,68, 280 57,197,15,131,244,65,129,124,253,252,233,252,252,239,15,135,244,251,221,68,
281 252,233,252,248,255,219,252,233,219,209,221,217,255,80,221,225,223,224,252, 281 252,233,252,248,255,219,252,233,219,209,221,217,255,80,221,225,223,224,252,
282 246,196,1,15,132,244,248,217,201,248,2,221,216,88,255,248,108,129,252,248, 282 246,196,1,15,132,244,248,217,201,248,2,221,216,88,255,248,110,129,252,248,
283 239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,189,2,0, 283 239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,189,2,0,
284 0,0,248,1,57,197,15,131,244,62,129,124,253,252,233,252,252,239,15,135,244, 284 0,0,248,1,57,197,15,131,244,64,129,124,253,252,233,252,252,239,15,135,244,
285 54,252,242,15,16,76,252,233,252,248,252,242,15,95,193,131,197,1,252,233,244, 285 56,252,242,15,16,76,252,233,252,248,252,242,15,95,193,131,197,1,252,233,244,
286 1,255,248,108,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244, 286 1,255,248,110,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,
287 54,221,1,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124,253,252,233,252,252, 287 56,221,1,189,2,0,0,0,248,1,57,197,15,131,244,65,129,124,253,252,233,252,252,
288 239,15,135,244,251,221,68,252,233,252,248,255,219,252,233,218,209,221,217, 288 239,15,135,244,251,221,68,252,233,252,248,255,219,252,233,218,209,221,217,
289 255,80,221,225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216, 289 255,80,221,225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,
290 88,255,248,5,221,216,252,233,244,54,255,248,109,129,252,248,239,15,130,244, 290 88,255,248,5,221,216,252,233,244,56,255,248,111,129,252,248,239,15,130,244,
291 54,129,121,253,4,239,15,133,244,54,139,41,255,252,242,15,42,133,233,252,233, 291 56,129,121,253,4,239,15,133,244,56,139,41,255,252,242,15,42,133,233,252,233,
292 244,62,255,219,133,233,252,233,244,63,255,248,110,129,252,248,239,15,133, 292 244,64,255,219,133,233,252,233,244,65,255,248,112,129,252,248,239,15,133,
293 244,54,129,121,253,4,239,15,133,244,54,139,41,131,189,233,1,15,130,244,71, 293 244,56,129,121,253,4,239,15,133,244,56,139,41,131,189,233,1,15,130,244,73,
294 15,182,173,233,255,252,242,15,42,197,252,233,244,62,255,137,108,36,16,219, 294 15,182,173,233,255,252,242,15,42,197,252,233,244,64,255,137,108,36,16,219,
295 68,36,16,252,233,244,63,255,248,111,139,171,233,59,171,233,15,130,244,247, 295 68,36,16,252,233,244,65,255,248,113,139,171,233,59,171,233,15,130,244,247,
296 232,244,65,248,1,129,252,248,239,15,133,244,54,129,121,253,4,239,15,135,244, 296 232,244,67,248,1,129,252,248,239,15,133,244,56,129,121,253,4,239,15,135,244,
297 54,255,252,242,15,45,1,61,252,255,0,0,0,15,135,244,54,137,68,36,20,255,221, 297 56,255,252,242,15,45,1,61,252,255,0,0,0,15,135,244,56,137,68,36,20,255,221,
298 1,219,92,36,20,129,124,36,20,252,255,0,0,0,15,135,244,54,255,199,68,36,8, 298 1,219,92,36,20,129,124,36,20,252,255,0,0,0,15,135,244,56,255,199,68,36,8,
299 1,0,0,0,141,68,36,20,137,76,36,16,248,112,139,108,36,48,137,149,233,137,68, 299 1,0,0,0,141,68,36,20,137,76,36,16,248,114,139,108,36,48,137,149,233,137,68,
300 36,4,137,44,36,137,116,36,24,232,251,1,17,139,76,36,16,139,149,233,199,65, 300 36,4,137,44,36,137,116,36,24,232,251,1,17,139,76,36,16,139,149,233,199,65,
301 252,252,237,137,65,252,248,252,233,244,57,248,113,139,171,233,59,171,233, 301 252,252,237,137,65,252,248,252,233,244,59,248,115,139,171,233,59,171,233,
302 15,130,244,247,232,244,65,248,1,137,76,36,16,199,68,36,20,252,255,252,255, 302 15,130,244,247,232,244,67,248,1,137,76,36,16,199,68,36,20,252,255,252,255,
303 252,255,252,255,129,252,248,239,15,130,244,54,15,134,244,247,129,121,253, 303 252,255,252,255,129,252,248,239,15,130,244,56,15,134,244,247,129,121,253,
304 20,239,255,252,242,15,45,105,16,137,108,36,20,255,221,65,16,219,92,36,20, 304 20,239,255,252,242,15,45,105,16,137,108,36,20,255,221,65,16,219,92,36,20,
305 255,248,1,129,121,253,4,239,15,133,244,54,129,121,253,12,239,15,135,244,54, 305 255,248,1,129,121,253,4,239,15,133,244,56,129,121,253,12,239,15,135,244,56,
306 139,41,137,108,36,12,139,173,233,255,252,242,15,45,73,8,255,221,65,8,219, 306 139,41,137,108,36,12,139,173,233,255,252,242,15,45,73,8,255,221,65,8,219,
307 92,36,8,139,76,36,8,255,139,68,36,20,57,197,15,130,244,251,248,2,133,201, 307 92,36,8,139,76,36,8,255,139,68,36,20,57,197,15,130,244,251,248,2,133,201,
308 15,142,244,253,248,3,139,108,36,12,41,200,15,140,244,114,141,172,253,13,233, 308 15,142,244,253,248,3,139,108,36,12,41,200,15,140,244,116,141,172,253,13,233,
309 131,192,1,248,4,137,68,36,8,137,232,252,233,244,112,248,5,15,140,244,252, 309 131,192,1,248,4,137,68,36,8,137,232,252,233,244,114,248,5,15,140,244,252,
310 141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244, 310 141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,
311 254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248, 311 254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,
312 114,49,192,252,233,244,4,248,115,129,252,248,239,15,130,244,54,139,171,233, 312 116,49,192,252,233,244,4,248,117,129,252,248,239,15,130,244,56,139,171,233,
313 59,171,233,15,130,244,247,232,244,65,248,1,255,137,76,36,16,129,121,253,4, 313 59,171,233,15,130,244,247,232,244,67,248,1,255,137,76,36,16,129,121,253,4,
314 239,15,133,244,54,129,121,253,12,239,15,135,244,54,139,41,255,252,242,15, 314 239,15,133,244,56,129,121,253,12,239,15,135,244,56,139,41,255,252,242,15,
315 45,65,8,255,221,65,8,219,92,36,20,139,68,36,20,255,133,192,15,142,244,114, 315 45,65,8,255,221,65,8,219,92,36,20,139,68,36,20,255,133,192,15,142,244,116,
316 131,189,233,1,15,130,244,114,15,133,244,116,57,131,233,15,130,244,116,15, 316 131,189,233,1,15,130,244,116,15,133,244,118,57,131,233,15,130,244,118,15,
317 182,141,233,139,171,233,137,68,36,8,248,1,136,77,0,131,197,1,131,232,1,15, 317 182,141,233,139,171,233,137,68,36,8,248,1,136,77,0,131,197,1,131,232,1,15,
318 133,244,1,139,131,233,252,233,244,112,248,117,129,252,248,239,255,15,130, 318 133,244,1,139,131,233,252,233,244,114,248,119,129,252,248,239,255,15,130,
319 244,54,139,171,233,59,171,233,15,130,244,247,232,244,65,248,1,137,76,36,16, 319 244,56,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,137,76,36,16,
320 129,121,253,4,239,15,133,244,54,139,41,139,133,233,133,192,15,132,244,114, 320 129,121,253,4,239,15,133,244,56,139,41,139,133,233,133,192,15,132,244,116,
321 57,131,233,15,130,244,118,129,197,239,137,116,36,20,137,68,36,8,139,179,233, 321 57,131,233,15,130,244,120,129,197,239,137,116,36,20,137,68,36,8,139,179,233,
322 248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137,252,240, 322 248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137,252,240,
323 139,116,36,20,252,233,244,112,248,119,129,252,248,239,15,130,244,54,139,171, 323 139,116,36,20,252,233,244,114,248,121,129,252,248,239,15,130,244,56,139,171,
324 233,59,171,233,15,130,244,247,232,244,65,248,1,137,76,36,16,129,121,253,4, 324 233,59,171,233,15,130,244,247,232,244,67,248,1,137,76,36,16,129,121,253,4,
325 239,15,133,244,54,139,41,139,133,233,57,131,233,255,15,130,244,118,129,197, 325 239,15,133,244,56,139,41,139,133,233,57,131,233,255,15,130,244,120,129,197,
326 239,137,116,36,20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,76, 326 239,137,116,36,20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,76,
327 5,0,131,252,249,65,15,130,244,248,131,252,249,90,15,135,244,248,131,252,241, 327 5,0,131,252,249,65,15,130,244,248,131,252,249,90,15,135,244,248,131,252,241,
328 32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,20, 328 32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,
329 252,233,244,112,248,120,129,252,248,239,15,130,244,54,255,139,171,233,59, 329 252,233,244,114,248,122,129,252,248,239,15,130,244,56,255,139,171,233,59,
330 171,233,15,130,244,247,232,244,65,248,1,137,76,36,16,129,121,253,4,239,15, 330 171,233,15,130,244,247,232,244,67,248,1,137,76,36,16,129,121,253,4,239,15,
331 133,244,54,139,41,139,133,233,57,131,233,15,130,244,118,129,197,239,137,116, 331 133,244,56,139,41,139,133,233,57,131,233,15,130,244,120,129,197,239,137,116,
332 36,20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252, 332 36,20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,
333 249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,252,241,32,248, 333 249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,252,241,32,248,
334 2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,252,233, 334 2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,252,233,
335 244,112,248,121,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244, 335 244,114,248,123,129,252,248,239,15,130,244,56,129,121,253,4,239,15,133,244,
336 54,137,84,36,16,137,205,139,9,232,251,1,18,137,252,233,139,84,36,16,255,252, 336 56,137,84,36,16,137,205,139,9,232,251,1,18,137,252,233,139,84,36,16,255,252,
337 242,15,42,192,252,233,244,62,255,137,4,36,219,4,36,252,233,244,63,255,248, 337 242,15,42,192,252,233,244,64,255,137,4,36,219,4,36,252,233,244,65,255,248,
338 122,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242, 338 124,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,
339 15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193, 339 15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,
340 102,15,126,197,252,242,15,42,197,252,233,244,62,255,248,122,129,252,248,239, 340 102,15,126,197,252,242,15,42,197,252,233,244,64,255,248,124,129,252,248,239,
341 15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192, 341 15,130,244,56,129,121,253,4,239,15,135,244,56,221,1,199,68,36,16,0,0,192,
342 89,216,68,36,16,221,28,36,219,4,36,252,233,244,63,255,248,123,129,252,248, 342 89,216,68,36,16,221,28,36,219,4,36,252,233,244,65,255,248,125,129,252,248,
343 239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,189,0,0, 343 239,15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,189,0,0,
344 56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255, 344 56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,
345 248,123,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221, 345 248,125,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,
346 1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,137,68,36, 346 1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,137,68,36,
347 20,141,68,193,252,240,255,137,84,36,16,255,248,1,57,200,15,134,244,124,129, 347 20,141,68,193,252,240,255,137,84,36,16,255,248,1,57,200,15,134,244,126,129,
348 120,253,4,239,15,135,244,125,255,252,242,15,16,0,252,242,15,88,193,102,15, 348 120,253,4,239,15,135,244,127,255,252,242,15,16,0,252,242,15,88,193,102,15,
349 126,194,33,213,255,221,0,216,68,36,16,221,28,36,35,44,36,255,131,232,8,252, 349 126,194,33,213,255,221,0,216,68,36,16,221,28,36,35,44,36,255,131,232,8,252,
350 233,244,1,255,248,126,129,252,248,239,15,130,244,54,129,121,253,4,239,15, 350 233,244,1,255,248,128,129,252,248,239,15,130,244,56,129,121,253,4,239,15,
351 135,244,54,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81, 351 135,244,56,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81,
352 252,242,15,88,193,102,15,126,197,255,248,126,129,252,248,239,15,130,244,54, 352 252,242,15,88,193,102,15,126,197,255,248,128,129,252,248,239,15,130,244,56,
353 129,121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16, 353 129,121,253,4,239,15,135,244,56,221,1,199,68,36,16,0,0,192,89,216,68,36,16,
354 221,28,36,139,44,36,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194, 354 221,28,36,139,44,36,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194,
355 9,213,255,221,0,216,68,36,16,221,28,36,11,44,36,255,248,127,129,252,248,239, 355 9,213,255,221,0,216,68,36,16,221,28,36,11,44,36,255,248,129,129,252,248,239,
356 15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,189,0,0,56, 356 15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,189,0,0,56,
357 67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255, 357 67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,
358 248,127,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221, 358 248,129,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,
359 1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252,242,15, 359 1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252,242,15,
360 16,0,252,242,15,88,193,102,15,126,194,49,213,255,221,0,216,68,36,16,221,28, 360 16,0,252,242,15,88,193,102,15,126,194,49,213,255,221,0,216,68,36,16,221,28,
361 36,51,44,36,255,248,128,129,252,248,239,15,130,244,54,129,121,253,4,239,15, 361 36,51,44,36,255,248,130,129,252,248,239,15,130,244,56,129,121,253,4,239,15,
362 135,244,54,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81, 362 135,244,56,252,242,15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81,
363 252,242,15,88,193,102,15,126,197,255,248,128,129,252,248,239,15,130,244,54, 363 252,242,15,88,193,102,15,126,197,255,248,130,129,252,248,239,15,130,244,56,
364 129,121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16, 364 129,121,253,4,239,15,135,244,56,221,1,199,68,36,16,0,0,192,89,216,68,36,16,
365 221,28,36,139,44,36,255,15,205,252,233,244,129,255,248,130,129,252,248,239, 365 221,28,36,139,44,36,255,15,205,252,233,244,131,255,248,132,129,252,248,239,
366 15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,189,0,0,56, 366 15,130,244,56,129,121,253,4,239,15,135,244,56,252,242,15,16,1,189,0,0,56,
367 67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255, 367 67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,
368 248,130,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221, 368 248,132,129,252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,221,
369 1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252,247,213, 369 1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,252,247,213,
370 255,248,129,252,242,15,42,197,252,233,244,62,248,124,252,242,15,42,197,139, 370 255,248,131,252,242,15,42,197,252,233,244,64,248,126,252,242,15,42,197,139,
371 84,36,16,252,233,244,62,255,248,129,248,124,137,44,36,219,4,36,252,233,244, 371 84,36,16,252,233,244,64,255,248,131,248,126,137,44,36,219,4,36,252,233,244,
372 63,255,248,125,255,139,68,36,20,252,233,244,54,255,248,131,129,252,248,239, 372 65,255,248,127,255,139,68,36,20,252,233,244,56,255,248,133,129,252,248,239,
373 15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244, 373 15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,
374 54,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15, 374 56,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,
375 112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102, 375 112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,
376 15,126,201,255,248,131,129,252,248,239,15,130,244,54,129,121,253,4,239,15, 376 15,126,201,255,248,133,129,252,248,239,15,130,244,56,129,121,253,4,239,15,
377 135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16,0, 377 135,244,56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,
378 0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36, 378 0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,
379 8,139,44,36,255,211,229,137,193,252,233,244,129,255,248,132,129,252,248,239, 379 8,139,44,36,255,211,229,137,193,252,233,244,131,255,248,134,129,252,248,239,
380 15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244, 380 15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,
381 54,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15, 381 56,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,
382 112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102, 382 112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,
383 15,126,201,255,248,132,129,252,248,239,15,130,244,54,129,121,253,4,239,15, 383 15,126,201,255,248,134,129,252,248,239,15,130,244,56,129,121,253,4,239,15,
384 135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16,0, 384 135,244,56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,0,
385 0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36, 385 0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,
386 8,139,44,36,255,211,252,237,137,193,252,233,244,129,255,248,133,129,252,248, 386 8,139,44,36,255,211,252,237,137,193,252,233,244,131,255,248,135,129,252,248,
387 239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135, 387 239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,15,135,
388 244,54,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102, 388 244,56,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,
389 15,112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197, 389 15,112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,
390 102,15,126,201,255,248,133,129,252,248,239,15,130,244,54,129,121,253,4,239, 390 102,15,126,201,255,248,135,129,252,248,239,15,130,244,56,129,121,253,4,239,
391 15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16, 391 15,135,244,56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,68,36,16,
392 0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76, 392 0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,
393 36,8,139,44,36,255,211,252,253,137,193,252,233,244,129,255,248,134,129,252, 393 36,8,139,44,36,255,211,252,253,137,193,252,233,244,131,255,248,136,129,252,
394 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239, 394 248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,239,
395 15,135,244,54,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110, 395 15,135,244,56,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,
396 213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15, 396 213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,
397 126,197,102,15,126,201,255,248,134,129,252,248,239,15,130,244,54,129,121, 397 126,197,102,15,126,201,255,248,136,129,252,248,239,15,130,244,56,129,121,
398 253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199, 398 253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,
399 68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200, 399 68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,
400 139,76,36,8,139,44,36,255,211,197,137,193,252,233,244,129,255,248,135,129, 400 139,76,36,8,139,44,36,255,211,197,137,193,252,233,244,131,255,248,137,129,
401 252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12, 401 252,248,239,15,130,244,56,129,121,253,4,239,15,135,244,56,129,121,253,12,
402 239,15,135,244,54,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15, 402 239,15,135,244,56,252,242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,
403 110,213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102, 403 110,213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,137,200,102,
404 15,126,197,102,15,126,201,255,248,135,129,252,248,239,15,130,244,54,129,121, 404 15,126,197,102,15,126,201,255,248,137,129,252,248,239,15,130,244,56,129,121,
405 253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199, 405 253,4,239,15,135,244,56,129,121,253,12,239,15,135,244,56,221,1,221,65,8,199,
406 68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200, 406 68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,
407 139,76,36,8,139,44,36,255,211,205,137,193,252,233,244,129,248,116,184,237, 407 139,76,36,8,139,44,36,255,211,205,137,193,252,233,244,131,248,118,184,237,
408 252,233,244,54,248,118,184,237,248,54,139,108,36,48,41,202,137,113,252,252, 408 252,233,244,56,248,120,184,237,248,56,139,108,36,48,41,202,137,113,252,252,
409 137,116,36,24,137,84,36,16,137,141,233,141,68,193,252,248,141,144,233,137, 409 137,116,36,24,137,84,36,16,137,141,233,141,68,193,252,248,141,144,233,137,
410 133,233,139,65,252,248,59,149,233,15,135,244,251,137,44,36,252,255,144,233, 410 133,233,139,65,252,248,59,149,233,15,135,244,251,137,44,36,252,255,144,233,
411 133,192,15,133,244,249,248,1,139,141,233,255,139,133,233,41,200,193,232,3, 411 133,192,15,133,244,249,248,1,139,141,233,255,139,133,233,41,200,193,232,3,
412 131,192,1,139,105,252,248,139,84,36,16,1,202,57,113,252,252,15,133,244,248, 412 131,192,1,139,105,252,248,139,84,36,16,1,202,57,113,252,252,15,133,244,248,
413 252,255,165,233,248,2,129,121,253,252,252,239,15,133,244,29,252,255,165,233, 413 252,255,165,233,248,2,129,121,253,252,252,239,15,133,244,31,252,255,165,233,
414 248,3,139,141,233,139,84,36,16,1,202,252,233,244,68,248,5,186,237,137,252, 414 248,3,139,141,233,139,84,36,16,1,202,252,233,244,70,248,5,186,237,137,252,
415 233,232,251,1,0,252,233,244,1,248,65,93,137,108,36,16,139,108,36,48,41,202, 415 233,232,251,1,0,252,233,244,1,248,67,93,137,108,36,16,139,108,36,48,41,202,
416 137,84,36,20,137,113,252,252,137,116,36,24,137,141,233,141,68,193,252,248, 416 137,84,36,20,137,113,252,252,137,116,36,24,137,141,233,141,68,193,252,248,
417 137,252,233,137,133,233,255,232,251,1,19,139,141,233,139,133,233,41,200,193, 417 137,252,233,137,133,233,255,232,251,1,19,139,141,233,139,133,233,41,200,193,
418 232,3,131,192,1,139,113,252,252,139,84,36,20,1,202,139,108,36,16,85,139,105, 418 232,3,131,192,1,139,113,252,252,139,84,36,20,1,202,139,108,36,16,85,139,105,
419 252,248,195,248,136,255,15,182,131,233,168,235,15,133,244,251,168,235,15, 419 252,248,195,248,138,255,15,182,131,233,168,235,15,133,244,251,168,235,15,
420 133,244,247,168,235,15,132,244,247,252,255,139,233,252,233,244,247,255,248, 420 133,244,247,168,235,15,132,244,247,252,255,139,233,252,233,244,247,255,248,
421 137,15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,255, 421 139,15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,255,
422 139,233,15,132,244,247,168,235,15,132,244,251,248,1,139,108,36,48,137,149, 422 139,233,15,132,244,247,168,235,15,132,244,251,248,1,139,108,36,48,137,149,
423 233,137,252,242,137,252,233,232,251,1,20,248,3,139,149,233,248,4,15,182,78, 423 233,137,252,242,137,252,233,232,251,1,20,248,3,139,149,233,248,4,15,182,78,
424 252,253,248,5,255,15,182,110,252,252,15,183,70,252,254,252,255,164,253,171, 424 252,253,248,5,255,15,182,110,252,252,15,183,70,252,254,252,255,164,253,171,
425 233,248,138,131,198,4,139,77,232,137,76,36,20,252,233,244,4,248,139,255,139, 425 233,248,140,131,198,4,139,77,232,137,76,36,20,252,233,244,4,248,141,255,139,
426 108,36,48,137,149,233,137,252,242,141,139,233,137,171,233,137,116,36,24,232, 426 108,36,48,137,149,233,137,252,242,141,139,233,137,171,233,137,116,36,24,232,
427 251,1,21,252,233,244,3,255,248,140,255,139,108,36,48,137,149,233,137,252, 427 251,1,21,252,233,244,3,255,248,142,255,139,108,36,48,137,149,233,137,252,
428 242,141,139,233,137,171,233,137,116,36,24,232,251,1,21,139,149,233,139,6, 428 242,141,139,233,137,171,233,137,116,36,24,232,251,1,21,139,149,233,139,6,
429 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,248,141,255, 429 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,248,143,255,
430 85,141,108,36,12,85,83,82,81,80,15,182,69,252,252,138,101,252,248,137,125, 430 85,141,108,36,12,85,83,82,81,80,15,182,69,252,252,138,101,252,248,137,125,
431 252,252,137,117,252,248,139,93,0,139,139,233,199,131,233,237,137,131,233, 431 252,252,137,117,252,248,139,93,0,139,139,233,199,131,233,237,137,131,233,
432 137,139,233,129,252,236,239,252,247,131,233,237,15,132,244,247,252,242,15, 432 137,139,233,129,252,236,239,252,247,131,233,237,15,132,244,247,252,242,15,
@@ -434,29 +434,29 @@ static const unsigned char build_actionlist[15191] = {
434 192,252,242,15,17,93,184,252,242,15,17,85,176,252,242,15,17,77,168,252,242, 434 192,252,242,15,17,93,184,252,242,15,17,85,176,252,242,15,17,77,168,252,242,
435 15,17,69,160,248,1,139,171,233,139,147,233,137,171,233,137,149,233,141,84, 435 15,17,69,160,248,1,139,171,233,139,147,233,137,171,233,137,149,233,141,84,
436 36,16,141,139,233,232,251,1,22,137,196,139,149,233,139,116,36,24,137,108, 436 36,16,141,139,233,232,251,1,22,137,196,139,149,233,139,116,36,24,137,108,
437 36,48,255,248,142,255,139,122,252,248,139,191,233,139,191,233,199,131,233, 437 36,48,255,248,144,255,139,122,252,248,139,191,233,139,191,233,199,131,233,
438 0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 438 0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
439 252,255,36,171,255,248,81,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11, 439 252,255,36,171,255,248,83,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,
440 68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217, 440 68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,
441 108,36,4,139,68,36,8,195,255,248,143,102,15,252,239,210,102,15,118,210,102, 441 108,36,4,139,68,36,8,195,255,248,145,102,15,252,239,210,102,15,118,210,102,
442 15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102, 442 15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,
443 15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252, 443 15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,
444 242,15,92,203,102,15,86,202,184,0,0,252,240,63,102,15,110,208,102,15,112, 444 242,15,92,203,102,15,86,202,184,0,0,252,240,63,102,15,110,208,102,15,112,
445 210,81,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248, 445 210,81,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,
446 1,195,248,83,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102, 446 1,195,248,85,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,
447 37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4, 447 37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,
448 139,68,36,8,195,255,248,144,102,15,252,239,210,102,15,118,210,102,15,115, 448 139,68,36,8,195,255,248,146,102,15,252,239,210,102,15,118,210,102,15,115,
449 210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84, 449 210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,
450 202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242, 450 202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,
451 15,92,203,102,15,86,202,184,0,0,252,240,191,102,15,110,208,102,15,112,210, 451 15,92,203,102,15,86,202,184,0,0,252,240,191,102,15,110,208,102,15,112,210,
452 81,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195, 452 81,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,
453 248,103,255,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137, 453 248,105,255,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,
454 68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,145, 454 68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,147,
455 102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110, 455 102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,
456 216,102,15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247, 456 216,102,15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,
457 102,15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,184,0,0,252,240, 457 102,15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,184,0,0,252,240,
458 63,102,15,110,216,102,15,112,219,81,252,242,15,194,193,1,102,15,84,195,252, 458 63,102,15,110,216,102,15,112,219,81,252,242,15,194,193,1,102,15,84,195,252,
459 242,15,92,200,102,15,86,202,15,40,193,248,1,195,248,146,255,15,40,232,252, 459 242,15,92,200,102,15,86,202,15,40,193,248,1,195,248,148,255,15,40,232,252,
460 242,15,94,193,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0, 460 242,15,94,193,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,
461 48,67,102,15,110,216,102,15,112,219,81,15,40,224,102,15,84,226,102,15,46, 461 48,67,102,15,110,216,102,15,112,219,81,15,40,224,102,15,84,226,102,15,46,
462 220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,102, 462 220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,102,
@@ -465,10 +465,10 @@ static const unsigned char build_actionlist[15191] = {
465 242,15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195, 465 242,15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,
466 255,217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252, 466 255,217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,
467 255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201, 467 255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,
468 222,252,233,195,255,248,87,217,252,234,222,201,248,147,217,84,36,4,129,124, 468 222,252,233,195,255,248,89,217,252,234,222,201,248,149,217,84,36,4,129,124,
469 36,4,0,0,128,127,15,132,244,247,129,124,36,4,0,0,128,252,255,15,132,244,248, 469 36,4,0,0,128,127,15,132,244,247,129,124,36,4,0,0,128,252,255,15,132,244,248,
470 248,148,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193, 470 248,150,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,
471 217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,106,219, 471 217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,108,219,
472 84,36,4,219,68,36,4,255,223,252,233,255,221,252,233,223,224,158,255,15,133, 472 84,36,4,219,68,36,4,255,223,252,233,255,221,252,233,223,224,158,255,15,133,
473 244,254,15,138,244,255,221,216,139,68,36,4,131,252,248,1,15,142,244,252,248, 473 244,254,15,138,244,255,221,216,139,68,36,4,131,252,248,1,15,142,244,252,248,
474 1,169,1,0,0,0,15,133,244,248,216,200,209,232,252,233,244,1,248,2,209,232, 474 1,169,1,0,0,0,15,133,244,248,216,200,209,232,252,233,244,1,248,2,209,232,
@@ -477,14 +477,14 @@ static const unsigned char build_actionlist[15191] = {
477 244,253,217,232,222,252,241,252,247,216,131,252,248,1,15,132,244,5,252,233, 477 244,253,217,232,222,252,241,252,247,216,131,252,248,1,15,132,244,5,252,233,
478 244,1,248,7,221,216,217,232,195,248,8,217,84,36,4,217,201,217,84,36,8,139, 478 244,1,248,7,221,216,217,232,195,248,8,217,84,36,4,217,201,217,84,36,8,139,
479 68,36,4,209,224,61,0,0,0,252,255,15,132,244,248,139,68,36,8,209,224,15,132, 479 68,36,4,209,224,61,0,0,0,252,255,15,132,244,248,139,68,36,8,209,224,15,132,
480 244,250,61,0,0,0,252,255,15,132,244,250,217,252,241,252,233,244,148,248,9, 480 244,250,61,0,0,0,252,255,15,132,244,250,217,252,241,252,233,244,150,248,9,
481 255,217,232,255,223,252,234,255,221,252,234,223,224,158,255,15,132,244,247, 481 255,217,232,255,223,252,234,255,221,252,234,223,224,158,255,15,132,244,247,
482 217,201,248,1,221,216,195,248,2,217,225,217,232,255,15,132,244,249,221,216, 482 217,201,248,1,221,216,195,248,2,217,225,217,232,255,15,132,244,249,221,216,
483 217,225,217,252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,15,137,244, 483 217,225,217,252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,15,137,244,
484 249,217,201,248,3,221,217,217,225,195,248,4,131,124,36,4,0,15,141,244,3,221, 484 249,217,201,248,3,221,217,217,225,195,248,4,131,124,36,4,0,15,141,244,3,221,
485 216,221,216,133,192,15,132,244,251,217,252,238,195,248,5,199,68,36,4,0,0, 485 216,221,216,133,192,15,132,244,251,217,252,238,195,248,5,199,68,36,4,0,0,
486 128,127,217,68,36,4,195,255,248,106,255,248,149,252,242,15,45,193,252,242, 486 128,127,217,68,36,4,195,255,248,108,255,248,151,252,242,15,45,193,252,242,
487 15,42,208,102,15,46,202,15,133,244,254,15,138,244,255,248,150,131,252,248, 487 15,42,208,102,15,46,202,15,133,244,254,15,138,244,255,248,152,131,252,248,
488 1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232, 488 1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,
489 252,233,244,1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89, 489 252,233,244,1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,
490 192,209,232,15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244, 490 192,209,232,15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,
@@ -504,29 +504,29 @@ static const unsigned char build_actionlist[15191] = {
504 87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102, 504 87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102,
505 15,110,192,102,15,112,192,81,195,248,4,102,15,80,193,133,192,15,133,244,3, 505 15,110,192,102,15,112,192,81,195,248,4,102,15,80,193,133,192,15,133,244,3,
506 255,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195, 506 255,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,
507 248,151,255,139,68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247, 507 248,153,255,139,68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247,
508 15,135,244,248,232,244,81,252,233,244,253,248,1,232,244,83,252,233,244,253, 508 15,135,244,248,232,244,83,252,233,244,253,248,1,232,244,85,252,233,244,253,
509 248,2,131,252,248,3,15,132,244,247,15,135,244,248,232,244,103,255,252,233, 509 248,2,131,252,248,3,15,132,244,247,15,135,244,248,232,244,105,255,252,233,
510 244,253,248,1,252,242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195, 510 244,253,248,1,252,242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195,
511 248,2,221,68,36,4,131,252,248,5,15,130,244,87,15,132,244,147,248,2,131,252, 511 248,2,221,68,36,4,131,252,248,5,15,130,244,89,15,132,244,149,248,2,131,252,
512 248,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248, 512 248,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,
513 1,217,232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135, 513 1,217,232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135,
514 244,248,255,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248, 514 244,248,255,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,
515 2,131,252,248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217, 515 2,131,252,248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,
516 252,242,221,216,195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244, 516 252,242,221,216,195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244,
517 81,15,132,244,83,131,252,248,3,15,130,244,103,15,135,244,248,217,252,250, 517 83,15,132,244,85,131,252,248,3,15,130,244,105,15,135,244,248,217,252,250,
518 195,248,2,131,252,248,5,15,130,244,87,15,132,244,147,131,252,248,7,15,132, 518 195,248,2,131,252,248,5,15,130,244,89,15,132,244,149,131,252,248,7,15,132,
519 244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232, 519 244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,
520 217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,255,15,135,244, 520 217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,255,15,135,244,
521 248,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252, 521 248,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,
522 248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221, 522 248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,
523 216,195,255,248,9,204,248,152,255,139,68,36,20,252,242,15,16,68,36,4,252, 523 216,195,255,248,9,204,248,154,255,139,68,36,20,252,242,15,16,68,36,4,252,
524 242,15,16,76,36,12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15, 524 242,15,16,76,36,12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15,
525 88,193,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92,193, 525 88,193,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92,193,
526 252,233,244,7,248,2,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15, 526 252,233,244,7,248,2,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,
527 89,193,252,233,244,7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252, 527 89,193,252,233,244,7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252,
528 248,5,15,132,244,247,255,15,135,244,248,232,244,146,252,233,244,7,248,1,90, 528 248,5,15,132,244,247,255,15,135,244,248,232,244,148,252,233,244,7,248,1,90,
529 232,244,106,82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244, 529 232,244,108,82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244,
530 248,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,233,244, 530 248,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,233,244,
531 7,248,1,102,15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,252, 531 7,248,1,102,15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,252,
532 233,244,7,248,2,255,131,252,248,9,15,135,244,248,221,68,36,4,221,68,36,12, 532 233,244,7,248,2,255,131,252,248,9,15,135,244,248,221,68,36,4,221,68,36,12,
@@ -535,18 +535,18 @@ static const unsigned char build_actionlist[15191] = {
535 244,7,248,1,252,242,15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221, 535 244,7,248,1,252,242,15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221,
536 68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193, 536 68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,
537 195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248, 537 195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,
538 222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,146,15,132, 538 222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,148,15,132,
539 244,106,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195, 539 244,108,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,
540 248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248, 540 248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,
541 217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11, 541 217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,
542 15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219, 542 15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,
543 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244, 543 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,
544 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133, 544 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,
545 244,248,217,201,248,2,221,216,195,255,248,153,156,90,137,209,129,252,242, 545 244,248,217,201,248,2,221,216,195,255,248,155,156,90,137,209,129,252,242,
546 0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15, 546 0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15,
547 162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,255,249, 547 162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,255,249,
548 255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244, 548 255,129,124,253,202,4,239,15,135,244,43,129,124,253,194,4,239,15,135,244,
549 41,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4, 549 43,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4,
550 194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15, 550 194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15,
551 134,244,248,255,15,131,244,248,255,248,1,15,183,70,252,254,141,180,253,134, 551 134,244,248,255,15,131,244,248,255,248,1,15,183,70,252,254,141,180,253,134,
552 233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, 552 233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
@@ -557,7 +557,7 @@ static const unsigned char build_actionlist[15191] = {
557 70,252,254,141,180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,2, 557 70,252,254,141,180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,2,
558 129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129, 558 129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,
559 252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133, 559 252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133,
560 233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,45,255, 560 233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,47,255,
561 252,247,208,131,198,4,129,124,253,202,4,239,15,133,244,248,139,12,202,59, 561 252,247,208,131,198,4,129,124,253,202,4,239,15,133,244,248,139,12,202,59,
562 12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,248,255,252,242,15, 562 12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,248,255,252,242,15,
563 16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,252,247,208,131,198, 563 16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,252,247,208,131,198,
@@ -568,18 +568,18 @@ static const unsigned char build_actionlist[15191] = {
568 4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255, 568 4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,
569 49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,204, 569 49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,
570 15,182,232,131,198,4,193,232,16,252,255,36,171,255,129,124,253,194,4,239, 570 15,182,232,131,198,4,193,232,16,252,255,36,171,255,129,124,253,194,4,239,
571 15,135,244,48,255,252,242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,15, 571 15,135,244,50,255,252,242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,15,
572 112,201,81,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202, 572 112,201,81,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,
573 255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242, 573 255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,
574 15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202, 574 15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,
575 255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2, 575 255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,
576 129,124,253,194,4,239,15,133,244,50,139,12,194,137,213,232,251,1,18,255,252, 576 129,124,253,194,4,239,15,133,244,52,139,12,194,137,213,232,251,1,18,255,252,
577 242,15,42,192,137,252,234,255,137,4,36,137,252,234,219,4,36,255,15,182,78, 577 242,15,42,192,137,252,234,255,137,4,36,137,252,234,219,4,36,255,15,182,78,
578 252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234, 578 252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234,
579 4,239,15,135,244,46,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221, 579 4,239,15,135,244,48,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,
580 4,252,234,220,4,199,255,129,124,253,252,234,4,239,15,135,244,47,255,252,242, 580 4,252,234,220,4,199,255,129,124,253,252,234,4,239,15,135,244,49,255,252,242,
581 15,16,4,199,252,242,15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124, 581 15,16,4,199,252,242,15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124,
582 253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15,135,244,49,255,252, 582 253,252,234,4,239,15,135,244,51,129,124,253,194,4,239,15,135,244,51,255,252,
583 242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252, 583 242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,
584 242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,234,220,36,199,255, 584 242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,234,220,36,199,255,
585 252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,199,220,36,252,234, 585 252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,199,220,36,252,234,
@@ -593,10 +593,10 @@ static const unsigned char build_actionlist[15191] = {
593 221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,199, 593 221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,199,
594 255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,252, 594 255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,252,
595 234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16, 595 234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,
596 12,194,255,221,4,252,234,221,4,194,255,248,154,232,244,146,255,252,233,244, 596 12,194,255,221,4,252,234,221,4,194,255,248,156,232,244,148,255,252,233,244,
597 154,255,232,244,106,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76, 597 156,255,232,244,108,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76,
598 36,4,137,68,36,8,248,33,139,108,36,48,137,44,36,137,149,233,137,116,36,24, 598 36,4,137,68,36,8,248,35,139,108,36,48,137,44,36,137,149,233,137,116,36,24,
599 232,251,1,23,139,149,233,133,192,15,133,244,42,15,182,110,252,255,15,182, 599 232,251,1,23,139,149,233,133,192,15,133,244,44,15,182,110,252,255,15,182,
600 78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6, 600 78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6,
601 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208, 601 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,
602 139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198, 602 139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,
@@ -637,55 +637,55 @@ static const unsigned char build_actionlist[15191] = {
637 139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204, 637 139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,
638 15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,137,252,233,232,251, 638 15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,137,252,233,232,251,
639 1,28,15,183,70,252,254,252,247,208,252,233,244,2,255,252,247,208,139,106, 639 1,28,15,183,70,252,254,252,247,208,252,233,244,2,255,252,247,208,139,106,
640 252,248,139,173,233,139,4,135,252,233,244,155,255,252,247,208,139,106,252, 640 252,248,139,173,233,139,4,135,252,233,244,157,255,252,247,208,139,106,252,
641 248,139,173,233,139,4,135,252,233,244,156,255,15,182,252,236,15,182,192,129, 641 248,139,173,233,139,4,135,252,233,244,158,255,15,182,252,236,15,182,192,129,
642 124,253,252,234,4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239, 642 124,253,252,234,4,239,15,133,244,38,139,44,252,234,129,124,253,194,4,239,
643 15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200, 643 15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,
644 102,15,46,193,255,221,4,194,219,20,36,219,4,36,255,15,133,244,36,59,133,233, 644 102,15,46,193,255,221,4,194,219,20,36,219,4,36,255,15,133,244,38,59,133,233,
645 15,131,244,36,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,248,1, 645 15,131,244,38,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,248,1,
646 139,40,139,64,4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232,131,198, 646 139,40,139,64,4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232,131,198,
647 4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,1,139,141,233, 647 4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,1,139,141,233,
648 252,246,129,233,235,15,132,244,36,15,182,78,252,253,252,233,244,1,248,5,255, 648 252,246,129,233,235,15,132,244,38,15,182,78,252,253,252,233,244,1,248,5,255,
649 129,124,253,194,4,239,15,133,244,36,139,4,194,252,233,244,155,255,15,182, 649 129,124,253,194,4,239,15,133,244,38,139,4,194,252,233,244,157,255,15,182,
650 252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133, 650 252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,
651 244,34,139,44,252,234,248,155,139,141,233,35,136,233,105,201,239,3,141,233, 651 244,36,139,44,252,234,248,157,139,141,233,35,136,233,105,201,239,3,141,233,
652 248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253, 652 248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,
653 4,239,15,132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,248,2,255, 653 4,239,15,132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,248,2,255,
654 137,76,194,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 654 137,76,194,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
655 171,248,3,15,182,70,252,253,185,237,252,233,244,2,248,4,139,137,233,133,201, 655 171,248,3,15,182,70,252,253,185,237,252,233,244,2,248,4,139,137,233,133,201,
656 15,133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15, 656 15,133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,
657 133,244,3,252,233,244,34,255,15,182,252,236,15,182,192,129,124,253,252,234, 657 133,244,3,252,233,244,36,255,15,182,252,236,15,182,192,129,124,253,252,234,
658 4,239,15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133, 658 4,239,15,133,244,37,139,44,252,234,59,133,233,15,131,244,37,193,224,3,3,133,
659 233,129,120,253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137, 659 233,129,120,253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,
660 68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, 660 68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
661 248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244, 661 248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,
662 35,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,39, 662 37,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,
663 139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,39,59, 663 139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,41,59,
664 133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249, 664 133,233,15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,
665 248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137, 665 248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,
666 104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, 666 104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
667 248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132, 667 248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132,
668 244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133, 668 244,41,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,
669 244,39,139,4,194,252,233,244,156,248,7,128,165,233,235,139,139,233,137,171, 669 244,41,139,4,194,252,233,244,158,248,7,128,165,233,235,139,139,233,137,171,
670 233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182, 670 233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182,
671 192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44, 671 192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,39,139,44,
672 252,234,248,156,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233, 672 252,234,248,158,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,
673 248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253, 673 248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,
674 4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15, 674 4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15,
675 182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,6,15,182,204,15, 675 182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,6,15,182,204,15,
676 182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,189,233,0,15,132,244, 676 182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,189,233,0,15,132,244,
677 2,137,76,36,16,139,141,233,252,246,129,233,235,15,132,244,37,139,76,36,16, 677 2,137,76,36,16,139,141,233,252,246,129,233,235,15,132,244,39,139,76,36,16,
678 252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133, 678 252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,
679 201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,68,36,16,199, 679 201,15,132,244,252,252,246,129,233,235,15,132,244,39,248,6,137,68,36,16,199,
680 68,36,20,237,137,108,36,12,141,68,36,16,137,108,36,4,139,108,36,48,137,68, 680 68,36,20,237,137,108,36,12,141,68,36,16,137,108,36,4,139,108,36,48,137,68,
681 36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,30,139,149,233,139,108, 681 36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,30,139,149,233,139,108,
682 36,12,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233, 682 36,12,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233,
683 137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234, 683 137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234,
684 4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133, 684 4,239,15,133,244,40,139,44,252,234,59,133,233,15,131,244,40,193,224,3,3,133,
685 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244, 685 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,
686 253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182, 686 253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,
687 232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1, 687 232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,
688 255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,78,252,253,252,233, 688 255,139,141,233,252,246,129,233,235,15,132,244,40,15,182,78,252,253,252,233,
689 244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182,78, 689 244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,
690 252,253,252,233,244,2,255,137,124,36,16,255,221,4,199,219,92,36,12,255,248, 690 252,253,252,233,244,2,255,137,124,36,16,255,221,4,199,219,92,36,12,255,248,
691 1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139, 691 1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,
@@ -697,8 +697,8 @@ static const unsigned char build_actionlist[15191] = {
697 8,137,44,36,137,116,36,24,232,251,1,31,139,149,233,15,182,78,252,253,252, 697 8,137,44,36,137,116,36,24,232,251,1,31,139,149,233,15,182,78,252,253,252,
698 233,244,1,248,7,128,165,233,235,139,131,233,137,171,233,255,137,133,233,252, 698 233,244,1,248,7,128,165,233,235,139,131,233,137,171,233,255,137,133,233,252,
699 233,244,2,255,3,68,36,20,255,141,76,202,8,139,105,252,248,129,121,253,252, 699 233,244,2,255,3,68,36,20,255,141,76,202,8,139,105,252,248,129,121,253,252,
700 252,239,15,133,244,29,252,255,165,233,255,141,76,202,8,137,215,139,105,252, 700 252,239,15,133,244,31,252,255,165,233,255,141,76,202,8,137,215,139,105,252,
701 248,129,121,253,252,252,239,15,133,244,29,248,51,139,114,252,252,252,247, 701 248,129,121,253,252,252,239,15,133,244,31,248,53,139,114,252,252,252,247,
702 198,237,15,133,244,253,248,1,137,106,252,248,137,68,36,20,131,232,1,15,132, 702 198,237,15,133,244,253,248,1,137,106,252,248,137,68,36,20,131,232,1,15,132,
703 244,249,248,2,139,41,137,47,139,105,4,137,111,4,131,199,8,131,193,8,131,232, 703 244,249,248,2,139,41,137,47,139,105,4,137,111,4,131,199,8,131,193,8,131,232,
704 1,15,133,244,2,139,106,252,248,248,3,137,209,128,189,233,1,15,135,244,251, 704 1,15,133,244,2,139,106,252,248,248,3,137,209,128,189,233,1,15,135,244,251,
@@ -708,7 +708,7 @@ static const unsigned char build_actionlist[15191] = {
708 139,114,252,252,252,233,244,1,255,141,76,202,8,139,105,232,139,65,252,236, 708 139,114,252,252,252,233,244,1,255,141,76,202,8,139,105,232,139,65,252,236,
709 137,41,137,65,4,139,105,252,240,139,65,252,244,137,105,8,137,65,12,139,105, 709 137,41,137,65,4,139,105,252,240,139,65,252,244,137,105,8,137,65,12,139,105,
710 224,139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,3,0,0,0, 710 224,139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,3,0,0,0,
711 15,133,244,29,252,255,165,233,255,15,182,252,236,139,66,252,248,141,12,202, 711 15,133,244,31,252,255,165,233,255,15,182,252,236,139,66,252,248,141,12,202,
712 139,128,233,15,182,128,233,137,124,36,16,141,188,253,194,233,43,122,252,252, 712 139,128,233,15,182,128,233,137,124,36,16,141,188,253,194,233,43,122,252,252,
713 133,252,237,15,132,244,251,141,108,252,233,252,248,57,215,15,131,244,248, 713 133,252,237,15,132,244,251,141,108,252,233,252,248,57,215,15,131,244,248,
714 248,1,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,8,57, 714 248,1,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,8,57,
@@ -730,8 +730,8 @@ static const unsigned char build_actionlist[15191] = {
730 248,6,255,199,71,252,252,237,131,199,8,255,199,68,194,252,244,237,255,131, 730 248,6,255,199,71,252,252,237,131,199,8,255,199,68,194,252,244,237,255,131,
731 192,1,252,233,244,5,248,7,15,139,244,18,131,230,252,248,41,252,242,255,1, 731 192,1,252,233,244,5,248,7,15,139,244,18,131,230,252,248,41,252,242,255,1,
732 252,241,255,137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1, 732 252,241,255,137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,
733 15,132,244,139,255,141,12,202,255,129,121,253,4,239,15,135,244,52,129,121, 733 15,132,244,141,255,141,12,202,255,129,121,253,4,239,15,135,244,54,129,121,
734 253,12,239,15,135,244,52,255,139,105,20,255,129,252,253,239,15,135,244,52, 734 253,12,239,15,135,244,54,255,139,105,20,255,129,252,253,239,15,135,244,54,
735 255,252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15, 735 255,252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,
736 17,1,133,252,237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248, 736 17,1,133,252,237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,
737 1,252,242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133, 737 1,252,242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,
@@ -761,7 +761,9 @@ enum {
761 GLOB_vm_leave_cp, 761 GLOB_vm_leave_cp,
762 GLOB_vm_leave_unw, 762 GLOB_vm_leave_unw,
763 GLOB_vm_unwind_c, 763 GLOB_vm_unwind_c,
764 GLOB_vm_unwind_c_eh,
764 GLOB_vm_unwind_ff, 765 GLOB_vm_unwind_ff,
766 GLOB_vm_unwind_ff_eh,
765 GLOB_cont_dispatch, 767 GLOB_cont_dispatch,
766 GLOB_vm_resume, 768 GLOB_vm_resume,
767 GLOB_vm_pcall, 769 GLOB_vm_pcall,
@@ -911,7 +913,9 @@ static const char *const globnames[] = {
911 "vm_leave_cp", 913 "vm_leave_cp",
912 "vm_leave_unw", 914 "vm_leave_unw",
913 "vm_unwind_c", 915 "vm_unwind_c",
916 "vm_unwind_c_eh",
914 "vm_unwind_ff", 917 "vm_unwind_ff",
918 "vm_unwind_ff_eh",
915 "cont_dispatch", 919 "cont_dispatch",
916 "vm_resume", 920 "vm_resume",
917 "vm_pcall", 921 "vm_pcall",
@@ -1112,439 +1116,439 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1112 dasm_put(Dst, 362, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base)); 1116 dasm_put(Dst, 362, FRAME_C, DISPATCH_GL(vmstate), ~LJ_VMST_C, Dt1(->base));
1113 dasm_put(Dst, 453, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL, Dt1(->top)); 1117 dasm_put(Dst, 453, Dt1(->top), Dt1(->cframe), Dt1(->maxstack), LJ_TNIL, Dt1(->top));
1114 dasm_put(Dst, 532, Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1118 dasm_put(Dst, 532, Dt1(->top), Dt1(->glref), Dt2(->vmstate), ~LJ_VMST_C, CFRAME_RAWMASK, 1+1, Dt1(->base), Dt1(->glref), GG_G2DISP, LJ_TFALSE, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1115 dasm_put(Dst, 634, FRAME_P, LJ_TTRUE, LUA_MINSTACK, Dt9(->bc), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), Dt7(->gate)); 1119 dasm_put(Dst, 622, FRAME_P, LJ_TTRUE, LUA_MINSTACK, Dt9(->bc), Dt1(->base), Dt1(->top), Dt1(->base));
1116 dasm_put(Dst, 756, FRAME_C, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE, FRAME_CP); 1120 dasm_put(Dst, 725, Dt1(->top), Dt7(->gate), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
1117 dasm_put(Dst, 861, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), LJ_TFUNC, Dt7(->gate)); 1121 dasm_put(Dst, 845, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), LJ_TFUNC, Dt7(->gate));
1118 dasm_put(Dst, 954, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, Dt7(->pt), Dt9(->k), LJ_TSTR); 1122 dasm_put(Dst, 948, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, Dt7(->pt), Dt9(->k), LJ_TSTR);
1119 dasm_put(Dst, 1143, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); 1123 dasm_put(Dst, 1137, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
1120 if (sse) { 1124 if (sse) {
1121 dasm_put(Dst, 1179); 1125 dasm_put(Dst, 1173);
1122 } else { 1126 } else {
1123 dasm_put(Dst, 1192); 1127 dasm_put(Dst, 1186);
1124 } 1128 }
1125 dasm_put(Dst, 1205, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv)); 1129 dasm_put(Dst, 1199, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv));
1126 dasm_put(Dst, 1363, LJ_TTAB); 1130 dasm_put(Dst, 1357, LJ_TTAB);
1127 if (sse) { 1131 if (sse) {
1128 dasm_put(Dst, 1179); 1132 dasm_put(Dst, 1173);
1129 } else { 1133 } else {
1130 dasm_put(Dst, 1192); 1134 dasm_put(Dst, 1186);
1131 } 1135 }
1132 dasm_put(Dst, 1383, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base)); 1136 dasm_put(Dst, 1377, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base));
1133 dasm_put(Dst, 1590, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1137 dasm_put(Dst, 1584, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1134 dasm_put(Dst, 1701, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC); 1138 dasm_put(Dst, 1695, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC);
1135 dasm_put(Dst, 1830, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), GG_DISP_STATIC*4, 1+1); 1139 dasm_put(Dst, 1824, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), GG_DISP_STATIC*4, 1+1);
1136 dasm_put(Dst, 1990, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX); 1140 dasm_put(Dst, 1984, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX);
1137 if (cmov) { 1141 if (cmov) {
1138 dasm_put(Dst, 2086); 1142 dasm_put(Dst, 2080);
1139 } else { 1143 } else {
1140 dasm_put(Dst, 2090); 1144 dasm_put(Dst, 2084);
1141 } 1145 }
1142 dasm_put(Dst, 2099, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask)); 1146 dasm_put(Dst, 2093, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask));
1143 dasm_put(Dst, 2187, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); 1147 dasm_put(Dst, 2181, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
1144 dasm_put(Dst, 2242, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB); 1148 dasm_put(Dst, 2236, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB);
1145 dasm_put(Dst, 2314, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1149 dasm_put(Dst, 2308, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1146 dasm_put(Dst, 2379, 2+1, LJ_TTAB, 1+1, LJ_TISNUM); 1150 dasm_put(Dst, 2373, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
1147 if (sse) { 1151 if (sse) {
1148 dasm_put(Dst, 2470); 1152 dasm_put(Dst, 2464);
1149 } else { 1153 } else {
1150 dasm_put(Dst, 2480); 1154 dasm_put(Dst, 2474);
1151 } 1155 }
1152 dasm_put(Dst, 2487, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1156 dasm_put(Dst, 2481, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1153 dasm_put(Dst, 2549, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); 1157 dasm_put(Dst, 2543, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
1154 dasm_put(Dst, 2639, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); 1158 dasm_put(Dst, 2633, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
1155 dasm_put(Dst, 2745, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1159 dasm_put(Dst, 2739, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1156 if (sse) { 1160 if (sse) {
1157 dasm_put(Dst, 2800); 1161 dasm_put(Dst, 2794);
1158 } else { 1162 } else {
1159 dasm_put(Dst, 2839); 1163 dasm_put(Dst, 2833);
1160 } 1164 }
1161 dasm_put(Dst, 2857, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1165 dasm_put(Dst, 2851, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1162 dasm_put(Dst, 2943, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC); 1166 dasm_put(Dst, 2937, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC);
1163 if (sse) { 1167 if (sse) {
1164 dasm_put(Dst, 2973); 1168 dasm_put(Dst, 2967);
1165 } else { 1169 } else {
1166 dasm_put(Dst, 2983); 1170 dasm_put(Dst, 2977);
1167 } 1171 }
1168 dasm_put(Dst, 2990, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate)); 1172 dasm_put(Dst, 2984, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate));
1169 dasm_put(Dst, 3063, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD); 1173 dasm_put(Dst, 3057, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD);
1170 dasm_put(Dst, 3161, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); 1174 dasm_put(Dst, 3155, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1171 dasm_put(Dst, 3226, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top)); 1175 dasm_put(Dst, 3220, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top));
1172 dasm_put(Dst, 3330, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2); 1176 dasm_put(Dst, 3324, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2);
1173 dasm_put(Dst, 3449, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base)); 1177 dasm_put(Dst, 3443, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base));
1174 dasm_put(Dst, 3529, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); 1178 dasm_put(Dst, 3523, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
1175 dasm_put(Dst, 3637, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE); 1179 dasm_put(Dst, 3631, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE);
1176 dasm_put(Dst, 3733, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_CANYIELD, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); 1180 dasm_put(Dst, 3727, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_CANYIELD, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1177 if (sse) { 1181 if (sse) {
1178 dasm_put(Dst, 3819, 1+1, LJ_TISNUM); 1182 dasm_put(Dst, 3813, 1+1, LJ_TISNUM);
1179 } else { 1183 } else {
1180 dasm_put(Dst, 3880, 1+1, LJ_TISNUM); 1184 dasm_put(Dst, 3874, 1+1, LJ_TISNUM);
1181 } 1185 }
1182 dasm_put(Dst, 3912, 1+1, FRAME_TYPE, LJ_TNIL); 1186 dasm_put(Dst, 3906, 1+1, FRAME_TYPE, LJ_TNIL);
1183 if (sse) { 1187 if (sse) {
1184 dasm_put(Dst, 3993, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1188 dasm_put(Dst, 3987, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1185 dasm_put(Dst, 4055, 1+1, LJ_TISNUM); 1189 dasm_put(Dst, 4049, 1+1, LJ_TISNUM);
1186 } else { 1190 } else {
1187 dasm_put(Dst, 4085, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1191 dasm_put(Dst, 4079, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1188 dasm_put(Dst, 4144, 1+1, LJ_TISNUM); 1192 dasm_put(Dst, 4138, 1+1, LJ_TISNUM);
1189 } 1193 }
1190 dasm_put(Dst, 4171, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1194 dasm_put(Dst, 4165, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1191 dasm_put(Dst, 4240, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1195 dasm_put(Dst, 4234, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1192 dasm_put(Dst, 4297, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1196 dasm_put(Dst, 4291, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1193 dasm_put(Dst, 4360, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1197 dasm_put(Dst, 4354, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1194 dasm_put(Dst, 4450); 1198 dasm_put(Dst, 4444);
1195 if (sse) { 1199 if (sse) {
1196 dasm_put(Dst, 4462, 1+1, LJ_TISNUM); 1200 dasm_put(Dst, 4456, 1+1, LJ_TISNUM);
1197 } else { 1201 } else {
1198 dasm_put(Dst, 4493, 1+1, LJ_TISNUM); 1202 dasm_put(Dst, 4487, 1+1, LJ_TISNUM);
1199 } 1203 }
1200 dasm_put(Dst, 4518); 1204 dasm_put(Dst, 4512);
1201 if (sse) { 1205 if (sse) {
1202 dasm_put(Dst, 4540, 1+1, LJ_TISNUM); 1206 dasm_put(Dst, 4534, 1+1, LJ_TISNUM);
1203 } else { 1207 } else {
1204 dasm_put(Dst, 4571, 1+1, LJ_TISNUM); 1208 dasm_put(Dst, 4565, 1+1, LJ_TISNUM);
1205 } 1209 }
1206 dasm_put(Dst, 4596); 1210 dasm_put(Dst, 4590);
1207 if (sse) { 1211 if (sse) {
1208 dasm_put(Dst, 4618, 1+1, LJ_TISNUM); 1212 dasm_put(Dst, 4612, 1+1, LJ_TISNUM);
1209 } else { 1213 } else {
1210 dasm_put(Dst, 4649, 1+1, LJ_TISNUM); 1214 dasm_put(Dst, 4643, 1+1, LJ_TISNUM);
1211 } 1215 }
1212 dasm_put(Dst, 4674); 1216 dasm_put(Dst, 4668);
1213 if (sse) { 1217 if (sse) {
1214 dasm_put(Dst, 4698, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1218 dasm_put(Dst, 4692, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1215 } else { 1219 } else {
1216 dasm_put(Dst, 4733, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1220 dasm_put(Dst, 4727, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1217 } 1221 }
1218 dasm_put(Dst, 4762, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1222 dasm_put(Dst, 4756, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1219 dasm_put(Dst, 4827, 1+1, LJ_TISNUM); 1223 dasm_put(Dst, 4821, 1+1, LJ_TISNUM);
1220 if (sse) { 1224 if (sse) {
1221 dasm_put(Dst, 4922); 1225 dasm_put(Dst, 4916);
1222 } else { 1226 } else {
1223 dasm_put(Dst, 4928); 1227 dasm_put(Dst, 4922);
1224 } 1228 }
1225 dasm_put(Dst, 4937); 1229 dasm_put(Dst, 4931);
1226 if (sse) { 1230 if (sse) {
1227 dasm_put(Dst, 4962); 1231 dasm_put(Dst, 4956);
1228 } else { 1232 } else {
1229 dasm_put(Dst, 4968); 1233 dasm_put(Dst, 4962);
1230 } 1234 }
1231 dasm_put(Dst, 4971, 1+2); 1235 dasm_put(Dst, 4965, 1+2);
1232 if (sse) { 1236 if (sse) {
1233 dasm_put(Dst, 4980); 1237 dasm_put(Dst, 4974);
1234 } else { 1238 } else {
1235 dasm_put(Dst, 4988); 1239 dasm_put(Dst, 4982);
1236 } 1240 }
1237 dasm_put(Dst, 1587); 1241 dasm_put(Dst, 1581);
1238 if (sse) { 1242 if (sse) {
1239 dasm_put(Dst, 4996); 1243 dasm_put(Dst, 4990);
1240 } else { 1244 } else {
1241 dasm_put(Dst, 5028); 1245 dasm_put(Dst, 5022);
1242 } 1246 }
1243 dasm_put(Dst, 5047); 1247 dasm_put(Dst, 5041);
1244 if (sse) { 1248 if (sse) {
1245 dasm_put(Dst, 5063, 1+1, LJ_TISNUM); 1249 dasm_put(Dst, 5057, 1+1, LJ_TISNUM);
1246 } else { 1250 } else {
1247 dasm_put(Dst, 5088, 1+1, LJ_TISNUM); 1251 dasm_put(Dst, 5082, 1+1, LJ_TISNUM);
1248 } 1252 }
1249 dasm_put(Dst, 5110); 1253 dasm_put(Dst, 5104);
1250 if (sse) { 1254 if (sse) {
1251 dasm_put(Dst, 5128); 1255 dasm_put(Dst, 5122);
1252 } else { 1256 } else {
1253 dasm_put(Dst, 5154); 1257 dasm_put(Dst, 5148);
1254 } 1258 }
1255 dasm_put(Dst, 5171, 1+2); 1259 dasm_put(Dst, 5165, 1+2);
1256 if (sse) { 1260 if (sse) {
1257 dasm_put(Dst, 5211); 1261 dasm_put(Dst, 5205);
1258 } else { 1262 } else {
1259 dasm_put(Dst, 5219); 1263 dasm_put(Dst, 5213);
1260 } 1264 }
1261 dasm_put(Dst, 5229, 2+1, LJ_TISNUM, LJ_TISNUM); 1265 dasm_put(Dst, 5223, 2+1, LJ_TISNUM, LJ_TISNUM);
1262 if (sse) { 1266 if (sse) {
1263 dasm_put(Dst, 5281, 1+1, LJ_TISNUM, LJ_TISNUM); 1267 dasm_put(Dst, 5275, 1+1, LJ_TISNUM, LJ_TISNUM);
1264 } else { 1268 } else {
1265 dasm_put(Dst, 5328, 2+1, LJ_TISNUM, LJ_TISNUM); 1269 dasm_put(Dst, 5322, 2+1, LJ_TISNUM, LJ_TISNUM);
1266 } 1270 }
1267 if (sse) { 1271 if (sse) {
1268 dasm_put(Dst, 5369, 1+1, LJ_TISNUM, LJ_TISNUM); 1272 dasm_put(Dst, 5363, 1+1, LJ_TISNUM, LJ_TISNUM);
1269 } else { 1273 } else {
1270 dasm_put(Dst, 5440, 1+1, LJ_TISNUM, LJ_TISNUM); 1274 dasm_put(Dst, 5434, 1+1, LJ_TISNUM, LJ_TISNUM);
1271 if (cmov) { 1275 if (cmov) {
1272 dasm_put(Dst, 5493); 1276 dasm_put(Dst, 5487);
1273 } else { 1277 } else {
1274 dasm_put(Dst, 5501); 1278 dasm_put(Dst, 5495);
1275 } 1279 }
1276 dasm_put(Dst, 5432); 1280 dasm_put(Dst, 5426);
1277 } 1281 }
1278 if (sse) { 1282 if (sse) {
1279 dasm_put(Dst, 5522, 1+1, LJ_TISNUM, LJ_TISNUM); 1283 dasm_put(Dst, 5516, 1+1, LJ_TISNUM, LJ_TISNUM);
1280 } else { 1284 } else {
1281 dasm_put(Dst, 5593, 1+1, LJ_TISNUM, LJ_TISNUM); 1285 dasm_put(Dst, 5587, 1+1, LJ_TISNUM, LJ_TISNUM);
1282 if (cmov) { 1286 if (cmov) {
1283 dasm_put(Dst, 5646); 1287 dasm_put(Dst, 5640);
1284 } else { 1288 } else {
1285 dasm_put(Dst, 5654); 1289 dasm_put(Dst, 5648);
1286 } 1290 }
1287 dasm_put(Dst, 5432); 1291 dasm_put(Dst, 5426);
1288 } 1292 }
1289 if (!sse) { 1293 if (!sse) {
1290 dasm_put(Dst, 5675); 1294 dasm_put(Dst, 5669);
1291 } 1295 }
1292 dasm_put(Dst, 5684, 1+1, LJ_TSTR); 1296 dasm_put(Dst, 5678, 1+1, LJ_TSTR);
1293 if (sse) { 1297 if (sse) {
1294 dasm_put(Dst, 5706, Dt5(->len)); 1298 dasm_put(Dst, 5700, Dt5(->len));
1295 } else { 1299 } else {
1296 dasm_put(Dst, 5717, Dt5(->len)); 1300 dasm_put(Dst, 5711, Dt5(->len));
1297 } 1301 }
1298 dasm_put(Dst, 5725, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1302 dasm_put(Dst, 5719, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1299 if (sse) { 1303 if (sse) {
1300 dasm_put(Dst, 5759); 1304 dasm_put(Dst, 5753);
1301 } else { 1305 } else {
1302 dasm_put(Dst, 5769); 1306 dasm_put(Dst, 5763);
1303 } 1307 }
1304 dasm_put(Dst, 5782, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1308 dasm_put(Dst, 5776, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1305 if (sse) { 1309 if (sse) {
1306 dasm_put(Dst, 5817); 1310 dasm_put(Dst, 5811);
1307 } else { 1311 } else {
1308 dasm_put(Dst, 5837); 1312 dasm_put(Dst, 5831);
1309 } 1313 }
1310 dasm_put(Dst, 5857, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1314 dasm_put(Dst, 5851, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1311 dasm_put(Dst, 2465); 1315 dasm_put(Dst, 2459);
1312 if (sse) { 1316 if (sse) {
1313 dasm_put(Dst, 5968); 1317 dasm_put(Dst, 5962);
1314 } else { 1318 } else {
1315 dasm_put(Dst, 5979); 1319 dasm_put(Dst, 5973);
1316 } 1320 }
1317 dasm_put(Dst, 5987, LJ_TSTR, LJ_TISNUM, Dt5(->len)); 1321 dasm_put(Dst, 5981, LJ_TSTR, LJ_TISNUM, Dt5(->len));
1318 if (sse) { 1322 if (sse) {
1319 dasm_put(Dst, 6017); 1323 dasm_put(Dst, 6011);
1320 } else { 1324 } else {
1321 dasm_put(Dst, 6024); 1325 dasm_put(Dst, 6018);
1322 } 1326 }
1323 dasm_put(Dst, 6036, sizeof(GCstr)-1); 1327 dasm_put(Dst, 6030, sizeof(GCstr)-1);
1324 dasm_put(Dst, 6111, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1328 dasm_put(Dst, 6105, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1325 dasm_put(Dst, 6170, LJ_TSTR, LJ_TISNUM); 1329 dasm_put(Dst, 6164, LJ_TSTR, LJ_TISNUM);
1326 if (sse) { 1330 if (sse) {
1327 dasm_put(Dst, 6195); 1331 dasm_put(Dst, 6189);
1328 } else { 1332 } else {
1329 dasm_put(Dst, 6202); 1333 dasm_put(Dst, 6196);
1330 } 1334 }
1331 dasm_put(Dst, 6214, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1335 dasm_put(Dst, 6208, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1332 dasm_put(Dst, 6279, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1336 dasm_put(Dst, 6273, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1333 dasm_put(Dst, 6346, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); 1337 dasm_put(Dst, 6340, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1334 dasm_put(Dst, 6421, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); 1338 dasm_put(Dst, 6415, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1335 dasm_put(Dst, 6506, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1339 dasm_put(Dst, 6500, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
1336 dasm_put(Dst, 6580, 1+1, LJ_TTAB); 1340 dasm_put(Dst, 6574, 1+1, LJ_TTAB);
1337 if (sse) { 1341 if (sse) {
1338 dasm_put(Dst, 6656); 1342 dasm_put(Dst, 6650);
1339 } else { 1343 } else {
1340 dasm_put(Dst, 6666); 1344 dasm_put(Dst, 6660);
1341 } 1345 }
1342 if (sse) { 1346 if (sse) {
1343 dasm_put(Dst, 6677, 1+1, LJ_TISNUM); 1347 dasm_put(Dst, 6671, 1+1, LJ_TISNUM);
1344 } else { 1348 } else {
1345 dasm_put(Dst, 6734, 1+1, LJ_TISNUM); 1349 dasm_put(Dst, 6728, 1+1, LJ_TISNUM);
1346 } 1350 }
1347 if (sse) { 1351 if (sse) {
1348 dasm_put(Dst, 6778, 1+1, LJ_TISNUM); 1352 dasm_put(Dst, 6772, 1+1, LJ_TISNUM);
1349 } else { 1353 } else {
1350 dasm_put(Dst, 6826, 1+1, LJ_TISNUM); 1354 dasm_put(Dst, 6820, 1+1, LJ_TISNUM);
1351 } 1355 }
1352 dasm_put(Dst, 6866); 1356 dasm_put(Dst, 6860);
1353 if (sse) { 1357 if (sse) {
1354 dasm_put(Dst, 6876); 1358 dasm_put(Dst, 6870);
1355 } 1359 }
1356 dasm_put(Dst, 6881, LJ_TISNUM); 1360 dasm_put(Dst, 6875, LJ_TISNUM);
1357 if (sse) { 1361 if (sse) {
1358 dasm_put(Dst, 6899); 1362 dasm_put(Dst, 6893);
1359 } else { 1363 } else {
1360 dasm_put(Dst, 6916); 1364 dasm_put(Dst, 6910);
1361 } 1365 }
1362 dasm_put(Dst, 6929); 1366 dasm_put(Dst, 6923);
1363 if (sse) { 1367 if (sse) {
1364 dasm_put(Dst, 6937, 1+1, LJ_TISNUM); 1368 dasm_put(Dst, 6931, 1+1, LJ_TISNUM);
1365 } else { 1369 } else {
1366 dasm_put(Dst, 6985, 1+1, LJ_TISNUM); 1370 dasm_put(Dst, 6979, 1+1, LJ_TISNUM);
1367 } 1371 }
1368 dasm_put(Dst, 6866); 1372 dasm_put(Dst, 6860);
1369 if (sse) { 1373 if (sse) {
1370 dasm_put(Dst, 6876); 1374 dasm_put(Dst, 6870);
1371 } 1375 }
1372 dasm_put(Dst, 6881, LJ_TISNUM); 1376 dasm_put(Dst, 6875, LJ_TISNUM);
1373 if (sse) { 1377 if (sse) {
1374 dasm_put(Dst, 7025); 1378 dasm_put(Dst, 7019);
1375 } else { 1379 } else {
1376 dasm_put(Dst, 7042); 1380 dasm_put(Dst, 7036);
1377 } 1381 }
1378 dasm_put(Dst, 6929); 1382 dasm_put(Dst, 6923);
1379 if (sse) { 1383 if (sse) {
1380 dasm_put(Dst, 7055, 1+1, LJ_TISNUM); 1384 dasm_put(Dst, 7049, 1+1, LJ_TISNUM);
1381 } else { 1385 } else {
1382 dasm_put(Dst, 7103, 1+1, LJ_TISNUM); 1386 dasm_put(Dst, 7097, 1+1, LJ_TISNUM);
1383 } 1387 }
1384 dasm_put(Dst, 6866); 1388 dasm_put(Dst, 6860);
1385 if (sse) { 1389 if (sse) {
1386 dasm_put(Dst, 6876); 1390 dasm_put(Dst, 6870);
1387 } 1391 }
1388 dasm_put(Dst, 6881, LJ_TISNUM); 1392 dasm_put(Dst, 6875, LJ_TISNUM);
1389 if (sse) { 1393 if (sse) {
1390 dasm_put(Dst, 7143); 1394 dasm_put(Dst, 7137);
1391 } else { 1395 } else {
1392 dasm_put(Dst, 7160); 1396 dasm_put(Dst, 7154);
1393 } 1397 }
1394 dasm_put(Dst, 6929); 1398 dasm_put(Dst, 6923);
1395 if (sse) { 1399 if (sse) {
1396 dasm_put(Dst, 7173, 1+1, LJ_TISNUM); 1400 dasm_put(Dst, 7167, 1+1, LJ_TISNUM);
1397 } else { 1401 } else {
1398 dasm_put(Dst, 7221, 1+1, LJ_TISNUM); 1402 dasm_put(Dst, 7215, 1+1, LJ_TISNUM);
1399 } 1403 }
1400 dasm_put(Dst, 7261); 1404 dasm_put(Dst, 7255);
1401 if (sse) { 1405 if (sse) {
1402 dasm_put(Dst, 7268, 1+1, LJ_TISNUM); 1406 dasm_put(Dst, 7262, 1+1, LJ_TISNUM);
1403 } else { 1407 } else {
1404 dasm_put(Dst, 7316, 1+1, LJ_TISNUM); 1408 dasm_put(Dst, 7310, 1+1, LJ_TISNUM);
1405 } 1409 }
1406 dasm_put(Dst, 7356); 1410 dasm_put(Dst, 7350);
1407 if (sse) { 1411 if (sse) {
1408 dasm_put(Dst, 7360); 1412 dasm_put(Dst, 7354);
1409 } else { 1413 } else {
1410 dasm_put(Dst, 7387); 1414 dasm_put(Dst, 7381);
1411 } 1415 }
1412 dasm_put(Dst, 7402); 1416 dasm_put(Dst, 7396);
1413 if (sse) { 1417 if (sse) {
1414 dasm_put(Dst, 6651); 1418 dasm_put(Dst, 6645);
1415 } 1419 }
1416 dasm_put(Dst, 7405); 1420 dasm_put(Dst, 7399);
1417 if (sse) { 1421 if (sse) {
1418 dasm_put(Dst, 7414, 1+1, LJ_TISNUM, LJ_TISNUM); 1422 dasm_put(Dst, 7408, 1+1, LJ_TISNUM, LJ_TISNUM);
1419 } else { 1423 } else {
1420 dasm_put(Dst, 7488, 2+1, LJ_TISNUM, LJ_TISNUM); 1424 dasm_put(Dst, 7482, 2+1, LJ_TISNUM, LJ_TISNUM);
1421 } 1425 }
1422 dasm_put(Dst, 7554); 1426 dasm_put(Dst, 7548);
1423 if (sse) { 1427 if (sse) {
1424 dasm_put(Dst, 7563, 1+1, LJ_TISNUM, LJ_TISNUM); 1428 dasm_put(Dst, 7557, 1+1, LJ_TISNUM, LJ_TISNUM);
1425 } else { 1429 } else {
1426 dasm_put(Dst, 7637, 2+1, LJ_TISNUM, LJ_TISNUM); 1430 dasm_put(Dst, 7631, 2+1, LJ_TISNUM, LJ_TISNUM);
1427 } 1431 }
1428 dasm_put(Dst, 7703); 1432 dasm_put(Dst, 7697);
1429 if (sse) { 1433 if (sse) {
1430 dasm_put(Dst, 7713, 1+1, LJ_TISNUM, LJ_TISNUM); 1434 dasm_put(Dst, 7707, 1+1, LJ_TISNUM, LJ_TISNUM);
1431 } else { 1435 } else {
1432 dasm_put(Dst, 7787, 2+1, LJ_TISNUM, LJ_TISNUM); 1436 dasm_put(Dst, 7781, 2+1, LJ_TISNUM, LJ_TISNUM);
1433 } 1437 }
1434 dasm_put(Dst, 7853); 1438 dasm_put(Dst, 7847);
1435 if (sse) { 1439 if (sse) {
1436 dasm_put(Dst, 7863, 1+1, LJ_TISNUM, LJ_TISNUM); 1440 dasm_put(Dst, 7857, 1+1, LJ_TISNUM, LJ_TISNUM);
1437 } else { 1441 } else {
1438 dasm_put(Dst, 7937, 2+1, LJ_TISNUM, LJ_TISNUM); 1442 dasm_put(Dst, 7931, 2+1, LJ_TISNUM, LJ_TISNUM);
1439 } 1443 }
1440 dasm_put(Dst, 8003); 1444 dasm_put(Dst, 7997);
1441 if (sse) { 1445 if (sse) {
1442 dasm_put(Dst, 8012, 1+1, LJ_TISNUM, LJ_TISNUM); 1446 dasm_put(Dst, 8006, 1+1, LJ_TISNUM, LJ_TISNUM);
1443 } else { 1447 } else {
1444 dasm_put(Dst, 8086, 2+1, LJ_TISNUM, LJ_TISNUM); 1448 dasm_put(Dst, 8080, 2+1, LJ_TISNUM, LJ_TISNUM);
1445 } 1449 }
1446 dasm_put(Dst, 8152, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1450 dasm_put(Dst, 8146, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1447 dasm_put(Dst, 8236, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top)); 1451 dasm_put(Dst, 8230, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top));
1448 dasm_put(Dst, 8355, Dt1(->base), Dt1(->top)); 1452 dasm_put(Dst, 8349, Dt1(->base), Dt1(->top));
1449#if LJ_HASJIT 1453#if LJ_HASJIT
1450 dasm_put(Dst, 8396, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1454 dasm_put(Dst, 8390, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1451#endif 1455#endif
1452 dasm_put(Dst, 8427, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base)); 1456 dasm_put(Dst, 8421, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base));
1453 dasm_put(Dst, 8493, GG_DISP_STATIC*4); 1457 dasm_put(Dst, 8487, GG_DISP_STATIC*4);
1454#if LJ_HASJIT 1458#if LJ_HASJIT
1455 dasm_put(Dst, 8528, Dt1(->base), GG_DISP2J, DISPATCH_J(L)); 1459 dasm_put(Dst, 8522, Dt1(->base), GG_DISP2J, DISPATCH_J(L));
1456#endif 1460#endif
1457 dasm_put(Dst, 8557); 1461 dasm_put(Dst, 8551);
1458#if LJ_HASJIT 1462#if LJ_HASJIT
1459 dasm_put(Dst, 8560, Dt1(->base), GG_DISP2J, DISPATCH_J(L), Dt1(->base)); 1463 dasm_put(Dst, 8554, Dt1(->base), GG_DISP2J, DISPATCH_J(L), Dt1(->base));
1460#endif 1464#endif
1461 dasm_put(Dst, 8606); 1465 dasm_put(Dst, 8600);
1462#if LJ_HASJIT 1466#if LJ_HASJIT
1463 dasm_put(Dst, 8609, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_J(flags), JIT_F_SSE2, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), Dt1(->base), GG_DISP2J, Dt1(->base)); 1467 dasm_put(Dst, 8603, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_J(flags), JIT_F_SSE2, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), Dt1(->base), GG_DISP2J, Dt1(->base));
1464#endif 1468#endif
1465 dasm_put(Dst, 8752); 1469 dasm_put(Dst, 8746);
1466#if LJ_HASJIT 1470#if LJ_HASJIT
1467 dasm_put(Dst, 8755, Dt7(->pt), Dt9(->k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1471 dasm_put(Dst, 8749, Dt7(->pt), Dt9(->k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1468#endif 1472#endif
1469 dasm_put(Dst, 8795); 1473 dasm_put(Dst, 8789);
1470 if (!sse) { 1474 if (!sse) {
1471 dasm_put(Dst, 8798); 1475 dasm_put(Dst, 8792);
1472 } 1476 }
1473 dasm_put(Dst, 8843); 1477 dasm_put(Dst, 8837);
1474 if (!sse) { 1478 if (!sse) {
1475 dasm_put(Dst, 8945); 1479 dasm_put(Dst, 8939);
1476 } 1480 }
1477 dasm_put(Dst, 8990); 1481 dasm_put(Dst, 8984);
1478 if (!sse) { 1482 if (!sse) {
1479 dasm_put(Dst, 9092); 1483 dasm_put(Dst, 9086);
1480 } 1484 }
1481 dasm_put(Dst, 9131); 1485 dasm_put(Dst, 9125);
1482 if (sse) { 1486 if (sse) {
1483 dasm_put(Dst, 9236); 1487 dasm_put(Dst, 9230);
1484 } else { 1488 } else {
1485 dasm_put(Dst, 9366); 1489 dasm_put(Dst, 9360);
1486 } 1490 }
1487 dasm_put(Dst, 9413); 1491 dasm_put(Dst, 9407);
1488 if (!sse) { 1492 if (!sse) {
1489 dasm_put(Dst, 9487); 1493 dasm_put(Dst, 9481);
1490 if (cmov) { 1494 if (cmov) {
1491 dasm_put(Dst, 9498); 1495 dasm_put(Dst, 9492);
1492 } else { 1496 } else {
1493 dasm_put(Dst, 9502); 1497 dasm_put(Dst, 9496);
1494 } 1498 }
1495 dasm_put(Dst, 9509); 1499 dasm_put(Dst, 9503);
1496 dasm_put(Dst, 9583); 1500 dasm_put(Dst, 9577);
1497 dasm_put(Dst, 9683); 1501 dasm_put(Dst, 9677);
1498 if (cmov) { 1502 if (cmov) {
1499 dasm_put(Dst, 9686); 1503 dasm_put(Dst, 9680);
1500 } else { 1504 } else {
1501 dasm_put(Dst, 9690); 1505 dasm_put(Dst, 9684);
1502 } 1506 }
1503 dasm_put(Dst, 9697); 1507 dasm_put(Dst, 9691);
1504 if (cmov) { 1508 if (cmov) {
1505 dasm_put(Dst, 9498); 1509 dasm_put(Dst, 9492);
1506 } else { 1510 } else {
1507 dasm_put(Dst, 9502); 1511 dasm_put(Dst, 9496);
1508 } 1512 }
1509 dasm_put(Dst, 9715); 1513 dasm_put(Dst, 9709);
1510 } else { 1514 } else {
1511 dasm_put(Dst, 9794); 1515 dasm_put(Dst, 9788);
1512 } 1516 }
1513 dasm_put(Dst, 9797); 1517 dasm_put(Dst, 9791);
1514 dasm_put(Dst, 9882); 1518 dasm_put(Dst, 9876);
1515 dasm_put(Dst, 10013); 1519 dasm_put(Dst, 10007);
1516 dasm_put(Dst, 10212); 1520 dasm_put(Dst, 10206);
1517 if (sse) { 1521 if (sse) {
1518 dasm_put(Dst, 10235); 1522 dasm_put(Dst, 10229);
1519 dasm_put(Dst, 10292); 1523 dasm_put(Dst, 10286);
1520 dasm_put(Dst, 10383); 1524 dasm_put(Dst, 10377);
1521 } else { 1525 } else {
1522 dasm_put(Dst, 10425); 1526 dasm_put(Dst, 10419);
1523 dasm_put(Dst, 10517); 1527 dasm_put(Dst, 10511);
1524 } 1528 }
1525 dasm_put(Dst, 10563); 1529 dasm_put(Dst, 10557);
1526 if (sse) { 1530 if (sse) {
1527 dasm_put(Dst, 10569); 1531 dasm_put(Dst, 10563);
1528 dasm_put(Dst, 10674); 1532 dasm_put(Dst, 10668);
1529 dasm_put(Dst, 10757); 1533 dasm_put(Dst, 10751);
1530 } else { 1534 } else {
1531 dasm_put(Dst, 10829); 1535 dasm_put(Dst, 10823);
1532 dasm_put(Dst, 10912); 1536 dasm_put(Dst, 10906);
1533 if (cmov) { 1537 if (cmov) {
1534 dasm_put(Dst, 10967); 1538 dasm_put(Dst, 10961);
1535 } else { 1539 } else {
1536 dasm_put(Dst, 10986); 1540 dasm_put(Dst, 10980);
1537 } 1541 }
1538 dasm_put(Dst, 10825); 1542 dasm_put(Dst, 10819);
1539 } 1543 }
1540 dasm_put(Dst, 11027); 1544 dasm_put(Dst, 11021);
1541} 1545}
1542 1546
1543/* Generate the code for a single instruction. */ 1547/* Generate the code for a single instruction. */
1544static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1548static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1545{ 1549{
1546 int vk = 0; 1550 int vk = 0;
1547 dasm_put(Dst, 11081, defop); 1551 dasm_put(Dst, 11075, defop);
1548 1552
1549 switch (op) { 1553 switch (op) {
1550 1554
@@ -1553,619 +1557,619 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1553 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1557 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1554 1558
1555 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1559 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1556 dasm_put(Dst, 11083, LJ_TISNUM, LJ_TISNUM); 1560 dasm_put(Dst, 11077, LJ_TISNUM, LJ_TISNUM);
1557 if (sse) { 1561 if (sse) {
1558 dasm_put(Dst, 11104); 1562 dasm_put(Dst, 11098);
1559 } else { 1563 } else {
1560 dasm_put(Dst, 11119); 1564 dasm_put(Dst, 11113);
1561 if (cmov) { 1565 if (cmov) {
1562 dasm_put(Dst, 11129); 1566 dasm_put(Dst, 11123);
1563 } else { 1567 } else {
1564 dasm_put(Dst, 11135); 1568 dasm_put(Dst, 11129);
1565 } 1569 }
1566 } 1570 }
1567 switch (op) { 1571 switch (op) {
1568 case BC_ISLT: 1572 case BC_ISLT:
1569 dasm_put(Dst, 11142); 1573 dasm_put(Dst, 11136);
1570 break; 1574 break;
1571 case BC_ISGE: 1575 case BC_ISGE:
1572 dasm_put(Dst, 10378); 1576 dasm_put(Dst, 10372);
1573 break; 1577 break;
1574 case BC_ISLE: 1578 case BC_ISLE:
1575 dasm_put(Dst, 6575); 1579 dasm_put(Dst, 6569);
1576 break; 1580 break;
1577 case BC_ISGT: 1581 case BC_ISGT:
1578 dasm_put(Dst, 11147); 1582 dasm_put(Dst, 11141);
1579 break; 1583 break;
1580 default: break; /* Shut up GCC. */ 1584 default: break; /* Shut up GCC. */
1581 } 1585 }
1582 dasm_put(Dst, 11152, -BCBIAS_J*4); 1586 dasm_put(Dst, 11146, -BCBIAS_J*4);
1583 break; 1587 break;
1584 1588
1585 case BC_ISEQV: case BC_ISNEV: 1589 case BC_ISEQV: case BC_ISNEV:
1586 vk = op == BC_ISEQV; 1590 vk = op == BC_ISEQV;
1587 dasm_put(Dst, 11185, LJ_TISNUM, LJ_TISNUM); 1591 dasm_put(Dst, 11179, LJ_TISNUM, LJ_TISNUM);
1588 if (sse) { 1592 if (sse) {
1589 dasm_put(Dst, 11211); 1593 dasm_put(Dst, 11205);
1590 } else { 1594 } else {
1591 dasm_put(Dst, 11223); 1595 dasm_put(Dst, 11217);
1592 if (cmov) { 1596 if (cmov) {
1593 dasm_put(Dst, 11129); 1597 dasm_put(Dst, 11123);
1594 } else { 1598 } else {
1595 dasm_put(Dst, 11135); 1599 dasm_put(Dst, 11129);
1596 } 1600 }
1597 } 1601 }
1598 iseqne_fp: 1602 iseqne_fp:
1599 if (vk) { 1603 if (vk) {
1600 dasm_put(Dst, 11230); 1604 dasm_put(Dst, 11224);
1601 } else { 1605 } else {
1602 dasm_put(Dst, 11239); 1606 dasm_put(Dst, 11233);
1603 } 1607 }
1604 iseqne_end: 1608 iseqne_end:
1605 if (vk) { 1609 if (vk) {
1606 dasm_put(Dst, 11248, -BCBIAS_J*4); 1610 dasm_put(Dst, 11242, -BCBIAS_J*4);
1607 } else { 1611 } else {
1608 dasm_put(Dst, 11263, -BCBIAS_J*4); 1612 dasm_put(Dst, 11257, -BCBIAS_J*4);
1609 } 1613 }
1610 dasm_put(Dst, 8587); 1614 dasm_put(Dst, 8581);
1611 if (op == BC_ISEQV || op == BC_ISNEV) { 1615 if (op == BC_ISEQV || op == BC_ISNEV) {
1612 dasm_put(Dst, 11278, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1616 dasm_put(Dst, 11272, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1613 if (vk) { 1617 if (vk) {
1614 dasm_put(Dst, 11336); 1618 dasm_put(Dst, 11330);
1615 } else { 1619 } else {
1616 dasm_put(Dst, 11340); 1620 dasm_put(Dst, 11334);
1617 } 1621 }
1618 dasm_put(Dst, 11346); 1622 dasm_put(Dst, 11340);
1619 } 1623 }
1620 break; 1624 break;
1621 case BC_ISEQS: case BC_ISNES: 1625 case BC_ISEQS: case BC_ISNES:
1622 vk = op == BC_ISEQS; 1626 vk = op == BC_ISEQS;
1623 dasm_put(Dst, 11351, LJ_TSTR); 1627 dasm_put(Dst, 11345, LJ_TSTR);
1624 iseqne_test: 1628 iseqne_test:
1625 if (vk) { 1629 if (vk) {
1626 dasm_put(Dst, 11234); 1630 dasm_put(Dst, 11228);
1627 } else { 1631 } else {
1628 dasm_put(Dst, 10512); 1632 dasm_put(Dst, 10506);
1629 } 1633 }
1630 goto iseqne_end; 1634 goto iseqne_end;
1631 case BC_ISEQN: case BC_ISNEN: 1635 case BC_ISEQN: case BC_ISNEN:
1632 vk = op == BC_ISEQN; 1636 vk = op == BC_ISEQN;
1633 dasm_put(Dst, 11374, LJ_TISNUM); 1637 dasm_put(Dst, 11368, LJ_TISNUM);
1634 if (sse) { 1638 if (sse) {
1635 dasm_put(Dst, 11388); 1639 dasm_put(Dst, 11382);
1636 } else { 1640 } else {
1637 dasm_put(Dst, 11400); 1641 dasm_put(Dst, 11394);
1638 if (cmov) { 1642 if (cmov) {
1639 dasm_put(Dst, 11129); 1643 dasm_put(Dst, 11123);
1640 } else { 1644 } else {
1641 dasm_put(Dst, 11135); 1645 dasm_put(Dst, 11129);
1642 } 1646 }
1643 } 1647 }
1644 goto iseqne_fp; 1648 goto iseqne_fp;
1645 case BC_ISEQP: case BC_ISNEP: 1649 case BC_ISEQP: case BC_ISNEP:
1646 vk = op == BC_ISEQP; 1650 vk = op == BC_ISEQP;
1647 dasm_put(Dst, 11407); 1651 dasm_put(Dst, 11401);
1648 goto iseqne_test; 1652 goto iseqne_test;
1649 1653
1650 /* -- Unary test and copy ops ------------------------------------------- */ 1654 /* -- Unary test and copy ops ------------------------------------------- */
1651 1655
1652 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 1656 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1653 dasm_put(Dst, 11418, LJ_TISTRUECOND); 1657 dasm_put(Dst, 11412, LJ_TISTRUECOND);
1654 if (op == BC_IST || op == BC_ISTC) { 1658 if (op == BC_IST || op == BC_ISTC) {
1655 dasm_put(Dst, 11430); 1659 dasm_put(Dst, 11424);
1656 } else { 1660 } else {
1657 dasm_put(Dst, 11435); 1661 dasm_put(Dst, 11429);
1658 } 1662 }
1659 if (op == BC_ISTC || op == BC_ISFC) { 1663 if (op == BC_ISTC || op == BC_ISFC) {
1660 dasm_put(Dst, 11440); 1664 dasm_put(Dst, 11434);
1661 } 1665 }
1662 dasm_put(Dst, 11451, -BCBIAS_J*4); 1666 dasm_put(Dst, 11445, -BCBIAS_J*4);
1663 break; 1667 break;
1664 1668
1665 /* -- Unary ops --------------------------------------------------------- */ 1669 /* -- Unary ops --------------------------------------------------------- */
1666 1670
1667 case BC_MOV: 1671 case BC_MOV:
1668 dasm_put(Dst, 11482); 1672 dasm_put(Dst, 11476);
1669 break; 1673 break;
1670 case BC_NOT: 1674 case BC_NOT:
1671 dasm_put(Dst, 11515, LJ_TISTRUECOND, LJ_TTRUE); 1675 dasm_put(Dst, 11509, LJ_TISTRUECOND, LJ_TTRUE);
1672 break; 1676 break;
1673 case BC_UNM: 1677 case BC_UNM:
1674 dasm_put(Dst, 11550, LJ_TISNUM); 1678 dasm_put(Dst, 11544, LJ_TISNUM);
1675 if (sse) { 1679 if (sse) {
1676 dasm_put(Dst, 11561); 1680 dasm_put(Dst, 11555);
1677 } else { 1681 } else {
1678 dasm_put(Dst, 11591); 1682 dasm_put(Dst, 11585);
1679 } 1683 }
1680 dasm_put(Dst, 8587); 1684 dasm_put(Dst, 8581);
1681 break; 1685 break;
1682 case BC_LEN: 1686 case BC_LEN:
1683 dasm_put(Dst, 11600, LJ_TSTR); 1687 dasm_put(Dst, 11594, LJ_TSTR);
1684 if (sse) { 1688 if (sse) {
1685 dasm_put(Dst, 11614, Dt5(->len)); 1689 dasm_put(Dst, 11608, Dt5(->len));
1686 } else { 1690 } else {
1687 dasm_put(Dst, 11632, Dt5(->len)); 1691 dasm_put(Dst, 11626, Dt5(->len));
1688 } 1692 }
1689 dasm_put(Dst, 11641, LJ_TTAB); 1693 dasm_put(Dst, 11635, LJ_TTAB);
1690 if (sse) { 1694 if (sse) {
1691 dasm_put(Dst, 11681); 1695 dasm_put(Dst, 11675);
1692 } else { 1696 } else {
1693 dasm_put(Dst, 11690); 1697 dasm_put(Dst, 11684);
1694 } 1698 }
1695 dasm_put(Dst, 11700); 1699 dasm_put(Dst, 11694);
1696 break; 1700 break;
1697 1701
1698 /* -- Binary ops -------------------------------------------------------- */ 1702 /* -- Binary ops -------------------------------------------------------- */
1699 1703
1700 1704
1701 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 1705 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1702 dasm_put(Dst, 11710); 1706 dasm_put(Dst, 11704);
1703 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1707 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1704 switch (vk) { 1708 switch (vk) {
1705 case 0: 1709 case 0:
1706 dasm_put(Dst, 11718, LJ_TISNUM); 1710 dasm_put(Dst, 11712, LJ_TISNUM);
1707 if (sse) { 1711 if (sse) {
1708 dasm_put(Dst, 11730); 1712 dasm_put(Dst, 11724);
1709 } else { 1713 } else {
1710 dasm_put(Dst, 11744); 1714 dasm_put(Dst, 11738);
1711 } 1715 }
1712 break; 1716 break;
1713 case 1: 1717 case 1:
1714 dasm_put(Dst, 11752, LJ_TISNUM); 1718 dasm_put(Dst, 11746, LJ_TISNUM);
1715 if (sse) { 1719 if (sse) {
1716 dasm_put(Dst, 11764); 1720 dasm_put(Dst, 11758);
1717 } else { 1721 } else {
1718 dasm_put(Dst, 11778); 1722 dasm_put(Dst, 11772);
1719 } 1723 }
1720 break; 1724 break;
1721 default: 1725 default:
1722 dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM); 1726 dasm_put(Dst, 11780, LJ_TISNUM, LJ_TISNUM);
1723 if (sse) { 1727 if (sse) {
1724 dasm_put(Dst, 11808); 1728 dasm_put(Dst, 11802);
1725 } else { 1729 } else {
1726 dasm_put(Dst, 11822); 1730 dasm_put(Dst, 11816);
1727 } 1731 }
1728 break; 1732 break;
1729 } 1733 }
1730 if (sse) { 1734 if (sse) {
1731 dasm_put(Dst, 11584); 1735 dasm_put(Dst, 11578);
1732 } else { 1736 } else {
1733 dasm_put(Dst, 11596); 1737 dasm_put(Dst, 11590);
1734 } 1738 }
1735 dasm_put(Dst, 8587); 1739 dasm_put(Dst, 8581);
1736 break; 1740 break;
1737 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 1741 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1738 dasm_put(Dst, 11710); 1742 dasm_put(Dst, 11704);
1739 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1743 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1740 switch (vk) { 1744 switch (vk) {
1741 case 0: 1745 case 0:
1742 dasm_put(Dst, 11718, LJ_TISNUM); 1746 dasm_put(Dst, 11712, LJ_TISNUM);
1743 if (sse) { 1747 if (sse) {
1744 dasm_put(Dst, 11830); 1748 dasm_put(Dst, 11824);
1745 } else { 1749 } else {
1746 dasm_put(Dst, 11844); 1750 dasm_put(Dst, 11838);
1747 } 1751 }
1748 break; 1752 break;
1749 case 1: 1753 case 1:
1750 dasm_put(Dst, 11752, LJ_TISNUM); 1754 dasm_put(Dst, 11746, LJ_TISNUM);
1751 if (sse) { 1755 if (sse) {
1752 dasm_put(Dst, 11852); 1756 dasm_put(Dst, 11846);
1753 } else { 1757 } else {
1754 dasm_put(Dst, 11866); 1758 dasm_put(Dst, 11860);
1755 } 1759 }
1756 break; 1760 break;
1757 default: 1761 default:
1758 dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM); 1762 dasm_put(Dst, 11780, LJ_TISNUM, LJ_TISNUM);
1759 if (sse) { 1763 if (sse) {
1760 dasm_put(Dst, 11874); 1764 dasm_put(Dst, 11868);
1761 } else { 1765 } else {
1762 dasm_put(Dst, 11888); 1766 dasm_put(Dst, 11882);
1763 } 1767 }
1764 break; 1768 break;
1765 } 1769 }
1766 if (sse) { 1770 if (sse) {
1767 dasm_put(Dst, 11584); 1771 dasm_put(Dst, 11578);
1768 } else { 1772 } else {
1769 dasm_put(Dst, 11596); 1773 dasm_put(Dst, 11590);
1770 } 1774 }
1771 dasm_put(Dst, 8587); 1775 dasm_put(Dst, 8581);
1772 break; 1776 break;
1773 case BC_MULVN: case BC_MULNV: case BC_MULVV: 1777 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1774 dasm_put(Dst, 11710); 1778 dasm_put(Dst, 11704);
1775 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1779 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1776 switch (vk) { 1780 switch (vk) {
1777 case 0: 1781 case 0:
1778 dasm_put(Dst, 11718, LJ_TISNUM); 1782 dasm_put(Dst, 11712, LJ_TISNUM);
1779 if (sse) { 1783 if (sse) {
1780 dasm_put(Dst, 11896); 1784 dasm_put(Dst, 11890);
1781 } else { 1785 } else {
1782 dasm_put(Dst, 11910); 1786 dasm_put(Dst, 11904);
1783 } 1787 }
1784 break; 1788 break;
1785 case 1: 1789 case 1:
1786 dasm_put(Dst, 11752, LJ_TISNUM); 1790 dasm_put(Dst, 11746, LJ_TISNUM);
1787 if (sse) { 1791 if (sse) {
1788 dasm_put(Dst, 11918); 1792 dasm_put(Dst, 11912);
1789 } else { 1793 } else {
1790 dasm_put(Dst, 11932); 1794 dasm_put(Dst, 11926);
1791 } 1795 }
1792 break; 1796 break;
1793 default: 1797 default:
1794 dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM); 1798 dasm_put(Dst, 11780, LJ_TISNUM, LJ_TISNUM);
1795 if (sse) { 1799 if (sse) {
1796 dasm_put(Dst, 11940); 1800 dasm_put(Dst, 11934);
1797 } else { 1801 } else {
1798 dasm_put(Dst, 11954); 1802 dasm_put(Dst, 11948);
1799 } 1803 }
1800 break; 1804 break;
1801 } 1805 }
1802 if (sse) { 1806 if (sse) {
1803 dasm_put(Dst, 11584); 1807 dasm_put(Dst, 11578);
1804 } else { 1808 } else {
1805 dasm_put(Dst, 11596); 1809 dasm_put(Dst, 11590);
1806 } 1810 }
1807 dasm_put(Dst, 8587); 1811 dasm_put(Dst, 8581);
1808 break; 1812 break;
1809 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 1813 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1810 dasm_put(Dst, 11710); 1814 dasm_put(Dst, 11704);
1811 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1815 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1812 switch (vk) { 1816 switch (vk) {
1813 case 0: 1817 case 0:
1814 dasm_put(Dst, 11718, LJ_TISNUM); 1818 dasm_put(Dst, 11712, LJ_TISNUM);
1815 if (sse) { 1819 if (sse) {
1816 dasm_put(Dst, 11962); 1820 dasm_put(Dst, 11956);
1817 } else { 1821 } else {
1818 dasm_put(Dst, 11976); 1822 dasm_put(Dst, 11970);
1819 } 1823 }
1820 break; 1824 break;
1821 case 1: 1825 case 1:
1822 dasm_put(Dst, 11752, LJ_TISNUM); 1826 dasm_put(Dst, 11746, LJ_TISNUM);
1823 if (sse) { 1827 if (sse) {
1824 dasm_put(Dst, 11984); 1828 dasm_put(Dst, 11978);
1825 } else { 1829 } else {
1826 dasm_put(Dst, 11998); 1830 dasm_put(Dst, 11992);
1827 } 1831 }
1828 break; 1832 break;
1829 default: 1833 default:
1830 dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM); 1834 dasm_put(Dst, 11780, LJ_TISNUM, LJ_TISNUM);
1831 if (sse) { 1835 if (sse) {
1832 dasm_put(Dst, 12006); 1836 dasm_put(Dst, 12000);
1833 } else { 1837 } else {
1834 dasm_put(Dst, 12020); 1838 dasm_put(Dst, 12014);
1835 } 1839 }
1836 break; 1840 break;
1837 } 1841 }
1838 if (sse) { 1842 if (sse) {
1839 dasm_put(Dst, 11584); 1843 dasm_put(Dst, 11578);
1840 } else { 1844 } else {
1841 dasm_put(Dst, 11596); 1845 dasm_put(Dst, 11590);
1842 } 1846 }
1843 dasm_put(Dst, 8587); 1847 dasm_put(Dst, 8581);
1844 break; 1848 break;
1845 case BC_MODVN: 1849 case BC_MODVN:
1846 dasm_put(Dst, 11710); 1850 dasm_put(Dst, 11704);
1847 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1851 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1848 switch (vk) { 1852 switch (vk) {
1849 case 0: 1853 case 0:
1850 dasm_put(Dst, 11718, LJ_TISNUM); 1854 dasm_put(Dst, 11712, LJ_TISNUM);
1851 if (sse) { 1855 if (sse) {
1852 dasm_put(Dst, 12028); 1856 dasm_put(Dst, 12022);
1853 } else { 1857 } else {
1854 dasm_put(Dst, 12042); 1858 dasm_put(Dst, 12036);
1855 } 1859 }
1856 break; 1860 break;
1857 case 1: 1861 case 1:
1858 dasm_put(Dst, 11752, LJ_TISNUM); 1862 dasm_put(Dst, 11746, LJ_TISNUM);
1859 if (sse) { 1863 if (sse) {
1860 dasm_put(Dst, 12050); 1864 dasm_put(Dst, 12044);
1861 } else { 1865 } else {
1862 dasm_put(Dst, 12064); 1866 dasm_put(Dst, 12058);
1863 } 1867 }
1864 break; 1868 break;
1865 default: 1869 default:
1866 dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM); 1870 dasm_put(Dst, 11780, LJ_TISNUM, LJ_TISNUM);
1867 if (sse) { 1871 if (sse) {
1868 dasm_put(Dst, 12072); 1872 dasm_put(Dst, 12066);
1869 } else { 1873 } else {
1870 dasm_put(Dst, 12086); 1874 dasm_put(Dst, 12080);
1871 } 1875 }
1872 break; 1876 break;
1873 } 1877 }
1874 dasm_put(Dst, 12094); 1878 dasm_put(Dst, 12088);
1875 if (sse) { 1879 if (sse) {
1876 dasm_put(Dst, 11584); 1880 dasm_put(Dst, 11578);
1877 } else { 1881 } else {
1878 dasm_put(Dst, 11596); 1882 dasm_put(Dst, 11590);
1879 } 1883 }
1880 dasm_put(Dst, 8587); 1884 dasm_put(Dst, 8581);
1881 break; 1885 break;
1882 case BC_MODNV: case BC_MODVV: 1886 case BC_MODNV: case BC_MODVV:
1883 dasm_put(Dst, 11710); 1887 dasm_put(Dst, 11704);
1884 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1888 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1885 switch (vk) { 1889 switch (vk) {
1886 case 0: 1890 case 0:
1887 dasm_put(Dst, 11718, LJ_TISNUM); 1891 dasm_put(Dst, 11712, LJ_TISNUM);
1888 if (sse) { 1892 if (sse) {
1889 dasm_put(Dst, 12028); 1893 dasm_put(Dst, 12022);
1890 } else { 1894 } else {
1891 dasm_put(Dst, 12042); 1895 dasm_put(Dst, 12036);
1892 } 1896 }
1893 break; 1897 break;
1894 case 1: 1898 case 1:
1895 dasm_put(Dst, 11752, LJ_TISNUM); 1899 dasm_put(Dst, 11746, LJ_TISNUM);
1896 if (sse) { 1900 if (sse) {
1897 dasm_put(Dst, 12050); 1901 dasm_put(Dst, 12044);
1898 } else { 1902 } else {
1899 dasm_put(Dst, 12064); 1903 dasm_put(Dst, 12058);
1900 } 1904 }
1901 break; 1905 break;
1902 default: 1906 default:
1903 dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM); 1907 dasm_put(Dst, 11780, LJ_TISNUM, LJ_TISNUM);
1904 if (sse) { 1908 if (sse) {
1905 dasm_put(Dst, 12072); 1909 dasm_put(Dst, 12066);
1906 } else { 1910 } else {
1907 dasm_put(Dst, 12086); 1911 dasm_put(Dst, 12080);
1908 } 1912 }
1909 break; 1913 break;
1910 } 1914 }
1911 dasm_put(Dst, 12100); 1915 dasm_put(Dst, 12094);
1912 break; 1916 break;
1913 case BC_POW: 1917 case BC_POW:
1914 dasm_put(Dst, 11710); 1918 dasm_put(Dst, 11704);
1915 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1919 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1916 switch (vk) { 1920 switch (vk) {
1917 case 0: 1921 case 0:
1918 dasm_put(Dst, 11718, LJ_TISNUM); 1922 dasm_put(Dst, 11712, LJ_TISNUM);
1919 if (sse) { 1923 if (sse) {
1920 dasm_put(Dst, 12028); 1924 dasm_put(Dst, 12022);
1921 } else { 1925 } else {
1922 dasm_put(Dst, 12042); 1926 dasm_put(Dst, 12036);
1923 } 1927 }
1924 break; 1928 break;
1925 case 1: 1929 case 1:
1926 dasm_put(Dst, 11752, LJ_TISNUM); 1930 dasm_put(Dst, 11746, LJ_TISNUM);
1927 if (sse) { 1931 if (sse) {
1928 dasm_put(Dst, 12050); 1932 dasm_put(Dst, 12044);
1929 } else { 1933 } else {
1930 dasm_put(Dst, 12064); 1934 dasm_put(Dst, 12058);
1931 } 1935 }
1932 break; 1936 break;
1933 default: 1937 default:
1934 dasm_put(Dst, 11786, LJ_TISNUM, LJ_TISNUM); 1938 dasm_put(Dst, 11780, LJ_TISNUM, LJ_TISNUM);
1935 if (sse) { 1939 if (sse) {
1936 dasm_put(Dst, 12072); 1940 dasm_put(Dst, 12066);
1937 } else { 1941 } else {
1938 dasm_put(Dst, 12086); 1942 dasm_put(Dst, 12080);
1939 } 1943 }
1940 break; 1944 break;
1941 } 1945 }
1942 dasm_put(Dst, 12105); 1946 dasm_put(Dst, 12099);
1943 if (sse) { 1947 if (sse) {
1944 dasm_put(Dst, 11584); 1948 dasm_put(Dst, 11578);
1945 } else { 1949 } else {
1946 dasm_put(Dst, 11596); 1950 dasm_put(Dst, 11590);
1947 } 1951 }
1948 dasm_put(Dst, 8587); 1952 dasm_put(Dst, 8581);
1949 break; 1953 break;
1950 1954
1951 case BC_CAT: 1955 case BC_CAT:
1952 dasm_put(Dst, 12109, Dt1(->base), Dt1(->base)); 1956 dasm_put(Dst, 12103, Dt1(->base), Dt1(->base));
1953 break; 1957 break;
1954 1958
1955 /* -- Constant ops ------------------------------------------------------ */ 1959 /* -- Constant ops ------------------------------------------------------ */
1956 1960
1957 case BC_KSTR: 1961 case BC_KSTR:
1958 dasm_put(Dst, 12203, LJ_TSTR); 1962 dasm_put(Dst, 12197, LJ_TSTR);
1959 break; 1963 break;
1960 case BC_KSHORT: 1964 case BC_KSHORT:
1961 if (sse) { 1965 if (sse) {
1962 dasm_put(Dst, 12236); 1966 dasm_put(Dst, 12230);
1963 } else { 1967 } else {
1964 dasm_put(Dst, 12251); 1968 dasm_put(Dst, 12245);
1965 } 1969 }
1966 dasm_put(Dst, 8587); 1970 dasm_put(Dst, 8581);
1967 break; 1971 break;
1968 case BC_KNUM: 1972 case BC_KNUM:
1969 if (sse) { 1973 if (sse) {
1970 dasm_put(Dst, 12259); 1974 dasm_put(Dst, 12253);
1971 } else { 1975 } else {
1972 dasm_put(Dst, 12272); 1976 dasm_put(Dst, 12266);
1973 } 1977 }
1974 dasm_put(Dst, 8587); 1978 dasm_put(Dst, 8581);
1975 break; 1979 break;
1976 case BC_KPRI: 1980 case BC_KPRI:
1977 dasm_put(Dst, 12279); 1981 dasm_put(Dst, 12273);
1978 break; 1982 break;
1979 case BC_KNIL: 1983 case BC_KNIL:
1980 dasm_put(Dst, 12305, LJ_TNIL); 1984 dasm_put(Dst, 12299, LJ_TNIL);
1981 break; 1985 break;
1982 1986
1983 /* -- Upvalue and function ops ------------------------------------------ */ 1987 /* -- Upvalue and function ops ------------------------------------------ */
1984 1988
1985 case BC_UGET: 1989 case BC_UGET:
1986 dasm_put(Dst, 12351, offsetof(GCfuncL, uvptr), DtA(->v)); 1990 dasm_put(Dst, 12345, offsetof(GCfuncL, uvptr), DtA(->v));
1987 break; 1991 break;
1988 case BC_USETV: 1992 case BC_USETV:
1989#define TV2MARKOFS \ 1993#define TV2MARKOFS \
1990 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 1994 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
1991 dasm_put(Dst, 12395, 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); 1995 dasm_put(Dst, 12389, 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);
1992 dasm_put(Dst, 12485); 1996 dasm_put(Dst, 12479);
1993 break; 1997 break;
1994#undef TV2MARKOFS 1998#undef TV2MARKOFS
1995 case BC_USETS: 1999 case BC_USETS:
1996 dasm_put(Dst, 12497, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 2000 dasm_put(Dst, 12491, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
1997 break; 2001 break;
1998 case BC_USETN: 2002 case BC_USETN:
1999 dasm_put(Dst, 12588); 2003 dasm_put(Dst, 12582);
2000 if (sse) { 2004 if (sse) {
2001 dasm_put(Dst, 12593); 2005 dasm_put(Dst, 12587);
2002 } else { 2006 } else {
2003 dasm_put(Dst, 11403); 2007 dasm_put(Dst, 11397);
2004 } 2008 }
2005 dasm_put(Dst, 12600, offsetof(GCfuncL, uvptr), DtA(->v)); 2009 dasm_put(Dst, 12594, offsetof(GCfuncL, uvptr), DtA(->v));
2006 if (sse) { 2010 if (sse) {
2007 dasm_put(Dst, 4962); 2011 dasm_put(Dst, 4956);
2008 } else { 2012 } else {
2009 dasm_put(Dst, 4968); 2013 dasm_put(Dst, 4962);
2010 } 2014 }
2011 dasm_put(Dst, 8587); 2015 dasm_put(Dst, 8581);
2012 break; 2016 break;
2013 case BC_USETP: 2017 case BC_USETP:
2014 dasm_put(Dst, 12609, offsetof(GCfuncL, uvptr), DtA(->v)); 2018 dasm_put(Dst, 12603, offsetof(GCfuncL, uvptr), DtA(->v));
2015 break; 2019 break;
2016 case BC_UCLO: 2020 case BC_UCLO:
2017 dasm_put(Dst, 12646, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 2021 dasm_put(Dst, 12640, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
2018 break; 2022 break;
2019 2023
2020 case BC_FNEW: 2024 case BC_FNEW:
2021 dasm_put(Dst, 12700, Dt1(->base), Dt1(->base), LJ_TFUNC); 2025 dasm_put(Dst, 12694, Dt1(->base), Dt1(->base), LJ_TFUNC);
2022 break; 2026 break;
2023 2027
2024 /* -- Table ops --------------------------------------------------------- */ 2028 /* -- Table ops --------------------------------------------------------- */
2025 2029
2026 case BC_TNEW: 2030 case BC_TNEW:
2027 dasm_put(Dst, 12771, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2031 dasm_put(Dst, 12765, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
2028 break; 2032 break;
2029 case BC_TDUP: 2033 case BC_TDUP:
2030 dasm_put(Dst, 12892, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2034 dasm_put(Dst, 12886, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
2031 break; 2035 break;
2032 2036
2033 case BC_GGET: 2037 case BC_GGET:
2034 dasm_put(Dst, 12984, Dt7(->env)); 2038 dasm_put(Dst, 12978, Dt7(->env));
2035 break; 2039 break;
2036 case BC_GSET: 2040 case BC_GSET:
2037 dasm_put(Dst, 13002, Dt7(->env)); 2041 dasm_put(Dst, 12996, Dt7(->env));
2038 break; 2042 break;
2039 2043
2040 case BC_TGETV: 2044 case BC_TGETV:
2041 dasm_put(Dst, 13020, LJ_TTAB, LJ_TISNUM); 2045 dasm_put(Dst, 13014, LJ_TTAB, LJ_TISNUM);
2042 if (sse) { 2046 if (sse) {
2043 dasm_put(Dst, 13053); 2047 dasm_put(Dst, 13047);
2044 } else { 2048 } else {
2045 dasm_put(Dst, 13074); 2049 dasm_put(Dst, 13068);
2046 if (cmov) { 2050 if (cmov) {
2047 dasm_put(Dst, 11129); 2051 dasm_put(Dst, 11123);
2048 } else { 2052 } else {
2049 dasm_put(Dst, 11135); 2053 dasm_put(Dst, 11129);
2050 } 2054 }
2051 dasm_put(Dst, 2853); 2055 dasm_put(Dst, 2847);
2052 } 2056 }
2053 dasm_put(Dst, 13084, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2057 dasm_put(Dst, 13078, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2054 dasm_put(Dst, 13176, LJ_TSTR); 2058 dasm_put(Dst, 13170, LJ_TSTR);
2055 break; 2059 break;
2056 case BC_TGETS: 2060 case BC_TGETS:
2057 dasm_put(Dst, 13194, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2061 dasm_put(Dst, 13188, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2058 dasm_put(Dst, 13278, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2062 dasm_put(Dst, 13272, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2059 break; 2063 break;
2060 case BC_TGETB: 2064 case BC_TGETB:
2061 dasm_put(Dst, 13349, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2065 dasm_put(Dst, 13343, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2062 dasm_put(Dst, 11700); 2066 dasm_put(Dst, 11694);
2063 break; 2067 break;
2064 2068
2065 case BC_TSETV: 2069 case BC_TSETV:
2066 dasm_put(Dst, 13448, LJ_TTAB, LJ_TISNUM); 2070 dasm_put(Dst, 13442, LJ_TTAB, LJ_TISNUM);
2067 if (sse) { 2071 if (sse) {
2068 dasm_put(Dst, 13053); 2072 dasm_put(Dst, 13047);
2069 } else { 2073 } else {
2070 dasm_put(Dst, 13074); 2074 dasm_put(Dst, 13068);
2071 if (cmov) { 2075 if (cmov) {
2072 dasm_put(Dst, 11129); 2076 dasm_put(Dst, 11123);
2073 } else { 2077 } else {
2074 dasm_put(Dst, 11135); 2078 dasm_put(Dst, 11129);
2075 } 2079 }
2076 dasm_put(Dst, 2853); 2080 dasm_put(Dst, 2847);
2077 } 2081 }
2078 dasm_put(Dst, 13481, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 2082 dasm_put(Dst, 13475, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
2079 dasm_put(Dst, 13564, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2083 dasm_put(Dst, 13558, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2080 break; 2084 break;
2081 case BC_TSETS: 2085 case BC_TSETS:
2082 dasm_put(Dst, 13626, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2086 dasm_put(Dst, 13620, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2083 dasm_put(Dst, 13701, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 2087 dasm_put(Dst, 13695, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
2084 dasm_put(Dst, 13793, 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)); 2088 dasm_put(Dst, 13787, 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));
2085 break; 2089 break;
2086 case BC_TSETB: 2090 case BC_TSETB:
2087 dasm_put(Dst, 13889, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 2091 dasm_put(Dst, 13883, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
2088 dasm_put(Dst, 13987, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2092 dasm_put(Dst, 13981, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2089 break; 2093 break;
2090 2094
2091 case BC_TSETM: 2095 case BC_TSETM:
2092 dasm_put(Dst, 14033); 2096 dasm_put(Dst, 14027);
2093 if (sse) { 2097 if (sse) {
2094 dasm_put(Dst, 12593); 2098 dasm_put(Dst, 12587);
2095 } else { 2099 } else {
2096 dasm_put(Dst, 14038); 2100 dasm_put(Dst, 14032);
2097 } 2101 }
2098 dasm_put(Dst, 14046, Dt6(->marked), LJ_GC_BLACK); 2102 dasm_put(Dst, 14040, Dt6(->marked), LJ_GC_BLACK);
2099 if (sse) { 2103 if (sse) {
2100 dasm_put(Dst, 14071); 2104 dasm_put(Dst, 14065);
2101 } else { 2105 } else {
2102 dasm_put(Dst, 14078); 2106 dasm_put(Dst, 14072);
2103 } 2107 }
2104 dasm_put(Dst, 14083, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); 2108 dasm_put(Dst, 14077, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain));
2105 dasm_put(Dst, 14211, Dt6(->gclist)); 2109 dasm_put(Dst, 14205, Dt6(->gclist));
2106 break; 2110 break;
2107 2111
2108 /* -- Calls and vararg handling ----------------------------------------- */ 2112 /* -- Calls and vararg handling ----------------------------------------- */
2109 2113
2110 case BC_CALL: case BC_CALLM: 2114 case BC_CALL: case BC_CALLM:
2111 dasm_put(Dst, 11714); 2115 dasm_put(Dst, 11708);
2112 if (op == BC_CALLM) { 2116 if (op == BC_CALLM) {
2113 dasm_put(Dst, 14219); 2117 dasm_put(Dst, 14213);
2114 } 2118 }
2115 dasm_put(Dst, 14224, LJ_TFUNC, Dt7(->gate)); 2119 dasm_put(Dst, 14218, LJ_TFUNC, Dt7(->gate));
2116 break; 2120 break;
2117 2121
2118 case BC_CALLMT: 2122 case BC_CALLMT:
2119 dasm_put(Dst, 14219); 2123 dasm_put(Dst, 14213);
2120 break; 2124 break;
2121 case BC_CALLT: 2125 case BC_CALLT:
2122 dasm_put(Dst, 14247, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate)); 2126 dasm_put(Dst, 14241, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate));
2123 dasm_put(Dst, 14352, FRAME_TYPE, Dt7(->pt), Dt9(->k)); 2127 dasm_put(Dst, 14346, FRAME_TYPE, Dt7(->pt), Dt9(->k));
2124 break; 2128 break;
2125 2129
2126 case BC_ITERC: 2130 case BC_ITERC:
2127 dasm_put(Dst, 14409, LJ_TFUNC, Dt7(->gate)); 2131 dasm_put(Dst, 14403, LJ_TFUNC, Dt7(->gate));
2128 break; 2132 break;
2129 2133
2130 case BC_VARG: 2134 case BC_VARG:
2131 dasm_put(Dst, 14471, Dt7(->pt), Dt9(->numparams), (8+FRAME_VARG), LJ_TNIL); 2135 dasm_put(Dst, 14465, Dt7(->pt), Dt9(->numparams), (8+FRAME_VARG), LJ_TNIL);
2132 dasm_put(Dst, 14615, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2136 dasm_put(Dst, 14609, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2133 break; 2137 break;
2134 2138
2135 /* -- Returns ----------------------------------------------------------- */ 2139 /* -- Returns ----------------------------------------------------------- */
2136 2140
2137 case BC_RETM: 2141 case BC_RETM:
2138 dasm_put(Dst, 14219); 2142 dasm_put(Dst, 14213);
2139 break; 2143 break;
2140 2144
2141 case BC_RET: case BC_RET0: case BC_RET1: 2145 case BC_RET: case BC_RET0: case BC_RET1:
2142 if (op != BC_RET0) { 2146 if (op != BC_RET0) {
2143 dasm_put(Dst, 14714); 2147 dasm_put(Dst, 14708);
2144 } 2148 }
2145 dasm_put(Dst, 14718, FRAME_TYPE); 2149 dasm_put(Dst, 14712, FRAME_TYPE);
2146 switch (op) { 2150 switch (op) {
2147 case BC_RET: 2151 case BC_RET:
2148 dasm_put(Dst, 14737); 2152 dasm_put(Dst, 14731);
2149 break; 2153 break;
2150 case BC_RET1: 2154 case BC_RET1:
2151 dasm_put(Dst, 14795); 2155 dasm_put(Dst, 14789);
2152 /* fallthrough */ 2156 /* fallthrough */
2153 case BC_RET0: 2157 case BC_RET0:
2154 dasm_put(Dst, 14811); 2158 dasm_put(Dst, 14805);
2155 default: 2159 default:
2156 break; 2160 break;
2157 } 2161 }
2158 dasm_put(Dst, 14822, Dt7(->pt), Dt9(->k)); 2162 dasm_put(Dst, 14816, Dt7(->pt), Dt9(->k));
2159 if (op == BC_RET) { 2163 if (op == BC_RET) {
2160 dasm_put(Dst, 14864, LJ_TNIL); 2164 dasm_put(Dst, 14858, LJ_TNIL);
2161 } else { 2165 } else {
2162 dasm_put(Dst, 14873, LJ_TNIL); 2166 dasm_put(Dst, 14867, LJ_TNIL);
2163 } 2167 }
2164 dasm_put(Dst, 14880); 2168 dasm_put(Dst, 14874);
2165 if (op != BC_RET0) { 2169 if (op != BC_RET0) {
2166 dasm_put(Dst, 14901); 2170 dasm_put(Dst, 14895);
2167 } 2171 }
2168 dasm_put(Dst, 5058); 2172 dasm_put(Dst, 5052);
2169 break; 2173 break;
2170 2174
2171 /* -- Loops and branches ------------------------------------------------ */ 2175 /* -- Loops and branches ------------------------------------------------ */
@@ -2173,7 +2177,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2173 2177
2174 case BC_FORL: 2178 case BC_FORL:
2175#if LJ_HASJIT 2179#if LJ_HASJIT
2176 dasm_put(Dst, 14905, HOTCOUNT_PCMASK, GG_DISP2HOT); 2180 dasm_put(Dst, 14899, HOTCOUNT_PCMASK, GG_DISP2HOT);
2177#endif 2181#endif
2178 break; 2182 break;
2179 2183
@@ -2185,57 +2189,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2185 case BC_FORI: 2189 case BC_FORI:
2186 case BC_IFORL: 2190 case BC_IFORL:
2187 vk = (op == BC_IFORL || op == BC_JFORL); 2191 vk = (op == BC_IFORL || op == BC_JFORL);
2188 dasm_put(Dst, 14926); 2192 dasm_put(Dst, 14920);
2189 if (!vk) { 2193 if (!vk) {
2190 dasm_put(Dst, 14930, LJ_TISNUM, LJ_TISNUM); 2194 dasm_put(Dst, 14924, LJ_TISNUM, LJ_TISNUM);
2191 } 2195 }
2192 dasm_put(Dst, 14949); 2196 dasm_put(Dst, 14943);
2193 if (!vk) { 2197 if (!vk) {
2194 dasm_put(Dst, 14953, LJ_TISNUM); 2198 dasm_put(Dst, 14947, LJ_TISNUM);
2195 } 2199 }
2196 if (sse) { 2200 if (sse) {
2197 dasm_put(Dst, 14962); 2201 dasm_put(Dst, 14956);
2198 if (vk) { 2202 if (vk) {
2199 dasm_put(Dst, 14974); 2203 dasm_put(Dst, 14968);
2200 } else { 2204 } else {
2201 dasm_put(Dst, 14993); 2205 dasm_put(Dst, 14987);
2202 } 2206 }
2203 dasm_put(Dst, 14998); 2207 dasm_put(Dst, 14992);
2204 } else { 2208 } else {
2205 dasm_put(Dst, 15011); 2209 dasm_put(Dst, 15005);
2206 if (vk) { 2210 if (vk) {
2207 dasm_put(Dst, 15017); 2211 dasm_put(Dst, 15011);
2208 } else { 2212 } else {
2209 dasm_put(Dst, 15033); 2213 dasm_put(Dst, 15027);
2210 } 2214 }
2211 dasm_put(Dst, 15041); 2215 dasm_put(Dst, 15035);
2212 if (cmov) { 2216 if (cmov) {
2213 dasm_put(Dst, 11129); 2217 dasm_put(Dst, 11123);
2214 } else { 2218 } else {
2215 dasm_put(Dst, 11135); 2219 dasm_put(Dst, 11129);
2216 } 2220 }
2217 if (!cmov) { 2221 if (!cmov) {
2218 dasm_put(Dst, 15046); 2222 dasm_put(Dst, 15040);
2219 } 2223 }
2220 } 2224 }
2221 if (op == BC_FORI) { 2225 if (op == BC_FORI) {
2222 dasm_put(Dst, 15052, -BCBIAS_J*4); 2226 dasm_put(Dst, 15046, -BCBIAS_J*4);
2223 } else if (op == BC_JFORI) { 2227 } else if (op == BC_JFORI) {
2224 dasm_put(Dst, 15062, -BCBIAS_J*4, BC_JLOOP); 2228 dasm_put(Dst, 15056, -BCBIAS_J*4, BC_JLOOP);
2225 } else if (op == BC_IFORL) { 2229 } else if (op == BC_IFORL) {
2226 dasm_put(Dst, 15076, -BCBIAS_J*4); 2230 dasm_put(Dst, 15070, -BCBIAS_J*4);
2227 } else { 2231 } else {
2228 dasm_put(Dst, 15072, BC_JLOOP); 2232 dasm_put(Dst, 15066, BC_JLOOP);
2229 } 2233 }
2230 dasm_put(Dst, 11164); 2234 dasm_put(Dst, 11158);
2231 if (sse) { 2235 if (sse) {
2232 dasm_put(Dst, 15086); 2236 dasm_put(Dst, 15080);
2233 } 2237 }
2234 break; 2238 break;
2235 2239
2236 case BC_ITERL: 2240 case BC_ITERL:
2237#if LJ_HASJIT 2241#if LJ_HASJIT
2238 dasm_put(Dst, 14905, HOTCOUNT_PCMASK, GG_DISP2HOT); 2242 dasm_put(Dst, 14899, HOTCOUNT_PCMASK, GG_DISP2HOT);
2239#endif 2243#endif
2240 break; 2244 break;
2241 2245
@@ -2244,33 +2248,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2244 break; 2248 break;
2245#endif 2249#endif
2246 case BC_IITERL: 2250 case BC_IITERL:
2247 dasm_put(Dst, 15097, LJ_TNIL); 2251 dasm_put(Dst, 15091, LJ_TNIL);
2248 if (op == BC_JITERL) { 2252 if (op == BC_JITERL) {
2249 dasm_put(Dst, 15112, BC_JLOOP); 2253 dasm_put(Dst, 15106, BC_JLOOP);
2250 } else { 2254 } else {
2251 dasm_put(Dst, 15126, -BCBIAS_J*4); 2255 dasm_put(Dst, 15120, -BCBIAS_J*4);
2252 } 2256 }
2253 dasm_put(Dst, 11461); 2257 dasm_put(Dst, 11455);
2254 break; 2258 break;
2255 2259
2256 case BC_LOOP: 2260 case BC_LOOP:
2257#if LJ_HASJIT 2261#if LJ_HASJIT
2258 dasm_put(Dst, 14905, HOTCOUNT_PCMASK, GG_DISP2HOT); 2262 dasm_put(Dst, 14899, HOTCOUNT_PCMASK, GG_DISP2HOT);
2259#endif 2263#endif
2260 break; 2264 break;
2261 2265
2262 case BC_ILOOP: 2266 case BC_ILOOP:
2263 dasm_put(Dst, 8587); 2267 dasm_put(Dst, 8581);
2264 break; 2268 break;
2265 2269
2266 case BC_JLOOP: 2270 case BC_JLOOP:
2267#if LJ_HASJIT 2271#if LJ_HASJIT
2268 dasm_put(Dst, 15142, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 2272 dasm_put(Dst, 15136, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
2269#endif 2273#endif
2270 break; 2274 break;
2271 2275
2272 case BC_JMP: 2276 case BC_JMP:
2273 dasm_put(Dst, 15165, -BCBIAS_J*4); 2277 dasm_put(Dst, 15159, -BCBIAS_J*4);
2274 break; 2278 break;
2275 2279
2276 /* ---------------------------------------------------------------------- */ 2280 /* ---------------------------------------------------------------------- */
@@ -2298,7 +2302,7 @@ static int build_backend(BuildCtx *ctx)
2298 2302
2299 build_subroutines(ctx, cmov, sse); 2303 build_subroutines(ctx, cmov, sse);
2300 2304
2301 dasm_put(Dst, 15189); 2305 dasm_put(Dst, 15183);
2302 for (op = 0; op < BC__MAX; op++) 2306 for (op = 0; op < BC__MAX; op++)
2303 build_ins(ctx, (BCOp)op, op, cmov, sse); 2307 build_ins(ctx, (BCOp)op, op, cmov, sse);
2304 2308
@@ -2349,8 +2353,6 @@ static void emit_asm_debug(BuildCtx *ctx)
2349 "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ 2353 "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */
2350 "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */ 2354 "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */
2351 "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */ 2355 "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */
2352 "\t.byte 0x8d\n\t.uleb128 0x6\n" /* offset r13 */
2353 "\t.byte 0x8c\n\t.uleb128 0x7\n" /* offset r12 */
2354#else 2356#else
2355 "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */ 2357 "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */
2356 "\t.byte 0x87\n\t.uleb128 0x3\n" /* offset edi */ 2358 "\t.byte 0x87\n\t.uleb128 0x3\n" /* offset edi */
@@ -2392,8 +2394,6 @@ static void emit_asm_debug(BuildCtx *ctx)
2392 "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ 2394 "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */
2393 "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */ 2395 "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */
2394 "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */ 2396 "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */
2395 "\t.byte 0x8d\n\t.uleb128 0x6\n" /* offset r13 */
2396 "\t.byte 0x8c\n\t.uleb128 0x7\n" /* offset r12 */
2397#else 2397#else
2398 "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */ 2398 "\t.byte 0x85\n\t.uleb128 0x2\n" /* offset ebp */
2399 "\t.byte 0x87\n\t.uleb128 0x3\n" /* offset edi */ 2399 "\t.byte 0x87\n\t.uleb128 0x3\n" /* offset edi */
@@ -2444,8 +2444,6 @@ static void emit_asm_debug(BuildCtx *ctx)
2444 "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */ 2444 "\t.byte 0x83\n\t.uleb128 0x3\n" /* offset rbx */
2445 "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */ 2445 "\t.byte 0x8f\n\t.uleb128 0x4\n" /* offset r15 */
2446 "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */ 2446 "\t.byte 0x8e\n\t.uleb128 0x5\n" /* offset r14 */
2447 "\t.byte 0x8d\n\t.uleb128 0x6\n" /* offset r13 */
2448 "\t.byte 0x8c\n\t.uleb128 0x7\n" /* offset r12 */
2449#else 2447#else
2450 "\t.byte 0x84\n\t.byte 0x2\n" /* offset ebp (4 for MACH-O)*/ 2448 "\t.byte 0x84\n\t.byte 0x2\n" /* offset ebp (4 for MACH-O)*/
2451 "\t.byte 0x87\n\t.byte 0x3\n" /* offset edi */ 2449 "\t.byte 0x87\n\t.byte 0x3\n" /* offset edi */
diff --git a/src/lj_err.c b/src/lj_err.c
index ebc9ad12..b2e7f5f8 100644
--- a/src/lj_err.c
+++ b/src/lj_err.c
@@ -20,6 +20,63 @@
20#include "lj_trace.h" 20#include "lj_trace.h"
21#include "lj_vm.h" 21#include "lj_vm.h"
22 22
23/*
24** LuaJIT can either use internal or external frame unwinding:
25**
26** - Internal frame unwinding (INT) is free-standing and doesn't require
27** any OS or library support.
28**
29** - External frame unwinding (EXT) uses the system-provided unwind handler.
30**
31** Pros and Cons:
32**
33** - EXT requires unwind tables for *all* functions on the C stack between
34** the pcall/catch and the error/throw. This is the default on x64,
35** but needs to be manually enabled on x86 for non-C++ code.
36**
37** - INT is faster when actually throwing errors (but this happens rarely).
38** Setting up error handlers is zero-cost in any case.
39**
40** - EXT provides full interoperability with C++ exceptions. You can throw
41** Lua errors or C++ exceptions through a mix of Lua frames and C++ frames.
42** C++ destructors are called as needed. C++ exceptions caught by pcall
43** are converted to the string "C++ exception". Lua errors can be caught
44** with catch (...) in C++.
45**
46** - INT has only limited support for automatically catching C++ exceptions
47** on POSIX systems using DWARF2 stack unwinding. Other systems may use
48** the wrapper function feature. Lua errors thrown through C++ frames
49** cannot be caught by C++ code and C++ destructors are not run.
50**
51** INT is the default on x86 systems, EXT is the default on x64 systems.
52**
53** EXT can only be manually enabled on POSIX/x86 systems using DWARF2 stack
54** unwinding with -DLUAJIT_UNWIND_EXTERNAL. *All* C code must be compiled
55** with -funwind-tables (or -fexceptions). This includes LuaJIT itself (set
56** TARGET_CFLAGS), all of your C/Lua binding code, all loadable C modules
57** and all C libraries that have callbacks which may be used to call back
58** into Lua. C++ code must *not* be compiled with -fno-exceptions.
59**
60** EXT cannot be enabled on WIN32 since system exceptions use code-driven SEH.
61** EXT is mandatory on WIN64 since the calling convention has an abundance
62** of callee-saved registers (rbx, rbp, rsi, rdi, r12-r15, xmm6-xmm15).
63** EXT is mandatory on POSIX/x64 since the interpreter doesn't save r12/r13.
64*/
65
66#if defined(__ELF__) || defined(__MACH__)
67#if LJ_TARGET_X86
68#ifdef LUAJIT_UNWIND_EXTERNAL
69#define LJ_UNWIND_EXT 1
70#endif
71#elif LJ_TARGET_X64
72#define LJ_UNWIND_EXT 1
73#endif
74#elif defined(LUA_USE_WIN)
75#if LJ_TARGET_X64
76#define LJ_UNWIND_EXT 1
77#endif
78#endif
79
23/* -- Error messages ------------------------------------------------------ */ 80/* -- Error messages ------------------------------------------------------ */
24 81
25/* Error message strings. */ 82/* Error message strings. */
@@ -374,117 +431,249 @@ LUA_API int lua_getstack(lua_State *L, int level, lua_Debug *ar)
374 } 431 }
375} 432}
376 433
377/* -- Error handling ------------------------------------------------------ */ 434/* -- Internal frame unwinding -------------------------------------------- */
378
379/* Return string object for error message. */
380LJ_NOINLINE GCstr *lj_err_str(lua_State *L, ErrMsg em)
381{
382 return lj_str_newz(L, err2msg(em));
383}
384 435
385/* Unwind Lua stack and add error message on top. */ 436/* Unwind Lua stack and move error message to new top. */
386LJ_NOINLINE static void unwindstack(lua_State *L, TValue *top, int errcode) 437LJ_NOINLINE static void unwindstack(lua_State *L, TValue *top)
387{ 438{
388 lj_func_closeuv(L, top); 439 lj_func_closeuv(L, top);
389 switch (errcode) { 440 if (top < L->top-1) {
390 case LUA_ERRMEM: 441 copyTV(L, top, L->top-1);
391 setstrV(L, top, lj_err_str(L, LJ_ERR_ERRMEM)); 442 L->top = top+1;
392 break;
393 case LUA_ERRERR:
394 setstrV(L, top, lj_err_str(L, LJ_ERR_ERRERR));
395 break;
396 case LUA_ERRSYNTAX:
397 case LUA_ERRRUN:
398 copyTV(L, top, L->top - 1);
399 break;
400 default:
401 lua_assert(0);
402 break;
403 } 443 }
404 L->top = top+1;
405 lj_state_relimitstack(L); 444 lj_state_relimitstack(L);
406} 445}
407 446
408/* Throw error. Find catch frame, unwind stack and continue. */ 447/* Unwind until stop frame. Optionally cleanup frames. */
409LJ_NOINLINE void lj_err_throw(lua_State *L, int errcode) 448static void *err_unwind(lua_State *L, void *stopcf, int errcode)
410{ 449{
411 TValue *frame = L->base-1; 450 TValue *frame = L->base-1;
412 void *cf = L->cframe; 451 void *cf = L->cframe;
413 global_State *g = G(L);
414 if (L->status == LUA_ERRERR+1) { /* Don't touch the stack during lua_open. */
415 lj_vm_unwind_c(cf, errcode);
416 goto uncaught; /* unreachable */
417 }
418 lj_trace_abort(g);
419 setgcrefnull(g->jit_L);
420 L->status = 0;
421 while (cf) { 452 while (cf) {
422 if (cframe_nres(cframe_raw(cf)) < 0) { /* cframe without frame? */ 453 int32_t nres = cframe_nres(cframe_raw(cf));
423 TValue *top = restorestack(L, -cframe_nres(cf)); 454 if (nres < 0) { /* C frame without Lua frame? */
424 if (frame < top) { 455 TValue *top = restorestack(L, -nres);
425 L->cframe = cframe_prev(cf); 456 if (frame < top) { /* Frame reached? */
426 L->base = frame+1; 457 if (errcode) {
427 unwindstack(L, top, errcode); 458 L->cframe = cframe_prev(cf);
428 lj_vm_unwind_c(cf, errcode); 459 L->base = frame+1;
429 goto uncaught; /* unreachable */ 460 unwindstack(L, top);
461 }
462 return cf;
430 } 463 }
431 } 464 }
432 if (frame <= L->stack) 465 if (frame <= L->stack)
433 break; 466 break;
434 switch (frame_typep(frame)) { 467 switch (frame_typep(frame)) {
435 case FRAME_LUA: 468 case FRAME_LUA: /* Lua frame. */
436 case FRAME_LUAP: 469 case FRAME_LUAP:
437 frame = frame_prevl(frame); 470 frame = frame_prevl(frame);
438 break; 471 break;
439 case FRAME_C: 472 case FRAME_C: /* C frame. */
440 if (cframe_canyield(cf)) goto uncaught; 473#if LJ_UNWIND_EXT
474 if (errcode) {
475 L->cframe = cframe_prev(cf);
476 L->base = frame_prevd(frame) + 1;
477 unwindstack(L, frame);
478 } else if (cf != stopcf) {
479 cf = cframe_prev(cf);
480 frame = frame_prevd(frame);
481 break;
482 }
483 return NULL; /* Continue unwinding. */
484#else
485 UNUSED(stopcf);
441 cf = cframe_prev(cf); 486 cf = cframe_prev(cf);
442 /* fallthrough */
443 case FRAME_CONT:
444 case FRAME_VARG:
445 frame = frame_prevd(frame); 487 frame = frame_prevd(frame);
446 break; 488 break;
447 case FRAME_CP: 489#endif
448 L->cframe = cframe_prev(cf); 490 case FRAME_CP: /* Protected C frame. */
449 L->base = frame_prevd(frame) + 1; 491 if (cframe_canyield(cf)) { /* Resume? */
450 unwindstack(L, frame, errcode); 492 if (errcode) {
451 lj_vm_unwind_c(cf, errcode); 493 L->cframe = NULL;
452 goto uncaught; /* unreachable */ 494 L->status = cast_byte(errcode);
453 case FRAME_PCALL: 495 }
454 hook_leave(g); 496 return cframe_raw(cf);
497 }
498 if (errcode) {
499 L->cframe = cframe_prev(cf);
500 L->base = frame_prevd(frame) + 1;
501 unwindstack(L, frame);
502 }
503 return cf;
504 case FRAME_CONT: /* Continuation frame. */
505 case FRAME_VARG: /* Vararg frame. */
506 frame = frame_prevd(frame);
507 break;
508 case FRAME_PCALL: /* FF pcall() frame. */
509 if (errcode)
510 hook_leave(G(L));
455 /* fallthrough */ 511 /* fallthrough */
456 case FRAME_PCALLH: 512 case FRAME_PCALLH: /* FF pcall() frame inside hook. */
457 L->cframe = cf; 513 if (errcode) {
458 L->base = frame_prevd(frame) + 1; 514 L->cframe = cf;
459 unwindstack(L, L->base, errcode); 515 L->base = frame_prevd(frame) + 1;
460 lj_vm_unwind_ff(cf); 516 unwindstack(L, L->base);
461 goto uncaught; /* unreachable */ 517 return NULL; /* Call special handler. */
462 default: 518 }
463 lua_assert(0); 519 return cf;
464 goto uncaught;
465 } 520 }
466 } 521 }
467 /* No catch frame found. Must be a resume or an unprotected error. */ 522 /* No C frame. */
468uncaught: 523 if (errcode) {
469 L->status = cast_byte(errcode); 524 L->cframe = NULL;
470 L->cframe = NULL; 525 L->base = L->stack+1;
471 if (cframe_canyield(cf)) { /* Resume? */ 526 unwindstack(L, L->base);
472 unwindstack(L, L->top, errcode); 527 if (G(L)->panic)
473 lj_vm_unwind_c(cframe_raw(cf), errcode); 528 G(L)->panic(L);
529 exit(EXIT_FAILURE);
474 } 530 }
475 /* Better rethrow on main thread than panic. */ 531 return L; /* Anything not-NULL will do. */
476 { 532}
477 if (L != mainthread(g)) 533
478 lj_err_throw(mainthread(g), errcode); 534/* -- External frame unwinding -------------------------------------------- */
479 if (g->panic) { 535
480 L->base = L->stack+1; 536#if defined(__ELF__) || defined(__MACH__)
481 unwindstack(L, L->base, errcode); 537
482 g->panic(L); 538#include <unwind.h>
539
540#define LJ_UEXCLASS 0x4c55414a49543200ULL /* LUAJIT2\0 */
541#define LJ_UEXCLASS_MAKE(c) (LJ_UEXCLASS | (_Unwind_Exception_Class)(c))
542#define LJ_UEXCLASS_CHECK(cl) (((cl) ^ LJ_UEXCLASS) <= 0xff)
543#define LJ_UEXCLASS_ERRCODE(cl) (cast_int((cl) & 0xff))
544
545/* DWARF2 personality handler referenced from interpreter .eh_frame. */
546LJ_FUNCA int lj_err_unwind_dwarf(int version, _Unwind_Action actions,
547 _Unwind_Exception_Class uexclass, struct _Unwind_Exception *uex,
548 struct _Unwind_Context *ctx)
549{
550 void *cf;
551 lua_State *L;
552 if (version != 1)
553 return _URC_FATAL_PHASE1_ERROR;
554 UNUSED(uexclass);
555 cf = (void *)_Unwind_GetCFA(ctx);
556 L = cframe_L(cf);
557 if ((actions & _UA_SEARCH_PHASE)) {
558#if LJ_UNWIND_EXT
559 if (err_unwind(L, cf, 0) == NULL)
560 return _URC_CONTINUE_UNWIND;
561#endif
562 if (!LJ_UEXCLASS_CHECK(uexclass)) {
563 setstrV(L, L->top++, lj_err_str(L, LJ_ERR_ERRCPP));
564 }
565 return _URC_HANDLER_FOUND;
566 }
567 if ((actions & _UA_CLEANUP_PHASE)) {
568 int errcode;
569 if (LJ_UEXCLASS_CHECK(uexclass)) {
570 errcode = LJ_UEXCLASS_ERRCODE(uexclass);
571 } else {
572 if ((actions & _UA_HANDLER_FRAME))
573 _Unwind_DeleteException(uex);
574 errcode = LUA_ERRRUN;
575 }
576#if LJ_UNWIND_EXT
577 if (err_unwind(L, cf, errcode)) {
578 _Unwind_SetGR(ctx, 0, errcode);
579 _Unwind_SetIP(ctx, (_Unwind_Ptr)lj_vm_unwind_c_eh);
580 return _URC_INSTALL_CONTEXT;
581 } else if ((actions & _UA_HANDLER_FRAME)) {
582 _Unwind_SetIP(ctx, (_Unwind_Ptr)lj_vm_unwind_ff_eh);
583 return _URC_INSTALL_CONTEXT;
483 } 584 }
585#else
586 /* This is not the proper way to escape from the unwinder. We get away
587 ** with it on x86 because the interpreter restores all callee-saved regs.
588 */
589 lj_err_throw(L, errcode);
590#endif
591 }
592 return _URC_CONTINUE_UNWIND;
593}
594
595#if LJ_UNWIND_EXT
596/* NYI: this is not thread-safe. */
597static struct _Unwind_Exception static_uex;
598
599/* Raise DWARF2 exception. */
600static void err_raise_ext(int errcode)
601{
602 static_uex.exception_class = LJ_UEXCLASS_MAKE(errcode);
603 static_uex.exception_cleanup = NULL;
604 _Unwind_RaiseException(&static_uex);
605}
606#endif
607
608#elif defined(_WIN64)
609
610#define WIN32_LEAN_AND_MEAN
611#include <windows.h>
612
613#define LJ_EXCODE ((DWORD)0x024c4a00)
614#define LJ_EXCODE_MAKE(c) (LJ_EXCODE | (DWORD)(c))
615#define LJ_EXCODE_CHECK(cl) (((cl) ^ LJ_EXCODE) <= 0xff)
616#define LJ_EXCODE_ERRCODE(cl) (cast_int((cl) & 0xff))
617
618/* NYI: Win64 exception handler for interpreter frame. */
619
620/* Raise Windows exception. */
621static void err_raise_ext(int errcode)
622{
623 RaiseException(LJ_EXCODE_MAKE(errcode), 0, 0, NULL);
624}
625
626#endif
627
628/* -- Error handling ------------------------------------------------------ */
629
630/* Throw error. Find catch frame, unwind stack and continue. */
631LJ_NOINLINE void lj_err_throw(lua_State *L, int errcode)
632{
633 global_State *g = G(L);
634 lj_trace_abort(g);
635 setgcrefnull(g->jit_L);
636 L->status = 0;
637#if LJ_UNWIND_EXT
638 err_raise_ext(errcode);
639 /*
640 ** A return from this function signals a corrupt C stack that cannot be
641 ** unwound. We have no choice but to call the panic function and exit.
642 **
643 ** Usually this is caused by a C function without unwind information.
644 ** This should never happen on x64, but may happen on x86 if you've
645 ** manually enabled LUAJIT_UNWIND_EXTERNAL and forgot to recompile *every*
646 ** non-C++ file with -funwind-tables.
647 */
648 if (G(L)->panic)
649 G(L)->panic(L);
650#else
651 {
652 void *cf = err_unwind(L, NULL, errcode);
653 if (cf)
654 lj_vm_unwind_c(cf, errcode);
655 else
656 lj_vm_unwind_ff(cframe_raw(L->cframe));
484 } 657 }
658#endif
485 exit(EXIT_FAILURE); 659 exit(EXIT_FAILURE);
486} 660}
487 661
662/* Return string object for error message. */
663LJ_NOINLINE GCstr *lj_err_str(lua_State *L, ErrMsg em)
664{
665 return lj_str_newz(L, err2msg(em));
666}
667
668/* Out-of-memory error. */
669LJ_NOINLINE void lj_err_mem(lua_State *L)
670{
671 if (L->status == LUA_ERRERR+1) /* Don't touch the stack during lua_open. */
672 lj_vm_unwind_c(L->cframe, LUA_ERRMEM);
673 setstrV(L, L->top++, lj_err_str(L, LJ_ERR_ERRMEM));
674 lj_err_throw(L, LUA_ERRMEM);
675}
676
488/* Find error function for runtime errors. Requires an extra stack traversal. */ 677/* Find error function for runtime errors. Requires an extra stack traversal. */
489static ptrdiff_t finderrfunc(lua_State *L) 678static ptrdiff_t finderrfunc(lua_State *L)
490{ 679{
@@ -507,7 +696,6 @@ static ptrdiff_t finderrfunc(lua_State *L)
507 frame = frame_prevl(frame); 696 frame = frame_prevl(frame);
508 break; 697 break;
509 case FRAME_C: 698 case FRAME_C:
510 if (cframe_canyield(cf)) return 0;
511 cf = cframe_prev(cf); 699 cf = cframe_prev(cf);
512 /* fallthrough */ 700 /* fallthrough */
513 case FRAME_CONT: 701 case FRAME_CONT:
@@ -515,6 +703,7 @@ static ptrdiff_t finderrfunc(lua_State *L)
515 frame = frame_prevd(frame); 703 frame = frame_prevd(frame);
516 break; 704 break;
517 case FRAME_CP: 705 case FRAME_CP:
706 if (cframe_canyield(cf)) return 0;
518 if (cframe_errfunc(cf) >= 0) 707 if (cframe_errfunc(cf) >= 0)
519 return cframe_errfunc(cf); 708 return cframe_errfunc(cf);
520 frame = frame_prevd(frame); 709 frame = frame_prevd(frame);
@@ -540,8 +729,10 @@ LJ_NOINLINE void lj_err_run(lua_State *L)
540 TValue *errfunc = restorestack(L, ef); 729 TValue *errfunc = restorestack(L, ef);
541 TValue *top = L->top; 730 TValue *top = L->top;
542 lj_trace_abort(G(L)); 731 lj_trace_abort(G(L));
543 if (!tvisfunc(errfunc) || L->status == LUA_ERRERR) 732 if (!tvisfunc(errfunc) || L->status == LUA_ERRERR) {
733 setstrV(L, top-1, lj_err_str(L, LJ_ERR_ERRERR));
544 lj_err_throw(L, LUA_ERRERR); 734 lj_err_throw(L, LUA_ERRERR);
735 }
545 L->status = LUA_ERRERR; 736 L->status = LUA_ERRERR;
546 copyTV(L, top, top-1); 737 copyTV(L, top, top-1);
547 copyTV(L, top-1, errfunc); 738 copyTV(L, top-1, errfunc);
@@ -763,47 +954,3 @@ LUALIB_API int luaL_error(lua_State *L, const char *fmt, ...)
763 return 0; /* unreachable */ 954 return 0; /* unreachable */
764} 955}
765 956
766/* -- C++ exception support ----------------------------------------------- */
767
768#if defined(__ELF__) || defined(__MACH__)
769typedef enum
770{
771 _URC_NO_REASON,
772 _URC_FOREIGN_EXCEPTION_CAUGHT,
773 _URC_FATAL_PHASE2_ERROR,
774 _URC_FATAL_PHASE1_ERROR,
775 _URC_NORMAL_STOP,
776 _URC_END_OF_STACK,
777 _URC_HANDLER_FOUND,
778 _URC_INSTALL_CONTEXT,
779 _URC_CONTINUE_UNWIND
780} _Unwind_Reason_Code;
781
782#define _UA_SEARCH_PHASE 1
783#define _UA_CLEANUP_PHASE 2
784#define _UA_HANDLER_FRAME 4
785#define _UA_FORCE_UNWIND 8
786#define _UA_END_OF_STACK 16
787
788extern void *_Unwind_GetCFA(void *ctx);
789extern void _Unwind_DeleteException(void *uex);
790
791/* DWARF2 personality handler referenced from .eh_frame. */
792LJ_FUNCA int lj_err_unwind_dwarf(int version, int actions, uint64_t uexclass,
793 void *uex, void *ctx)
794{
795 if (version != 1)
796 return _URC_FATAL_PHASE1_ERROR;
797 UNUSED(uexclass);
798 if ((actions & _UA_SEARCH_PHASE))
799 return _URC_HANDLER_FOUND;
800 if ((actions & _UA_HANDLER_FRAME)) {
801 void *cf = _Unwind_GetCFA(ctx);
802 lua_State *L = cframe_L(cf);
803 _Unwind_DeleteException(uex);
804 lj_err_msg(L, LJ_ERR_ERRCPP);
805 }
806 return _URC_CONTINUE_UNWIND;
807}
808#endif
809
diff --git a/src/lj_err.h b/src/lj_err.h
index e794d44c..26375489 100644
--- a/src/lj_err.h
+++ b/src/lj_err.h
@@ -19,6 +19,7 @@ typedef enum {
19 19
20LJ_FUNC GCstr *lj_err_str(lua_State *L, ErrMsg em); 20LJ_FUNC GCstr *lj_err_str(lua_State *L, ErrMsg em);
21LJ_FUNC_NORET void lj_err_throw(lua_State *L, int errcode); 21LJ_FUNC_NORET void lj_err_throw(lua_State *L, int errcode);
22LJ_FUNC_NORET void lj_err_mem(lua_State *L);
22LJ_FUNC_NORET void lj_err_run(lua_State *L); 23LJ_FUNC_NORET void lj_err_run(lua_State *L);
23LJ_FUNC_NORET void lj_err_msg(lua_State *L, ErrMsg em); 24LJ_FUNC_NORET void lj_err_msg(lua_State *L, ErrMsg em);
24LJ_FUNC_NORET void lj_err_lex(lua_State *L, const char *src, const char *tok, 25LJ_FUNC_NORET void lj_err_lex(lua_State *L, const char *src, const char *tok,
diff --git a/src/lj_frame.h b/src/lj_frame.h
index 2704ee40..0bfcb005 100644
--- a/src/lj_frame.h
+++ b/src/lj_frame.h
@@ -81,7 +81,7 @@ enum {
81#define CFRAME_OFS_ERRF (3*4) 81#define CFRAME_OFS_ERRF (3*4)
82#define CFRAME_OFS_NRES (2*4) 82#define CFRAME_OFS_NRES (2*4)
83#define CFRAME_OFS_MULTRES (1*4) 83#define CFRAME_OFS_MULTRES (1*4)
84#define CFRAME_SIZE (12*8) 84#define CFRAME_SIZE (10*8)
85#endif 85#endif
86#else 86#else
87#error "Missing CFRAME_* definitions for this architecture" 87#error "Missing CFRAME_* definitions for this architecture"
diff --git a/src/lj_vm.h b/src/lj_vm.h
index 3e4ea45c..05c590e6 100644
--- a/src/lj_vm.h
+++ b/src/lj_vm.h
@@ -15,8 +15,10 @@ typedef TValue *(*lua_CPFunction)(lua_State *L, lua_CFunction func, void *ud);
15LJ_ASMF int lj_vm_cpcall(lua_State *L, lua_CFunction func, void *ud, 15LJ_ASMF int lj_vm_cpcall(lua_State *L, lua_CFunction func, void *ud,
16 lua_CPFunction cp); 16 lua_CPFunction cp);
17LJ_ASMF int lj_vm_resume(lua_State *L, TValue *base, int nres1, ptrdiff_t ef); 17LJ_ASMF int lj_vm_resume(lua_State *L, TValue *base, int nres1, ptrdiff_t ef);
18LJ_ASMF_NORET void lj_vm_unwind_c(void *cframe, int errcode); 18LJ_ASMF_NORET void LJ_FASTCALL lj_vm_unwind_c(void *cframe, int errcode);
19LJ_ASMF_NORET void lj_vm_unwind_ff(void *cframe); 19LJ_ASMF_NORET void LJ_FASTCALL lj_vm_unwind_ff(void *cframe);
20LJ_ASMF void lj_vm_unwind_c_eh(void);
21LJ_ASMF void lj_vm_unwind_ff_eh(void);
20 22
21/* Miscellaneous functions. */ 23/* Miscellaneous functions. */
22#if LJ_TARGET_X86ORX64 24#if LJ_TARGET_X86ORX64