Last active
May 23, 2020 13:01
-
-
Save igormunkin/18cb6afe5a495bce31f772d453f3117e to your computer and use it in GitHub Desktop.
Trace dumps and reproducer for LuaJIT #548
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
---- TRACE 1 start 4252.lua:54 | |
0011 KPRI 8 0 | |
0012 MOV 9 4 | |
0013 MOV 10 5 | |
0014 MOV 11 6 | |
0015 CALL 9 3 3 | |
0000 . FUNCF 6 ; 4252.lua:5 | |
0001 . TGETS 3 0 0 ; "gen" | |
0002 . MOV 4 1 | |
0003 . MOV 5 2 | |
0004 . CALLT 3 3 | |
0000 . FUNCF 12 ; 4252.lua:26 | |
0001 . TGETB 2 1 1 | |
0002 . TGETB 3 1 2 | |
0003 . MULNV 4 2 0 ; 3 | |
0004 . SUBVN 4 4 1 ; 2 | |
0005 . TGETV 4 0 4 | |
0006 . MULNV 5 2 0 ; 3 | |
0007 . SUBVN 5 5 2 ; 1 | |
0008 . TGETV 5 0 5 | |
0009 . UGET 6 0 ; chain_gen_r2 | |
0010 . MOV 7 0 | |
0011 . MOV 8 1 | |
0012 . MOV 9 4 | |
0013 . MOV 10 5 | |
0014 . MOV 11 3 | |
0015 . CALL 9 0 3 | |
0000 . . FUNCF 6 ; 4252.lua:5 | |
0001 . . TGETS 3 0 0 ; "gen" | |
0002 . . MOV 4 1 | |
0003 . . MOV 5 2 | |
0004 . . CALLT 3 3 | |
0000 . . FUNCC ; ipairs_aux | |
0016 . CALLMT 6 2 | |
0000 . FUNCV 8 ; 4252.lua:19 | |
0001 . . ISEQP 2 0 | |
0002 . . JMP 3 => 0009 | |
0003 . . TNEW 3 3 | |
0004 . . TGETB 4 1 1 | |
0005 . . TSETB 4 3 1 | |
0006 . . TSETB 2 3 2 | |
0007 . . VARG 4 0 3 | |
0008 . . RETM 3 1 | |
0016 MOV 8 10 | |
0017 MOV 6 9 | |
0018 ISNEP 6 0 | |
0019 JMP 9 => 0021 | |
0021 GGET 9 2 ; "table" | |
0022 TGETS 9 9 3 ; "insert" | |
0023 MOV 10 7 | |
0024 MOV 11 8 | |
0025 CALL 9 1 3 | |
0000 . FUNCC ; table.insert | |
0026 JMP 8 => 0010 | |
0010 LOOP 8 => 0027 | |
---- TRACE 1 IR | |
.... SNAP #0 [ ---- ---- ---- ---- ---- ---- ---- ---- ---- ] | |
0001 [24] > tab SLOAD #5 T | |
0002 [20] > tab SLOAD #6 T | |
0003 rax > tab SLOAD #7 T | |
0004 [28] tab FLOAD 0001 tab.meta | |
0005 > tab NE 0004 NULL | |
0006 int FLOAD 0004 tab.hmask | |
0007 > int EQ 0006 +1 | |
0008 rcx p32 FLOAD 0004 tab.node | |
0009 > p32 HREFK 0008 "__call" @1 | |
0010 > fun HLOAD 0009 | |
0011 > fun EQ 0010 4252.lua:5 | |
0012 int FLOAD 0001 tab.hmask | |
0013 > int EQ 0012 +3 | |
0014 rcx p32 FLOAD 0001 tab.node | |
0015 > p32 HREFK 0014 "gen" @2 | |
0016 > fun HLOAD 0015 | |
0017 > fun EQ 0016 4252.lua:26 | |
0018 int FLOAD 0003 tab.asize | |
0019 > int ABC 0018 +2 | |
0020 rax p32 FLOAD 0003 tab.array | |
0021 p32 AREF 0020 +1 | |
0022 [10] > num ALOAD 0021 | |
0023 p32 AREF 0020 +2 | |
0024 xmm0 > num ALOAD 0023 | |
0025 xmm1 num MUL 0022 +3 | |
0027 rcx > int CONV 0025 int.num | |
0028 [1c] int ADD 0027 -2 | |
0029 rbp int FLOAD 0002 tab.asize | |
0030 > int ABC 0029 0028 | |
0031 rax p32 FLOAD 0002 tab.array | |
0032 p32 AREF 0031 0028 | |
0033 rbx > tab ALOAD 0032 | |
0035 [18] int ADD 0027 -1 | |
0036 > int ABC 0029 0035 | |
0037 p32 AREF 0031 0035 | |
0038 rcx > tab ALOAD 0037 | |
0039 rax > p32 UREFO 4252.lua:26 #0 | |
0040 rbp p32 SUB 0039 0000 | |
0041 > p32 UGT 0040 +136 | |
0042 > fun ULOAD 0039 | |
0043 rbp tab FLOAD 0033 tab.meta | |
0044 > tab NE 0043 NULL | |
0045 int FLOAD 0043 tab.hmask | |
0046 > int EQ 0045 +1 | |
0047 rbp p32 FLOAD 0043 tab.node | |
0048 > p32 HREFK 0047 "__call" @1 | |
0049 > fun HLOAD 0048 | |
0050 > fun EQ 0049 4252.lua:5 | |
0051 int FLOAD 0033 tab.hmask | |
0052 > int EQ 0051 +3 | |
0053 rbx p32 FLOAD 0033 tab.node | |
0054 > p32 HREFK 0053 "gen" @2 | |
0055 > fun HLOAD 0054 | |
0056 > fun EQ 0055 ipairs_aux | |
0057 rbp int CONV 0024 int.num | |
0058 rbp + int ADD 0057 +1 | |
0059 int FLOAD 0038 tab.asize | |
0060 > int ABC 0059 0058 | |
0061 rcx p32 FLOAD 0038 tab.array | |
0062 p32 AREF 0061 0058 | |
0063 [2c] > str ALOAD 0062 | |
0064 > fun EQ 0042 4252.lua:19 | |
.... SNAP #1 [ ---- ---- ---- ---- ---- ---- ---- ---- ---- nil 4252.lua:19|nil nil nil 0063 4252.lua:19|---- 0003 0058 ] | |
0065 {sink}+ tab TNEW #3 #0 | |
0066 p32 FLOAD 0065 tab.array | |
0067 p32 AREF 0066 +1 | |
0068 {0065} num ASTORE 0067 0022 | |
0069 p32 AREF 0066 +2 | |
0070 num CONV 0058 num.int | |
0071 {0065} num ASTORE 0069 0070 | |
.... SNAP #2 [ ---- ---- ---- ---- ---- ---- ---- 0065 ---- 0063 ] | |
0072 rax fun SLOAD #0 R | |
0073 r12 tab FLOAD 0072 func.env | |
0074 int FLOAD 0073 tab.hmask | |
0075 > int EQ 0074 +63 | |
0076 rax p32 FLOAD 0073 tab.node | |
0077 > p32 HREFK 0076 "table" @47 | |
0078 rax > tab HLOAD 0077 | |
0079 int FLOAD 0078 tab.hmask | |
0080 > int EQ 0079 +15 | |
0081 rax p32 FLOAD 0078 tab.node | |
0082 > p32 HREFK 0081 "insert" @15 | |
0083 > fun HLOAD 0082 | |
0084 rbx > tab SLOAD #8 T | |
0085 > fun EQ 0083 table.insert | |
0086 rax int CALLL lj_tab_len (0084) | |
0087 rax int ADD 0086 +1 | |
0088 int FLOAD 0084 tab.asize | |
0089 > int ULE 0088 0087 | |
0090 int FLOAD 0084 tab.hmask | |
0091 > int EQ 0090 +0 | |
0092 [30] num CONV 0087 num.int | |
0093 rcx p32 NEWREF 0084 0092 | |
0094 str HSTORE 0093 0063 | |
0095 nil TBAR 0084 | |
.... SNAP #3 [ ---- ---- ---- ---- ---- ---- ---- 0065 ---- ] | |
0096 ------------ LOOP ------------ | |
0097 int FLOAD 0004 tab.hmask | |
0098 > int EQ 0097 +1 | |
0099 r15 p32 FLOAD 0004 tab.node | |
0100 > p32 HREFK 0099 "__call" @1 | |
0101 > fun HLOAD 0100 | |
0102 > fun EQ 0101 4252.lua:5 | |
0103 int FLOAD 0001 tab.hmask | |
0104 > int EQ 0103 +3 | |
0105 r15 p32 FLOAD 0001 tab.node | |
0106 > p32 HREFK 0105 "gen" @2 | |
0107 > fun HLOAD 0106 | |
0108 > fun EQ 0107 4252.lua:26 | |
0109 r13 int FLOAD 0002 tab.asize | |
0110 > int ABC 0109 0028 | |
0111 r15 p32 FLOAD 0002 tab.array | |
0112 p32 AREF 0111 0028 | |
0113 r14 > tab ALOAD 0112 | |
0114 > int ABC 0109 0035 | |
0115 p32 AREF 0111 0035 | |
0116 r15 > tab ALOAD 0115 | |
0117 r13 > p32 UREFO 4252.lua:26 #0 | |
0118 r13 p32 SUB 0117 0000 | |
0119 > p32 UGT 0118 +136 | |
0120 r13 tab FLOAD 0113 tab.meta | |
0121 > tab NE 0120 NULL | |
0122 int FLOAD 0120 tab.hmask | |
0123 > int EQ 0122 +1 | |
0124 r13 p32 FLOAD 0120 tab.node | |
0125 > p32 HREFK 0124 "__call" @1 | |
0126 > fun HLOAD 0125 | |
0127 > fun EQ 0126 4252.lua:5 | |
0128 int FLOAD 0113 tab.hmask | |
0129 > int EQ 0128 +3 | |
0130 r14 p32 FLOAD 0113 tab.node | |
0131 > p32 HREFK 0130 "gen" @2 | |
0132 > fun HLOAD 0131 | |
0133 > fun EQ 0132 ipairs_aux | |
0134 rbp + int ADD 0058 +1 | |
0135 int FLOAD 0116 tab.asize | |
0136 > int ABC 0135 0134 | |
0137 r15 p32 FLOAD 0116 tab.array | |
0138 p32 AREF 0137 0134 | |
0139 r15 > str ALOAD 0138 | |
.... SNAP #4 [ ---- ---- ---- ---- ---- ---- ---- 0065 ---- nil 4252.lua:19|nil nil nil 0139 4252.lua:19|---- 0065 0134 ] | |
0140 {sink}+ tab TNEW #3 #0 | |
0141 p32 FLOAD 0140 tab.array | |
0142 p32 AREF 0141 +1 | |
0143 {0140} num ASTORE 0142 0022 | |
0144 p32 AREF 0141 +2 | |
0145 num CONV 0134 num.int | |
0146 {0140} num ASTORE 0144 0145 | |
.... SNAP #5 [ ---- ---- ---- ---- ---- ---- ---- 0140 ---- 0139 ] | |
0147 int FLOAD 0073 tab.hmask | |
0148 > int EQ 0147 +63 | |
0149 r14 p32 FLOAD 0073 tab.node | |
0150 > p32 HREFK 0149 "table" @47 | |
0151 r14 > tab HLOAD 0150 | |
0152 int FLOAD 0151 tab.hmask | |
0153 > int EQ 0152 +15 | |
0154 r14 p32 FLOAD 0151 tab.node | |
0155 > p32 HREFK 0154 "insert" @15 | |
0156 > fun HLOAD 0155 | |
0157 > fun EQ 0156 table.insert | |
0158 rax int CALLL lj_tab_len (0084) | |
0159 rax int ADD 0158 +1 | |
0160 int FLOAD 0084 tab.asize | |
0161 > int ULE 0160 0159 | |
0162 int FLOAD 0084 tab.hmask | |
0163 > int EQ 0162 +0 | |
0164 [8] num CONV 0159 num.int | |
0165 rax p32 NEWREF 0084 0164 | |
0166 str HSTORE 0165 0139 | |
0167 nil TBAR 0084 | |
0168 {sink} tab PHI 0065 0140 | |
0169 rbp int PHI 0058 0134 | |
0170 r14 nil RENAME 0058 #3 | |
---- TRACE 1 mcode 1432 | |
5619649cfa68 add rsp, -0x30 | |
5619649cfa6c mov dword [0x40580410], 0x1 | |
5619649cfa77 mov eax, edx | |
5619649cfa79 cmp dword [rax+0x24], -0x0c | |
5619649cfa7d jnz 0x5619649c0010 ->0 | |
5619649cfa83 mov esi, [rax+0x20] | |
5619649cfa86 mov [rsp+0x24], esi | |
5619649cfa8a cmp dword [rax+0x2c], -0x0c | |
5619649cfa8e jnz 0x5619649c0010 ->0 | |
5619649cfa94 mov edx, [rax+0x28] | |
5619649cfa97 mov [rsp+0x20], edx | |
5619649cfa9b cmp dword [rax+0x34], -0x0c | |
5619649cfa9f jnz 0x5619649c0010 ->0 | |
5619649cfaa5 mov eax, [rax+0x30] | |
5619649cfaa8 mov edi, [rsi+0x10] | |
5619649cfaab mov [rsp+0x28], edi | |
5619649cfaaf test edi, edi | |
5619649cfab1 jz 0x5619649c0010 ->0 | |
5619649cfab7 cmp dword [rdi+0x1c], +0x01 | |
5619649cfabb jnz 0x5619649c0010 ->0 | |
5619649cfac1 mov ecx, [rdi+0x14] | |
5619649cfac4 mov rdi, 0xfffffffb405825d0 | |
5619649cface cmp rdi, [rcx+0x20] | |
5619649cfad2 jnz 0x5619649c0010 ->0 | |
5619649cfad8 cmp dword [rcx+0x1c], -0x09 | |
5619649cfadc jnz 0x5619649c0010 ->0 | |
5619649cfae2 cmp dword [rcx+0x18], 0x40588018 | |
5619649cfae9 jnz 0x5619649c0010 ->0 | |
5619649cfaef cmp dword [rsi+0x1c], +0x03 | |
5619649cfaf3 jnz 0x5619649c0010 ->0 | |
5619649cfaf9 mov ecx, [rsi+0x14] | |
5619649cfafc mov rdi, 0xfffffffb405880c8 | |
5619649cfb06 cmp rdi, [rcx+0x38] | |
5619649cfb0a jnz 0x5619649c0010 ->0 | |
5619649cfb10 cmp dword [rcx+0x34], -0x09 | |
5619649cfb14 jnz 0x5619649c0010 ->0 | |
5619649cfb1a cmp dword [rcx+0x30], 0x40588d08 | |
5619649cfb21 jnz 0x5619649c0010 ->0 | |
5619649cfb27 cmp dword [rax+0x18], +0x02 | |
5619649cfb2b jbe 0x5619649c0010 ->0 | |
5619649cfb31 mov eax, [rax+0x8] | |
5619649cfb34 cmp dword [rax+0xc], 0xfffeffff | |
5619649cfb3b jnb 0x5619649c0010 ->0 | |
5619649cfb41 movsd xmm1, [rax+0x8] | |
5619649cfb46 movsd [rsp+0x10], xmm1 | |
5619649cfb4c cmp dword [rax+0x14], 0xfffeffff | |
5619649cfb53 jnb 0x5619649c0010 ->0 | |
5619649cfb59 movsd xmm0, [rax+0x10] | |
5619649cfb5e mulsd xmm1, [0x40590e40] | |
5619649cfb67 cvttsd2si ecx, xmm1 | |
5619649cfb6b xorps xmm7, xmm7 | |
5619649cfb6e cvtsi2sd xmm7, ecx | |
5619649cfb72 ucomisd xmm1, xmm7 | |
5619649cfb76 jnz 0x5619649c0010 ->0 | |
5619649cfb7c jpe 0x5619649c0010 ->0 | |
5619649cfb82 lea ebx, [rcx-0x2] | |
5619649cfb85 mov [rsp+0x1c], ebx | |
5619649cfb89 mov ebp, [rdx+0x18] | |
5619649cfb8c cmp ebx, ebp | |
5619649cfb8e jnb 0x5619649c0010 ->0 | |
5619649cfb94 mov eax, [rdx+0x8] | |
5619649cfb97 mov edx, [0x405804b4] | |
5619649cfb9e cmp dword [rax+rbx*8+0x4], -0x0c | |
5619649cfba3 jnz 0x5619649c0010 ->0 | |
5619649cfba9 mov ebx, [rax+rbx*8] | |
5619649cfbac add ecx, -0x01 | |
5619649cfbaf mov [rsp+0x18], ecx | |
5619649cfbb3 cmp ecx, ebp | |
5619649cfbb5 jnb 0x5619649c0010 ->0 | |
5619649cfbbb cmp dword [rax+rcx*8+0x4], -0x0c | |
5619649cfbc0 jnz 0x5619649c0010 ->0 | |
5619649cfbc6 mov ecx, [rax+rcx*8] | |
5619649cfbc9 mov eax, [0x40588d38] | |
5619649cfbd0 mov ebp, eax | |
5619649cfbd2 sub ebp, edx | |
5619649cfbd4 cmp ebp, 0x88 | |
5619649cfbda jbe 0x5619649c0010 ->0 | |
5619649cfbe0 cmp dword [rax+0x4], -0x09 | |
5619649cfbe4 jnz 0x5619649c0010 ->0 | |
5619649cfbea mov ebp, [rbx+0x10] | |
5619649cfbed test ebp, ebp | |
5619649cfbef jz 0x5619649c0010 ->0 | |
5619649cfbf5 cmp dword [rbp+0x1c], +0x01 | |
5619649cfbf9 jnz 0x5619649c0010 ->0 | |
5619649cfbff mov ebp, [rbp+0x14] | |
5619649cfc02 mov rdi, 0xfffffffb405825d0 | |
5619649cfc0c cmp rdi, [rbp+0x20] | |
5619649cfc10 jnz 0x5619649c0010 ->0 | |
5619649cfc16 cmp dword [rbp+0x1c], -0x09 | |
5619649cfc1a jnz 0x5619649c0010 ->0 | |
5619649cfc20 cmp dword [rbp+0x18], 0x40588018 | |
5619649cfc27 jnz 0x5619649c0010 ->0 | |
5619649cfc2d cmp dword [rbx+0x1c], +0x03 | |
5619649cfc31 jnz 0x5619649c0010 ->0 | |
5619649cfc37 mov ebx, [rbx+0x14] | |
5619649cfc3a mov rdi, 0xfffffffb405880c8 | |
5619649cfc44 cmp rdi, [rbx+0x38] | |
5619649cfc48 jnz 0x5619649c0010 ->0 | |
5619649cfc4e cmp dword [rbx+0x34], -0x09 | |
5619649cfc52 jnz 0x5619649c0010 ->0 | |
5619649cfc58 cmp dword [rbx+0x30], 0x40583040 | |
5619649cfc5f jnz 0x5619649c0010 ->0 | |
5619649cfc65 cvttsd2si ebp, xmm0 | |
5619649cfc69 add ebp, +0x01 | |
5619649cfc6c cmp ebp, [rcx+0x18] | |
5619649cfc6f jnb 0x5619649c0010 ->0 | |
5619649cfc75 mov ecx, [rcx+0x8] | |
5619649cfc78 cmp dword [rcx+rbp*8+0x4], -0x05 | |
5619649cfc7d jnz 0x5619649c0010 ->0 | |
5619649cfc83 mov edi, [rcx+rbp*8] | |
5619649cfc86 mov [rsp+0x2c], edi | |
5619649cfc8a cmp dword [rax], 0x40588cc8 | |
5619649cfc90 jnz 0x5619649c0010 ->0 | |
5619649cfc96 mov eax, [rdx-0x8] | |
5619649cfc99 mov r12d, [rax+0x8] | |
5619649cfc9d cmp dword [r12+0x1c], +0x3f | |
5619649cfca3 jnz 0x5619649c0018 ->2 | |
5619649cfca9 mov eax, [r12+0x14] | |
5619649cfcae mov rdi, 0xfffffffb40582eb0 | |
5619649cfcb8 cmp rdi, [rax+0x470] | |
5619649cfcbf jnz 0x5619649c0018 ->2 | |
5619649cfcc5 cmp dword [rax+0x46c], -0x0c | |
5619649cfccc jnz 0x5619649c0018 ->2 | |
5619649cfcd2 mov eax, [rax+0x468] | |
5619649cfcd8 cmp dword [rax+0x1c], +0x0f | |
5619649cfcdc jnz 0x5619649c0018 ->2 | |
5619649cfce2 mov eax, [rax+0x14] | |
5619649cfce5 mov rdi, 0xfffffffb405846d8 | |
5619649cfcef cmp rdi, [rax+0x170] | |
5619649cfcf6 jnz 0x5619649c0018 ->2 | |
5619649cfcfc cmp dword [rax+0x16c], -0x09 | |
5619649cfd03 jnz 0x5619649c0018 ->2 | |
5619649cfd09 cmp dword [rdx+0x3c], -0x0c | |
5619649cfd0d jnz 0x5619649c0018 ->2 | |
5619649cfd13 mov ebx, [rdx+0x38] | |
5619649cfd16 cmp dword [rax+0x168], 0x405846b0 | |
5619649cfd20 jnz 0x5619649c0018 ->2 | |
5619649cfd26 mov edi, ebx | |
5619649cfd28 call 0x56193a8f2ffd ->lj_tab_len | |
5619649cfd2d mov edi, [0x405804b0] | |
5619649cfd34 add eax, +0x01 | |
5619649cfd37 cmp eax, [rbx+0x18] | |
5619649cfd3a jb 0x5619649c0018 ->2 | |
5619649cfd40 cmp dword [rbx+0x1c], +0x00 | |
5619649cfd44 jnz 0x5619649c0018 ->2 | |
5619649cfd4a xorps xmm7, xmm7 | |
5619649cfd4d cvtsi2sd xmm7, eax | |
5619649cfd51 movsd [rsp+0x30], xmm7 | |
5619649cfd57 lea rdx, [rsp+0x30] | |
5619649cfd5c mov esi, ebx | |
5619649cfd5e call 0x56193a8f237a ->lj_tab_newkey | |
5619649cfd63 mov ecx, eax | |
5619649cfd65 mov eax, [rsp+0x2c] | |
5619649cfd69 mov dword [rcx+0x4], 0xfffffffb | |
5619649cfd70 mov [rcx], eax | |
5619649cfd72 test byte [rbx+0x4], 0x4 | |
5619649cfd76 jz 0x5619649cfd8d ->LOOP | |
5619649cfd78 and byte [rbx+0x4], 0xfb | |
5619649cfd7c mov edi, [0x405803f4] | |
5619649cfd83 mov [0x405803f4], ebx | |
5619649cfd8a mov [rbx+0xc], edi | |
->LOOP: | |
5619649cfd8d mov edi, [rsp+0x28] | |
5619649cfd91 mov esi, [rsp+0x24] | |
5619649cfd95 mov edx, [rsp+0x20] | |
5619649cfd99 mov ecx, [rsp+0x1c] | |
5619649cfd9d mov eax, [rsp+0x18] | |
5619649cfda1 cmp dword [rdi+0x1c], +0x01 | |
5619649cfda5 jnz 0x5619649c001c ->3 | |
5619649cfdab mov r15d, [rdi+0x14] | |
5619649cfdaf mov rdi, 0xfffffffb405825d0 | |
5619649cfdb9 cmp rdi, [r15+0x20] | |
5619649cfdbd jnz 0x5619649c001c ->3 | |
5619649cfdc3 cmp dword [r15+0x1c], -0x09 | |
5619649cfdc8 jnz 0x5619649c001c ->3 | |
5619649cfdce cmp dword [r15+0x18], 0x40588018 | |
5619649cfdd6 jnz 0x5619649c001c ->3 | |
5619649cfddc cmp dword [rsi+0x1c], +0x03 | |
5619649cfde0 jnz 0x5619649c001c ->3 | |
5619649cfde6 mov r15d, [rsi+0x14] | |
5619649cfdea mov rdi, 0xfffffffb405880c8 | |
5619649cfdf4 cmp rdi, [r15+0x38] | |
5619649cfdf8 jnz 0x5619649c001c ->3 | |
5619649cfdfe cmp dword [r15+0x34], -0x09 | |
5619649cfe03 jnz 0x5619649c001c ->3 | |
5619649cfe09 cmp dword [r15+0x30], 0x40588d08 | |
5619649cfe11 jnz 0x5619649c001c ->3 | |
5619649cfe17 mov r13d, [rdx+0x18] | |
5619649cfe1b cmp ecx, r13d | |
5619649cfe1e jnb 0x5619649c001c ->3 | |
5619649cfe24 mov r15d, [rdx+0x8] | |
5619649cfe28 cmp dword [r15+rcx*8+0x4], -0x0c | |
5619649cfe2e jnz 0x5619649c001c ->3 | |
5619649cfe34 mov r14d, [r15+rcx*8] | |
5619649cfe38 cmp eax, r13d | |
5619649cfe3b jnb 0x5619649c001c ->3 | |
5619649cfe41 cmp dword [r15+rax*8+0x4], -0x0c | |
5619649cfe47 jnz 0x5619649c001c ->3 | |
5619649cfe4d mov r15d, [r15+rax*8] | |
5619649cfe51 mov r13d, [0x40588d38] | |
5619649cfe59 sub r13d, [0x405804b4] | |
5619649cfe61 cmp r13d, 0x88 | |
5619649cfe68 jbe 0x5619649c001c ->3 | |
5619649cfe6e mov r13d, [r14+0x10] | |
5619649cfe72 test r13d, r13d | |
5619649cfe75 jz 0x5619649c001c ->3 | |
5619649cfe7b cmp dword [r13+0x1c], +0x01 | |
5619649cfe80 jnz 0x5619649c001c ->3 | |
5619649cfe86 mov r13d, [r13+0x14] | |
5619649cfe8a mov rdi, 0xfffffffb405825d0 | |
5619649cfe94 cmp rdi, [r13+0x20] | |
5619649cfe98 jnz 0x5619649c001c ->3 | |
5619649cfe9e cmp dword [r13+0x1c], -0x09 | |
5619649cfea3 jnz 0x5619649c001c ->3 | |
5619649cfea9 cmp dword [r13+0x18], 0x40588018 | |
5619649cfeb1 jnz 0x5619649c001c ->3 | |
5619649cfeb7 cmp dword [r14+0x1c], +0x03 | |
5619649cfebc jnz 0x5619649c001c ->3 | |
5619649cfec2 mov r14d, [r14+0x14] | |
5619649cfec6 mov rdi, 0xfffffffb405880c8 | |
5619649cfed0 cmp rdi, [r14+0x38] | |
5619649cfed4 jnz 0x5619649c001c ->3 | |
5619649cfeda cmp dword [r14+0x34], -0x09 | |
5619649cfedf jnz 0x5619649c001c ->3 | |
5619649cfee5 cmp dword [r14+0x30], 0x40583040 | |
5619649cfeed jnz 0x5619649c001c ->3 | |
5619649cfef3 mov r14d, ebp | |
5619649cfef6 add ebp, +0x01 | |
5619649cfef9 cmp ebp, [r15+0x18] | |
5619649cfefd jnb 0x5619649c001c ->3 | |
5619649cff03 mov r15d, [r15+0x8] | |
5619649cff07 cmp dword [r15+rbp*8+0x4], -0x05 | |
5619649cff0d jnz 0x5619649c001c ->3 | |
5619649cff13 mov r15d, [r15+rbp*8] | |
5619649cff17 cmp dword [r12+0x1c], +0x3f | |
5619649cff1d jnz 0x5619649c0024 ->5 | |
5619649cff23 mov r14d, [r12+0x14] | |
5619649cff28 mov rdi, 0xfffffffb40582eb0 | |
5619649cff32 cmp rdi, [r14+0x470] | |
5619649cff39 jnz 0x5619649c0024 ->5 | |
5619649cff3f cmp dword [r14+0x46c], -0x0c | |
5619649cff47 jnz 0x5619649c0024 ->5 | |
5619649cff4d mov r14d, [r14+0x468] | |
5619649cff54 cmp dword [r14+0x1c], +0x0f | |
5619649cff59 jnz 0x5619649c0024 ->5 | |
5619649cff5f mov r14d, [r14+0x14] | |
5619649cff63 mov rdi, 0xfffffffb405846d8 | |
5619649cff6d cmp rdi, [r14+0x170] | |
5619649cff74 jnz 0x5619649c0024 ->5 | |
5619649cff7a cmp dword [r14+0x16c], -0x09 | |
5619649cff82 jnz 0x5619649c0024 ->5 | |
5619649cff88 cmp dword [r14+0x168], 0x405846b0 | |
5619649cff93 jnz 0x5619649c0024 ->5 | |
5619649cff99 mov edi, ebx | |
5619649cff9b call 0x56193a8f2ffd ->lj_tab_len | |
5619649cffa0 mov edi, [0x405804b0] | |
5619649cffa7 add eax, +0x01 | |
5619649cffaa cmp eax, [rbx+0x18] | |
5619649cffad jb 0x5619649c0024 ->5 | |
5619649cffb3 cmp dword [rbx+0x1c], +0x00 | |
5619649cffb7 jnz 0x5619649c0024 ->5 | |
5619649cffbd xorps xmm7, xmm7 | |
5619649cffc0 cvtsi2sd xmm7, eax | |
5619649cffc4 movsd [rsp+0x8], xmm7 | |
5619649cffca lea rdx, [rsp+0x8] | |
5619649cffcf mov esi, ebx | |
5619649cffd1 call 0x56193a8f237a ->lj_tab_newkey | |
5619649cffd6 mov dword [rax+0x4], 0xfffffffb | |
5619649cffdd mov [rax], r15d | |
5619649cffe0 test byte [rbx+0x4], 0x4 | |
5619649cffe4 jz 0x5619649cfffb | |
5619649cffe6 and byte [rbx+0x4], 0xfb | |
5619649cffea mov edi, [0x405803f4] | |
5619649cfff1 mov [0x405803f4], ebx | |
5619649cfff8 mov [rbx+0xc], edi | |
5619649cfffb jmp 0x5619649cfd8d ->LOOP | |
---- TRACE 1 stop -> loop | |
---- TRACE 1 exit 0 | |
0000000040597b30 00000000405891c8 0000000040597b60 000000004058af48 | |
00007ffd806e8a30 0000000000000004 000000004058fb18 fffffffb405880c8 | |
ffffffffffffffe0 0000000000000400 0000000000000062 0000000040580fe0 | |
000056193a8b7610 00007ffd806e8d60 0000000040580fe0 0000000040589760 | |
+3 +3 +4.6771394612996e-310 +4.6771394613158e-310 | |
+4.6771394610345e-310 +4.6771394613277e-310 +4.6771394613193e-310 +3 | |
+4.6771394612882e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 2 start 4252.lua:5 | |
0001 TGETS 3 0 0 ; "gen" | |
0002 MOV 4 1 | |
0003 MOV 5 2 | |
0004 CALLT 3 3 | |
0000 FUNCC ; ipairs_aux | |
---- TRACE 2 IR | |
.... SNAP #0 [ ---- ---- ---- ---- ] | |
0001 > tab SLOAD #1 T | |
0002 int FLOAD 0001 tab.hmask | |
0003 > int EQ 0002 +3 | |
0004 p32 FLOAD 0001 tab.node | |
0005 > p32 HREFK 0004 "gen" @2 | |
0006 > fun HLOAD 0005 | |
0007 > tab SLOAD #2 T | |
0008 > num SLOAD #3 T | |
0009 > fun EQ 0006 ipairs_aux | |
0010 int CONV 0008 int.num | |
0011 int ADD 0010 +1 | |
0012 int FLOAD 0007 tab.asize | |
0013 > int ABC 0012 0011 | |
0014 p32 FLOAD 0007 tab.array | |
0015 p32 AREF 0014 0011 | |
0016 > nil ALOAD 0015 | |
---- TRACE 2 abort 4252.lua:29 -- leaving loop in root trace | |
---- TRACE 1 exit 5 | |
0000000000000006 0000000000000004 0000000000000028 000000004058fac0 | |
00007ffd806e8a30 0000000000000003 000000004058fb18 0000000040580378 | |
ffffffffffffffe0 000056193a8eb3e6 00007f06089d91d0 0000000040580fe0 | |
00000000405819d8 0000000040587fe0 00000000405842a8 0000000040588888 | |
+5 nan +4.6771394612996e-310 +4.6771394613158e-310 | |
+4.6771394610345e-310 +4.6771394613277e-310 +4.6771394613193e-310 +5 | |
+4.6771394612882e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 1 exit 0 | |
0000000040597b30 000000004058ef28 0000000040597b60 000000004058cdd8 | |
00007ffd806e8a30 0000000000000004 000000004058fb18 fffffffb405880c8 | |
00007f06087efb00 000000000000808b 00007f06089d91d0 0000000040580fe0 | |
000056193a8b7610 00007ffd806e8d60 0000000040580fe0 0000000040589760 | |
+3 +6 +1 +4.5035996273705e+15 | |
+4 +16 +4.6771394613193e-310 +6 | |
+4.6771394612882e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 2 start 4252.lua:34 | |
0009 MULNV 5 4 0 ; 3 | |
0010 SUBVN 5 5 1 ; 2 | |
0011 MULNV 6 4 0 ; 3 | |
0012 SUBVN 6 6 2 ; 1 | |
0013 MULNV 7 4 0 ; 3 | |
0014 UGET 8 0 ; wrap | |
0015 GGET 9 2 ; "ipairs" | |
0016 GGET 10 0 ; "select" | |
0017 MOV 11 4 | |
0018 VARG 12 0 0 | |
---- TRACE 2 IR | |
.... SNAP #0 [ ---- ] | |
0001 > int SLOAD #3 CRI | |
0002 > int LE 0001 +2147483646 | |
0003 int SLOAD #2 CI | |
0004 num CONV 0003 num.int | |
0005 num MUL 0004 +3 | |
0006 num SUB 0005 +2 | |
0007 num SUB 0005 +1 | |
0008 fun SLOAD #0 R | |
0009 > fun EQ 0008 4252.lua:32 | |
0010 tab FLOAD 4252.lua:32 func.env | |
0011 int FLOAD 0010 tab.hmask | |
0012 > int EQ 0011 +63 | |
0013 p32 FLOAD 0010 tab.node | |
0014 > p32 HREFK 0013 "ipairs" @18 | |
0015 > fun HLOAD 0014 | |
0016 > p32 HREFK 0013 "select" @58 | |
0017 > fun HLOAD 0016 | |
0018 int SLOAD #0 FR | |
---- TRACE 2 abort 4252.lua:36 -- NYI: bytecode 71 | |
---- TRACE 2 start 4252.lua:8 | |
0001 GGET 3 0 ; "setmetatable" | |
0002 TDUP 4 1 | |
0003 TSETS 0 4 2 ; "gen" | |
0004 TSETS 1 4 3 ; "param" | |
0005 TSETS 2 4 4 ; "state" | |
0006 UGET 5 0 ; iterator_mt | |
0007 CALL 3 2 3 | |
0000 . FUNCC ; setmetatable | |
0008 MOV 4 1 | |
0009 MOV 5 2 | |
0010 RET 3 4 | |
---- TRACE 2 IR | |
.... SNAP #0 [ ---- ---- ---- ---- ] | |
0001 r15 fun SLOAD #0 R | |
0002 rbp tab FLOAD 0001 func.env | |
0003 int FLOAD 0002 tab.hmask | |
0004 > int EQ 0003 +63 | |
0005 rbp p32 FLOAD 0002 tab.node | |
0006 > p32 HREFK 0005 "setmetatable" @63 | |
0007 r14 > fun HLOAD 0006 | |
0008 rax > tab TDUP {0x40588168} | |
0009 rbp > fun SLOAD #1 T | |
0010 r13 p32 FLOAD 0008 tab.node | |
0011 p32 HREFK 0010 "gen" @2 | |
0012 fun HSTORE 0011 0009 | |
.... SNAP #1 [ ---- ---- ---- ---- 0007 0008 ] | |
0013 rbp > tab SLOAD #2 T | |
0014 p32 HREFK 0010 "param" @3 | |
0015 tab HSTORE 0014 0013 | |
.... SNAP #2 [ ---- ---- ---- ---- 0007 0008 ] | |
0016 rbx > tab SLOAD #3 T | |
0017 p32 HREFK 0010 "state" @0 | |
0018 tab HSTORE 0017 0016 | |
.... SNAP #3 [ ---- ---- ---- ---- 0007 0008 ] | |
0019 r15 > p32 UREFO 0001 #0 | |
0020 r13 p32 SUB 0019 0000 | |
0021 > p32 UGT 0020 +48 | |
0022 r15 > tab ULOAD 0019 | |
0023 > fun EQ 0007 setmetatable | |
0024 p32 FREF 0008 tab.meta | |
0025 tab FSTORE 0024 0022 | |
.... SNAP #4 [ ---- ---- ---- ---- 0008 0013 0016 ] | |
---- TRACE 2 mcode 326 | |
5619649cf91b mov dword [0x40580410], 0x2 | |
5619649cf926 mov edi, [0x405803d8] | |
5619649cf92d cmp edi, [0x405803dc] | |
5619649cf934 jb 0x5619649cf94d | |
5619649cf936 mov esi, 0x1 | |
5619649cf93b mov edi, 0x405803b8 | |
5619649cf940 call 0x56193a8ef47e ->lj_gc_step_jit | |
5619649cf945 test eax, eax | |
5619649cf947 jnz 0x5619649c0010 ->0 | |
5619649cf94d mov edi, [0x405804b0] | |
5619649cf954 mov edx, [0x405804b4] | |
5619649cf95b mov r15d, [rdx-0x8] | |
5619649cf95f mov ebp, [r15+0x8] | |
5619649cf963 cmp dword [rbp+0x1c], +0x3f | |
5619649cf967 jnz 0x5619649c0010 ->0 | |
5619649cf96d mov ebp, [rbp+0x14] | |
5619649cf970 mov rsi, 0xfffffffb40583130 | |
5619649cf97a cmp rsi, [rbp+0x5f0] | |
5619649cf981 jnz 0x5619649c0010 ->0 | |
5619649cf987 cmp dword [rbp+0x5ec], -0x09 | |
5619649cf98e jnz 0x5619649c0010 ->0 | |
5619649cf994 mov r14d, [rbp+0x5e8] | |
5619649cf99b mov esi, 0x40588168 | |
5619649cf9a0 call 0x56193a8f0faf ->lj_tab_dup | |
5619649cf9a5 mov edx, [0x405804b4] | |
5619649cf9ac cmp dword [rdx+0x4], -0x09 | |
5619649cf9b0 jnz 0x5619649c0010 ->0 | |
5619649cf9b6 mov ebp, [rdx] | |
5619649cf9b8 mov r13d, [rax+0x14] | |
5619649cf9bc mov dword [r13+0x34], 0xfffffff7 | |
5619649cf9c4 mov [r13+0x30], ebp | |
5619649cf9c8 cmp dword [rdx+0xc], -0x0c | |
5619649cf9cc jnz 0x5619649c0014 ->1 | |
5619649cf9d2 mov ebp, [rdx+0x8] | |
5619649cf9d5 mov dword [r13+0x4c], 0xfffffff4 | |
5619649cf9dd mov [r13+0x48], ebp | |
5619649cf9e1 cmp dword [rdx+0x14], -0x0c | |
5619649cf9e5 jnz 0x5619649c0018 ->2 | |
5619649cf9eb mov ebx, [rdx+0x10] | |
5619649cf9ee mov dword [r13+0x4], 0xfffffff4 | |
5619649cf9f6 mov [r13+0x0], ebx | |
5619649cf9fa mov edi, [r15+0x14] | |
5619649cf9fe mov r15d, [rdi+0x10] | |
5619649cfa02 mov r13d, r15d | |
5619649cfa05 sub r13d, edx | |
5619649cfa08 cmp r13d, +0x30 | |
5619649cfa0c jbe 0x5619649c001c ->3 | |
5619649cfa12 cmp dword [r15+0x4], -0x0c | |
5619649cfa17 jnz 0x5619649c001c ->3 | |
5619649cfa1d mov r15d, [r15] | |
5619649cfa20 cmp r14d, 0x40583108 | |
5619649cfa27 jnz 0x5619649c001c ->3 | |
5619649cfa2d mov [rax+0x10], r15d | |
5619649cfa31 mov dword [rdx+0x2c], 0xfffffff4 | |
5619649cfa38 mov [rdx+0x28], ebx | |
5619649cfa3b mov dword [rdx+0x24], 0xfffffff4 | |
5619649cfa42 mov [rdx+0x20], ebp | |
5619649cfa45 mov dword [rdx+0x1c], 0xfffffff4 | |
5619649cfa4c mov [rdx+0x18], eax | |
5619649cfa4f xor eax, eax | |
5619649cfa51 mov ebx, 0x40588640 | |
5619649cfa56 mov r14d, 0x40580fe0 | |
5619649cfa5c jmp 0x56193a8ecc29 | |
---- TRACE 2 stop -> return | |
---- TRACE 1 exit 5 | |
0000000000000002 0000000000000001 0000000000000008 0000000040cfea00 | |
00007ffd806e8a30 0000000000000002 0000000040cf91b0 0000000040580378 | |
ffffffffffffffe0 0000000040cf97e0 00007f06089d91d0 0000000040580fe0 | |
00000000405819d8 0000000040587fe0 00000000405842a8 0000000040588780 | |
+1 +3 +4.6771394612996e-310 +4.6771394613158e-310 | |
+4.6771394610345e-310 +4.6771394613277e-310 +4.6771394613193e-310 +1 | |
+4.6771394612882e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 1 exit 3 | |
0000000000000002 0000000000000001 000000004020fa18 0000000040cfea00 | |
00007ffd806e8a30 0000000000000004 0000000040cf91b0 fffffffb405880c8 | |
00007f06087efb00 000000000000808b 00007f06089d91d0 0000000040580fe0 | |
00000000405819d8 0000000040587fe0 0000000000000003 000000004020f998 | |
+3 nan +1 +4.5035996273705e+15 | |
+4 +16 +4.6771394613193e-310 +3 | |
+4.6771394612882e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 3 start 4252.lua:26 | |
0001 TGETB 2 1 1 | |
0002 TGETB 3 1 2 | |
0003 MULNV 4 2 0 ; 3 | |
0004 SUBVN 4 4 1 ; 2 | |
0005 TGETV 4 0 4 | |
0006 MULNV 5 2 0 ; 3 | |
0007 SUBVN 5 5 2 ; 1 | |
0008 TGETV 5 0 5 | |
0009 UGET 6 0 ; chain_gen_r2 | |
0010 MOV 7 0 | |
0011 MOV 8 1 | |
0012 MOV 9 4 | |
0013 MOV 10 5 | |
0014 MOV 11 3 | |
0015 CALL 9 0 3 | |
0000 . FUNCF 6 ; 4252.lua:5 | |
0001 . TGETS 3 0 0 ; "gen" | |
0002 . MOV 4 1 | |
0003 . MOV 5 2 | |
0004 . CALLT 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0016 CALLMT 6 2 | |
0000 FUNCV 8 ; 4252.lua:19 | |
0001 . ISEQP 2 0 | |
0002 . JMP 3 => 0009 | |
0009 . TGETB 3 1 1 | |
0010 . ADDVN 3 3 0 ; 1 | |
0011 . MULNV 4 3 1 ; 3 | |
0012 . SUBVN 4 4 0 ; 1 | |
0013 . TGETV 4 0 4 | |
0014 . ISNEP 4 0 | |
0015 . JMP 4 => 0018 | |
0018 . UGET 4 0 ; chain_gen_r1 | |
0019 . MOV 5 0 | |
0020 . TNEW 6 3 | |
0021 . TSETB 3 6 1 | |
0022 . MULNV 7 3 1 ; 3 | |
0023 . TGETV 7 0 7 | |
0024 . TSETB 7 6 2 | |
0025 . CALLT 4 3 | |
0000 FUNCF 12 ; 4252.lua:26 | |
---- TRACE 3 IR | |
.... SNAP #0 [ ---- ---- ---- ] | |
0001 rax > tab SLOAD #2 T | |
0002 int FLOAD 0001 tab.asize | |
0003 > int ABC 0002 +2 | |
0004 rax p32 FLOAD 0001 tab.array | |
0005 p32 AREF 0004 +1 | |
0006 xmm6 > num ALOAD 0005 | |
0007 p32 AREF 0004 +2 | |
0008 xmm8 > num ALOAD 0007 | |
0009 xmm9 num MUL 0006 +3 | |
0011 rax > tab SLOAD #1 T | |
0012 rbx > int CONV 0009 int.num | |
0013 rcx int ADD 0012 -2 | |
0014 rsi int FLOAD 0011 tab.asize | |
0015 > int ABC 0014 0013 | |
0016 rdx p32 FLOAD 0011 tab.array | |
0017 p32 AREF 0016 0013 | |
0018 rcx > tab ALOAD 0017 | |
0020 rbx int ADD 0012 -1 | |
0021 > int ABC 0014 0020 | |
0022 p32 AREF 0016 0020 | |
0023 rbx > tab ALOAD 0022 | |
0024 rbp fun SLOAD #0 R | |
0025 r11 > p32 UREFO 0024 #0 | |
0026 rbp p32 SUB 0025 0000 | |
0027 > p32 UGT 0026 +56 | |
0028 > fun ULOAD 0025 | |
0029 rbp tab FLOAD 0018 tab.meta | |
0030 > tab NE 0029 NULL | |
0031 int FLOAD 0029 tab.hmask | |
0032 > int EQ 0031 +1 | |
0033 rbp p32 FLOAD 0029 tab.node | |
0034 > p32 HREFK 0033 "__call" @1 | |
0035 > fun HLOAD 0034 | |
0036 > fun EQ 0035 4252.lua:5 | |
0037 int FLOAD 0018 tab.hmask | |
0038 > int EQ 0037 +3 | |
0039 rcx p32 FLOAD 0018 tab.node | |
0040 > p32 HREFK 0039 "gen" @2 | |
0041 > fun HLOAD 0040 | |
0042 > fun EQ 0041 ipairs_aux | |
0043 rcx int CONV 0008 int.num | |
0044 rcx int ADD 0043 +1 | |
0045 int FLOAD 0023 tab.asize | |
0046 > int ABC 0045 0044 | |
0047 r12 p32 FLOAD 0023 tab.array | |
0048 p32 AREF 0047 0044 | |
0049 > nil ALOAD 0048 | |
0050 > fun EQ 0028 4252.lua:19 | |
0051 xmm6 + num ADD 0006 +1 | |
0052 xmm2 num MUL 0051 +3 | |
0054 rbx >+ int CONV 0052 int.num | |
0055 r10 int ADD 0054 -1 | |
0056 > int ABC 0014 0055 | |
0057 p32 AREF 0016 0055 | |
0058 rbp >+ tab ALOAD 0057 | |
.... SNAP #1 [ 4252.lua:19|nil nil 4252.lua:19|0011 ---- ---- 0051 ] | |
0059 r8 > p32 UREFO 4252.lua:19 #0 | |
0060 r9 p32 SUB 0059 0000 | |
0061 > p32 UGT 0060 +64 | |
0062 rcx > fun ULOAD 0059 | |
0063 {sink}+ tab TNEW #3 #0 | |
0064 p32 FLOAD 0063 tab.array | |
0065 p32 AREF 0064 +1 | |
0066 {0063} num ASTORE 0065 0051 | |
.... SNAP #2 [ 4252.lua:19|nil nil 4252.lua:19|0011 ---- ---- 0051 0062 0011 0063 ] | |
0067 > int ABC 0014 0054 | |
0068 p32 AREF 0016 0054 | |
0069 xmm7 >+ num ALOAD 0068 | |
0070 p32 AREF 0064 +2 | |
0071 {0063} num ASTORE 0070 0069 | |
.... SNAP #3 [ 4252.lua:19|nil nil 4252.lua:19|---- ---- ---- ---- 0062 0011 0063 ---- ] | |
0072 > fun EQ 0062 4252.lua:26 | |
.... SNAP #4 [ 4252.lua:26|---- 0063 ] | |
0073 ------------ LOOP ------------ | |
0074 rbp int ADD 0054 -2 | |
0075 > int ABC 0014 0074 | |
0076 p32 AREF 0016 0074 | |
0077 r15 > tab ALOAD 0076 | |
0078 rbp > p32 UREFO 4252.lua:26 #0 | |
0079 r14 p32 SUB 0078 0000 | |
0080 > p32 UGT 0079 +56 | |
0081 > fun ULOAD 0078 | |
0082 r14 tab FLOAD 0077 tab.meta | |
0083 > tab NE 0082 NULL | |
0084 int FLOAD 0082 tab.hmask | |
0085 > int EQ 0084 +1 | |
0086 r14 p32 FLOAD 0082 tab.node | |
0087 > p32 HREFK 0086 "__call" @1 | |
0088 > fun HLOAD 0087 | |
0089 > fun EQ 0088 4252.lua:5 | |
0090 int FLOAD 0077 tab.hmask | |
0091 > int EQ 0090 +3 | |
0092 r15 p32 FLOAD 0077 tab.node | |
0093 > p32 HREFK 0092 "gen" @2 | |
0094 > fun HLOAD 0093 | |
0095 > fun EQ 0094 ipairs_aux | |
0096 r15 int CONV 0069 int.num | |
0097 r15 int ADD 0096 +1 | |
0098 int FLOAD 0058 tab.asize | |
0099 > int ABC 0098 0097 | |
0100 rbx p32 FLOAD 0058 tab.array | |
0101 p32 AREF 0100 0097 | |
0102 > nil ALOAD 0101 | |
0103 > fun EQ 0081 4252.lua:19 | |
0104 xmm6 + num ADD 0051 +1 | |
0105 xmm4 num MUL 0104 +3 | |
0106 rbx >+ int CONV 0105 int.num | |
0107 rbp int ADD 0106 -1 | |
0108 > int ABC 0014 0107 | |
0109 p32 AREF 0016 0107 | |
0110 rbp >+ tab ALOAD 0109 | |
.... SNAP #5 [ 4252.lua:19|nil nil 4252.lua:19|0011 ---- ---- 0104 ] | |
0111 r15 > p32 UREFO 4252.lua:19 #0 | |
0112 r15 p32 SUB 0111 0000 | |
0113 > p32 UGT 0112 +64 | |
0114 {sink}+ tab TNEW #3 #0 | |
0115 p32 FLOAD 0114 tab.array | |
0116 p32 AREF 0115 +1 | |
0117 {0114} num ASTORE 0116 0104 | |
.... SNAP #6 [ 4252.lua:19|nil nil 4252.lua:19|0011 ---- ---- 0104 0062 0011 0114 ] | |
0118 > int ABC 0014 0106 | |
0119 p32 AREF 0016 0106 | |
0120 xmm7 >+ num ALOAD 0119 | |
0121 p32 AREF 0115 +2 | |
0122 {0114} num ASTORE 0121 0120 | |
0123 {sink} tab PHI 0063 0114 | |
0124 xmm6 num PHI 0051 0104 | |
0125 xmm7 num PHI 0069 0120 | |
0126 rbx int PHI 0054 0106 | |
0127 rbp tab PHI 0058 0110 | |
0128 xmm5 nil RENAME 0051 #4 | |
0129 rbp nil RENAME 0054 #4 | |
0130 rbx nil RENAME 0058 #4 | |
0131 r15 nil RENAME 0054 #4 | |
---- TRACE 3 mcode 914 | |
5619649cf589 mov dword [0x40580410], 0x3 | |
5619649cf594 mov edi, edx | |
5619649cf596 movsd xmm1, [0x40d00bc8] | |
5619649cf59f movsd xmm0, [0x40d00bf0] | |
5619649cf5a8 cmp dword [rdi+0xc], -0x0c | |
5619649cf5ac jnz 0x5619649c0010 ->0 | |
5619649cf5b2 mov eax, [rdi+0x8] | |
5619649cf5b5 cmp dword [rax+0x18], +0x02 | |
5619649cf5b9 jbe 0x5619649c0010 ->0 | |
5619649cf5bf mov eax, [rax+0x8] | |
5619649cf5c2 cmp dword [rax+0xc], 0xfffeffff | |
5619649cf5c9 jnb 0x5619649c0010 ->0 | |
5619649cf5cf movsd xmm6, [rax+0x8] | |
5619649cf5d4 cmp dword [rax+0x14], 0xfffeffff | |
5619649cf5db jnb 0x5619649c0010 ->0 | |
5619649cf5e1 movsd xmm8, [rax+0x10] | |
5619649cf5e7 movaps xmm9, xmm6 | |
5619649cf5eb mulsd xmm9, xmm0 | |
5619649cf5f0 cmp dword [rdi+0x4], -0x0c | |
5619649cf5f4 jnz 0x5619649c0010 ->0 | |
5619649cf5fa mov eax, [rdi] | |
5619649cf5fc cvttsd2si ebx, xmm9 | |
5619649cf601 xorps xmm7, xmm7 | |
5619649cf604 cvtsi2sd xmm7, ebx | |
5619649cf608 ucomisd xmm9, xmm7 | |
5619649cf60d jnz 0x5619649c0010 ->0 | |
5619649cf613 jpe 0x5619649c0010 ->0 | |
5619649cf619 lea ecx, [rbx-0x2] | |
5619649cf61c mov esi, [rax+0x18] | |
5619649cf61f cmp ecx, esi | |
5619649cf621 jnb 0x5619649c0010 ->0 | |
5619649cf627 mov edx, [rax+0x8] | |
5619649cf62a cmp dword [rdx+rcx*8+0x4], -0x0c | |
5619649cf62f jnz 0x5619649c0010 ->0 | |
5619649cf635 mov ecx, [rdx+rcx*8] | |
5619649cf638 add ebx, -0x01 | |
5619649cf63b cmp ebx, esi | |
5619649cf63d jnb 0x5619649c0010 ->0 | |
5619649cf643 cmp dword [rdx+rbx*8+0x4], -0x0c | |
5619649cf648 jnz 0x5619649c0010 ->0 | |
5619649cf64e mov ebx, [rdx+rbx*8] | |
5619649cf651 mov ebp, [rdi-0x8] | |
5619649cf654 mov ebp, [rbp+0x14] | |
5619649cf657 mov r11d, [rbp+0x10] | |
5619649cf65b mov ebp, r11d | |
5619649cf65e sub ebp, edi | |
5619649cf660 cmp ebp, +0x38 | |
5619649cf663 jbe 0x5619649c0010 ->0 | |
5619649cf669 cmp dword [r11+0x4], -0x09 | |
5619649cf66e jnz 0x5619649c0010 ->0 | |
5619649cf674 mov ebp, [rcx+0x10] | |
5619649cf677 test ebp, ebp | |
5619649cf679 jz 0x5619649c0010 ->0 | |
5619649cf67f cmp dword [rbp+0x1c], +0x01 | |
5619649cf683 jnz 0x5619649c0010 ->0 | |
5619649cf689 mov ebp, [rbp+0x14] | |
5619649cf68c mov r15, 0xfffffffb405825d0 | |
5619649cf696 cmp r15, [rbp+0x20] | |
5619649cf69a jnz 0x5619649c0010 ->0 | |
5619649cf6a0 cmp dword [rbp+0x1c], -0x09 | |
5619649cf6a4 jnz 0x5619649c0010 ->0 | |
5619649cf6aa cmp dword [rbp+0x18], 0x40588018 | |
5619649cf6b1 jnz 0x5619649c0010 ->0 | |
5619649cf6b7 cmp dword [rcx+0x1c], +0x03 | |
5619649cf6bb jnz 0x5619649c0010 ->0 | |
5619649cf6c1 mov ecx, [rcx+0x14] | |
5619649cf6c4 mov rbp, 0xfffffffb405880c8 | |
5619649cf6ce cmp rbp, [rcx+0x38] | |
5619649cf6d2 jnz 0x5619649c0010 ->0 | |
5619649cf6d8 cmp dword [rcx+0x34], -0x09 | |
5619649cf6dc jnz 0x5619649c0010 ->0 | |
5619649cf6e2 cmp dword [rcx+0x30], 0x40583040 | |
5619649cf6e9 jnz 0x5619649c0010 ->0 | |
5619649cf6ef cvttsd2si ecx, xmm8 | |
5619649cf6f4 add ecx, +0x01 | |
5619649cf6f7 cmp ecx, [rbx+0x18] | |
5619649cf6fa jnb 0x5619649c0010 ->0 | |
5619649cf700 mov r12d, [rbx+0x8] | |
5619649cf704 cmp dword [r12+rcx*8+0x4], -0x01 | |
5619649cf70a jnz 0x5619649c0010 ->0 | |
5619649cf710 cmp dword [r11], 0x40588cc8 | |
5619649cf717 jnz 0x5619649c0010 ->0 | |
5619649cf71d addsd xmm6, xmm1 | |
5619649cf721 movaps xmm2, xmm6 | |
5619649cf724 mulsd xmm2, xmm0 | |
5619649cf728 cvttsd2si ebx, xmm2 | |
5619649cf72c xorps xmm7, xmm7 | |
5619649cf72f cvtsi2sd xmm7, ebx | |
5619649cf733 ucomisd xmm2, xmm7 | |
5619649cf737 jnz 0x5619649c0010 ->0 | |
5619649cf73d jpe 0x5619649c0010 ->0 | |
5619649cf743 lea r10d, [rbx-0x1] | |
5619649cf747 cmp r10d, esi | |
5619649cf74a jnb 0x5619649c0010 ->0 | |
5619649cf750 cmp dword [rdx+r10*8+0x4], -0x0c | |
5619649cf756 jnz 0x5619649c0010 ->0 | |
5619649cf75c mov ebp, [rdx+r10*8] | |
5619649cf760 mov r8d, [0x40588cf8] | |
5619649cf768 mov r9d, r8d | |
5619649cf76b sub r9d, edi | |
5619649cf76e cmp r9d, +0x40 | |
5619649cf772 jbe 0x5619649c0014 ->1 | |
5619649cf778 cmp dword [r8+0x4], -0x09 | |
5619649cf77d jnz 0x5619649c0014 ->1 | |
5619649cf783 mov ecx, [r8] | |
5619649cf786 cmp ebx, esi | |
5619649cf788 jnb 0x5619649c0018 ->2 | |
5619649cf78e cmp dword [rdx+rbx*8+0x4], 0xfffeffff | |
5619649cf796 jnb 0x5619649c0018 ->2 | |
5619649cf79c movsd xmm7, [rdx+rbx*8] | |
5619649cf7a1 cmp ecx, 0x40588d08 | |
5619649cf7a7 jnz 0x5619649c001c ->3 | |
->LOOP: | |
5619649cf7ad mov r15d, ebx | |
5619649cf7b0 mov ebx, ebp | |
5619649cf7b2 mov ebp, r15d | |
5619649cf7b5 add ebp, -0x02 | |
5619649cf7b8 cmp ebp, esi | |
5619649cf7ba jnb 0x5619649c0020 ->4 | |
5619649cf7c0 cmp dword [rdx+rbp*8+0x4], -0x0c | |
5619649cf7c5 jnz 0x5619649c0020 ->4 | |
5619649cf7cb mov r15d, [rdx+rbp*8] | |
5619649cf7cf mov ebp, [0x40588d38] | |
5619649cf7d6 mov r14d, ebp | |
5619649cf7d9 sub r14d, edi | |
5619649cf7dc cmp r14d, +0x38 | |
5619649cf7e0 jbe 0x5619649c0020 ->4 | |
5619649cf7e6 cmp dword [rbp+0x4], -0x09 | |
5619649cf7ea jnz 0x5619649c0020 ->4 | |
5619649cf7f0 mov r14d, [r15+0x10] | |
5619649cf7f4 test r14d, r14d | |
5619649cf7f7 jz 0x5619649c0020 ->4 | |
5619649cf7fd cmp dword [r14+0x1c], +0x01 | |
5619649cf802 jnz 0x5619649c0020 ->4 | |
5619649cf808 mov r14d, [r14+0x14] | |
5619649cf80c mov r13, 0xfffffffb405825d0 | |
5619649cf816 cmp r13, [r14+0x20] | |
5619649cf81a jnz 0x5619649c0020 ->4 | |
5619649cf820 cmp dword [r14+0x1c], -0x09 | |
5619649cf825 jnz 0x5619649c0020 ->4 | |
5619649cf82b cmp dword [r14+0x18], 0x40588018 | |
5619649cf833 jnz 0x5619649c0020 ->4 | |
5619649cf839 cmp dword [r15+0x1c], +0x03 | |
5619649cf83e jnz 0x5619649c0020 ->4 | |
5619649cf844 mov r15d, [r15+0x14] | |
5619649cf848 mov r14, 0xfffffffb405880c8 | |
5619649cf852 cmp r14, [r15+0x38] | |
5619649cf856 jnz 0x5619649c0020 ->4 | |
5619649cf85c cmp dword [r15+0x34], -0x09 | |
5619649cf861 jnz 0x5619649c0020 ->4 | |
5619649cf867 cmp dword [r15+0x30], 0x40583040 | |
5619649cf86f jnz 0x5619649c0020 ->4 | |
5619649cf875 cvttsd2si r15d, xmm7 | |
5619649cf87a add r15d, +0x01 | |
5619649cf87e cmp r15d, [rbx+0x18] | |
5619649cf882 jnb 0x5619649c0020 ->4 | |
5619649cf888 mov ebx, [rbx+0x8] | |
5619649cf88b cmp dword [rbx+r15*8+0x4], -0x01 | |
5619649cf891 jnz 0x5619649c0020 ->4 | |
5619649cf897 cmp dword [rbp+0x0], 0x40588cc8 | |
5619649cf89e jnz 0x5619649c0020 ->4 | |
5619649cf8a4 movaps xmm5, xmm6 | |
5619649cf8a7 addsd xmm6, xmm1 | |
5619649cf8ab movaps xmm4, xmm6 | |
5619649cf8ae mulsd xmm4, xmm0 | |
5619649cf8b2 cvttsd2si ebx, xmm4 | |
5619649cf8b6 xorps xmm3, xmm3 | |
5619649cf8b9 cvtsi2sd xmm3, ebx | |
5619649cf8bd ucomisd xmm4, xmm3 | |
5619649cf8c1 jnz 0x5619649c0020 ->4 | |
5619649cf8c7 jpe 0x5619649c0020 ->4 | |
5619649cf8cd lea ebp, [rbx-0x1] | |
5619649cf8d0 cmp ebp, esi | |
5619649cf8d2 jnb 0x5619649c0020 ->4 | |
5619649cf8d8 cmp dword [rdx+rbp*8+0x4], -0x0c | |
5619649cf8dd jnz 0x5619649c0020 ->4 | |
5619649cf8e3 mov ebp, [rdx+rbp*8] | |
5619649cf8e6 mov r15d, [0x40588cf8] | |
5619649cf8ee sub r15d, edi | |
5619649cf8f1 cmp r15d, +0x40 | |
5619649cf8f5 jbe 0x5619649c0024 ->5 | |
5619649cf8fb cmp ebx, esi | |
5619649cf8fd jnb 0x5619649c0028 ->6 | |
5619649cf903 cmp dword [rdx+rbx*8+0x4], 0xfffeffff | |
5619649cf90b jnb 0x5619649c0028 ->6 | |
5619649cf911 movsd xmm7, [rdx+rbx*8] | |
5619649cf916 jmp 0x5619649cf7ad ->LOOP | |
---- TRACE 3 stop -> tail-recursion | |
---- TRACE 3 exit 0 | |
000000004020fa18 0000000000000001 0000000040cf8e50 000000004020f9c8 | |
00007ffd806e8a60 fffffffb405880c8 0000000000000009 0000000040597bb0 | |
ffffffffffffffe0 0000000000000400 00007f06089d91d0 0000000040597b30 | |
000000004020f9e8 00007ffd806e8d60 0000000040580fe0 fffffffb405825d0 | |
+3 +1 +4.6771394612996e-310 +4.6771394613158e-310 | |
+4.6771394610345e-310 +4.6771394613277e-310 +2 +6 | |
+0 +6 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 1 exit 5 | |
0000000000000006 0000000000000004 0000000000000028 0000000040cfea00 | |
00007ffd806e8a30 0000000000000003 0000000040cf91b0 0000000040580378 | |
00007f06087efb00 0000000000000400 00007f06089d91d0 0000000040597b30 | |
00000000405819d8 0000000040587fe0 00000000405842a8 0000000040588888 | |
+5 nan +1 +4.5035996273705e+15 | |
+4 +16 +2 +5 | |
+0 +6 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 1 exit 0 | |
0000000040597b30 000000004020f9e8 0000000040597b60 0000000040cf8de8 | |
00007ffd806e8a30 0000000000000004 0000000040cf91b0 fffffffb405880c8 | |
00007f06087efb00 000000000000808b 00007f06089d91d0 0000000040597b30 | |
000056193a8b7610 00007ffd806e8d60 0000000040580fe0 0000000040589760 | |
+3 +6 +1 +4.5035996273705e+15 | |
+4 +16 +2 +6 | |
+0 +6 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 3 exit 0 | |
000000004020fa18 0000000000000004 0000000040cf8e50 0000000000000009 | |
00007ffd806e8a60 fffffffb405880c8 0000000000000009 0000000040597bb0 | |
00007f06087efb00 000000000000808b 0000000000000008 0000000040597b30 | |
000000004020f9e8 00007ffd806e8d60 0000000040580fe0 fffffffb405825d0 | |
+3 +1 +9 +4.5035996273705e+15 | |
+4 +16 +3 +9 | |
+3 +6 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 2 exit 2 | |
0000000040cfe4b8 0000000000000068 0000000040597be8 000000004058861c | |
00007ffd806e8a60 000000004152dde0 0000000000000060 0000000040580010 | |
000000000000000a 00007f06087efb80 0000000000000008 0000000000000246 | |
000056193a8b7610 0000000040cff1a0 0000000040583108 0000000040588c88 | |
+0 +2 +1 +4.5035996273705e+15 | |
+4 +16 +3 +9 | |
+3 +6 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 2 exit 2 | |
0000000040d041d0 0000000000000068 0000000040597be8 000000004058861c | |
00007ffd806e8a60 0000000040d040f0 0000000000000060 0000000040580010 | |
00007f06087efb00 0000000000008008 0000000000000008 0000000000000246 | |
000056193a8b7610 0000000040201910 0000000040583108 0000000040588c88 | |
+0 +2 +1 +4.5035996273705e+15 | |
+4 +16 +3 +9 | |
+3 +6 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 1 exit 5 | |
0000000000000002 0000000000000001 0000000000000008 0000000040204338 | |
00007ffd806e8a30 0000000000000002 000000004020fcc0 0000000040580378 | |
00007f06087efb00 0000000000008008 0000000000000008 0000000000000246 | |
00000000405819d8 0000000040587fe0 00000000405842a8 0000000040588780 | |
+1 +3 +1 +4.5035996273705e+15 | |
+4 +16 +3 +1 | |
+3 +6 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 1 exit 3 | |
0000000000000002 0000000000000001 0000000041516890 0000000040204338 | |
00007ffd806e8a30 0000000000000004 000000004020fcc0 fffffffb405880c8 | |
00007f06087efb00 000000000000808b 0000000000000008 0000000000000246 | |
00000000405819d8 0000000040587fe0 0000000000000003 000000004152de00 | |
+3 nan +1 +4.5035996273705e+15 | |
+4 +16 +3 +3 | |
+3 +6 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 3 exit 4 | |
0000000041516890 0000000040588d08 0000000040cfe008 0000000040d04110 | |
00007ffd806e8a60 0000000040597b30 0000000000000009 0000000040597bb0 | |
0000000040597b28 00000000ffffff78 0000000000000005 0000000040597b30 | |
000000004152de00 fffffffb405825d0 fffffffb405880c8 0000000000000001 | |
+3 +1 +6 +4.5035996273705e+15 | |
+4 +16 +2 +0 | |
+3 +3 +0 -1.1429096284595 | |
+0 +0 +0 +0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
---- TRACE 1 start 4252.lua:54 | |
0011 KPRI 8 0 | |
0012 MOV 9 4 | |
0013 MOV 10 5 | |
0014 MOV 11 6 | |
0015 CALL 9 3 3 | |
0000 . FUNCF 6 ; 4252.lua:5 | |
0001 . TGETS 3 0 0 ; "gen" | |
0002 . MOV 4 1 | |
0003 . MOV 5 2 | |
0004 . CALLT 3 3 | |
0000 . FUNCF 12 ; 4252.lua:26 | |
0001 . TGETB 2 1 1 | |
0002 . TGETB 3 1 2 | |
0003 . MULNV 4 2 0 ; 3 | |
0004 . SUBVN 4 4 1 ; 2 | |
0005 . TGETV 4 0 4 | |
0006 . MULNV 5 2 0 ; 3 | |
0007 . SUBVN 5 5 2 ; 1 | |
0008 . TGETV 5 0 5 | |
0009 . UGET 6 0 ; chain_gen_r2 | |
0010 . MOV 7 0 | |
0011 . MOV 8 1 | |
0012 . MOV 9 4 | |
0013 . MOV 10 5 | |
0014 . MOV 11 3 | |
0015 . CALL 9 0 3 | |
0000 . . FUNCF 6 ; 4252.lua:5 | |
0001 . . TGETS 3 0 0 ; "gen" | |
0002 . . MOV 4 1 | |
0003 . . MOV 5 2 | |
0004 . . CALLT 3 3 | |
0000 . . FUNCC ; ipairs_aux | |
0016 . CALLMT 6 2 | |
0000 . FUNCV 8 ; 4252.lua:19 | |
0001 . . ISEQP 2 0 | |
0002 . . JMP 3 => 0009 | |
0003 . . TNEW 3 3 | |
0004 . . TGETB 4 1 1 | |
0005 . . TSETB 4 3 1 | |
0006 . . TSETB 2 3 2 | |
0007 . . VARG 4 0 3 | |
0008 . . RETM 3 1 | |
0016 MOV 8 10 | |
0017 MOV 6 9 | |
0018 ISNEP 6 0 | |
0019 JMP 9 => 0021 | |
0021 GGET 9 2 ; "table" | |
0022 TGETS 9 9 3 ; "insert" | |
0023 MOV 10 7 | |
0024 MOV 11 8 | |
0025 CALL 9 1 3 | |
0000 . FUNCC ; table.insert | |
0026 JMP 8 => 0010 | |
0010 LOOP 8 => 0027 | |
---- TRACE 1 IR | |
.... SNAP #0 [ ---- ---- ---- ---- ---- ---- ---- ---- ---- ] | |
0001 [28] > tab SLOAD #5 T | |
0002 [24] > tab SLOAD #6 T | |
0003 [40] > tab SLOAD #7 T | |
0004 [2c] tab FLOAD 0001 tab.meta | |
0005 > tab NE 0004 NULL | |
0006 int FLOAD 0004 tab.hmask | |
0007 > int EQ 0006 +1 | |
0008 rdx p32 FLOAD 0004 tab.node | |
0009 > p32 HREFK 0008 "__call" @1 | |
0010 > fun HLOAD 0009 | |
0011 > fun EQ 0010 4252.lua:5 | |
0012 int FLOAD 0001 tab.hmask | |
0013 > int EQ 0012 +3 | |
0014 rdx p32 FLOAD 0001 tab.node | |
0015 > p32 HREFK 0014 "gen" @2 | |
0016 > fun HLOAD 0015 | |
0017 > fun EQ 0016 4252.lua:26 | |
0018 int FLOAD 0003 tab.asize | |
0019 > int ABC 0018 +2 | |
0020 rcx p32 FLOAD 0003 tab.array | |
0021 p32 AREF 0020 +1 | |
0022 [18] > num ALOAD 0021 | |
0023 p32 AREF 0020 +2 | |
0024 xmm0 > num ALOAD 0023 | |
0025 xmm1 num MUL 0022 +3 | |
0027 rcx > int CONV 0025 int.num | |
0028 [20] int ADD 0027 -2 | |
0029 rbx int FLOAD 0002 tab.asize | |
0030 > int ABC 0029 0028 | |
0031 rax p32 FLOAD 0002 tab.array | |
0032 p32 AREF 0031 0028 | |
0033 rdx > tab ALOAD 0032 | |
0035 [c] int ADD 0027 -1 | |
0036 > int ABC 0029 0035 | |
0037 p32 AREF 0031 0035 | |
0038 rcx > tab ALOAD 0037 | |
0039 rax > p32 UREFO 4252.lua:26 #0 | |
0040 rbx p32 SUB 0039 0000 | |
0041 > p32 UGT 0040 +136 | |
0042 > fun ULOAD 0039 | |
0043 rbx tab FLOAD 0033 tab.meta | |
0044 > tab NE 0043 NULL | |
0045 int FLOAD 0043 tab.hmask | |
0046 > int EQ 0045 +1 | |
0047 rbx p32 FLOAD 0043 tab.node | |
0048 > p32 HREFK 0047 "__call" @1 | |
0049 > fun HLOAD 0048 | |
0050 > fun EQ 0049 4252.lua:5 | |
0051 int FLOAD 0033 tab.hmask | |
0052 > int EQ 0051 +3 | |
0053 rdx p32 FLOAD 0033 tab.node | |
0054 > p32 HREFK 0053 "gen" @2 | |
0055 > fun HLOAD 0054 | |
0056 > fun EQ 0055 ipairs_aux | |
0057 rbp int CONV 0024 int.num | |
0058 rbp + int ADD 0057 +1 | |
0059 int FLOAD 0038 tab.asize | |
0060 > int ABC 0059 0058 | |
0061 rcx p32 FLOAD 0038 tab.array | |
0062 p32 AREF 0061 0058 | |
0063 [34] > str ALOAD 0062 | |
0064 > fun EQ 0042 4252.lua:19 | |
.... SNAP #1 [ ---- ---- ---- ---- ---- ---- ---- ---- ---- nil 4252.lua:19|nil nil nil 0063 4252.lua:19|---- 0003 0058 ] | |
0065 [30] >+ tab TNEW #3 #0 | |
0066 p32 FLOAD 0065 tab.array | |
0067 p32 AREF 0066 +1 | |
0068 num ASTORE 0067 0022 | |
0069 p32 AREF 0066 +2 | |
0070 xmm0 num CONV 0058 num.int | |
0071 num ASTORE 0069 0070 | |
.... SNAP #2 [ ---- ---- ---- ---- ---- ---- ---- 0065 ---- 0063 ] | |
0072 rax fun SLOAD #0 R | |
0073 r12 tab FLOAD 0072 func.env | |
0074 int FLOAD 0073 tab.hmask | |
0075 > int EQ 0074 +63 | |
0076 rax p32 FLOAD 0073 tab.node | |
0077 > p32 HREFK 0076 "table" @47 | |
0078 rax > tab HLOAD 0077 | |
0079 int FLOAD 0078 tab.hmask | |
0080 > int EQ 0079 +15 | |
0081 rax p32 FLOAD 0078 tab.node | |
0082 > p32 HREFK 0081 "insert" @15 | |
0083 > fun HLOAD 0082 | |
0084 rbx > tab SLOAD #8 T | |
0085 > fun EQ 0083 table.insert | |
0086 rax int CALLL lj_tab_len (0084) | |
0087 rax int ADD 0086 +1 | |
0088 int FLOAD 0084 tab.asize | |
0089 > int ULE 0088 0087 | |
0090 int FLOAD 0084 tab.hmask | |
0091 > int EQ 0090 +0 | |
0092 [38] num CONV 0087 num.int | |
0093 rdx p32 NEWREF 0084 0092 | |
0094 str HSTORE 0093 0063 | |
0095 nil TBAR 0084 | |
.... SNAP #3 [ ---- ---- ---- ---- ---- ---- ---- 0065 ---- ] | |
0096 ------------ LOOP ------------ | |
0097 int FLOAD 0004 tab.hmask | |
0098 > int EQ 0097 +1 | |
0099 r15 p32 FLOAD 0004 tab.node | |
0100 > p32 HREFK 0099 "__call" @1 | |
0101 > fun HLOAD 0100 | |
0102 > fun EQ 0101 4252.lua:5 | |
0103 int FLOAD 0001 tab.hmask | |
0104 > int EQ 0103 +3 | |
0105 r15 p32 FLOAD 0001 tab.node | |
0106 > p32 HREFK 0105 "gen" @2 | |
0107 > fun HLOAD 0106 | |
0108 > fun EQ 0107 4252.lua:26 | |
0109 rsi int FLOAD 0002 tab.asize | |
0110 > int ABC 0109 0028 | |
0111 r15 p32 FLOAD 0002 tab.array | |
0112 p32 AREF 0111 0028 | |
0113 r13 > tab ALOAD 0112 | |
0114 > int ABC 0109 0035 | |
0115 p32 AREF 0111 0035 | |
0116 r15 > tab ALOAD 0115 | |
0117 rsi > p32 UREFO 4252.lua:26 #0 | |
0118 rsi p32 SUB 0117 0000 | |
0119 > p32 UGT 0118 +136 | |
0120 rsi tab FLOAD 0113 tab.meta | |
0121 > tab NE 0120 NULL | |
0122 int FLOAD 0120 tab.hmask | |
0123 > int EQ 0122 +1 | |
0124 rsi p32 FLOAD 0120 tab.node | |
0125 > p32 HREFK 0124 "__call" @1 | |
0126 > fun HLOAD 0125 | |
0127 > fun EQ 0126 4252.lua:5 | |
0128 int FLOAD 0113 tab.hmask | |
0129 > int EQ 0128 +3 | |
0130 r13 p32 FLOAD 0113 tab.node | |
0131 > p32 HREFK 0130 "gen" @2 | |
0132 > fun HLOAD 0131 | |
0133 > fun EQ 0132 ipairs_aux | |
0134 rbp + int ADD 0058 +1 | |
0135 int FLOAD 0116 tab.asize | |
0136 > int ABC 0135 0134 | |
0137 r15 p32 FLOAD 0116 tab.array | |
0138 p32 AREF 0137 0134 | |
0139 r15 > str ALOAD 0138 | |
.... SNAP #4 [ ---- ---- ---- ---- ---- ---- ---- 0065 ---- nil 4252.lua:19|nil nil nil 0139 4252.lua:19|---- 0065 0134 ] | |
0140 [8] >+ tab TNEW #3 #0 | |
0141 p32 FLOAD 0140 tab.array | |
0142 p32 AREF 0141 +1 | |
0143 num ASTORE 0142 0022 | |
0144 p32 AREF 0141 +2 | |
0145 xmm7 num CONV 0134 num.int | |
0146 num ASTORE 0144 0145 | |
.... SNAP #5 [ ---- ---- ---- ---- ---- ---- ---- 0140 ---- 0139 ] | |
0147 int FLOAD 0073 tab.hmask | |
0148 > int EQ 0147 +63 | |
0149 r14 p32 FLOAD 0073 tab.node | |
0150 > p32 HREFK 0149 "table" @47 | |
0151 r14 > tab HLOAD 0150 | |
0152 int FLOAD 0151 tab.hmask | |
0153 > int EQ 0152 +15 | |
0154 r14 p32 FLOAD 0151 tab.node | |
0155 > p32 HREFK 0154 "insert" @15 | |
0156 > fun HLOAD 0155 | |
0157 > fun EQ 0156 table.insert | |
0158 rax int CALLL lj_tab_len (0084) | |
0159 rax int ADD 0158 +1 | |
0160 int FLOAD 0084 tab.asize | |
0161 > int ULE 0160 0159 | |
0162 int FLOAD 0084 tab.hmask | |
0163 > int EQ 0162 +0 | |
0164 [10] num CONV 0159 num.int | |
0165 r14 p32 NEWREF 0084 0164 | |
0166 str HSTORE 0165 0139 | |
0167 nil TBAR 0084 | |
0168 rax tab PHI 0065 0140 | |
0169 rbp int PHI 0058 0134 | |
0170 r14 nil RENAME 0065 #3 | |
0171 rax nil RENAME 0065 #3 | |
---- TRACE 1 mcode 1620 | |
564db938f9ac add rsp, -0x40 | |
564db938f9b0 mov dword [0x40633410], 0x1 | |
564db938f9bb mov edi, [0x406333d8] | |
564db938f9c2 cmp edi, [0x406333dc] | |
564db938f9c9 jb 0x564db938f9e2 | |
564db938f9cb mov esi, 0x1 | |
564db938f9d0 mov edi, 0x406333b8 | |
564db938f9d5 call 0x564d8f2aa47e ->lj_gc_step_jit | |
564db938f9da test eax, eax | |
564db938f9dc jnz 0x564db9380010 ->0 | |
564db938f9e2 mov edi, [0x406334b0] | |
564db938f9e9 mov edx, [0x406334b4] | |
564db938f9f0 cmp dword [rdx+0x24], -0x0c | |
564db938f9f4 jnz 0x564db9380010 ->0 | |
564db938f9fa mov esi, [rdx+0x20] | |
564db938f9fd mov [rsp+0x28], esi | |
564db938fa01 cmp dword [rdx+0x2c], -0x0c | |
564db938fa05 jnz 0x564db9380010 ->0 | |
564db938fa0b mov eax, [rdx+0x28] | |
564db938fa0e mov [rsp+0x24], eax | |
564db938fa12 cmp dword [rdx+0x34], -0x0c | |
564db938fa16 jnz 0x564db9380010 ->0 | |
564db938fa1c mov ecx, [rdx+0x30] | |
564db938fa1f mov [rsp+0x40], ecx | |
564db938fa23 mov r8d, [rsi+0x10] | |
564db938fa27 mov [rsp+0x2c], r8d | |
564db938fa2c test r8d, r8d | |
564db938fa2f jz 0x564db9380010 ->0 | |
564db938fa35 cmp dword [r8+0x1c], +0x01 | |
564db938fa3a jnz 0x564db9380010 ->0 | |
564db938fa40 mov edx, [r8+0x14] | |
564db938fa44 mov rbp, 0xfffffffb406355d0 | |
564db938fa4e cmp rbp, [rdx+0x20] | |
564db938fa52 jnz 0x564db9380010 ->0 | |
564db938fa58 cmp dword [rdx+0x1c], -0x09 | |
564db938fa5c jnz 0x564db9380010 ->0 | |
564db938fa62 cmp dword [rdx+0x18], 0x4063b038 | |
564db938fa69 jnz 0x564db9380010 ->0 | |
564db938fa6f cmp dword [rsi+0x1c], +0x03 | |
564db938fa73 jnz 0x564db9380010 ->0 | |
564db938fa79 mov edx, [rsi+0x14] | |
564db938fa7c mov rsi, 0xfffffffb4063b0e8 | |
564db938fa86 cmp rsi, [rdx+0x38] | |
564db938fa8a jnz 0x564db9380010 ->0 | |
564db938fa90 cmp dword [rdx+0x34], -0x09 | |
564db938fa94 jnz 0x564db9380010 ->0 | |
564db938fa9a cmp dword [rdx+0x30], 0x4063c3d0 | |
564db938faa1 jnz 0x564db9380010 ->0 | |
564db938faa7 cmp dword [rcx+0x18], +0x02 | |
564db938faab jbe 0x564db9380010 ->0 | |
564db938fab1 mov ecx, [rcx+0x8] | |
564db938fab4 cmp dword [rcx+0xc], 0xfffeffff | |
564db938fabb jnb 0x564db9380010 ->0 | |
564db938fac1 movsd xmm1, [rcx+0x8] | |
564db938fac6 movsd [rsp+0x18], xmm1 | |
564db938facc cmp dword [rcx+0x14], 0xfffeffff | |
564db938fad3 jnb 0x564db9380010 ->0 | |
564db938fad9 movsd xmm0, [rcx+0x10] | |
564db938fade mulsd xmm1, [0x40643e60] | |
564db938fae7 cvttsd2si ecx, xmm1 | |
564db938faeb xorps xmm7, xmm7 | |
564db938faee cvtsi2sd xmm7, ecx | |
564db938faf2 ucomisd xmm1, xmm7 | |
564db938faf6 jnz 0x564db9380010 ->0 | |
564db938fafc jpe 0x564db9380010 ->0 | |
564db938fb02 lea edx, [rcx-0x2] | |
564db938fb05 mov [rsp+0x20], edx | |
564db938fb09 mov ebx, [rax+0x18] | |
564db938fb0c cmp edx, ebx | |
564db938fb0e jnb 0x564db9380010 ->0 | |
564db938fb14 mov eax, [rax+0x8] | |
564db938fb17 cmp dword [rax+rdx*8+0x4], -0x0c | |
564db938fb1c jnz 0x564db9380010 ->0 | |
564db938fb22 mov edx, [rax+rdx*8] | |
564db938fb25 add ecx, -0x01 | |
564db938fb28 mov [rsp+0xc], ecx | |
564db938fb2c cmp ecx, ebx | |
564db938fb2e jnb 0x564db9380010 ->0 | |
564db938fb34 cmp dword [rax+rcx*8+0x4], -0x0c | |
564db938fb39 jnz 0x564db9380010 ->0 | |
564db938fb3f mov ecx, [rax+rcx*8] | |
564db938fb42 mov eax, [0x4063c400] | |
564db938fb49 mov ebx, eax | |
564db938fb4b sub ebx, [0x406334b4] | |
564db938fb52 cmp ebx, 0x88 | |
564db938fb58 jbe 0x564db9380010 ->0 | |
564db938fb5e cmp dword [rax+0x4], -0x09 | |
564db938fb62 jnz 0x564db9380010 ->0 | |
564db938fb68 mov ebx, [rdx+0x10] | |
564db938fb6b test ebx, ebx | |
564db938fb6d jz 0x564db9380010 ->0 | |
564db938fb73 cmp dword [rbx+0x1c], +0x01 | |
564db938fb77 jnz 0x564db9380010 ->0 | |
564db938fb7d mov ebx, [rbx+0x14] | |
564db938fb80 mov rsi, 0xfffffffb406355d0 | |
564db938fb8a cmp rsi, [rbx+0x20] | |
564db938fb8e jnz 0x564db9380010 ->0 | |
564db938fb94 cmp dword [rbx+0x1c], -0x09 | |
564db938fb98 jnz 0x564db9380010 ->0 | |
564db938fb9e cmp dword [rbx+0x18], 0x4063b038 | |
564db938fba5 jnz 0x564db9380010 ->0 | |
564db938fbab cmp dword [rdx+0x1c], +0x03 | |
564db938fbaf jnz 0x564db9380010 ->0 | |
564db938fbb5 mov edx, [rdx+0x14] | |
564db938fbb8 mov rsi, 0xfffffffb4063b0e8 | |
564db938fbc2 cmp rsi, [rdx+0x38] | |
564db938fbc6 jnz 0x564db9380010 ->0 | |
564db938fbcc cmp dword [rdx+0x34], -0x09 | |
564db938fbd0 jnz 0x564db9380010 ->0 | |
564db938fbd6 cmp dword [rdx+0x30], 0x40636040 | |
564db938fbdd jnz 0x564db9380010 ->0 | |
564db938fbe3 cvttsd2si ebp, xmm0 | |
564db938fbe7 add ebp, +0x01 | |
564db938fbea cmp ebp, [rcx+0x18] | |
564db938fbed jnb 0x564db9380010 ->0 | |
564db938fbf3 mov ecx, [rcx+0x8] | |
564db938fbf6 cmp dword [rcx+rbp*8+0x4], -0x05 | |
564db938fbfb jnz 0x564db9380010 ->0 | |
564db938fc01 mov ecx, [rcx+rbp*8] | |
564db938fc04 mov [rsp+0x34], ecx | |
564db938fc08 cmp dword [rax], 0x4063c390 | |
564db938fc0e jnz 0x564db9380010 ->0 | |
564db938fc14 mov esi, 0x3 | |
564db938fc19 call 0x564d8f2abe84 ->lj_tab_new1 | |
564db938fc1e mov [rsp+0x30], eax | |
564db938fc22 mov edx, [0x406334b4] | |
564db938fc29 movsd xmm0, [rsp+0x18] | |
564db938fc2f movsd [rax+0x28], xmm0 | |
564db938fc34 xorps xmm0, xmm0 | |
564db938fc37 cvtsi2sd xmm0, ebp | |
564db938fc3b movsd [rax+0x30], xmm0 | |
564db938fc40 mov eax, [rdx-0x8] | |
564db938fc43 mov r12d, [rax+0x8] | |
564db938fc47 cmp dword [r12+0x1c], +0x3f | |
564db938fc4d jnz 0x564db9380018 ->2 | |
564db938fc53 mov eax, [r12+0x14] | |
564db938fc58 mov rdi, 0xfffffffb40635eb0 | |
564db938fc62 cmp rdi, [rax+0x470] | |
564db938fc69 jnz 0x564db9380018 ->2 | |
564db938fc6f cmp dword [rax+0x46c], -0x0c | |
564db938fc76 jnz 0x564db9380018 ->2 | |
564db938fc7c mov eax, [rax+0x468] | |
564db938fc82 cmp dword [rax+0x1c], +0x0f | |
564db938fc86 jnz 0x564db9380018 ->2 | |
564db938fc8c mov eax, [rax+0x14] | |
564db938fc8f mov rdi, 0xfffffffb406376d8 | |
564db938fc99 cmp rdi, [rax+0x170] | |
564db938fca0 jnz 0x564db9380018 ->2 | |
564db938fca6 cmp dword [rax+0x16c], -0x09 | |
564db938fcad jnz 0x564db9380018 ->2 | |
564db938fcb3 cmp dword [rdx+0x3c], -0x0c | |
564db938fcb7 jnz 0x564db9380018 ->2 | |
564db938fcbd mov ebx, [rdx+0x38] | |
564db938fcc0 cmp dword [rax+0x168], 0x406376b0 | |
564db938fcca jnz 0x564db9380018 ->2 | |
564db938fcd0 mov edi, ebx | |
564db938fcd2 call 0x564d8f2adffd ->lj_tab_len | |
564db938fcd7 mov edi, [0x406334b0] | |
564db938fcde add eax, +0x01 | |
564db938fce1 cmp eax, [rbx+0x18] | |
564db938fce4 jb 0x564db9380018 ->2 | |
564db938fcea cmp dword [rbx+0x1c], +0x00 | |
564db938fcee jnz 0x564db9380018 ->2 | |
564db938fcf4 xorps xmm7, xmm7 | |
564db938fcf7 cvtsi2sd xmm7, eax | |
564db938fcfb movsd [rsp+0x38], xmm7 | |
564db938fd01 lea rdx, [rsp+0x38] | |
564db938fd06 mov esi, ebx | |
564db938fd08 call 0x564d8f2ad37a ->lj_tab_newkey | |
564db938fd0d mov edx, eax | |
564db938fd0f mov ecx, [rsp+0x34] | |
564db938fd13 mov eax, [rsp+0x30] | |
564db938fd17 mov dword [rdx+0x4], 0xfffffffb | |
564db938fd1e mov [rdx], ecx | |
564db938fd20 test byte [rbx+0x4], 0x4 | |
564db938fd24 jz 0x564db938fd3b ->LOOP | |
564db938fd26 and byte [rbx+0x4], 0xfb | |
564db938fd2a mov edi, [0x406333f4] | |
564db938fd31 mov [0x406333f4], ebx | |
564db938fd38 mov [rbx+0xc], edi | |
->LOOP: | |
564db938fd3b mov r14d, eax | |
564db938fd3e mov edi, [0x406333d8] | |
564db938fd45 cmp edi, [0x406333dc] | |
564db938fd4c jb 0x564db938fd65 | |
564db938fd4e mov esi, 0x1 | |
564db938fd53 mov edi, 0x406333b8 | |
564db938fd58 call 0x564d8f2aa47e ->lj_gc_step_jit | |
564db938fd5d test eax, eax | |
564db938fd5f jnz 0x564db938001c ->3 | |
564db938fd65 mov r8d, [rsp+0x2c] | |
564db938fd6a mov edi, [0x406334b0] | |
564db938fd71 mov esi, [rsp+0x28] | |
564db938fd75 mov edx, [rsp+0x24] | |
564db938fd79 mov ecx, [rsp+0x20] | |
564db938fd7d mov eax, [rsp+0xc] | |
564db938fd81 cmp dword [r8+0x1c], +0x01 | |
564db938fd86 jnz 0x564db938001c ->3 | |
564db938fd8c mov r15d, [r8+0x14] | |
564db938fd90 mov r13, 0xfffffffb406355d0 | |
564db938fd9a cmp r13, [r15+0x20] | |
564db938fd9e jnz 0x564db938001c ->3 | |
564db938fda4 cmp dword [r15+0x1c], -0x09 | |
564db938fda9 jnz 0x564db938001c ->3 | |
564db938fdaf cmp dword [r15+0x18], 0x4063b038 | |
564db938fdb7 jnz 0x564db938001c ->3 | |
564db938fdbd cmp dword [rsi+0x1c], +0x03 | |
564db938fdc1 jnz 0x564db938001c ->3 | |
564db938fdc7 mov r15d, [rsi+0x14] | |
564db938fdcb mov rsi, 0xfffffffb4063b0e8 | |
564db938fdd5 cmp rsi, [r15+0x38] | |
564db938fdd9 jnz 0x564db938001c ->3 | |
564db938fddf cmp dword [r15+0x34], -0x09 | |
564db938fde4 jnz 0x564db938001c ->3 | |
564db938fdea cmp dword [r15+0x30], 0x4063c3d0 | |
564db938fdf2 jnz 0x564db938001c ->3 | |
564db938fdf8 mov esi, [rdx+0x18] | |
564db938fdfb cmp ecx, esi | |
564db938fdfd jnb 0x564db938001c ->3 | |
564db938fe03 mov r15d, [rdx+0x8] | |
564db938fe07 cmp dword [r15+rcx*8+0x4], -0x0c | |
564db938fe0d jnz 0x564db938001c ->3 | |
564db938fe13 mov r13d, [r15+rcx*8] | |
564db938fe17 cmp eax, esi | |
564db938fe19 jnb 0x564db938001c ->3 | |
564db938fe1f cmp dword [r15+rax*8+0x4], -0x0c | |
564db938fe25 jnz 0x564db938001c ->3 | |
564db938fe2b mov r15d, [r15+rax*8] | |
564db938fe2f mov esi, [0x4063c400] | |
564db938fe36 sub esi, [0x406334b4] | |
564db938fe3d cmp esi, 0x88 | |
564db938fe43 jbe 0x564db938001c ->3 | |
564db938fe49 mov esi, [r13+0x10] | |
564db938fe4d test esi, esi | |
564db938fe4f jz 0x564db938001c ->3 | |
564db938fe55 cmp dword [rsi+0x1c], +0x01 | |
564db938fe59 jnz 0x564db938001c ->3 | |
564db938fe5f mov esi, [rsi+0x14] | |
564db938fe62 mov rdx, 0xfffffffb406355d0 | |
564db938fe6c cmp rdx, [rsi+0x20] | |
564db938fe70 jnz 0x564db938001c ->3 | |
564db938fe76 cmp dword [rsi+0x1c], -0x09 | |
564db938fe7a jnz 0x564db938001c ->3 | |
564db938fe80 cmp dword [rsi+0x18], 0x4063b038 | |
564db938fe87 jnz 0x564db938001c ->3 | |
564db938fe8d cmp dword [r13+0x1c], +0x03 | |
564db938fe92 jnz 0x564db938001c ->3 | |
564db938fe98 mov r13d, [r13+0x14] | |
564db938fe9c mov rsi, 0xfffffffb4063b0e8 | |
564db938fea6 cmp rsi, [r13+0x38] | |
564db938feaa jnz 0x564db938001c ->3 | |
564db938feb0 cmp dword [r13+0x34], -0x09 | |
564db938feb5 jnz 0x564db938001c ->3 | |
564db938febb cmp dword [r13+0x30], 0x40636040 | |
564db938fec3 jnz 0x564db938001c ->3 | |
564db938fec9 add ebp, +0x01 | |
564db938fecc cmp ebp, [r15+0x18] | |
564db938fed0 jnb 0x564db938001c ->3 | |
564db938fed6 mov r15d, [r15+0x8] | |
564db938feda cmp dword [r15+rbp*8+0x4], -0x05 | |
564db938fee0 jnz 0x564db938001c ->3 | |
564db938fee6 mov r15d, [r15+rbp*8] | |
564db938feea mov esi, 0x3 | |
564db938feef call 0x564d8f2abe84 ->lj_tab_new1 | |
564db938fef4 mov [rsp+0x8], eax | |
564db938fef8 movsd xmm0, [rsp+0x18] | |
564db938fefe movsd [rax+0x28], xmm0 | |
564db938ff03 xorps xmm7, xmm7 | |
564db938ff06 cvtsi2sd xmm7, ebp | |
564db938ff0a movsd [rax+0x30], xmm7 | |
564db938ff0f cmp dword [r12+0x1c], +0x3f | |
564db938ff15 jnz 0x564db9380024 ->5 | |
564db938ff1b mov r14d, [r12+0x14] | |
564db938ff20 mov rdi, 0xfffffffb40635eb0 | |
564db938ff2a cmp rdi, [r14+0x470] | |
564db938ff31 jnz 0x564db9380024 ->5 | |
564db938ff37 cmp dword [r14+0x46c], -0x0c | |
564db938ff3f jnz 0x564db9380024 ->5 | |
564db938ff45 mov r14d, [r14+0x468] | |
564db938ff4c cmp dword [r14+0x1c], +0x0f | |
564db938ff51 jnz 0x564db9380024 ->5 | |
564db938ff57 mov r14d, [r14+0x14] | |
564db938ff5b mov rdi, 0xfffffffb406376d8 | |
564db938ff65 cmp rdi, [r14+0x170] | |
564db938ff6c jnz 0x564db9380024 ->5 | |
564db938ff72 cmp dword [r14+0x16c], -0x09 | |
564db938ff7a jnz 0x564db9380024 ->5 | |
564db938ff80 cmp dword [r14+0x168], 0x406376b0 | |
564db938ff8b jnz 0x564db9380024 ->5 | |
564db938ff91 mov edi, ebx | |
564db938ff93 call 0x564d8f2adffd ->lj_tab_len | |
564db938ff98 mov edi, [0x406334b0] | |
564db938ff9f add eax, +0x01 | |
564db938ffa2 cmp eax, [rbx+0x18] | |
564db938ffa5 jb 0x564db9380024 ->5 | |
564db938ffab cmp dword [rbx+0x1c], +0x00 | |
564db938ffaf jnz 0x564db9380024 ->5 | |
564db938ffb5 xorps xmm7, xmm7 | |
564db938ffb8 cvtsi2sd xmm7, eax | |
564db938ffbc movsd [rsp+0x10], xmm7 | |
564db938ffc2 lea rdx, [rsp+0x10] | |
564db938ffc7 mov esi, ebx | |
564db938ffc9 call 0x564d8f2ad37a ->lj_tab_newkey | |
564db938ffce mov r14d, eax | |
564db938ffd1 mov eax, [rsp+0x8] | |
564db938ffd5 mov dword [r14+0x4], 0xfffffffb | |
564db938ffdd mov [r14], r15d | |
564db938ffe0 test byte [rbx+0x4], 0x4 | |
564db938ffe4 jz 0x564db938fffb | |
564db938ffe6 and byte [rbx+0x4], 0xfb | |
564db938ffea mov edi, [0x406333f4] | |
564db938fff1 mov [0x406333f4], ebx | |
564db938fff8 mov [rbx+0xc], edi | |
564db938fffb jmp 0x564db938fd3b ->LOOP | |
---- TRACE 1 stop -> loop | |
---- TRACE 1 exit 0 | |
000000004064a9e0 0000000040635408 000000004063e648 000000004063b000 | |
00007ffebb887620 0000000000000004 fffffffb4063b0e8 0000000040633378 | |
000000004063afd8 0000000000000400 0000000000000062 0000000040633fe0 | |
0000564d8f272610 00007ffebb887960 0000000040633fe0 000000004063d898 | |
+3 +3 +4.6882439715015e-310 +4.6882439715176e-310 | |
+4.6882439712363e-310 +4.6882439715295e-310 +4.6882439715211e-310 +3 | |
+4.68824397149e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 2 start 4252.lua:5 | |
0001 TGETS 3 0 0 ; "gen" | |
0002 MOV 4 1 | |
0003 MOV 5 2 | |
0004 CALLT 3 3 | |
0000 FUNCC ; ipairs_aux | |
---- TRACE 2 IR | |
.... SNAP #0 [ ---- ---- ---- ---- ] | |
0001 > tab SLOAD #1 T | |
0002 int FLOAD 0001 tab.hmask | |
0003 > int EQ 0002 +3 | |
0004 p32 FLOAD 0001 tab.node | |
0005 > p32 HREFK 0004 "gen" @2 | |
0006 > fun HLOAD 0005 | |
0007 > tab SLOAD #2 T | |
0008 > num SLOAD #3 T | |
0009 > fun EQ 0006 ipairs_aux | |
0010 int CONV 0008 int.num | |
0011 int ADD 0010 +1 | |
0012 int FLOAD 0007 tab.asize | |
0013 > int ABC 0012 0011 | |
0014 p32 FLOAD 0007 tab.array | |
0015 p32 AREF 0014 0011 | |
0016 > nil ALOAD 0015 | |
---- TRACE 2 abort 4252.lua:29 -- leaving loop in root trace | |
---- TRACE 1 exit 5 | |
0000000000000006 0000000000000008 0000000000000028 0000000040640340 | |
00007ffebb887620 0000000000000003 0000000000000038 0000000040633378 | |
000000004063afd8 0000564d8f2a63e6 00007efe6339c1d0 0000000040633fe0 | |
00000000406349d8 000000004063fe48 00000000406372a8 000000004063b8a8 | |
+2 nan +4.6882439715015e-310 +4.6882439715176e-310 | |
+4.6882439712363e-310 +4.6882439715295e-310 +4.6882439715211e-310 +3 | |
+4.68824397149e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 1 exit 0 | |
000000004064a9e0 000000004063dee0 000000004063fe48 000000004063b000 | |
00007ffebb887620 0000000000000004 fffffffb4063b0e8 0000000040633378 | |
000000004063afd8 000000000000808b 00007efe6339c1d0 0000000040633fe0 | |
0000564d8f272610 00007ffebb887960 0000000040633fe0 000000004063d898 | |
+3 +6 +1 +4.5035996273705e+15 | |
+4 +16 +4.6882439715211e-310 +6 | |
+4.68824397149e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 2 start 4252.lua:34 | |
0009 MULNV 5 4 0 ; 3 | |
0010 SUBVN 5 5 1 ; 2 | |
0011 MULNV 6 4 0 ; 3 | |
0012 SUBVN 6 6 2 ; 1 | |
0013 MULNV 7 4 0 ; 3 | |
0014 UGET 8 0 ; wrap | |
0015 GGET 9 2 ; "ipairs" | |
0016 GGET 10 0 ; "select" | |
0017 MOV 11 4 | |
0018 VARG 12 0 0 | |
---- TRACE 2 IR | |
.... SNAP #0 [ ---- ] | |
0001 > int SLOAD #3 CRI | |
0002 > int LE 0001 +2147483646 | |
0003 int SLOAD #2 CI | |
0004 num CONV 0003 num.int | |
0005 num MUL 0004 +3 | |
0006 num SUB 0005 +2 | |
0007 num SUB 0005 +1 | |
0008 fun SLOAD #0 R | |
0009 > fun EQ 0008 4252.lua:32 | |
0010 tab FLOAD 4252.lua:32 func.env | |
0011 int FLOAD 0010 tab.hmask | |
0012 > int EQ 0011 +63 | |
0013 p32 FLOAD 0010 tab.node | |
0014 > p32 HREFK 0013 "ipairs" @18 | |
0015 > fun HLOAD 0014 | |
0016 > p32 HREFK 0013 "select" @58 | |
0017 > fun HLOAD 0016 | |
0018 int SLOAD #0 FR | |
---- TRACE 2 abort 4252.lua:36 -- NYI: bytecode 71 | |
---- TRACE 2 start 4252.lua:8 | |
0001 GGET 3 0 ; "setmetatable" | |
0002 TDUP 4 1 | |
0003 TSETS 0 4 2 ; "gen" | |
0004 TSETS 1 4 3 ; "param" | |
0005 TSETS 2 4 4 ; "state" | |
0006 UGET 5 0 ; iterator_mt | |
0007 CALL 3 2 3 | |
0000 . FUNCC ; setmetatable | |
0008 MOV 4 1 | |
0009 MOV 5 2 | |
0010 RET 3 4 | |
---- TRACE 2 IR | |
.... SNAP #0 [ ---- ---- ---- ---- ] | |
0001 r15 fun SLOAD #0 R | |
0002 rbp tab FLOAD 0001 func.env | |
0003 int FLOAD 0002 tab.hmask | |
0004 > int EQ 0003 +63 | |
0005 rbp p32 FLOAD 0002 tab.node | |
0006 > p32 HREFK 0005 "setmetatable" @63 | |
0007 r14 > fun HLOAD 0006 | |
0008 rax > tab TDUP {0x4063b188} | |
0009 rbp > fun SLOAD #1 T | |
0010 r13 p32 FLOAD 0008 tab.node | |
0011 p32 HREFK 0010 "gen" @2 | |
0012 fun HSTORE 0011 0009 | |
.... SNAP #1 [ ---- ---- ---- ---- 0007 0008 ] | |
0013 rbp > tab SLOAD #2 T | |
0014 p32 HREFK 0010 "param" @3 | |
0015 tab HSTORE 0014 0013 | |
.... SNAP #2 [ ---- ---- ---- ---- 0007 0008 ] | |
0016 rbx > tab SLOAD #3 T | |
0017 p32 HREFK 0010 "state" @0 | |
0018 tab HSTORE 0017 0016 | |
.... SNAP #3 [ ---- ---- ---- ---- 0007 0008 ] | |
0019 r15 > p32 UREFO 0001 #0 | |
0020 r13 p32 SUB 0019 0000 | |
0021 > p32 UGT 0020 +48 | |
0022 r15 > tab ULOAD 0019 | |
0023 > fun EQ 0007 setmetatable | |
0024 p32 FREF 0008 tab.meta | |
0025 tab FSTORE 0024 0022 | |
.... SNAP #4 [ ---- ---- ---- ---- 0008 0013 0016 ] | |
---- TRACE 2 mcode 326 | |
564db938f85f mov dword [0x40633410], 0x2 | |
564db938f86a mov edi, [0x406333d8] | |
564db938f871 cmp edi, [0x406333dc] | |
564db938f878 jb 0x564db938f891 | |
564db938f87a mov esi, 0x1 | |
564db938f87f mov edi, 0x406333b8 | |
564db938f884 call 0x564d8f2aa47e ->lj_gc_step_jit | |
564db938f889 test eax, eax | |
564db938f88b jnz 0x564db9380010 ->0 | |
564db938f891 mov edi, [0x406334b0] | |
564db938f898 mov edx, [0x406334b4] | |
564db938f89f mov r15d, [rdx-0x8] | |
564db938f8a3 mov ebp, [r15+0x8] | |
564db938f8a7 cmp dword [rbp+0x1c], +0x3f | |
564db938f8ab jnz 0x564db9380010 ->0 | |
564db938f8b1 mov ebp, [rbp+0x14] | |
564db938f8b4 mov rsi, 0xfffffffb40636130 | |
564db938f8be cmp rsi, [rbp+0x5f0] | |
564db938f8c5 jnz 0x564db9380010 ->0 | |
564db938f8cb cmp dword [rbp+0x5ec], -0x09 | |
564db938f8d2 jnz 0x564db9380010 ->0 | |
564db938f8d8 mov r14d, [rbp+0x5e8] | |
564db938f8df mov esi, 0x4063b188 | |
564db938f8e4 call 0x564d8f2abfaf ->lj_tab_dup | |
564db938f8e9 mov edx, [0x406334b4] | |
564db938f8f0 cmp dword [rdx+0x4], -0x09 | |
564db938f8f4 jnz 0x564db9380010 ->0 | |
564db938f8fa mov ebp, [rdx] | |
564db938f8fc mov r13d, [rax+0x14] | |
564db938f900 mov dword [r13+0x34], 0xfffffff7 | |
564db938f908 mov [r13+0x30], ebp | |
564db938f90c cmp dword [rdx+0xc], -0x0c | |
564db938f910 jnz 0x564db9380014 ->1 | |
564db938f916 mov ebp, [rdx+0x8] | |
564db938f919 mov dword [r13+0x4c], 0xfffffff4 | |
564db938f921 mov [r13+0x48], ebp | |
564db938f925 cmp dword [rdx+0x14], -0x0c | |
564db938f929 jnz 0x564db9380018 ->2 | |
564db938f92f mov ebx, [rdx+0x10] | |
564db938f932 mov dword [r13+0x4], 0xfffffff4 | |
564db938f93a mov [r13+0x0], ebx | |
564db938f93e mov edi, [r15+0x14] | |
564db938f942 mov r15d, [rdi+0x10] | |
564db938f946 mov r13d, r15d | |
564db938f949 sub r13d, edx | |
564db938f94c cmp r13d, +0x30 | |
564db938f950 jbe 0x564db938001c ->3 | |
564db938f956 cmp dword [r15+0x4], -0x0c | |
564db938f95b jnz 0x564db938001c ->3 | |
564db938f961 mov r15d, [r15] | |
564db938f964 cmp r14d, 0x40636108 | |
564db938f96b jnz 0x564db938001c ->3 | |
564db938f971 mov [rax+0x10], r15d | |
564db938f975 mov dword [rdx+0x2c], 0xfffffff4 | |
564db938f97c mov [rdx+0x28], ebx | |
564db938f97f mov dword [rdx+0x24], 0xfffffff4 | |
564db938f986 mov [rdx+0x20], ebp | |
564db938f989 mov dword [rdx+0x1c], 0xfffffff4 | |
564db938f990 mov [rdx+0x18], eax | |
564db938f993 xor eax, eax | |
564db938f995 mov ebx, 0x4063b660 | |
564db938f99a mov r14d, 0x40633fe0 | |
564db938f9a0 jmp 0x564d8f2a7c29 | |
---- TRACE 2 stop -> return | |
---- TRACE 1 exit 5 | |
0000000000000002 0000000000000008 0000000000000008 000000004167d050 | |
00007ffebb887620 0000000000000002 0000000000000038 0000000040633378 | |
000000004063afd8 0000000041678340 00007efe6339c1d0 0000000040633fe0 | |
00000000406349d8 0000000041676610 00000000406372a8 000000004063b7a0 | |
+1 +3 +4.6882439715015e-310 +4.6882439715176e-310 | |
+4.6882439712363e-310 +4.6882439715295e-310 +4.6882439715211e-310 +2 | |
+4.68824397149e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 1 exit 3 | |
0000000000000002 0000000000000001 fffffffb406355d0 000000004167d050 | |
00007ffebb887620 0000000000000004 fffffffb4063b0e8 0000000040633378 | |
000000004063afd8 000000000000808b 00007efe6339c1d0 0000000040633fe0 | |
00000000406349d8 0000000041676610 000000004167d360 0000000041676540 | |
+3 nan +1 +4.5035996273705e+15 | |
+4 +16 +4.6882439715211e-310 +3 | |
+4.68824397149e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 3 start 4252.lua:26 | |
0001 TGETB 2 1 1 | |
0002 TGETB 3 1 2 | |
0003 MULNV 4 2 0 ; 3 | |
0004 SUBVN 4 4 1 ; 2 | |
0005 TGETV 4 0 4 | |
0006 MULNV 5 2 0 ; 3 | |
0007 SUBVN 5 5 2 ; 1 | |
0008 TGETV 5 0 5 | |
0009 UGET 6 0 ; chain_gen_r2 | |
0010 MOV 7 0 | |
0011 MOV 8 1 | |
0012 MOV 9 4 | |
0013 MOV 10 5 | |
0014 MOV 11 3 | |
0015 CALL 9 0 3 | |
0000 . FUNCF 6 ; 4252.lua:5 | |
0001 . TGETS 3 0 0 ; "gen" | |
0002 . MOV 4 1 | |
0003 . MOV 5 2 | |
0004 . CALLT 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0016 CALLMT 6 2 | |
0000 FUNCV 8 ; 4252.lua:19 | |
0001 . ISEQP 2 0 | |
0002 . JMP 3 => 0009 | |
0009 . TGETB 3 1 1 | |
0010 . ADDVN 3 3 0 ; 1 | |
0011 . MULNV 4 3 1 ; 3 | |
0012 . SUBVN 4 4 0 ; 1 | |
0013 . TGETV 4 0 4 | |
0014 . ISNEP 4 0 | |
0015 . JMP 4 => 0018 | |
0018 . UGET 4 0 ; chain_gen_r1 | |
0019 . MOV 5 0 | |
0020 . TNEW 6 3 | |
0021 . TSETB 3 6 1 | |
0022 . MULNV 7 3 1 ; 3 | |
0023 . TGETV 7 0 7 | |
0024 . TSETB 7 6 2 | |
0025 . CALLT 4 3 | |
0000 FUNCF 12 ; 4252.lua:26 | |
---- TRACE 3 IR | |
.... SNAP #0 [ ---- ---- ---- ] | |
0001 rcx > tab SLOAD #2 T | |
0002 int FLOAD 0001 tab.asize | |
0003 > int ABC 0002 +2 | |
0004 rcx p32 FLOAD 0001 tab.array | |
0005 p32 AREF 0004 +1 | |
0006 xmm6 > num ALOAD 0005 | |
0007 p32 AREF 0004 +2 | |
0008 xmm0 > num ALOAD 0007 | |
0009 xmm1 num MUL 0006 +3 | |
0011 r12 > tab SLOAD #1 T | |
0012 rcx > int CONV 0009 int.num | |
0013 rdx int ADD 0012 -2 | |
0014 r15 int FLOAD 0011 tab.asize | |
0015 > int ABC 0014 0013 | |
0016 r14 p32 FLOAD 0011 tab.array | |
0017 p32 AREF 0016 0013 | |
0018 rdx > tab ALOAD 0017 | |
0020 rcx int ADD 0012 -1 | |
0021 > int ABC 0014 0020 | |
0022 p32 AREF 0016 0020 | |
0023 rcx > tab ALOAD 0022 | |
0024 rax fun SLOAD #0 R | |
0025 rax > p32 UREFO 0024 #0 | |
0026 rbx p32 SUB 0025 0000 | |
0027 > p32 UGT 0026 +56 | |
0028 > fun ULOAD 0025 | |
0029 rbx tab FLOAD 0018 tab.meta | |
0030 > tab NE 0029 NULL | |
0031 int FLOAD 0029 tab.hmask | |
0032 > int EQ 0031 +1 | |
0033 rbx p32 FLOAD 0029 tab.node | |
0034 > p32 HREFK 0033 "__call" @1 | |
0035 > fun HLOAD 0034 | |
0036 > fun EQ 0035 4252.lua:5 | |
0037 int FLOAD 0018 tab.hmask | |
0038 > int EQ 0037 +3 | |
0039 rdx p32 FLOAD 0018 tab.node | |
0040 > p32 HREFK 0039 "gen" @2 | |
0041 > fun HLOAD 0040 | |
0042 > fun EQ 0041 ipairs_aux | |
0043 rdx int CONV 0008 int.num | |
0044 rdx int ADD 0043 +1 | |
0045 int FLOAD 0023 tab.asize | |
0046 > int ABC 0045 0044 | |
0047 rcx p32 FLOAD 0023 tab.array | |
0048 p32 AREF 0047 0044 | |
0049 > nil ALOAD 0048 | |
0050 > fun EQ 0028 4252.lua:19 | |
0051 [10] + num ADD 0006 +1 | |
0052 xmm0 num MUL 0051 +3 | |
0054 rbx >+ int CONV 0052 int.num | |
0055 rax int ADD 0054 -1 | |
0056 > int ABC 0014 0055 | |
0057 p32 AREF 0016 0055 | |
0058 rbp >+ tab ALOAD 0057 | |
.... SNAP #1 [ 4252.lua:19|nil nil 4252.lua:19|0011 ---- ---- 0051 ] | |
0059 rax > p32 UREFO 4252.lua:19 #0 | |
0060 rcx p32 SUB 0059 0000 | |
0061 > p32 UGT 0060 +64 | |
0062 r13 > fun ULOAD 0059 | |
0063 [20] >+ tab TNEW #3 #0 | |
0064 p32 FLOAD 0063 tab.array | |
0065 p32 AREF 0064 +1 | |
0066 num ASTORE 0065 0051 | |
.... SNAP #2 [ 4252.lua:19|nil nil 4252.lua:19|0011 ---- ---- 0051 0062 0011 0063 ] | |
0067 > int ABC 0014 0054 | |
0068 p32 AREF 0016 0054 | |
0069 [18] >+ num ALOAD 0068 | |
0070 p32 AREF 0064 +2 | |
0071 num ASTORE 0070 0069 | |
.... SNAP #3 [ 4252.lua:19|nil nil 4252.lua:19|---- ---- ---- ---- 0062 0011 0063 ---- ] | |
0072 > fun EQ 0062 4252.lua:26 | |
.... SNAP #4 [ 4252.lua:26|---- 0063 ] | |
0073 ------------ LOOP ------------ | |
0074 rbp int ADD 0054 -2 | |
0075 > int ABC 0014 0074 | |
0076 p32 AREF 0016 0074 | |
0077 rsi > tab ALOAD 0076 | |
0078 rbp > p32 UREFO 4252.lua:26 #0 | |
0079 rdx p32 SUB 0078 0000 | |
0080 > p32 UGT 0079 +56 | |
0081 > fun ULOAD 0078 | |
0082 rdx tab FLOAD 0077 tab.meta | |
0083 > tab NE 0082 NULL | |
0084 int FLOAD 0082 tab.hmask | |
0085 > int EQ 0084 +1 | |
0086 rdx p32 FLOAD 0082 tab.node | |
0087 > p32 HREFK 0086 "__call" @1 | |
0088 > fun HLOAD 0087 | |
0089 > fun EQ 0088 4252.lua:5 | |
0090 int FLOAD 0077 tab.hmask | |
0091 > int EQ 0090 +3 | |
0092 rsi p32 FLOAD 0077 tab.node | |
0093 > p32 HREFK 0092 "gen" @2 | |
0094 > fun HLOAD 0093 | |
0095 > fun EQ 0094 ipairs_aux | |
0096 rsi int CONV 0069 int.num | |
0097 rsi int ADD 0096 +1 | |
0098 int FLOAD 0058 tab.asize | |
0099 > int ABC 0098 0097 | |
0100 rbx p32 FLOAD 0058 tab.array | |
0101 p32 AREF 0100 0097 | |
0102 > nil ALOAD 0101 | |
0103 > fun EQ 0081 4252.lua:19 | |
0104 [8] + num ADD 0051 +1 | |
0105 xmm7 num MUL 0104 +3 | |
0106 rbx >+ int CONV 0105 int.num | |
0107 rbp int ADD 0106 -1 | |
0108 > int ABC 0014 0107 | |
0109 p32 AREF 0016 0107 | |
0110 rbp >+ tab ALOAD 0109 | |
.... SNAP #5 [ 4252.lua:19|nil nil 4252.lua:19|0011 ---- ---- 0104 ] | |
0111 rsi > p32 UREFO 4252.lua:19 #0 | |
0112 rsi p32 SUB 0111 0000 | |
0113 > p32 UGT 0112 +64 | |
0114 rax >+ tab TNEW #3 #0 | |
0115 p32 FLOAD 0114 tab.array | |
0116 p32 AREF 0115 +1 | |
0117 num ASTORE 0116 0104 | |
.... SNAP #6 [ 4252.lua:19|nil nil 4252.lua:19|0011 ---- ---- 0104 0062 0011 0114 ] | |
0118 > int ABC 0014 0106 | |
0119 p32 AREF 0016 0106 | |
0120 xmm7 >+ num ALOAD 0119 | |
0121 p32 AREF 0115 +2 | |
0122 num ASTORE 0121 0120 | |
0123 rax tab PHI 0063 0114 | |
0124 xmm6 num PHI 0051 0104 | |
0125 xmm7 num PHI 0069 0120 | |
0126 rbx int PHI 0054 0106 | |
0127 rbp tab PHI 0058 0110 | |
0128 rbp nil RENAME 0054 #4 | |
0129 rbx nil RENAME 0058 #4 | |
0130 rdi nil RENAME 0054 #4 | |
---- TRACE 3 mcode 1128 | |
564db938f3f7 add rsp, -0x20 | |
564db938f3fb mov dword [0x40633410], 0x3 | |
564db938f406 mov edi, [0x406333d8] | |
564db938f40d cmp edi, [0x406333dc] | |
564db938f414 jb 0x564db938f42d | |
564db938f416 mov esi, 0x1 | |
564db938f41b mov edi, 0x406333b8 | |
564db938f420 call 0x564d8f2aa47e ->lj_gc_step_jit | |
564db938f425 test eax, eax | |
564db938f427 jnz 0x564db9380010 ->0 | |
564db938f42d mov edi, [0x406334b0] | |
564db938f434 mov eax, [0x406334b4] | |
564db938f43b cmp dword [rax+0xc], -0x0c | |
564db938f43f jnz 0x564db9380010 ->0 | |
564db938f445 mov ecx, [rax+0x8] | |
564db938f448 cmp dword [rcx+0x18], +0x02 | |
564db938f44c jbe 0x564db9380010 ->0 | |
564db938f452 mov ecx, [rcx+0x8] | |
564db938f455 cmp dword [rcx+0xc], 0xfffeffff | |
564db938f45c jnb 0x564db9380010 ->0 | |
564db938f462 movsd xmm6, [rcx+0x8] | |
564db938f467 cmp dword [rcx+0x14], 0xfffeffff | |
564db938f46e jnb 0x564db9380010 ->0 | |
564db938f474 movsd xmm0, [rcx+0x10] | |
564db938f479 movaps xmm1, xmm6 | |
564db938f47c mulsd xmm1, [0x4167f280] | |
564db938f485 cmp dword [rax+0x4], -0x0c | |
564db938f489 jnz 0x564db9380010 ->0 | |
564db938f48f mov r12d, [rax] | |
564db938f492 cvttsd2si ecx, xmm1 | |
564db938f496 xorps xmm7, xmm7 | |
564db938f499 cvtsi2sd xmm7, ecx | |
564db938f49d ucomisd xmm1, xmm7 | |
564db938f4a1 jnz 0x564db9380010 ->0 | |
564db938f4a7 jpe 0x564db9380010 ->0 | |
564db938f4ad lea edx, [rcx-0x2] | |
564db938f4b0 mov r15d, [r12+0x18] | |
564db938f4b5 cmp edx, r15d | |
564db938f4b8 jnb 0x564db9380010 ->0 | |
564db938f4be mov r14d, [r12+0x8] | |
564db938f4c3 cmp dword [r14+rdx*8+0x4], -0x0c | |
564db938f4c9 jnz 0x564db9380010 ->0 | |
564db938f4cf mov edx, [r14+rdx*8] | |
564db938f4d3 add ecx, -0x01 | |
564db938f4d6 cmp ecx, r15d | |
564db938f4d9 jnb 0x564db9380010 ->0 | |
564db938f4df cmp dword [r14+rcx*8+0x4], -0x0c | |
564db938f4e5 jnz 0x564db9380010 ->0 | |
564db938f4eb mov ecx, [r14+rcx*8] | |
564db938f4ef mov eax, [rax-0x8] | |
564db938f4f2 mov esi, [rax+0x14] | |
564db938f4f5 mov eax, [rsi+0x10] | |
564db938f4f8 mov ebx, eax | |
564db938f4fa sub ebx, [0x406334b4] | |
564db938f501 cmp ebx, +0x38 | |
564db938f504 jbe 0x564db9380010 ->0 | |
564db938f50a cmp dword [rax+0x4], -0x09 | |
564db938f50e jnz 0x564db9380010 ->0 | |
564db938f514 mov ebx, [rdx+0x10] | |
564db938f517 test ebx, ebx | |
564db938f519 jz 0x564db9380010 ->0 | |
564db938f51f cmp dword [rbx+0x1c], +0x01 | |
564db938f523 jnz 0x564db9380010 ->0 | |
564db938f529 mov ebx, [rbx+0x14] | |
564db938f52c mov rsi, 0xfffffffb406355d0 | |
564db938f536 cmp rsi, [rbx+0x20] | |
564db938f53a jnz 0x564db9380010 ->0 | |
564db938f540 cmp dword [rbx+0x1c], -0x09 | |
564db938f544 jnz 0x564db9380010 ->0 | |
564db938f54a cmp dword [rbx+0x18], 0x4063b038 | |
564db938f551 jnz 0x564db9380010 ->0 | |
564db938f557 cmp dword [rdx+0x1c], +0x03 | |
564db938f55b jnz 0x564db9380010 ->0 | |
564db938f561 mov edx, [rdx+0x14] | |
564db938f564 mov rsi, 0xfffffffb4063b0e8 | |
564db938f56e cmp rsi, [rdx+0x38] | |
564db938f572 jnz 0x564db9380010 ->0 | |
564db938f578 cmp dword [rdx+0x34], -0x09 | |
564db938f57c jnz 0x564db9380010 ->0 | |
564db938f582 cmp dword [rdx+0x30], 0x40636040 | |
564db938f589 jnz 0x564db9380010 ->0 | |
564db938f58f cvttsd2si edx, xmm0 | |
564db938f593 add edx, +0x01 | |
564db938f596 cmp edx, [rcx+0x18] | |
564db938f599 jnb 0x564db9380010 ->0 | |
564db938f59f mov ecx, [rcx+0x8] | |
564db938f5a2 cmp dword [rcx+rdx*8+0x4], -0x01 | |
564db938f5a7 jnz 0x564db9380010 ->0 | |
564db938f5ad cmp dword [rax], 0x4063c390 | |
564db938f5b3 jnz 0x564db9380010 ->0 | |
564db938f5b9 addsd xmm6, [0x4167f258] | |
564db938f5c2 movsd [rsp+0x10], xmm6 | |
564db938f5c8 movaps xmm0, xmm6 | |
564db938f5cb mulsd xmm0, [0x4167f280] | |
564db938f5d4 cvttsd2si ebx, xmm0 | |
564db938f5d8 xorps xmm7, xmm7 | |
564db938f5db cvtsi2sd xmm7, ebx | |
564db938f5df ucomisd xmm0, xmm7 | |
564db938f5e3 jnz 0x564db9380010 ->0 | |
564db938f5e9 jpe 0x564db9380010 ->0 | |
564db938f5ef lea eax, [rbx-0x1] | |
564db938f5f2 cmp eax, r15d | |
564db938f5f5 jnb 0x564db9380010 ->0 | |
564db938f5fb cmp dword [r14+rax*8+0x4], -0x0c | |
564db938f601 jnz 0x564db9380010 ->0 | |
564db938f607 mov ebp, [r14+rax*8] | |
564db938f60b mov eax, [0x4063c3c0] | |
564db938f612 mov ecx, eax | |
564db938f614 sub ecx, [0x406334b4] | |
564db938f61b cmp ecx, +0x40 | |
564db938f61e jbe 0x564db9380014 ->1 | |
564db938f624 cmp dword [rax+0x4], -0x09 | |
564db938f628 jnz 0x564db9380014 ->1 | |
564db938f62e mov r13d, [rax] | |
564db938f631 mov esi, 0x3 | |
564db938f636 call 0x564d8f2abe84 ->lj_tab_new1 | |
564db938f63b mov [rsp+0x20], eax | |
564db938f63f movsd xmm6, [rsp+0x10] | |
564db938f645 movsd [rax+0x28], xmm6 | |
564db938f64a cmp ebx, r15d | |
564db938f64d jnb 0x564db9380018 ->2 | |
564db938f653 cmp dword [r14+rbx*8+0x4], 0xfffeffff | |
564db938f65c jnb 0x564db9380018 ->2 | |
564db938f662 movsd xmm7, [r14+rbx*8] | |
564db938f668 movsd [rsp+0x18], xmm7 | |
564db938f66e movsd [rax+0x30], xmm7 | |
564db938f673 cmp r13d, 0x4063c3d0 | |
564db938f67a jnz 0x564db938001c ->3 | |
->LOOP: | |
564db938f680 movsd [rsp+0x10], xmm6 | |
564db938f686 movsd [rsp+0x18], xmm7 | |
564db938f68c mov [rsp+0x20], eax | |
564db938f690 mov edi, ebx | |
564db938f692 mov ebx, ebp | |
564db938f694 mov ebp, edi | |
564db938f696 mov edi, [0x406333d8] | |
564db938f69d cmp edi, [0x406333dc] | |
564db938f6a4 jb 0x564db938f6bd | |
564db938f6a6 mov esi, 0x1 | |
564db938f6ab mov edi, 0x406333b8 | |
564db938f6b0 call 0x564d8f2aa47e ->lj_gc_step_jit | |
564db938f6b5 test eax, eax | |
564db938f6b7 jnz 0x564db9380020 ->4 | |
564db938f6bd mov edi, [0x406334b0] | |
564db938f6c4 mov eax, [rsp+0x20] | |
564db938f6c8 movsd xmm7, [rsp+0x18] | |
564db938f6ce movsd xmm6, [rsp+0x10] | |
564db938f6d4 add ebp, -0x02 | |
564db938f6d7 cmp ebp, r15d | |
564db938f6da jnb 0x564db9380020 ->4 | |
564db938f6e0 cmp dword [r14+rbp*8+0x4], -0x0c | |
564db938f6e6 jnz 0x564db9380020 ->4 | |
564db938f6ec mov esi, [r14+rbp*8] | |
564db938f6f0 mov ebp, [0x4063c400] | |
564db938f6f7 mov edx, ebp | |
564db938f6f9 sub edx, [0x406334b4] | |
564db938f700 cmp edx, +0x38 | |
564db938f703 jbe 0x564db9380020 ->4 | |
564db938f709 cmp dword [rbp+0x4], -0x09 | |
564db938f70d jnz 0x564db9380020 ->4 | |
564db938f713 mov edx, [rsi+0x10] | |
564db938f716 test edx, edx | |
564db938f718 jz 0x564db9380020 ->4 | |
564db938f71e cmp dword [rdx+0x1c], +0x01 | |
564db938f722 jnz 0x564db9380020 ->4 | |
564db938f728 mov edx, [rdx+0x14] | |
564db938f72b mov rcx, 0xfffffffb406355d0 | |
564db938f735 cmp rcx, [rdx+0x20] | |
564db938f739 jnz 0x564db9380020 ->4 | |
564db938f73f cmp dword [rdx+0x1c], -0x09 | |
564db938f743 jnz 0x564db9380020 ->4 | |
564db938f749 cmp dword [rdx+0x18], 0x4063b038 | |
564db938f750 jnz 0x564db9380020 ->4 | |
564db938f756 cmp dword [rsi+0x1c], +0x03 | |
564db938f75a jnz 0x564db9380020 ->4 | |
564db938f760 mov esi, [rsi+0x14] | |
564db938f763 mov rdx, 0xfffffffb4063b0e8 | |
564db938f76d cmp rdx, [rsi+0x38] | |
564db938f771 jnz 0x564db9380020 ->4 | |
564db938f777 cmp dword [rsi+0x34], -0x09 | |
564db938f77b jnz 0x564db9380020 ->4 | |
564db938f781 cmp dword [rsi+0x30], 0x40636040 | |
564db938f788 jnz 0x564db9380020 ->4 | |
564db938f78e cvttsd2si esi, xmm7 | |
564db938f792 add esi, +0x01 | |
564db938f795 cmp esi, [rbx+0x18] | |
564db938f798 jnb 0x564db9380020 ->4 | |
564db938f79e mov ebx, [rbx+0x8] | |
564db938f7a1 cmp dword [rbx+rsi*8+0x4], -0x01 | |
564db938f7a6 jnz 0x564db9380020 ->4 | |
564db938f7ac cmp dword [rbp+0x0], 0x4063c390 | |
564db938f7b3 jnz 0x564db9380020 ->4 | |
564db938f7b9 addsd xmm6, [0x4167f258] | |
564db938f7c2 movsd [rsp+0x8], xmm6 | |
564db938f7c8 movaps xmm7, xmm6 | |
564db938f7cb mulsd xmm7, [0x4167f280] | |
564db938f7d4 cvttsd2si ebx, xmm7 | |
564db938f7d8 xorps xmm6, xmm6 | |
564db938f7db cvtsi2sd xmm6, ebx | |
564db938f7df ucomisd xmm7, xmm6 | |
564db938f7e3 jnz 0x564db9380020 ->4 | |
564db938f7e9 jpe 0x564db9380020 ->4 | |
564db938f7ef lea ebp, [rbx-0x1] | |
564db938f7f2 cmp ebp, r15d | |
564db938f7f5 jnb 0x564db9380020 ->4 | |
564db938f7fb cmp dword [r14+rbp*8+0x4], -0x0c | |
564db938f801 jnz 0x564db9380020 ->4 | |
564db938f807 mov ebp, [r14+rbp*8] | |
564db938f80b mov esi, [0x4063c3c0] | |
564db938f812 sub esi, [0x406334b4] | |
564db938f819 cmp esi, +0x40 | |
564db938f81c jbe 0x564db9380024 ->5 | |
564db938f822 mov esi, 0x3 | |
564db938f827 call 0x564d8f2abe84 ->lj_tab_new1 | |
564db938f82c movsd xmm6, [rsp+0x8] | |
564db938f832 movsd [rax+0x28], xmm6 | |
564db938f837 cmp ebx, r15d | |
564db938f83a jnb 0x564db9380028 ->6 | |
564db938f840 cmp dword [r14+rbx*8+0x4], 0xfffeffff | |
564db938f849 jnb 0x564db9380028 ->6 | |
564db938f84f movsd xmm7, [r14+rbx*8] | |
564db938f855 movsd [rax+0x30], xmm7 | |
564db938f85a jmp 0x564db938f680 ->LOOP | |
---- TRACE 3 stop -> tail-recursion | |
---- TRACE 3 exit 0 | |
000000004064a9e0 0000000041676590 0000000000000001 000000004063b000 | |
00007ffebb887640 0000000040633378 fffffffb4063b0e8 0000000040633378 | |
ffffffffffffffe0 0000000000000400 00007efe6339c1d0 0000000040633fe0 | |
00000000416765c0 00007ffebb887960 00000000416779b8 0000000000000009 | |
+0 +6 +4.6882439715015e-310 +4.6882439715176e-310 | |
+4.6882439712363e-310 +4.6882439715295e-310 +2 +6 | |
+4.68824397149e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 1 exit 5 | |
0000000000000006 0000000000000040 0000000000000028 000000004167d050 | |
00007ffebb887620 0000000000000003 0000000000000038 0000000040633378 | |
000000004063afd8 0000000000000400 00007efe6339c1d0 0000000040633fe0 | |
00000000406349d8 0000000041677950 00000000406372a8 000000004063b8a8 | |
+2 nan +1 +4.5035996273705e+15 | |
+4 +16 +2 +3 | |
+4.68824397149e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 1 exit 0 | |
000000004064a9e0 0000000041676590 0000000041677950 000000004063b000 | |
00007ffebb887620 0000000000000004 fffffffb4063b0e8 0000000040633378 | |
000000004063afd8 000000000000808b 00007efe6339c1d0 0000000040633fe0 | |
0000564d8f272610 00007ffebb887960 0000000040633fe0 000000004063d898 | |
+3 +6 +1 +4.5035996273705e+15 | |
+4 +16 +2 +6 | |
+4.68824397149e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 3 exit 0 | |
0000000000000008 0000000041676590 0000000000000004 0000000000000009 | |
00007ffebb887640 0000000040633378 fffffffb4063b0e8 0000000040633378 | |
00007efe631b2b00 000000000000808b 00007efe6339c1d0 0000000040633fe0 | |
00000000416765c0 00007ffebb887960 00000000416779b8 0000000000000009 | |
+9 +6 +1 +4.5035996273705e+15 | |
+4 +16 +3 +9 | |
+4.68824397149e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 2 exit 2 | |
0000000041682018 0000000000000068 000000004064aa98 000000004063b63c | |
00007ffebb887660 000000004056e7f8 0000000000000060 0000000040633010 | |
000000000000000a 00007efe631b2b80 00007efe6339c1d0 0000000000000246 | |
0000564d8f272610 00000000416774c8 0000000040636108 000000004063c350 | |
+0 +2 +1 +4.5035996273705e+15 | |
+4 +16 +3 +9 | |
+4.68824397149e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 2 exit 2 | |
000000004167aec0 0000000000000068 000000004064aa98 000000004063b63c | |
00007ffebb887660 0000000040566f10 0000000000000060 0000000040633010 | |
00007efe631b2b00 0000000000008008 00007efe6339c1d0 0000000000000246 | |
0000564d8f272610 00000000416853b0 0000000040636108 000000004063c350 | |
+0 +2 +1 +4.5035996273705e+15 | |
+4 +16 +3 +9 | |
+4.68824397149e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 1 exit 5 | |
0000000000000002 0000000000000040 0000000000000008 00000000405653e0 | |
00007ffebb887620 0000000000000002 0000000000000038 0000000040633378 | |
000000004063afd8 0000000000008008 00007efe6339c1d0 0000000000000246 | |
00000000406349d8 00000000416774c8 00000000406372a8 000000004063b7a0 | |
+1 +3 +1 +4.5035996273705e+15 | |
+4 +16 +3 +2 | |
+4.68824397149e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 1 exit 3 | |
0000000000000002 0000000000000001 fffffffb406355d0 00000000405653e0 | |
00007ffebb887620 0000000000000004 fffffffb4063b0e8 0000000040633378 | |
000000004063afd8 000000000000808b 00007efe6339c1d0 0000000000000246 | |
00000000406349d8 00000000416774c8 000000004055cec8 000000004056e818 | |
+3 nan +1 +4.5035996273705e+15 | |
+4 +16 +3 +3 | |
+4.68824397149e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 3 exit 4 | |
000000004056d370 fffffffb406355d0 fffffffb4063b0e8 0000000040566f30 | |
00007ffebb887640 000000004064a9e0 0000000000000001 0000000040633378 | |
00007efe631b2b00 0000000000008041 00007efe6339c1d0 0000000000000246 | |
0000000040ccf918 000000004063c3d0 0000000041683f48 0000000000000009 | |
+6 +3 +1 +4.5035996273705e+15 | |
+4 +16 +2 +0 | |
+4.68824397149e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 1 exit 5 | |
0000000000000006 0000000000000040 0000000000000028 00000000405653e0 | |
00007ffebb887620 0000000000000003 0000000000000038 0000000040633378 | |
000000004063afd8 000000000000803f 00007efe6339c1d0 0000000000000246 | |
00000000406349d8 00000000416853b0 00000000406372a8 000000004063b8a8 | |
+2 nan +1 +4.5035996273705e+15 | |
+4 +16 +2 +3 | |
+4.68824397149e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 1 exit 0 | |
000000004064a9e0 0000000040566f30 00000000416853b0 000000004063b000 | |
00007ffebb887620 0000000000000004 fffffffb4063b0e8 0000000040633378 | |
000000004063afd8 000000000000808b 00007efe6339c1d0 0000000000000246 | |
0000564d8f272610 00007ffebb887960 0000000040633fe0 000000004063d898 | |
+3 +6 +1 +4.5035996273705e+15 | |
+4 +16 +2 +6 | |
+4.68824397149e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 3 exit 0 | |
0000000000000008 0000000040566f30 0000000000000004 0000000000000009 | |
00007ffebb887640 0000000040633378 fffffffb4063b0e8 0000000040633378 | |
00007efe631b2b00 000000000000808b 00007efe6339c1d0 0000000000000246 | |
0000000040ccf918 00007ffebb887960 0000000041683f48 0000000000000009 | |
+9 +6 +1 +4.5035996273705e+15 | |
+4 +16 +3 +9 | |
+4.68824397149e-310 +0 +0 -1.1429096284595 | |
+0 +0 +0 +0 | |
---- TRACE 4 start 4252.lua:51 | |
0033 RET0 0 1 | |
---- TRACE 4 IR | |
.... SNAP #0 [ ---- ] | |
0001 int SLOAD #1 CI | |
---- TRACE 4 abort 4252.lua:62 -- leaving loop in root trace | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
----- luafun.lua --------------------------------------------------------------- | |
local iterator_mt = { | |
-- usually called by for-in loop | |
__call = function(self, param, state) return self.gen(param, state) end, | |
} | |
local wrap = function(gen, param, state) | |
return setmetatable({ | |
gen = gen, | |
param = param, | |
state = state | |
}, iterator_mt), param, state | |
end | |
-- call each other | |
local chain_gen_r1, chain_gen_r2 | |
chain_gen_r2 = function(param, state, state_x, ...) | |
if state_x ~= nil then return { state[1], state_x }, ... end | |
local i = state[1] + 1 | |
if param[3 * i - 1] == nil then return nil end | |
return chain_gen_r1(param, { i, param[3 * i] }) | |
end | |
chain_gen_r1 = function(param, state) | |
local i, state_x = state[1], state[2] | |
local gen_x, param_x = param[3 * i - 2], param[3 * i - 1] | |
return chain_gen_r2(param, state, gen_x(param_x, state_x)) | |
end | |
local chain = function(...) | |
local param = { } | |
for i = 1, select('#', ...) do | |
param[3 * i - 2], param[3 * i - 1], param[3 * i] -- gen, param, state | |
= wrap(ipairs(select(i, ...))) | |
end | |
return wrap(chain_gen_r1, param, { 1, param[3] }) | |
end | |
----- repro -------------------------------------------------------------------- | |
local sink = arg[1] and '-sink' or '+sink' | |
print(('%s %s %s'):format(('-'):rep(8), sink, ('-'):rep(60))) | |
require('jit.dump').start('+tbisrmXaT', ('4252%s.dump'):format(sink)) | |
jit.opt.start(3, 'hotloop=3', sink) | |
xpcall(function() | |
for _ = 1, 3 do | |
local gen_x, param_x, state_x = chain({ 'a', 'b', 'c' }, { 'q', 'w', 'e' }) | |
local tab = {} | |
while true do | |
local val | |
state_x, val = gen_x(param_x, state_x) | |
if state_x == nil then break end | |
table.insert(tab, val) | |
end | |
print(unpack(tab)) | |
end | |
end, function(err) | |
print(debug.traceback(tostring(err))) | |
os.exit(1) | |
end) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment