Skip to content

Instantly share code, notes, and snippets.

@igormunkin
Last active May 23, 2020 13:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save igormunkin/18cb6afe5a495bce31f772d453f3117e to your computer and use it in GitHub Desktop.
Save igormunkin/18cb6afe5a495bce31f772d453f3117e to your computer and use it in GitHub Desktop.
Trace dumps and reproducer for LuaJIT #548
---- 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
---- 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
----- 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