Created
September 1, 2014 16:24
-
-
Save wingo/745dbb1b4909dcf75b16 to your computer and use it in GitHub Desktop.
test
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
<style type="text/css"> | |
background { background: #ffffff; color: #000000; } | |
pre.ljdump { | |
font-size: 10pt; | |
background: #f0f4ff; | |
color: #000000; | |
border: 1px solid #bfcfff; | |
padding: 0.5em; | |
margin-left: 2em; | |
margin-right: 2em; | |
} | |
span.irt_str { color: #00a000; } | |
span.irt_thr, span.irt_fun { color: #404040; font-weight: bold; } | |
span.irt_tab { color: #c00000; } | |
span.irt_udt, span.irt_lud { color: #00c0c0; } | |
span.irt_num { color: #4040c0; } | |
span.irt_int, span.irt_i8, span.irt_u8, span.irt_i16, span.irt_u16 { color: #b040b0; } | |
</style> | |
<pre class="ljdump"> | |
---- TRACE 1 start utils.lua:39 | |
0006 GGET 8 1 ; "table" | |
0007 TGETS 8 8 2 ; "insert" | |
0008 MOV 9 2 | |
0009 MOV 10 7 | |
0010 CALL 8 1 3 | |
0000 . FUNCC ; table.insert | |
0011 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0012 ITERL 6 => 0006 | |
---- TRACE 1 IR | |
0001 <span class="irt_fun">fun</span> SLOAD #0 R | |
0002 <span class="irt_tab">tab</span> FLOAD 0001 func.env | |
0003 <span class="irt_p32">p32</span> HREF 0002 <span class="irt_str">"table"</span> | |
0004 > <span class="irt_p32">p32</span> EQ 0003 <span class="irt_p32">[0x405d8420]</span> | |
0005 <span class="irt_tab">tab</span> FLOAD 0002 tab.meta | |
0006 > <span class="irt_tab">tab</span> NE 0005 <span class="irt_tab">[NULL]</span> | |
0007 <span class="irt_int">int</span> FLOAD 0005 tab.hmask | |
0008 > <span class="irt_int">int</span> EQ 0007 <span class="irt_int">+1 </span> | |
0009 <span class="irt_p32">p32</span> FLOAD 0005 tab.node | |
0010 > <span class="irt_p32">p32</span> HREFK 0009 <span class="irt_str">"__index"</span> @1 | |
0011 > <span class="irt_tab">tab</span> HLOAD 0010 | |
0012 <span class="irt_int">int</span> FLOAD 0011 tab.hmask | |
0013 > <span class="irt_int">int</span> EQ 0012 <span class="irt_int">+63 </span> | |
0014 <span class="irt_p32">p32</span> FLOAD 0011 tab.node | |
0015 > <span class="irt_p32">p32</span> HREFK 0014 <span class="irt_str">"table"</span> @47 | |
0016 > <span class="irt_tab">tab</span> HLOAD 0015 | |
0017 <span class="irt_int">int</span> FLOAD 0016 tab.hmask | |
0018 > <span class="irt_int">int</span> EQ 0017 <span class="irt_int">+7 </span> | |
0019 <span class="irt_p32">p32</span> FLOAD 0016 tab.node | |
0020 > <span class="irt_p32">p32</span> HREFK 0019 <span class="irt_str">"insert"</span> @7 | |
0021 > <span class="irt_fun">fun</span> HLOAD 0020 | |
0022 > <span class="irt_tab">tab</span> SLOAD #3 T | |
0023 > <span class="irt_tab">tab</span> SLOAD #8 T | |
0024 > <span class="irt_fun">fun</span> EQ 0021 <span class="irt_fun">table.insert</span> | |
0025 <span class="irt_int">int</span> CALLL lj_tab_len (0022) | |
0026 <span class="irt_int">int</span> ADD 0025 <span class="irt_int">+1 </span> | |
0027 <span class="irt_int">int</span> FLOAD 0022 tab.asize | |
0028 > <span class="irt_int">int</span> ULE 0027 0026 | |
0029 <span class="irt_int">int</span> FLOAD 0022 tab.hmask | |
0030 > <span class="irt_int">int</span> EQ 0029 <span class="irt_int">+0 </span> | |
0031 <span class="irt_num">num</span> CONV 0026 <span class="irt_num">num</span>.<span class="irt_int">int</span> | |
0032 <span class="irt_p32">p32</span> NEWREF 0022 0031 | |
0033 <span class="irt_tab">tab</span> HSTORE 0032 0023 | |
0034 <span class="irt_nil">nil</span> TBAR 0022 | |
0035 > <span class="irt_fun">fun</span> SLOAD #4 T | |
0036 > <span class="irt_tab">tab</span> SLOAD #5 T | |
0037 > <span class="irt_num">num</span> SLOAD #6 T | |
0038 > <span class="irt_fun">fun</span> EQ 0035 <span class="irt_fun">ipairs_aux</span> | |
0039 <span class="irt_int">int</span> CONV 0037 <span class="irt_int">int</span>.<span class="irt_num">num</span> | |
0040 + <span class="irt_int">int</span> ADD 0039 <span class="irt_int">+1 </span> | |
0041 <span class="irt_int">int</span> FLOAD 0036 tab.asize | |
0042 > <span class="irt_int">int</span> ABC 0041 0040 | |
0043 <span class="irt_p32">p32</span> FLOAD 0036 tab.array | |
0044 <span class="irt_p32">p32</span> AREF 0043 0040 | |
0045 >+ <span class="irt_tab">tab</span> ALOAD 0044 | |
0046 ------ LOOP ------------ | |
0047 <span class="irt_p32">p32</span> HREF 0002 <span class="irt_str">"table"</span> | |
0048 > <span class="irt_p32">p32</span> EQ 0047 <span class="irt_p32">[0x405d8420]</span> | |
0049 <span class="irt_int">int</span> FLOAD 0005 tab.hmask | |
0050 > <span class="irt_int">int</span> EQ 0049 <span class="irt_int">+1 </span> | |
0051 <span class="irt_p32">p32</span> FLOAD 0005 tab.node | |
0052 > <span class="irt_p32">p32</span> HREFK 0051 <span class="irt_str">"__index"</span> @1 | |
0053 > <span class="irt_tab">tab</span> HLOAD 0052 | |
0054 <span class="irt_int">int</span> FLOAD 0053 tab.hmask | |
0055 > <span class="irt_int">int</span> EQ 0054 <span class="irt_int">+63 </span> | |
0056 <span class="irt_p32">p32</span> FLOAD 0053 tab.node | |
0057 > <span class="irt_p32">p32</span> HREFK 0056 <span class="irt_str">"table"</span> @47 | |
0058 > <span class="irt_tab">tab</span> HLOAD 0057 | |
0059 <span class="irt_int">int</span> FLOAD 0058 tab.hmask | |
0060 > <span class="irt_int">int</span> EQ 0059 <span class="irt_int">+7 </span> | |
0061 <span class="irt_p32">p32</span> FLOAD 0058 tab.node | |
0062 > <span class="irt_p32">p32</span> HREFK 0061 <span class="irt_str">"insert"</span> @7 | |
0063 > <span class="irt_fun">fun</span> HLOAD 0062 | |
0064 > <span class="irt_fun">fun</span> EQ 0063 <span class="irt_fun">table.insert</span> | |
0065 <span class="irt_int">int</span> CALLL lj_tab_len (0022) | |
0066 <span class="irt_int">int</span> ADD 0065 <span class="irt_int">+1 </span> | |
0067 <span class="irt_int">int</span> FLOAD 0022 tab.asize | |
0068 > <span class="irt_int">int</span> ULE 0067 0066 | |
0069 <span class="irt_int">int</span> FLOAD 0022 tab.hmask | |
0070 > <span class="irt_int">int</span> EQ 0069 <span class="irt_int">+0 </span> | |
0071 <span class="irt_num">num</span> CONV 0066 <span class="irt_num">num</span>.<span class="irt_int">int</span> | |
0072 <span class="irt_p32">p32</span> NEWREF 0022 0071 | |
0073 <span class="irt_tab">tab</span> HSTORE 0072 0045 | |
0074 <span class="irt_num">num</span> CONV 0040 <span class="irt_num">num</span>.<span class="irt_int">int</span> | |
0075 + <span class="irt_int">int</span> ADD 0040 <span class="irt_int">+1 </span> | |
0076 <span class="irt_int">int</span> FLOAD 0036 tab.asize | |
0077 > <span class="irt_int">int</span> ABC 0076 0075 | |
0078 <span class="irt_p32">p32</span> FLOAD 0036 tab.array | |
0079 <span class="irt_p32">p32</span> AREF 0078 0075 | |
0080 >+ <span class="irt_tab">tab</span> ALOAD 0079 | |
0081 <span class="irt_tab">tab</span> PHI 0045 0080 | |
0082 <span class="irt_int">int</span> PHI 0040 0075 | |
---- TRACE 1 mcode 831 | |
0bcafcc1 add rsp, -0x20 | |
0bcafcc5 mov dword [0x405d84a0], 0x1 | |
0bcafcd0 mov eax, [rdx-0x8] | |
0bcafcd3 mov eax, [rax+0x8] | |
0bcafcd6 mov [rsp+0x14], eax | |
0bcafcda mov ecx, [rax+0x1c] | |
0bcafcdd and ecx, 0x7230fd67 | |
0bcafce3 lea ecx, [rcx+rcx*2] | |
0bcafce6 shl ecx, 0x03 | |
0bcafce9 add ecx, [rax+0x14] | |
0bcafcec cmp dword [rcx+0xc], -0x05 | |
0bcafcf0 jnz 0x0bcafcff | |
0bcafcf2 cmp dword [rcx+0x8], 0x405dae40 | |
0bcafcf9 jz 0x0bca0010 ->0 | |
0bcafcff mov ecx, [rcx+0x10] | |
0bcafd02 test ecx, ecx | |
0bcafd04 jnz 0x0bcafcec | |
0bcafd06 mov ecx, 0x405d8420 | |
0bcafd0b mov r13d, [rax+0x10] | |
0bcafd0f test r13d, r13d | |
0bcafd12 jz 0x0bca0010 ->0 | |
0bcafd18 cmp dword [r13+0x1c], +0x01 | |
0bcafd1d jnz 0x0bca0010 ->0 | |
0bcafd23 mov eax, [r13+0x14] | |
0bcafd27 mov rdi, 0xfffffffb405da430 | |
0bcafd31 cmp rdi, [rax+0x20] | |
0bcafd35 jnz 0x0bca0010 ->0 | |
0bcafd3b cmp dword [rax+0x1c], -0x0c | |
0bcafd3f jnz 0x0bca0010 ->0 | |
0bcafd45 mov eax, [rax+0x18] | |
0bcafd48 cmp dword [rax+0x1c], +0x3f | |
0bcafd4c jnz 0x0bca0010 ->0 | |
0bcafd52 mov eax, [rax+0x14] | |
0bcafd55 mov rdi, 0xfffffffb405dae40 | |
0bcafd5f cmp rdi, [rax+0x470] | |
0bcafd66 jnz 0x0bca0010 ->0 | |
0bcafd6c cmp dword [rax+0x46c], -0x0c | |
0bcafd73 jnz 0x0bca0010 ->0 | |
0bcafd79 mov eax, [rax+0x468] | |
0bcafd7f cmp dword [rax+0x1c], +0x07 | |
0bcafd83 jnz 0x0bca0010 ->0 | |
0bcafd89 mov eax, [rax+0x14] | |
0bcafd8c mov rdi, 0xfffffffb405dc4f0 | |
0bcafd96 cmp rdi, [rax+0xb0] | |
0bcafd9d jnz 0x0bca0010 ->0 | |
0bcafda3 cmp dword [rax+0xac], -0x09 | |
0bcafdaa jnz 0x0bca0010 ->0 | |
0bcafdb0 cmp dword [rdx+0x14], -0x0c | |
0bcafdb4 jnz 0x0bca0010 ->0 | |
0bcafdba mov edi, [rdx+0x10] | |
0bcafdbd mov [rsp+0x10], edi | |
0bcafdc1 cmp dword [rdx+0x3c], -0x0c | |
0bcafdc5 jnz 0x0bca0010 ->0 | |
0bcafdcb mov esi, [rdx+0x38] | |
0bcafdce mov [rsp+0x18], esi | |
0bcafdd2 cmp dword [rax+0xa8], 0x405dc4c8 | |
0bcafddc jnz 0x0bca0010 ->0 | |
0bcafde2 call 0x00420530 ->lj_tab_len | |
0bcafde7 mov edi, [0x405d84ac] | |
0bcafdee mov esi, [rsp+0x10] | |
0bcafdf2 add eax, +0x01 | |
0bcafdf5 cmp eax, [rsi+0x18] | |
0bcafdf8 jb 0x0bca0010 ->0 | |
0bcafdfe cmp dword [rsi+0x1c], +0x00 | |
0bcafe02 jnz 0x0bca0010 ->0 | |
0bcafe08 xorps xmm7, xmm7 | |
0bcafe0b cvtsi2sd xmm7, eax | |
0bcafe0f movsd [rsp+0x20], xmm7 | |
0bcafe15 lea rdx, [rsp+0x20] | |
0bcafe1a call 0x004200e0 ->lj_tab_newkey | |
0bcafe1f mov ecx, eax | |
0bcafe21 mov edi, [rsp+0x10] | |
0bcafe25 mov edx, [0x405d84b0] | |
0bcafe2c mov eax, [rsp+0x18] | |
0bcafe30 mov dword [rcx+0x4], 0xfffffff4 | |
0bcafe37 mov [rcx], eax | |
0bcafe39 test byte [rdi+0x4], 0x4 | |
0bcafe3d jz 0x0bcafe54 | |
0bcafe3f and byte [rdi+0x4], 0xfb | |
0bcafe43 mov esi, [0x405d83f4] | |
0bcafe4a mov [0x405d83f4], edi | |
0bcafe51 mov [rdi+0xc], esi | |
0bcafe54 cmp dword [rdx+0x1c], -0x09 | |
0bcafe58 jnz 0x0bca0014 ->1 | |
0bcafe5e cmp dword [rdx+0x24], -0x0c | |
0bcafe62 jnz 0x0bca0014 ->1 | |
0bcafe68 mov r12d, [rdx+0x20] | |
0bcafe6c cmp dword [rdx+0x2c], 0xfffeffff | |
0bcafe73 jnb 0x0bca0014 ->1 | |
0bcafe79 cmp dword [rdx+0x18], 0x405dafd0 | |
0bcafe80 jnz 0x0bca0014 ->1 | |
0bcafe86 cvtsd2si ebp, [rdx+0x28] | |
0bcafe8b add ebp, +0x01 | |
0bcafe8e cmp ebp, [r12+0x18] | |
0bcafe93 jnb 0x0bca0014 ->1 | |
0bcafe99 mov eax, [r12+0x8] | |
0bcafe9e cmp dword [rax+rbp*8+0x4], -0x0c | |
0bcafea3 jnz 0x0bca0014 ->1 | |
0bcafea9 mov ebx, [rax+rbp*8] | |
->LOOP: | |
0bcafeac mov edi, [rsp+0x10] | |
0bcafeb0 mov eax, [rsp+0x14] | |
0bcafeb4 mov r14d, ebx | |
0bcafeb7 mov ebx, [rax+0x1c] | |
0bcafeba and ebx, 0x7230fd67 | |
0bcafec0 lea ebx, [rbx+rbx*2] | |
0bcafec3 shl ebx, 0x03 | |
0bcafec6 add ebx, [rax+0x14] | |
0bcafec9 cmp dword [rbx+0xc], -0x05 | |
0bcafecd jnz 0x0bcafedc | |
0bcafecf cmp dword [rbx+0x8], 0x405dae40 | |
0bcafed6 jz 0x0bca0018 ->2 | |
0bcafedc mov ebx, [rbx+0x10] | |
0bcafedf test ebx, ebx | |
0bcafee1 jnz 0x0bcafec9 | |
0bcafee3 mov ebx, 0x405d8420 | |
0bcafee8 cmp dword [r13+0x1c], +0x01 | |
0bcafeed jnz 0x0bca0018 ->2 | |
0bcafef3 mov ebx, [r13+0x14] | |
0bcafef7 mov rsi, 0xfffffffb405da430 | |
0bcaff01 cmp rsi, [rbx+0x20] | |
0bcaff05 jnz 0x0bca0018 ->2 | |
0bcaff0b cmp dword [rbx+0x1c], -0x0c | |
0bcaff0f jnz 0x0bca0018 ->2 | |
0bcaff15 mov ebx, [rbx+0x18] | |
0bcaff18 cmp dword [rbx+0x1c], +0x3f | |
0bcaff1c jnz 0x0bca0018 ->2 | |
0bcaff22 mov ebx, [rbx+0x14] | |
0bcaff25 mov rsi, 0xfffffffb405dae40 | |
0bcaff2f cmp rsi, [rbx+0x470] | |
0bcaff36 jnz 0x0bca0018 ->2 | |
0bcaff3c cmp dword [rbx+0x46c], -0x0c | |
0bcaff43 jnz 0x0bca0018 ->2 | |
0bcaff49 mov ebx, [rbx+0x468] | |
0bcaff4f cmp dword [rbx+0x1c], +0x07 | |
0bcaff53 jnz 0x0bca0018 ->2 | |
0bcaff59 mov ebx, [rbx+0x14] | |
0bcaff5c mov rsi, 0xfffffffb405dc4f0 | |
0bcaff66 cmp rsi, [rbx+0xb0] | |
0bcaff6d jnz 0x0bca0018 ->2 | |
0bcaff73 cmp dword [rbx+0xac], -0x09 | |
0bcaff7a jnz 0x0bca0018 ->2 | |
0bcaff80 cmp dword [rbx+0xa8], 0x405dc4c8 | |
0bcaff8a jnz 0x0bca0018 ->2 | |
0bcaff90 call 0x00420530 ->lj_tab_len | |
0bcaff95 mov edi, [0x405d84ac] | |
0bcaff9c mov esi, [rsp+0x10] | |
0bcaffa0 add eax, +0x01 | |
0bcaffa3 cmp eax, [rsi+0x18] | |
0bcaffa6 jb 0x0bca0018 ->2 | |
0bcaffac cmp dword [rsi+0x1c], +0x00 | |
0bcaffb0 jnz 0x0bca0018 ->2 | |
0bcaffb6 xorps xmm7, xmm7 | |
0bcaffb9 cvtsi2sd xmm7, eax | |
0bcaffbd movsd [rsp+0x8], xmm7 | |
0bcaffc3 lea rdx, [rsp+0x8] | |
0bcaffc8 call 0x004200e0 ->lj_tab_newkey | |
0bcaffcd mov dword [rax+0x4], 0xfffffff4 | |
0bcaffd4 mov [rax], r14d | |
0bcaffd7 mov r15d, ebp | |
0bcaffda add ebp, +0x01 | |
0bcaffdd cmp ebp, [r12+0x18] | |
0bcaffe2 jnb 0x0bca001c ->3 | |
0bcaffe8 mov ebx, [r12+0x8] | |
0bcaffed cmp dword [rbx+rbp*8+0x4], -0x0c | |
0bcafff2 jnz 0x0bca001c ->3 | |
0bcafff8 mov ebx, [rbx+rbp*8] | |
0bcafffb jmp 0x0bcafeac ->LOOP | |
---- TRACE 1 stop -> loop | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 2 start utils.lua:40 | |
0017 GGET 8 1 ; "table" | |
0018 TGETS 8 8 2 ; "insert" | |
0019 MOV 9 2 | |
0020 MOV 10 7 | |
0021 CALL 8 1 3 | |
0000 . FUNCC ; table.insert | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 ITERL 6 => 0017 | |
---- TRACE 2 abort utils.lua:41 -- leaving loop in root trace | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 2 start 1/2 utils.lua:39 | |
0006 GGET 8 1 ; "table" | |
0007 TGETS 8 8 2 ; "insert" | |
0008 MOV 9 2 | |
0009 MOV 10 7 | |
0010 CALL 8 1 3 | |
0000 . FUNCC ; table.insert | |
0011 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0012 JITERL 6 1 | |
0013 GGET 3 0 ; "ipairs" | |
0014 MOV 4 1 | |
0015 CALL 3 4 2 | |
0000 . FUNCC ; ipairs | |
0016 JMP 6 => 0022 | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 ITERL 6 => 0017 | |
0017 GGET 8 1 ; "table" | |
0018 TGETS 8 8 2 ; "insert" | |
0019 MOV 9 2 | |
0020 MOV 10 7 | |
0021 CALL 8 1 3 | |
0000 . FUNCC ; table.insert | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 ITERL 6 => 0017 | |
0017 GGET 8 1 ; "table" | |
0018 TGETS 8 8 2 ; "insert" | |
0019 MOV 9 2 | |
0020 MOV 10 7 | |
0021 CALL 8 1 3 | |
0000 . FUNCC ; table.insert | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 ITERL 6 => 0017 | |
0024 RET1 2 2 | |
0059 UCLO 0 => 0060 | |
---- TRACE 2 abort expand.lua:615 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 2 start 1/1 utils.lua:39 | |
0011 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0012 JITERL 6 1 | |
0013 GGET 3 0 ; "ipairs" | |
0014 MOV 4 1 | |
0015 CALL 3 4 2 | |
0000 . FUNCC ; ipairs | |
0016 JMP 6 => 0022 | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 ITERL 6 => 0017 | |
0017 GGET 8 1 ; "table" | |
0018 TGETS 8 8 2 ; "insert" | |
0019 MOV 9 2 | |
0020 MOV 10 7 | |
0021 CALL 8 1 3 | |
0000 . FUNCC ; table.insert | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 ITERL 6 => 0017 | |
0024 RET1 2 2 | |
0007 UGET 3 1 ; assert_expr | |
0008 UGET 4 3 ; has_ether_protocol_min_payload | |
0009 MOV 5 0 | |
0010 CALL 4 0 2 | |
0000 . FUNCF 5 ; expand.lua:94 | |
0001 . UGET 1 0 ; has_proto_min_payload | |
0002 . UGET 2 1 ; ether_min_payloads | |
0003 . MOV 3 0 | |
0004 . KSTR 4 0 ; "[ether*]" | |
0005 . CALLT 1 4 | |
0000 . FUNCF 7 ; expand.lua:86 | |
0001 . GGET 3 0 ; "assert" | |
0002 . TGETV 4 0 1 | |
0003 . CALL 3 2 2 | |
0000 . . FUNCC ; assert | |
0004 . TDUP 4 1 | |
0005 . TDUP 5 2 | |
0006 . TSETB 2 5 1 | |
0007 . SUBVN 6 3 0 ; 1 | |
0008 . TSETB 6 5 2 | |
0009 . TSETB 5 4 3 | |
0010 . RET1 4 2 | |
0011 CALLM 3 0 0 | |
0000 . FUNCF 6 ; expand.lua:565 | |
0001 . UGET 1 0 ; expand_relop | |
0002 . MOV 2 0 | |
0003 . UGET 3 1 ; dlt | |
0004 . CALL 1 3 3 | |
0000 . . FUNCF 10 ; expand.lua:664 | |
0001 . . UGET 2 0 ; expand_arith | |
0002 . . TGETB 3 0 2 | |
0003 . . MOV 4 1 | |
0004 . . CALL 2 3 3 | |
0000 . . . FUNCF 14 ; expand.lua:632 | |
0001 . . . GGET 2 0 ; "assert" | |
0002 . . . MOV 3 0 | |
0003 . . . CALL 2 1 2 | |
0000 . . . . FUNCC ; assert | |
0004 . . . GGET 2 1 ; "type" | |
0005 . . . MOV 3 0 | |
0006 . . . CALL 2 2 2 | |
0000 . . . . FUNCC ; type | |
0007 . . . ISEQS 2 2 ; "number" | |
0008 . . . JMP 2 => 0011 | |
0011 . . . MOV 2 0 | |
0012 . . . TNEW 3 0 | |
0013 . . . RET 2 3 | |
0005 . . UGET 4 0 ; expand_arith | |
0006 . . TGETB 5 0 3 | |
0007 . . MOV 6 1 | |
0008 . . CALL 4 3 3 | |
0000 . . . FUNCF 14 ; expand.lua:632 | |
0001 . . . GGET 2 0 ; "assert" | |
0002 . . . MOV 3 0 | |
0003 . . . CALL 2 1 2 | |
0000 . . . . FUNCC ; assert | |
0004 . . . GGET 2 1 ; "type" | |
0005 . . . MOV 3 0 | |
0006 . . . CALL 2 2 2 | |
0000 . . . . FUNCC ; type | |
0007 . . . ISEQS 2 2 ; "number" | |
0008 . . . JMP 2 => 0011 | |
0009 . . . ISNES 0 3 ; "len" | |
0010 . . . JMP 2 => 0014 | |
0014 . . . TGETB 2 0 1 | |
0015 . . . UGET 3 0 ; binops | |
0016 . . . TGETV 3 3 2 | |
0017 . . . ISF 3 | |
0018 . . . JMP 4 => 0048 | |
0048 . . . GGET 3 0 ; "assert" | |
0049 . . . ISNES 2 7 ; "[]" | |
0050 . . . JMP 4 => 0053 | |
0053 . . . KPRI 4 2 | |
0054 . . . KSTR 5 8 ; "expr has already been expanded?" | |
0055 . . . CALL 3 1 3 | |
0000 . . . . FUNCC ; assert | |
0056 . . . GGET 3 0 ; "assert" | |
0057 . . . MOV 5 2 | |
0058 . . . TGETS 4 2 9 ; "match" | |
0059 . . . KSTR 6 10 ; "^%[(.+)%]$" | |
0060 . . . CALL 4 2 3 | |
0000 . . . . FUNCC ; string.match | |
---- TRACE 2 abort expand.lua:651 -- NYI: FastFunc string.match | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 2 start 1/1 utils.lua:39 | |
0011 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0012 JITERL 6 1 | |
0013 GGET 3 0 ; "ipairs" | |
0014 MOV 4 1 | |
0015 CALL 3 4 2 | |
0000 . FUNCC ; ipairs | |
0016 JMP 6 => 0022 | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 ITERL 6 => 0017 | |
0017 GGET 8 1 ; "table" | |
0018 TGETS 8 8 2 ; "insert" | |
0019 MOV 9 2 | |
0020 MOV 10 7 | |
0021 CALL 8 1 3 | |
0000 . FUNCC ; table.insert | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 ITERL 6 => 0017 | |
0024 RET1 2 2 | |
0012 CALLMT 1 1 | |
0000 FUNCF 11 ; utils.lua:37 | |
0001 TNEW 2 0 | |
0002 GGET 3 0 ; "ipairs" | |
0003 MOV 4 0 | |
0004 CALL 3 4 2 | |
0000 . FUNCC ; ipairs | |
0005 JMP 6 => 0011 | |
0011 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0012 JITERL 6 1 | |
---- TRACE 2 IR | |
0001 > <span class="irt_fun">fun</span> SLOAD #4 T | |
0002 > <span class="irt_tab">tab</span> SLOAD #5 T | |
0003 > <span class="irt_num">num</span> SLOAD #6 T | |
0004 > <span class="irt_fun">fun</span> EQ 0001 <span class="irt_fun">ipairs_aux</span> | |
0005 <span class="irt_int">int</span> CONV 0003 <span class="irt_int">int</span>.<span class="irt_num">num</span> | |
0006 <span class="irt_int">int</span> ADD 0005 <span class="irt_int">+1 </span> | |
0007 <span class="irt_int">int</span> FLOAD 0002 tab.asize | |
0008 > <span class="irt_int">int</span> ABC 0007 0006 | |
0009 <span class="irt_p32">p32</span> FLOAD 0002 tab.array | |
0010 <span class="irt_p32">p32</span> AREF 0009 0006 | |
0011 > <span class="irt_nil">nil</span> ALOAD 0010 | |
0012 <span class="irt_fun">fun</span> SLOAD #0 R | |
0013 <span class="irt_tab">tab</span> FLOAD 0012 func.env | |
0014 <span class="irt_p32">p32</span> HREF 0013 <span class="irt_str">"ipairs"</span> | |
0015 > <span class="irt_p32">p32</span> EQ 0014 <span class="irt_p32">[0x405d8420]</span> | |
0016 <span class="irt_tab">tab</span> FLOAD 0013 tab.meta | |
0017 > <span class="irt_tab">tab</span> NE 0016 <span class="irt_tab">[NULL]</span> | |
0018 <span class="irt_int">int</span> FLOAD 0016 tab.hmask | |
0019 > <span class="irt_int">int</span> EQ 0018 <span class="irt_int">+1 </span> | |
0020 <span class="irt_p32">p32</span> FLOAD 0016 tab.node | |
0021 > <span class="irt_p32">p32</span> HREFK 0020 <span class="irt_str">"__index"</span> @1 | |
0022 > <span class="irt_tab">tab</span> HLOAD 0021 | |
0023 <span class="irt_int">int</span> FLOAD 0022 tab.hmask | |
0024 > <span class="irt_int">int</span> EQ 0023 <span class="irt_int">+63 </span> | |
0025 <span class="irt_p32">p32</span> FLOAD 0022 tab.node | |
0026 > <span class="irt_p32">p32</span> HREFK 0025 <span class="irt_str">"ipairs"</span> @18 | |
0027 > <span class="irt_fun">fun</span> HLOAD 0026 | |
0028 > <span class="irt_tab">tab</span> SLOAD #2 T | |
0029 > <span class="irt_fun">fun</span> EQ 0027 <span class="irt_fun">ipairs</span> | |
0030 <span class="irt_int">int</span> FLOAD 0028 tab.asize | |
0031 > <span class="irt_int">int</span> ABC 0030 <span class="irt_int">+2 </span> | |
0032 <span class="irt_p32">p32</span> FLOAD 0028 tab.array | |
0033 <span class="irt_p32">p32</span> AREF 0032 <span class="irt_int">+1 </span> | |
0034 > <span class="irt_tab">tab</span> ALOAD 0033 | |
0035 <span class="irt_p32">p32</span> HREF 0013 <span class="irt_str">"table"</span> | |
0036 > <span class="irt_p32">p32</span> EQ 0035 <span class="irt_p32">[0x405d8420]</span> | |
0037 > <span class="irt_p32">p32</span> HREFK 0025 <span class="irt_str">"table"</span> @47 | |
0038 > <span class="irt_tab">tab</span> HLOAD 0037 | |
0039 <span class="irt_int">int</span> FLOAD 0038 tab.hmask | |
0040 > <span class="irt_int">int</span> EQ 0039 <span class="irt_int">+7 </span> | |
0041 <span class="irt_p32">p32</span> FLOAD 0038 tab.node | |
0042 > <span class="irt_p32">p32</span> HREFK 0041 <span class="irt_str">"insert"</span> @7 | |
0043 > <span class="irt_fun">fun</span> HLOAD 0042 | |
0044 > <span class="irt_tab">tab</span> SLOAD #3 T | |
0045 > <span class="irt_fun">fun</span> EQ 0043 <span class="irt_fun">table.insert</span> | |
0046 <span class="irt_int">int</span> CALLL lj_tab_len (0044) | |
0047 <span class="irt_int">int</span> ADD 0046 <span class="irt_int">+1 </span> | |
0048 <span class="irt_int">int</span> FLOAD 0044 tab.asize | |
0049 > <span class="irt_int">int</span> ABC 0048 0047 | |
0050 <span class="irt_p32">p32</span> FLOAD 0044 tab.array | |
0051 <span class="irt_p32">p32</span> AREF 0050 0047 | |
0052 <span class="irt_tab">tab</span> ASTORE 0051 0034 | |
0053 <span class="irt_nil">nil</span> TBAR 0044 | |
0054 <span class="irt_p32">p32</span> AREF 0032 <span class="irt_int">+2 </span> | |
0055 > <span class="irt_nil">nil</span> ALOAD 0054 | |
0056 > <span class="irt_p32">p32</span> RETF <span class="irt_pro">proto: 0x403ab2c8</span> <span class="irt_p32">[0x403ab338]</span> | |
0057 > <span class="irt_fun">fun</span> SLOAD #2 T | |
0058 > <span class="irt_tab">tab</span> SLOAD #3 T | |
0059 > <span class="irt_fun">fun</span> EQ 0057 <span class="irt_fun">utils.lua:37</span> | |
0060 > <span class="irt_tab">tab</span> TNEW #0 #0 | |
0061 <span class="irt_tab">tab</span> FLOAD <span class="irt_fun">utils.lua:37</span> func.env | |
0062 <span class="irt_p32">p32</span> HREF 0061 <span class="irt_str">"ipairs"</span> | |
0063 > <span class="irt_p32">p32</span> EQ 0062 <span class="irt_p32">[0x405d8420]</span> | |
0064 <span class="irt_tab">tab</span> FLOAD 0061 tab.meta | |
0065 > <span class="irt_tab">tab</span> NE 0064 <span class="irt_tab">[NULL]</span> | |
0066 <span class="irt_int">int</span> FLOAD 0064 tab.hmask | |
0067 > <span class="irt_int">int</span> EQ 0066 <span class="irt_int">+1 </span> | |
0068 <span class="irt_p32">p32</span> FLOAD 0064 tab.node | |
0069 > <span class="irt_p32">p32</span> HREFK 0068 <span class="irt_str">"__index"</span> @1 | |
0070 > <span class="irt_tab">tab</span> HLOAD 0069 | |
0071 <span class="irt_int">int</span> FLOAD 0070 tab.hmask | |
0072 > <span class="irt_int">int</span> EQ 0071 <span class="irt_int">+63 </span> | |
0073 <span class="irt_p32">p32</span> FLOAD 0070 tab.node | |
0074 > <span class="irt_p32">p32</span> HREFK 0073 <span class="irt_str">"ipairs"</span> @18 | |
0075 > <span class="irt_fun">fun</span> HLOAD 0074 | |
0076 > <span class="irt_fun">fun</span> EQ 0075 <span class="irt_fun">ipairs</span> | |
0077 <span class="irt_int">int</span> FLOAD 0058 tab.asize | |
0078 > <span class="irt_int">int</span> ABC 0077 <span class="irt_int">+1 </span> | |
0079 <span class="irt_p32">p32</span> FLOAD 0058 tab.array | |
0080 <span class="irt_p32">p32</span> AREF 0079 <span class="irt_int">+1 </span> | |
0081 > <span class="irt_tab">tab</span> ALOAD 0080 | |
---- TRACE 2 mcode 1038 | |
0bcaf8b0 mov dword [0x405d84a0], 0x2 | |
0bcaf8bb mov edi, [0x405d83d8] | |
0bcaf8c2 cmp edi, [0x405d83dc] | |
0bcaf8c9 jb 0x0bcaf8e2 | |
0bcaf8cb mov esi, 0x1 | |
0bcaf8d0 mov edi, 0x405d83b8 | |
0bcaf8d5 call 0x0041f3d0 ->lj_gc_step_jit | |
0bcaf8da test eax, eax | |
0bcaf8dc jnz 0x0bca0010 ->0 | |
0bcaf8e2 mov edx, [0x405d84b0] | |
0bcaf8e9 cmp dword [rdx+0x1c], -0x09 | |
0bcaf8ed jnz 0x0bca0010 ->0 | |
0bcaf8f3 cmp dword [rdx+0x24], -0x0c | |
0bcaf8f7 jnz 0x0bca0010 ->0 | |
0bcaf8fd mov ebp, [rdx+0x20] | |
0bcaf900 cmp dword [rdx+0x2c], 0xfffeffff | |
0bcaf907 jnb 0x0bca0010 ->0 | |
0bcaf90d cmp dword [rdx+0x18], 0x405dafd0 | |
0bcaf914 jnz 0x0bca0010 ->0 | |
0bcaf91a cvtsd2si ebx, [rdx+0x28] | |
0bcaf91f add ebx, +0x01 | |
0bcaf922 cmp ebx, [rbp+0x18] | |
0bcaf925 jnb 0x0bca0010 ->0 | |
0bcaf92b mov ebp, [rbp+0x8] | |
0bcaf92e cmp dword [rbp+rbx*8+0x4], -0x01 | |
0bcaf933 jnz 0x0bca0010 ->0 | |
0bcaf939 mov ebp, [rdx-0x8] | |
0bcaf93c mov r12d, [rbp+0x8] | |
0bcaf940 mov ebp, [r12+0x1c] | |
0bcaf945 and ebp, 0x644f2e12 | |
0bcaf94b lea ebp, [rbp+rbp*2+0x0] | |
0bcaf94f shl ebp, 0x03 | |
0bcaf952 add ebp, [r12+0x14] | |
0bcaf957 cmp dword [rbp+0xc], -0x05 | |
0bcaf95b jnz 0x0bcaf96a | |
0bcaf95d cmp dword [rbp+0x8], 0x405db028 | |
0bcaf964 jz 0x0bca0010 ->0 | |
0bcaf96a mov ebp, [rbp+0x10] | |
0bcaf96d test ebp, ebp | |
0bcaf96f jnz 0x0bcaf957 | |
0bcaf971 mov ebp, 0x405d8420 | |
0bcaf976 mov ebp, [r12+0x10] | |
0bcaf97b test ebp, ebp | |
0bcaf97d jz 0x0bca0010 ->0 | |
0bcaf983 cmp dword [rbp+0x1c], +0x01 | |
0bcaf987 jnz 0x0bca0010 ->0 | |
0bcaf98d mov ebp, [rbp+0x14] | |
0bcaf990 mov rdi, 0xfffffffb405da430 | |
0bcaf99a cmp rdi, [rbp+0x20] | |
0bcaf99e jnz 0x0bca0010 ->0 | |
0bcaf9a4 cmp dword [rbp+0x1c], -0x0c | |
0bcaf9a8 jnz 0x0bca0010 ->0 | |
0bcaf9ae mov ebp, [rbp+0x18] | |
0bcaf9b1 cmp dword [rbp+0x1c], +0x3f | |
0bcaf9b5 jnz 0x0bca0010 ->0 | |
0bcaf9bb mov ebx, [rbp+0x14] | |
0bcaf9be mov rdi, 0xfffffffb405db028 | |
0bcaf9c8 cmp rdi, [rbx+0x1b8] | |
0bcaf9cf jnz 0x0bca0010 ->0 | |
0bcaf9d5 cmp dword [rbx+0x1b4], -0x09 | |
0bcaf9dc jnz 0x0bca0010 ->0 | |
0bcaf9e2 cmp dword [rdx+0xc], -0x0c | |
0bcaf9e6 jnz 0x0bca0010 ->0 | |
0bcaf9ec mov ebp, [rdx+0x8] | |
0bcaf9ef cmp dword [rbx+0x1b0], 0x405daff8 | |
0bcaf9f9 jnz 0x0bca0010 ->0 | |
0bcaf9ff cmp dword [rbp+0x18], +0x02 | |
0bcafa03 jbe 0x0bca0010 ->0 | |
0bcafa09 mov r14d, [rbp+0x8] | |
0bcafa0d cmp dword [r14+0xc], -0x0c | |
0bcafa12 jnz 0x0bca0010 ->0 | |
0bcafa18 mov r15d, [r14+0x8] | |
0bcafa1c mov r13d, [r12+0x1c] | |
0bcafa21 and r13d, 0x7230fd67 | |
0bcafa28 lea r13d, [r13+r13*2+0x0] | |
0bcafa2d shl r13d, 0x03 | |
0bcafa31 add r13d, [r12+0x14] | |
0bcafa36 cmp dword [r13+0xc], -0x05 | |
0bcafa3b jnz 0x0bcafa4b | |
0bcafa3d cmp dword [r13+0x8], 0x405dae40 | |
0bcafa45 jz 0x0bca0010 ->0 | |
0bcafa4b mov r13d, [r13+0x10] | |
0bcafa4f test r13d, r13d | |
0bcafa52 jnz 0x0bcafa36 | |
0bcafa54 mov r13d, 0x405d8420 | |
0bcafa5a mov rdi, 0xfffffffb405dae40 | |
0bcafa64 cmp rdi, [rbx+0x470] | |
0bcafa6b jnz 0x0bca0010 ->0 | |
0bcafa71 cmp dword [rbx+0x46c], -0x0c | |
0bcafa78 jnz 0x0bca0010 ->0 | |
0bcafa7e mov ebx, [rbx+0x468] | |
0bcafa84 cmp dword [rbx+0x1c], +0x07 | |
0bcafa88 jnz 0x0bca0010 ->0 | |
0bcafa8e mov r13d, [rbx+0x14] | |
0bcafa92 mov rdi, 0xfffffffb405dc4f0 | |
0bcafa9c cmp rdi, [r13+0xb0] | |
0bcafaa3 jnz 0x0bca0010 ->0 | |
0bcafaa9 cmp dword [r13+0xac], -0x09 | |
0bcafab1 jnz 0x0bca0010 ->0 | |
0bcafab7 cmp dword [rdx+0x14], -0x0c | |
0bcafabb jnz 0x0bca0010 ->0 | |
0bcafac1 mov ebx, [rdx+0x10] | |
0bcafac4 cmp dword [r13+0xa8], 0x405dc4c8 | |
0bcafacf jnz 0x0bca0010 ->0 | |
0bcafad5 mov edi, ebx | |
0bcafad7 call 0x00420530 ->lj_tab_len | |
0bcafadc mov edi, [0x405d84ac] | |
0bcafae3 mov edx, [0x405d84b0] | |
0bcafaea add eax, +0x01 | |
0bcafaed cmp eax, [rbx+0x18] | |
0bcafaf0 jnb 0x0bca0010 ->0 | |
0bcafaf6 mov r13d, [rbx+0x8] | |
0bcafafa mov dword [r13+rax*8+0x4], 0xfffffff4 | |
0bcafb03 mov [r13+rax*8+0x0], r15d | |
0bcafb08 test byte [rbx+0x4], 0x4 | |
0bcafb0c jz 0x0bcafb23 | |
0bcafb0e and byte [rbx+0x4], 0xfb | |
0bcafb12 mov esi, [0x405d83f4] | |
0bcafb19 mov [0x405d83f4], ebx | |
0bcafb20 mov [rbx+0xc], esi | |
0bcafb23 cmp dword [r14+0x14], -0x01 | |
0bcafb28 jnz 0x0bca0014 ->1 | |
0bcafb2e cmp dword [rdx-0x4], 0x403ab338 | |
0bcafb35 jnz 0x0bca0018 ->2 | |
0bcafb3b add edx, -0x20 | |
0bcafb3e mov [0x405d84b0], edx | |
0bcafb45 cmp dword [rdx+0xc], -0x09 | |
0bcafb49 jnz 0x0bca001c ->3 | |
0bcafb4f cmp dword [rdx+0x14], -0x0c | |
0bcafb53 jnz 0x0bca001c ->3 | |
0bcafb59 mov ebp, [rdx+0x10] | |
0bcafb5c cmp dword [rdx+0x8], 0x40b42658 | |
0bcafb63 jnz 0x0bca001c ->3 | |
0bcafb69 xor esi, esi | |
0bcafb6b call 0x0041f7e0 ->lj_tab_new1 | |
0bcafb70 mov edx, [0x405d84b0] | |
0bcafb77 movsd xmm7, [0x401f5ce0] | |
0bcafb80 mov r15d, [0x40b42660] | |
0bcafb88 mov r14d, [r15+0x1c] | |
0bcafb8c and r14d, 0x644f2e12 | |
0bcafb93 lea r14d, [r14+r14*2] | |
0bcafb97 shl r14d, 0x03 | |
0bcafb9b add r14d, [r15+0x14] | |
0bcafb9f cmp dword [r14+0xc], -0x05 | |
0bcafba4 jnz 0x0bcafbb4 | |
0bcafba6 cmp dword [r14+0x8], 0x405db028 | |
0bcafbae jz 0x0bca001c ->3 | |
0bcafbb4 mov r14d, [r14+0x10] | |
0bcafbb8 test r14d, r14d | |
0bcafbbb jnz 0x0bcafb9f | |
0bcafbbd mov r14d, 0x405d8420 | |
0bcafbc3 mov r15d, [r15+0x10] | |
0bcafbc7 test r15d, r15d | |
0bcafbca jz 0x0bca001c ->3 | |
0bcafbd0 cmp dword [r15+0x1c], +0x01 | |
0bcafbd5 jnz 0x0bca001c ->3 | |
0bcafbdb mov r15d, [r15+0x14] | |
0bcafbdf mov rdi, 0xfffffffb405da430 | |
0bcafbe9 cmp rdi, [r15+0x20] | |
0bcafbed jnz 0x0bca001c ->3 | |
0bcafbf3 cmp dword [r15+0x1c], -0x0c | |
0bcafbf8 jnz 0x0bca001c ->3 | |
0bcafbfe mov r15d, [r15+0x18] | |
0bcafc02 cmp dword [r15+0x1c], +0x3f | |
0bcafc07 jnz 0x0bca001c ->3 | |
0bcafc0d mov r15d, [r15+0x14] | |
0bcafc11 mov rdi, 0xfffffffb405db028 | |
0bcafc1b cmp rdi, [r15+0x1b8] | |
0bcafc22 jnz 0x0bca001c ->3 | |
0bcafc28 cmp dword [r15+0x1b4], -0x09 | |
0bcafc30 jnz 0x0bca001c ->3 | |
0bcafc36 cmp dword [r15+0x1b0], 0x405daff8 | |
0bcafc41 jnz 0x0bca001c ->3 | |
0bcafc47 cmp dword [rbp+0x18], +0x01 | |
0bcafc4b jbe 0x0bca001c ->3 | |
0bcafc51 mov r15d, [rbp+0x8] | |
0bcafc55 cmp dword [r15+0xc], -0x0c | |
0bcafc5a jnz 0x0bca001c ->3 | |
0bcafc60 mov r15d, [r15+0x8] | |
0bcafc64 mov dword [rdx+0x3c], 0xfffffff4 | |
0bcafc6b mov [rdx+0x38], r15d | |
0bcafc6f movsd [rdx+0x30], xmm7 | |
0bcafc74 movsd [rdx+0x28], xmm7 | |
0bcafc79 mov dword [rdx+0x24], 0xfffffff4 | |
0bcafc80 mov [rdx+0x20], ebp | |
0bcafc83 mov dword [rdx+0x1c], 0xfffffff7 | |
0bcafc8a mov dword [rdx+0x18], 0x405dafd0 | |
0bcafc91 mov dword [rdx+0x14], 0xfffffff4 | |
0bcafc98 mov [rdx+0x10], eax | |
0bcafc9b mov dword [rdx+0xc], 0xfffffff4 | |
0bcafca2 mov [rdx+0x8], ebx | |
0bcafca5 mov dword [rdx+0x4], 0xfffffff4 | |
0bcafcac mov [rdx], ebp | |
0bcafcae mov dword [rdx-0x8], 0x40b42658 | |
0bcafcb5 add rsp, +0x20 | |
0bcafcb9 jmp 0x0bcafcc1 | |
---- TRACE 2 stop -> 1 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 3 start 1/2 utils.lua:39 | |
0006 GGET 8 1 ; "table" | |
0007 TGETS 8 8 2 ; "insert" | |
0008 MOV 9 2 | |
0009 MOV 10 7 | |
0010 CALL 8 1 3 | |
0000 . FUNCC ; table.insert | |
0011 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0012 JITERL 6 1 | |
0013 GGET 3 0 ; "ipairs" | |
0014 MOV 4 1 | |
0015 CALL 3 4 2 | |
0000 . FUNCC ; ipairs | |
0016 JMP 6 => 0022 | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 ITERL 6 => 0017 | |
0017 GGET 8 1 ; "table" | |
0018 TGETS 8 8 2 ; "insert" | |
0019 MOV 9 2 | |
0020 MOV 10 7 | |
0021 CALL 8 1 3 | |
0000 . FUNCC ; table.insert | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 ITERL 6 => 0017 | |
0017 GGET 8 1 ; "table" | |
0018 TGETS 8 8 2 ; "insert" | |
0019 MOV 9 2 | |
0020 MOV 10 7 | |
0021 CALL 8 1 3 | |
0000 . FUNCC ; table.insert | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 ITERL 6 => 0017 | |
0024 RET1 2 2 | |
0059 UCLO 0 => 0060 | |
---- TRACE 3 abort expand.lua:615 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 3 start 1/2 utils.lua:39 | |
0006 GGET 8 1 ; "table" | |
0007 TGETS 8 8 2 ; "insert" | |
0008 MOV 9 2 | |
0009 MOV 10 7 | |
0010 CALL 8 1 3 | |
0000 . FUNCC ; table.insert | |
0011 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0012 JITERL 6 1 | |
---- TRACE 3 IR | |
0001 <span class="irt_int">int</span> SLOAD #6 PI | |
0002 <span class="irt_tab">tab</span> SLOAD #8 PI | |
0003 <span class="irt_fun">fun</span> SLOAD #0 R | |
0004 <span class="irt_tab">tab</span> FLOAD 0003 func.env | |
0005 <span class="irt_p32">p32</span> HREF 0004 <span class="irt_str">"table"</span> | |
0006 > <span class="irt_p32">p32</span> EQ 0005 <span class="irt_p32">[0x405d8420]</span> | |
0007 <span class="irt_tab">tab</span> FLOAD 0004 tab.meta | |
0008 > <span class="irt_tab">tab</span> NE 0007 <span class="irt_tab">[NULL]</span> | |
0009 <span class="irt_int">int</span> FLOAD 0007 tab.hmask | |
0010 > <span class="irt_int">int</span> EQ 0009 <span class="irt_int">+1 </span> | |
0011 <span class="irt_p32">p32</span> FLOAD 0007 tab.node | |
0012 > <span class="irt_p32">p32</span> HREFK 0011 <span class="irt_str">"__index"</span> @1 | |
0013 > <span class="irt_tab">tab</span> HLOAD 0012 | |
0014 <span class="irt_int">int</span> FLOAD 0013 tab.hmask | |
0015 > <span class="irt_int">int</span> EQ 0014 <span class="irt_int">+63 </span> | |
0016 <span class="irt_p32">p32</span> FLOAD 0013 tab.node | |
0017 > <span class="irt_p32">p32</span> HREFK 0016 <span class="irt_str">"table"</span> @47 | |
0018 > <span class="irt_tab">tab</span> HLOAD 0017 | |
0019 <span class="irt_int">int</span> FLOAD 0018 tab.hmask | |
0020 > <span class="irt_int">int</span> EQ 0019 <span class="irt_int">+7 </span> | |
0021 <span class="irt_p32">p32</span> FLOAD 0018 tab.node | |
0022 > <span class="irt_p32">p32</span> HREFK 0021 <span class="irt_str">"insert"</span> @7 | |
0023 > <span class="irt_fun">fun</span> HLOAD 0022 | |
0024 > <span class="irt_tab">tab</span> SLOAD #3 T | |
0025 > <span class="irt_fun">fun</span> EQ 0023 <span class="irt_fun">table.insert</span> | |
0026 <span class="irt_int">int</span> CALLL lj_tab_len (0024) | |
0027 <span class="irt_int">int</span> ADD 0026 <span class="irt_int">+1 </span> | |
0028 <span class="irt_int">int</span> FLOAD 0024 tab.asize | |
0029 > <span class="irt_int">int</span> ABC 0028 0027 | |
0030 <span class="irt_p32">p32</span> FLOAD 0024 tab.array | |
0031 <span class="irt_p32">p32</span> AREF 0030 0027 | |
0032 <span class="irt_tab">tab</span> ASTORE 0031 0002 | |
0033 <span class="irt_nil">nil</span> TBAR 0024 | |
0034 > <span class="irt_fun">fun</span> SLOAD #4 T | |
0035 > <span class="irt_tab">tab</span> SLOAD #5 T | |
0036 > <span class="irt_fun">fun</span> EQ 0034 <span class="irt_fun">ipairs_aux</span> | |
0037 <span class="irt_int">int</span> ADD 0001 <span class="irt_int">+1 </span> | |
0038 <span class="irt_int">int</span> FLOAD 0035 tab.asize | |
0039 > <span class="irt_int">int</span> ABC 0038 0037 | |
0040 <span class="irt_p32">p32</span> FLOAD 0035 tab.array | |
0041 <span class="irt_p32">p32</span> AREF 0040 0037 | |
0042 > <span class="irt_tab">tab</span> ALOAD 0041 | |
0043 <span class="irt_num">num</span> CONV 0037 <span class="irt_num">num</span>.<span class="irt_int">int</span> | |
---- TRACE 3 mcode 437 | |
0bcaf6f8 mov r15d, ebp | |
0bcaf6fb mov dword [0x405d84a0], 0x3 | |
0bcaf706 mov edx, [0x405d84b0] | |
0bcaf70d mov ebp, [rdx-0x8] | |
0bcaf710 mov ebp, [rbp+0x8] | |
0bcaf713 mov ebx, [rbp+0x1c] | |
0bcaf716 and ebx, 0x7230fd67 | |
0bcaf71c lea ebx, [rbx+rbx*2] | |
0bcaf71f shl ebx, 0x03 | |
0bcaf722 add ebx, [rbp+0x14] | |
0bcaf725 cmp dword [rbx+0xc], -0x05 | |
0bcaf729 jnz 0x0bcaf738 | |
0bcaf72b cmp dword [rbx+0x8], 0x405dae40 | |
0bcaf732 jz 0x0bca0010 ->0 | |
0bcaf738 mov ebx, [rbx+0x10] | |
0bcaf73b test ebx, ebx | |
0bcaf73d jnz 0x0bcaf725 | |
0bcaf73f mov ebx, 0x405d8420 | |
0bcaf744 mov ebp, [rbp+0x10] | |
0bcaf747 test ebp, ebp | |
0bcaf749 jz 0x0bca0010 ->0 | |
0bcaf74f cmp dword [rbp+0x1c], +0x01 | |
0bcaf753 jnz 0x0bca0010 ->0 | |
0bcaf759 mov ebp, [rbp+0x14] | |
0bcaf75c mov rdi, 0xfffffffb405da430 | |
0bcaf766 cmp rdi, [rbp+0x20] | |
0bcaf76a jnz 0x0bca0010 ->0 | |
0bcaf770 cmp dword [rbp+0x1c], -0x0c | |
0bcaf774 jnz 0x0bca0010 ->0 | |
0bcaf77a mov ebp, [rbp+0x18] | |
0bcaf77d cmp dword [rbp+0x1c], +0x3f | |
0bcaf781 jnz 0x0bca0010 ->0 | |
0bcaf787 mov ebp, [rbp+0x14] | |
0bcaf78a mov rdi, 0xfffffffb405dae40 | |
0bcaf794 cmp rdi, [rbp+0x470] | |
0bcaf79b jnz 0x0bca0010 ->0 | |
0bcaf7a1 cmp dword [rbp+0x46c], -0x0c | |
0bcaf7a8 jnz 0x0bca0010 ->0 | |
0bcaf7ae mov ebp, [rbp+0x468] | |
0bcaf7b4 cmp dword [rbp+0x1c], +0x07 | |
0bcaf7b8 jnz 0x0bca0010 ->0 | |
0bcaf7be mov ebx, [rbp+0x14] | |
0bcaf7c1 mov rdi, 0xfffffffb405dc4f0 | |
0bcaf7cb cmp rdi, [rbx+0xb0] | |
0bcaf7d2 jnz 0x0bca0010 ->0 | |
0bcaf7d8 cmp dword [rbx+0xac], -0x09 | |
0bcaf7df jnz 0x0bca0010 ->0 | |
0bcaf7e5 cmp dword [rdx+0x14], -0x0c | |
0bcaf7e9 jnz 0x0bca0010 ->0 | |
0bcaf7ef mov ebp, [rdx+0x10] | |
0bcaf7f2 cmp dword [rbx+0xa8], 0x405dc4c8 | |
0bcaf7fc jnz 0x0bca0010 ->0 | |
0bcaf802 mov edi, ebp | |
0bcaf804 call 0x00420530 ->lj_tab_len | |
0bcaf809 mov edx, [0x405d84b0] | |
0bcaf810 add eax, +0x01 | |
0bcaf813 cmp eax, [rbp+0x18] | |
0bcaf816 jnb 0x0bca0010 ->0 | |
0bcaf81c mov ebx, [rbp+0x8] | |
0bcaf81f mov dword [rbx+rax*8+0x4], 0xfffffff4 | |
0bcaf827 mov [rbx+rax*8], r14d | |
0bcaf82b test byte [rbp+0x4], 0x4 | |
0bcaf82f jz 0x0bcaf846 | |
0bcaf831 and byte [rbp+0x4], 0xfb | |
0bcaf835 mov edi, [0x405d83f4] | |
0bcaf83c mov [0x405d83f4], ebp | |
0bcaf843 mov [rbp+0xc], edi | |
0bcaf846 cmp dword [rdx+0x1c], -0x09 | |
0bcaf84a jnz 0x0bca0014 ->1 | |
0bcaf850 cmp dword [rdx+0x24], -0x0c | |
0bcaf854 jnz 0x0bca0014 ->1 | |
0bcaf85a mov ebp, [rdx+0x20] | |
0bcaf85d cmp dword [rdx+0x18], 0x405dafd0 | |
0bcaf864 jnz 0x0bca0014 ->1 | |
0bcaf86a lea ebx, [r15+0x1] | |
0bcaf86e cmp ebx, [rbp+0x18] | |
0bcaf871 jnb 0x0bca0014 ->1 | |
0bcaf877 mov ebp, [rbp+0x8] | |
0bcaf87a cmp dword [rbp+rbx*8+0x4], -0x0c | |
0bcaf87f jnz 0x0bca0014 ->1 | |
0bcaf885 mov ebp, [rbp+rbx*8+0x0] | |
0bcaf889 xorps xmm7, xmm7 | |
0bcaf88c cvtsi2sd xmm7, ebx | |
0bcaf890 mov dword [rdx+0x3c], 0xfffffff4 | |
0bcaf897 mov [rdx+0x38], ebp | |
0bcaf89a movsd [rdx+0x30], xmm7 | |
0bcaf89f movsd [rdx+0x28], xmm7 | |
0bcaf8a4 add rsp, +0x20 | |
0bcaf8a8 jmp 0x0bcafcc1 | |
---- TRACE 3 stop -> 1 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 4 start utils.lua:40 | |
0017 GGET 8 1 ; "table" | |
0018 TGETS 8 8 2 ; "insert" | |
0019 MOV 9 2 | |
0020 MOV 10 7 | |
0021 CALL 8 1 3 | |
0000 . FUNCC ; table.insert | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 ITERL 6 => 0017 | |
---- TRACE 4 IR | |
0001 <span class="irt_fun">fun</span> SLOAD #0 R | |
0002 <span class="irt_tab">tab</span> FLOAD 0001 func.env | |
0003 <span class="irt_p32">p32</span> HREF 0002 <span class="irt_str">"table"</span> | |
0004 > <span class="irt_p32">p32</span> EQ 0003 <span class="irt_p32">[0x405d8420]</span> | |
0005 <span class="irt_tab">tab</span> FLOAD 0002 tab.meta | |
0006 > <span class="irt_tab">tab</span> NE 0005 <span class="irt_tab">[NULL]</span> | |
0007 <span class="irt_int">int</span> FLOAD 0005 tab.hmask | |
0008 > <span class="irt_int">int</span> EQ 0007 <span class="irt_int">+1 </span> | |
0009 <span class="irt_p32">p32</span> FLOAD 0005 tab.node | |
0010 > <span class="irt_p32">p32</span> HREFK 0009 <span class="irt_str">"__index"</span> @1 | |
0011 > <span class="irt_tab">tab</span> HLOAD 0010 | |
0012 <span class="irt_int">int</span> FLOAD 0011 tab.hmask | |
0013 > <span class="irt_int">int</span> EQ 0012 <span class="irt_int">+63 </span> | |
0014 <span class="irt_p32">p32</span> FLOAD 0011 tab.node | |
0015 > <span class="irt_p32">p32</span> HREFK 0014 <span class="irt_str">"table"</span> @47 | |
0016 > <span class="irt_tab">tab</span> HLOAD 0015 | |
0017 <span class="irt_int">int</span> FLOAD 0016 tab.hmask | |
0018 > <span class="irt_int">int</span> EQ 0017 <span class="irt_int">+7 </span> | |
0019 <span class="irt_p32">p32</span> FLOAD 0016 tab.node | |
0020 > <span class="irt_p32">p32</span> HREFK 0019 <span class="irt_str">"insert"</span> @7 | |
0021 > <span class="irt_fun">fun</span> HLOAD 0020 | |
0022 > <span class="irt_tab">tab</span> SLOAD #3 T | |
0023 > <span class="irt_tab">tab</span> SLOAD #8 T | |
0024 > <span class="irt_fun">fun</span> EQ 0021 <span class="irt_fun">table.insert</span> | |
0025 <span class="irt_int">int</span> CALLL lj_tab_len (0022) | |
0026 <span class="irt_int">int</span> ADD 0025 <span class="irt_int">+1 </span> | |
0027 <span class="irt_int">int</span> FLOAD 0022 tab.asize | |
0028 > <span class="irt_int">int</span> ABC 0027 0026 | |
0029 <span class="irt_p32">p32</span> FLOAD 0022 tab.array | |
0030 <span class="irt_p32">p32</span> AREF 0029 0026 | |
0031 <span class="irt_tab">tab</span> ASTORE 0030 0023 | |
0032 <span class="irt_nil">nil</span> TBAR 0022 | |
0033 > <span class="irt_fun">fun</span> SLOAD #4 T | |
0034 > <span class="irt_tab">tab</span> SLOAD #5 T | |
0035 > <span class="irt_num">num</span> SLOAD #6 T | |
0036 > <span class="irt_fun">fun</span> EQ 0033 <span class="irt_fun">ipairs_aux</span> | |
0037 <span class="irt_int">int</span> CONV 0035 <span class="irt_int">int</span>.<span class="irt_num">num</span> | |
0038 + <span class="irt_int">int</span> ADD 0037 <span class="irt_int">+1 </span> | |
0039 <span class="irt_int">int</span> FLOAD 0034 tab.asize | |
0040 > <span class="irt_int">int</span> ABC 0039 0038 | |
0041 <span class="irt_p32">p32</span> FLOAD 0034 tab.array | |
0042 <span class="irt_p32">p32</span> AREF 0041 0038 | |
0043 >+ <span class="irt_tab">tab</span> ALOAD 0042 | |
0044 ------ LOOP ------------ | |
0045 <span class="irt_int">int</span> CALLL lj_tab_len (0022) | |
0046 <span class="irt_int">int</span> ADD 0045 <span class="irt_int">+1 </span> | |
0047 > <span class="irt_int">int</span> ABC 0027 0046 | |
0048 <span class="irt_p32">p32</span> AREF 0029 0046 | |
0049 <span class="irt_tab">tab</span> ASTORE 0048 0043 | |
0050 <span class="irt_num">num</span> CONV 0038 <span class="irt_num">num</span>.<span class="irt_int">int</span> | |
0051 + <span class="irt_int">int</span> ADD 0038 <span class="irt_int">+1 </span> | |
0052 > <span class="irt_int">int</span> ABC 0039 0051 | |
0053 <span class="irt_p32">p32</span> AREF 0041 0051 | |
0054 >+ <span class="irt_tab">tab</span> ALOAD 0053 | |
0055 <span class="irt_tab">tab</span> PHI 0043 0054 | |
0056 <span class="irt_int">int</span> PHI 0038 0051 | |
---- TRACE 4 mcode 537 | |
0bcaf4d5 add rsp, -0x10 | |
0bcaf4d9 mov dword [0x405d84a0], 0x4 | |
0bcaf4e4 mov eax, [rdx-0x8] | |
0bcaf4e7 mov eax, [rax+0x8] | |
0bcaf4ea mov ecx, [rax+0x1c] | |
0bcaf4ed and ecx, 0x7230fd67 | |
0bcaf4f3 lea ecx, [rcx+rcx*2] | |
0bcaf4f6 shl ecx, 0x03 | |
0bcaf4f9 add ecx, [rax+0x14] | |
0bcaf4fc cmp dword [rcx+0xc], -0x05 | |
0bcaf500 jnz 0x0bcaf50f | |
0bcaf502 cmp dword [rcx+0x8], 0x405dae40 | |
0bcaf509 jz 0x0bca0010 ->0 | |
0bcaf50f mov ecx, [rcx+0x10] | |
0bcaf512 test ecx, ecx | |
0bcaf514 jnz 0x0bcaf4fc | |
0bcaf516 mov ecx, 0x405d8420 | |
0bcaf51b mov eax, [rax+0x10] | |
0bcaf51e test eax, eax | |
0bcaf520 jz 0x0bca0010 ->0 | |
0bcaf526 cmp dword [rax+0x1c], +0x01 | |
0bcaf52a jnz 0x0bca0010 ->0 | |
0bcaf530 mov eax, [rax+0x14] | |
0bcaf533 mov rdi, 0xfffffffb405da430 | |
0bcaf53d cmp rdi, [rax+0x20] | |
0bcaf541 jnz 0x0bca0010 ->0 | |
0bcaf547 cmp dword [rax+0x1c], -0x0c | |
0bcaf54b jnz 0x0bca0010 ->0 | |
0bcaf551 mov eax, [rax+0x18] | |
0bcaf554 cmp dword [rax+0x1c], +0x3f | |
0bcaf558 jnz 0x0bca0010 ->0 | |
0bcaf55e mov eax, [rax+0x14] | |
0bcaf561 mov rdi, 0xfffffffb405dae40 | |
0bcaf56b cmp rdi, [rax+0x470] | |
0bcaf572 jnz 0x0bca0010 ->0 | |
0bcaf578 cmp dword [rax+0x46c], -0x0c | |
0bcaf57f jnz 0x0bca0010 ->0 | |
0bcaf585 mov eax, [rax+0x468] | |
0bcaf58b cmp dword [rax+0x1c], +0x07 | |
0bcaf58f jnz 0x0bca0010 ->0 | |
0bcaf595 mov eax, [rax+0x14] | |
0bcaf598 mov rdi, 0xfffffffb405dc4f0 | |
0bcaf5a2 cmp rdi, [rax+0xb0] | |
0bcaf5a9 jnz 0x0bca0010 ->0 | |
0bcaf5af cmp dword [rax+0xac], -0x09 | |
0bcaf5b6 jnz 0x0bca0010 ->0 | |
0bcaf5bc cmp dword [rdx+0x14], -0x0c | |
0bcaf5c0 jnz 0x0bca0010 ->0 | |
0bcaf5c6 mov edi, [rdx+0x10] | |
0bcaf5c9 mov [rsp+0x10], edi | |
0bcaf5cd cmp dword [rdx+0x3c], -0x0c | |
0bcaf5d1 jnz 0x0bca0010 ->0 | |
0bcaf5d7 mov esi, [rdx+0x38] | |
0bcaf5da mov [rsp+0x14], esi | |
0bcaf5de cmp dword [rax+0xa8], 0x405dc4c8 | |
0bcaf5e8 jnz 0x0bca0010 ->0 | |
0bcaf5ee call 0x00420530 ->lj_tab_len | |
0bcaf5f3 mov ecx, eax | |
0bcaf5f5 mov edi, [rsp+0x10] | |
0bcaf5f9 mov edx, [0x405d84b0] | |
0bcaf600 mov eax, [rsp+0x14] | |
0bcaf604 mov ebx, ecx | |
0bcaf606 add ebx, +0x01 | |
0bcaf609 mov ecx, [rdi+0x18] | |
0bcaf60c mov [rsp+0xc], ecx | |
0bcaf610 cmp ebx, [rdi+0x18] | |
0bcaf613 jnb 0x0bca0010 ->0 | |
0bcaf619 mov ecx, [rdi+0x8] | |
0bcaf61c mov [rsp+0x8], ecx | |
0bcaf620 mov dword [rcx+rbx*8+0x4], 0xfffffff4 | |
0bcaf628 mov [rcx+rbx*8], eax | |
0bcaf62b test byte [rdi+0x4], 0x4 | |
0bcaf62f jz 0x0bcaf646 | |
0bcaf631 and byte [rdi+0x4], 0xfb | |
0bcaf635 mov esi, [0x405d83f4] | |
0bcaf63c mov [0x405d83f4], edi | |
0bcaf643 mov [rdi+0xc], esi | |
0bcaf646 cmp dword [rdx+0x1c], -0x09 | |
0bcaf64a jnz 0x0bca0014 ->1 | |
0bcaf650 cmp dword [rdx+0x24], -0x0c | |
0bcaf654 jnz 0x0bca0014 ->1 | |
0bcaf65a mov eax, [rdx+0x20] | |
0bcaf65d cmp dword [rdx+0x2c], 0xfffeffff | |
0bcaf664 jnb 0x0bca0014 ->1 | |
0bcaf66a cmp dword [rdx+0x18], 0x405dafd0 | |
0bcaf671 jnz 0x0bca0014 ->1 | |
0bcaf677 cvtsd2si ebp, [rdx+0x28] | |
0bcaf67c add ebp, +0x01 | |
0bcaf67f mov r13d, [rax+0x18] | |
0bcaf683 cmp ebp, r13d | |
0bcaf686 jnb 0x0bca0014 ->1 | |
0bcaf68c mov r12d, [rax+0x8] | |
0bcaf690 cmp dword [r12+rbp*8+0x4], -0x0c | |
0bcaf696 jnz 0x0bca0014 ->1 | |
0bcaf69c mov ebx, [r12+rbp*8] | |
->LOOP: | |
0bcaf6a0 mov edi, [rsp+0x10] | |
0bcaf6a4 mov r14d, ebx | |
0bcaf6a7 call 0x00420530 ->lj_tab_len | |
0bcaf6ac mov ebx, eax | |
0bcaf6ae mov ecx, [rsp+0xc] | |
0bcaf6b2 mov eax, [rsp+0x8] | |
0bcaf6b6 add ebx, +0x01 | |
0bcaf6b9 cmp ebx, ecx | |
0bcaf6bb jnb 0x0bca0018 ->2 | |
0bcaf6c1 mov dword [rax+rbx*8+0x4], 0xfffffff4 | |
0bcaf6c9 mov [rax+rbx*8], r14d | |
0bcaf6cd mov r15d, ebp | |
0bcaf6d0 add ebp, +0x01 | |
0bcaf6d3 cmp ebp, r13d | |
0bcaf6d6 jnb 0x0bca001c ->3 | |
0bcaf6dc cmp dword [r12+rbp*8+0x4], -0x0c | |
0bcaf6e2 jnz 0x0bca001c ->3 | |
0bcaf6e8 mov ebx, [r12+rbp*8] | |
0bcaf6ec jmp 0x0bcaf6a0 ->LOOP | |
---- TRACE 4 stop -> loop | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 5 start 4/0 utils.lua:40 | |
0017 GGET 8 1 ; "table" | |
0018 TGETS 8 8 2 ; "insert" | |
0019 MOV 9 2 | |
0020 MOV 10 7 | |
0021 CALL 8 1 3 | |
0000 . FUNCC ; table.insert | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 JITERL 6 4 | |
0024 RET1 2 2 | |
0088 TDUP 11 15 | |
0089 TDUP 12 16 | |
0090 TSETB 4 12 2 | |
0091 TSETB 6 12 3 | |
0092 TSETB 12 11 2 | |
0093 TSETB 8 11 3 | |
0094 ISNEN 8 0 ; 1 | |
0095 JMP 12 => 0099 | |
0099 ISNEN 8 1 ; 2 | |
0100 JMP 12 => 0105 | |
0101 TDUP 12 17 | |
0102 TSETB 11 12 2 | |
0103 MOV 13 10 | |
0104 RET 12 3 | |
---- TRACE 5 abort expand.lua:659 -- down-recursion, restarting | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 5 start expand.lua:659 | |
0104 RET 12 3 | |
0023 UGET 5 1 ; expand_arith | |
0024 TGETB 6 0 3 | |
0025 MOV 7 1 | |
0026 CALL 5 3 3 | |
0000 . FUNCF 14 ; expand.lua:632 | |
0001 . GGET 2 0 ; "assert" | |
0002 . MOV 3 0 | |
0003 . CALL 2 1 2 | |
0000 . . FUNCC ; assert | |
0004 . GGET 2 1 ; "type" | |
0005 . MOV 3 0 | |
0006 . CALL 2 2 2 | |
0000 . . FUNCC ; type | |
0007 . ISEQS 2 2 ; "number" | |
0008 . JMP 2 => 0011 | |
0011 . MOV 2 0 | |
0012 . TNEW 3 0 | |
0013 . RET 2 3 | |
0027 TDUP 7 4 | |
0028 TNEW 8 4 | |
0029 TSETB 2 8 1 | |
0030 TSETB 3 8 2 | |
0031 TSETB 5 8 3 | |
0032 TSETB 8 7 2 | |
0033 UGET 8 2 ; concat | |
0034 MOV 9 4 | |
0035 MOV 10 6 | |
0036 CALL 8 2 3 | |
0000 . FUNCF 11 ; utils.lua:37 | |
0001 . TNEW 2 0 | |
0002 . GGET 3 0 ; "ipairs" | |
0003 . MOV 4 0 | |
0004 . CALL 3 4 2 | |
0000 . . FUNCC ; ipairs | |
0005 . JMP 6 => 0011 | |
0011 . ITERC 6 3 3 | |
0000 . . FUNCC ; ipairs_aux | |
0012 . JITERL 6 1 | |
---- TRACE 5 abort utils.lua:39 -- inner loop in root trace | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 5 start utils.lua:37 | |
0001 TNEW 2 0 | |
0002 GGET 3 0 ; "ipairs" | |
0003 MOV 4 0 | |
0004 CALL 3 4 2 | |
0000 . FUNCC ; ipairs | |
0005 JMP 6 => 0011 | |
0011 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0012 JITERL 6 1 | |
---- TRACE 5 abort utils.lua:39 -- inner loop in root trace | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 5 start 3/1 utils.lua:39 | |
0011 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0012 JITERL 6 1 | |
0013 GGET 3 0 ; "ipairs" | |
0014 MOV 4 1 | |
0015 CALL 3 4 2 | |
0000 . FUNCC ; ipairs | |
0016 JMP 6 => 0022 | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 JITERL 6 4 | |
---- TRACE 5 IR | |
0001 <span class="irt_int">int</span> SLOAD #6 PI | |
0002 <span class="irt_tab">tab</span> SLOAD #8 PI | |
0003 > <span class="irt_fun">fun</span> SLOAD #4 T | |
0004 > <span class="irt_tab">tab</span> SLOAD #5 T | |
0005 > <span class="irt_fun">fun</span> EQ 0003 <span class="irt_fun">ipairs_aux</span> | |
0006 <span class="irt_int">int</span> ADD 0001 <span class="irt_int">+1 </span> | |
0007 <span class="irt_int">int</span> FLOAD 0004 tab.asize | |
0008 > <span class="irt_int">int</span> ULE 0007 0006 | |
0009 <span class="irt_int">int</span> FLOAD 0004 tab.hmask | |
0010 > <span class="irt_int">int</span> EQ 0009 <span class="irt_int">+0 </span> | |
0011 <span class="irt_fun">fun</span> SLOAD #0 R | |
0012 <span class="irt_tab">tab</span> FLOAD 0011 func.env | |
0013 <span class="irt_p32">p32</span> HREF 0012 <span class="irt_str">"ipairs"</span> | |
0014 > <span class="irt_p32">p32</span> EQ 0013 <span class="irt_p32">[0x405d8420]</span> | |
0015 <span class="irt_tab">tab</span> FLOAD 0012 tab.meta | |
0016 > <span class="irt_tab">tab</span> NE 0015 <span class="irt_tab">[NULL]</span> | |
0017 <span class="irt_int">int</span> FLOAD 0015 tab.hmask | |
0018 > <span class="irt_int">int</span> EQ 0017 <span class="irt_int">+1 </span> | |
0019 <span class="irt_p32">p32</span> FLOAD 0015 tab.node | |
0020 > <span class="irt_p32">p32</span> HREFK 0019 <span class="irt_str">"__index"</span> @1 | |
0021 > <span class="irt_tab">tab</span> HLOAD 0020 | |
0022 <span class="irt_int">int</span> FLOAD 0021 tab.hmask | |
0023 > <span class="irt_int">int</span> EQ 0022 <span class="irt_int">+63 </span> | |
0024 <span class="irt_p32">p32</span> FLOAD 0021 tab.node | |
0025 > <span class="irt_p32">p32</span> HREFK 0024 <span class="irt_str">"ipairs"</span> @18 | |
0026 > <span class="irt_fun">fun</span> HLOAD 0025 | |
0027 > <span class="irt_tab">tab</span> SLOAD #2 T | |
0028 > <span class="irt_fun">fun</span> EQ 0026 <span class="irt_fun">ipairs</span> | |
0029 <span class="irt_int">int</span> FLOAD 0027 tab.asize | |
0030 > <span class="irt_int">int</span> ABC 0029 <span class="irt_int">+1 </span> | |
0031 <span class="irt_p32">p32</span> FLOAD 0027 tab.array | |
0032 <span class="irt_p32">p32</span> AREF 0031 <span class="irt_int">+1 </span> | |
0033 > <span class="irt_tab">tab</span> ALOAD 0032 | |
---- TRACE 5 mcode 355 | |
0bcaf36f mov dword [0x405d84a0], 0x5 | |
0bcaf37a mov edx, [0x405d84b0] | |
0bcaf381 movsd xmm7, [0x401f5ce0] | |
0bcaf38a cmp dword [rdx+0x1c], -0x09 | |
0bcaf38e jnz 0x0bca0010 ->0 | |
0bcaf394 cmp dword [rdx+0x24], -0x0c | |
0bcaf398 jnz 0x0bca0010 ->0 | |
0bcaf39e mov ebp, [rdx+0x20] | |
0bcaf3a1 cmp dword [rdx+0x18], 0x405dafd0 | |
0bcaf3a8 jnz 0x0bca0010 ->0 | |
0bcaf3ae lea ebx, [r15+0x1] | |
0bcaf3b2 cmp ebx, [rbp+0x18] | |
0bcaf3b5 jb 0x0bca0010 ->0 | |
0bcaf3bb cmp dword [rbp+0x1c], +0x00 | |
0bcaf3bf jnz 0x0bca0010 ->0 | |
0bcaf3c5 mov ebp, [rdx-0x8] | |
0bcaf3c8 mov ebp, [rbp+0x8] | |
0bcaf3cb mov ebx, [rbp+0x1c] | |
0bcaf3ce and ebx, 0x644f2e12 | |
0bcaf3d4 lea ebx, [rbx+rbx*2] | |
0bcaf3d7 shl ebx, 0x03 | |
0bcaf3da add ebx, [rbp+0x14] | |
0bcaf3dd cmp dword [rbx+0xc], -0x05 | |
0bcaf3e1 jnz 0x0bcaf3f0 | |
0bcaf3e3 cmp dword [rbx+0x8], 0x405db028 | |
0bcaf3ea jz 0x0bca0010 ->0 | |
0bcaf3f0 mov ebx, [rbx+0x10] | |
0bcaf3f3 test ebx, ebx | |
0bcaf3f5 jnz 0x0bcaf3dd | |
0bcaf3f7 mov ebx, 0x405d8420 | |
0bcaf3fc mov ebp, [rbp+0x10] | |
0bcaf3ff test ebp, ebp | |
0bcaf401 jz 0x0bca0010 ->0 | |
0bcaf407 cmp dword [rbp+0x1c], +0x01 | |
0bcaf40b jnz 0x0bca0010 ->0 | |
0bcaf411 mov ebp, [rbp+0x14] | |
0bcaf414 mov rdi, 0xfffffffb405da430 | |
0bcaf41e cmp rdi, [rbp+0x20] | |
0bcaf422 jnz 0x0bca0010 ->0 | |
0bcaf428 cmp dword [rbp+0x1c], -0x0c | |
0bcaf42c jnz 0x0bca0010 ->0 | |
0bcaf432 mov ebp, [rbp+0x18] | |
0bcaf435 cmp dword [rbp+0x1c], +0x3f | |
0bcaf439 jnz 0x0bca0010 ->0 | |
0bcaf43f mov ebx, [rbp+0x14] | |
0bcaf442 mov rdi, 0xfffffffb405db028 | |
0bcaf44c cmp rdi, [rbx+0x1b8] | |
0bcaf453 jnz 0x0bca0010 ->0 | |
0bcaf459 cmp dword [rbx+0x1b4], -0x09 | |
0bcaf460 jnz 0x0bca0010 ->0 | |
0bcaf466 cmp dword [rdx+0xc], -0x0c | |
0bcaf46a jnz 0x0bca0010 ->0 | |
0bcaf470 mov ebp, [rdx+0x8] | |
0bcaf473 cmp dword [rbx+0x1b0], 0x405daff8 | |
0bcaf47d jnz 0x0bca0010 ->0 | |
0bcaf483 cmp dword [rbp+0x18], +0x01 | |
0bcaf487 jbe 0x0bca0010 ->0 | |
0bcaf48d mov ebx, [rbp+0x8] | |
0bcaf490 cmp dword [rbx+0xc], -0x0c | |
0bcaf494 jnz 0x0bca0010 ->0 | |
0bcaf49a mov ebx, [rbx+0x8] | |
0bcaf49d mov dword [rdx+0x3c], 0xfffffff4 | |
0bcaf4a4 mov [rdx+0x38], ebx | |
0bcaf4a7 movsd [rdx+0x30], xmm7 | |
0bcaf4ac movsd [rdx+0x28], xmm7 | |
0bcaf4b1 mov dword [rdx+0x24], 0xfffffff4 | |
0bcaf4b8 mov [rdx+0x20], ebp | |
0bcaf4bb mov dword [rdx+0x1c], 0xfffffff7 | |
0bcaf4c2 mov dword [rdx+0x18], 0x405dafd0 | |
0bcaf4c9 add rsp, +0x20 | |
0bcaf4cd jmp 0x0bcaf4d5 | |
---- TRACE 5 stop -> 4 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 6 start 4/0 utils.lua:40 | |
0017 GGET 8 1 ; "table" | |
0018 TGETS 8 8 2 ; "insert" | |
0019 MOV 9 2 | |
0020 MOV 10 7 | |
0021 CALL 8 1 3 | |
0000 . FUNCC ; table.insert | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 JITERL 6 4 | |
---- TRACE 6 IR | |
0001 <span class="irt_fun">fun</span> SLOAD #0 R | |
0002 <span class="irt_tab">tab</span> FLOAD 0001 func.env | |
0003 <span class="irt_p32">p32</span> HREF 0002 <span class="irt_str">"table"</span> | |
0004 > <span class="irt_p32">p32</span> EQ 0003 <span class="irt_p32">[0x405d8420]</span> | |
0005 <span class="irt_tab">tab</span> FLOAD 0002 tab.meta | |
0006 > <span class="irt_tab">tab</span> NE 0005 <span class="irt_tab">[NULL]</span> | |
0007 <span class="irt_int">int</span> FLOAD 0005 tab.hmask | |
0008 > <span class="irt_int">int</span> EQ 0007 <span class="irt_int">+1 </span> | |
0009 <span class="irt_p32">p32</span> FLOAD 0005 tab.node | |
0010 > <span class="irt_p32">p32</span> HREFK 0009 <span class="irt_str">"__index"</span> @1 | |
0011 > <span class="irt_tab">tab</span> HLOAD 0010 | |
0012 <span class="irt_int">int</span> FLOAD 0011 tab.hmask | |
0013 > <span class="irt_int">int</span> EQ 0012 <span class="irt_int">+63 </span> | |
0014 <span class="irt_p32">p32</span> FLOAD 0011 tab.node | |
0015 > <span class="irt_p32">p32</span> HREFK 0014 <span class="irt_str">"table"</span> @47 | |
0016 > <span class="irt_tab">tab</span> HLOAD 0015 | |
0017 <span class="irt_int">int</span> FLOAD 0016 tab.hmask | |
0018 > <span class="irt_int">int</span> EQ 0017 <span class="irt_int">+7 </span> | |
0019 <span class="irt_p32">p32</span> FLOAD 0016 tab.node | |
0020 > <span class="irt_p32">p32</span> HREFK 0019 <span class="irt_str">"insert"</span> @7 | |
0021 > <span class="irt_fun">fun</span> HLOAD 0020 | |
0022 > <span class="irt_tab">tab</span> SLOAD #3 T | |
0023 > <span class="irt_tab">tab</span> SLOAD #8 T | |
0024 > <span class="irt_fun">fun</span> EQ 0021 <span class="irt_fun">table.insert</span> | |
0025 <span class="irt_int">int</span> CALLL lj_tab_len (0022) | |
0026 <span class="irt_int">int</span> ADD 0025 <span class="irt_int">+1 </span> | |
0027 <span class="irt_int">int</span> FLOAD 0022 tab.asize | |
0028 > <span class="irt_int">int</span> ULE 0027 0026 | |
0029 <span class="irt_int">int</span> FLOAD 0022 tab.hmask | |
0030 > <span class="irt_int">int</span> EQ 0029 <span class="irt_int">+0 </span> | |
0031 <span class="irt_num">num</span> CONV 0026 <span class="irt_num">num</span>.<span class="irt_int">int</span> | |
0032 <span class="irt_p32">p32</span> NEWREF 0022 0031 | |
0033 <span class="irt_tab">tab</span> HSTORE 0032 0023 | |
0034 <span class="irt_nil">nil</span> TBAR 0022 | |
0035 > <span class="irt_fun">fun</span> SLOAD #4 T | |
0036 > <span class="irt_tab">tab</span> SLOAD #5 T | |
0037 > <span class="irt_num">num</span> SLOAD #6 T | |
0038 > <span class="irt_fun">fun</span> EQ 0035 <span class="irt_fun">ipairs_aux</span> | |
0039 <span class="irt_int">int</span> CONV 0037 <span class="irt_int">int</span>.<span class="irt_num">num</span> | |
0040 + <span class="irt_int">int</span> ADD 0039 <span class="irt_int">+1 </span> | |
0041 <span class="irt_int">int</span> FLOAD 0036 tab.asize | |
0042 > <span class="irt_int">int</span> ABC 0041 0040 | |
0043 <span class="irt_p32">p32</span> FLOAD 0036 tab.array | |
0044 <span class="irt_p32">p32</span> AREF 0043 0040 | |
0045 >+ <span class="irt_tab">tab</span> ALOAD 0044 | |
0046 ------ LOOP ------------ | |
0047 <span class="irt_p32">p32</span> HREF 0002 <span class="irt_str">"table"</span> | |
0048 > <span class="irt_p32">p32</span> EQ 0047 <span class="irt_p32">[0x405d8420]</span> | |
0049 <span class="irt_int">int</span> FLOAD 0005 tab.hmask | |
0050 > <span class="irt_int">int</span> EQ 0049 <span class="irt_int">+1 </span> | |
0051 <span class="irt_p32">p32</span> FLOAD 0005 tab.node | |
0052 > <span class="irt_p32">p32</span> HREFK 0051 <span class="irt_str">"__index"</span> @1 | |
0053 > <span class="irt_tab">tab</span> HLOAD 0052 | |
0054 <span class="irt_int">int</span> FLOAD 0053 tab.hmask | |
0055 > <span class="irt_int">int</span> EQ 0054 <span class="irt_int">+63 </span> | |
0056 <span class="irt_p32">p32</span> FLOAD 0053 tab.node | |
0057 > <span class="irt_p32">p32</span> HREFK 0056 <span class="irt_str">"table"</span> @47 | |
0058 > <span class="irt_tab">tab</span> HLOAD 0057 | |
0059 <span class="irt_int">int</span> FLOAD 0058 tab.hmask | |
0060 > <span class="irt_int">int</span> EQ 0059 <span class="irt_int">+7 </span> | |
0061 <span class="irt_p32">p32</span> FLOAD 0058 tab.node | |
0062 > <span class="irt_p32">p32</span> HREFK 0061 <span class="irt_str">"insert"</span> @7 | |
0063 > <span class="irt_fun">fun</span> HLOAD 0062 | |
0064 > <span class="irt_fun">fun</span> EQ 0063 <span class="irt_fun">table.insert</span> | |
0065 <span class="irt_int">int</span> CALLL lj_tab_len (0022) | |
0066 <span class="irt_int">int</span> ADD 0065 <span class="irt_int">+1 </span> | |
0067 <span class="irt_int">int</span> FLOAD 0022 tab.asize | |
0068 > <span class="irt_int">int</span> ULE 0067 0066 | |
0069 <span class="irt_int">int</span> FLOAD 0022 tab.hmask | |
0070 > <span class="irt_int">int</span> EQ 0069 <span class="irt_int">+0 </span> | |
0071 <span class="irt_num">num</span> CONV 0066 <span class="irt_num">num</span>.<span class="irt_int">int</span> | |
0072 <span class="irt_p32">p32</span> NEWREF 0022 0071 | |
0073 <span class="irt_tab">tab</span> HSTORE 0072 0045 | |
0074 <span class="irt_num">num</span> CONV 0040 <span class="irt_num">num</span>.<span class="irt_int">int</span> | |
0075 + <span class="irt_int">int</span> ADD 0040 <span class="irt_int">+1 </span> | |
0076 <span class="irt_int">int</span> FLOAD 0036 tab.asize | |
0077 > <span class="irt_int">int</span> ABC 0076 0075 | |
0078 <span class="irt_p32">p32</span> FLOAD 0036 tab.array | |
0079 <span class="irt_p32">p32</span> AREF 0078 0075 | |
0080 >+ <span class="irt_tab">tab</span> ALOAD 0079 | |
0081 <span class="irt_tab">tab</span> PHI 0045 0080 | |
0082 <span class="irt_int">int</span> PHI 0040 0075 | |
---- TRACE 6 mcode 838 | |
0bcaf029 add rsp, -0x10 | |
0bcaf02d mov dword [0x405d84a0], 0x6 | |
0bcaf038 mov edx, [0x405d84b0] | |
0bcaf03f mov eax, [rdx-0x8] | |
0bcaf042 mov eax, [rax+0x8] | |
0bcaf045 mov [rsp+0x14], eax | |
0bcaf049 mov ecx, [rax+0x1c] | |
0bcaf04c and ecx, 0x7230fd67 | |
0bcaf052 lea ecx, [rcx+rcx*2] | |
0bcaf055 shl ecx, 0x03 | |
0bcaf058 add ecx, [rax+0x14] | |
0bcaf05b cmp dword [rcx+0xc], -0x05 | |
0bcaf05f jnz 0x0bcaf06e | |
0bcaf061 cmp dword [rcx+0x8], 0x405dae40 | |
0bcaf068 jz 0x0bca0010 ->0 | |
0bcaf06e mov ecx, [rcx+0x10] | |
0bcaf071 test ecx, ecx | |
0bcaf073 jnz 0x0bcaf05b | |
0bcaf075 mov ecx, 0x405d8420 | |
0bcaf07a mov r13d, [rax+0x10] | |
0bcaf07e test r13d, r13d | |
0bcaf081 jz 0x0bca0010 ->0 | |
0bcaf087 cmp dword [r13+0x1c], +0x01 | |
0bcaf08c jnz 0x0bca0010 ->0 | |
0bcaf092 mov eax, [r13+0x14] | |
0bcaf096 mov rdi, 0xfffffffb405da430 | |
0bcaf0a0 cmp rdi, [rax+0x20] | |
0bcaf0a4 jnz 0x0bca0010 ->0 | |
0bcaf0aa cmp dword [rax+0x1c], -0x0c | |
0bcaf0ae jnz 0x0bca0010 ->0 | |
0bcaf0b4 mov eax, [rax+0x18] | |
0bcaf0b7 cmp dword [rax+0x1c], +0x3f | |
0bcaf0bb jnz 0x0bca0010 ->0 | |
0bcaf0c1 mov eax, [rax+0x14] | |
0bcaf0c4 mov rdi, 0xfffffffb405dae40 | |
0bcaf0ce cmp rdi, [rax+0x470] | |
0bcaf0d5 jnz 0x0bca0010 ->0 | |
0bcaf0db cmp dword [rax+0x46c], -0x0c | |
0bcaf0e2 jnz 0x0bca0010 ->0 | |
0bcaf0e8 mov eax, [rax+0x468] | |
0bcaf0ee cmp dword [rax+0x1c], +0x07 | |
0bcaf0f2 jnz 0x0bca0010 ->0 | |
0bcaf0f8 mov eax, [rax+0x14] | |
0bcaf0fb mov rdi, 0xfffffffb405dc4f0 | |
0bcaf105 cmp rdi, [rax+0xb0] | |
0bcaf10c jnz 0x0bca0010 ->0 | |
0bcaf112 cmp dword [rax+0xac], -0x09 | |
0bcaf119 jnz 0x0bca0010 ->0 | |
0bcaf11f cmp dword [rdx+0x14], -0x0c | |
0bcaf123 jnz 0x0bca0010 ->0 | |
0bcaf129 mov edi, [rdx+0x10] | |
0bcaf12c mov [rsp+0x10], edi | |
0bcaf130 cmp dword [rdx+0x3c], -0x0c | |
0bcaf134 jnz 0x0bca0010 ->0 | |
0bcaf13a mov esi, [rdx+0x38] | |
0bcaf13d mov [rsp+0x18], esi | |
0bcaf141 cmp dword [rax+0xa8], 0x405dc4c8 | |
0bcaf14b jnz 0x0bca0010 ->0 | |
0bcaf151 call 0x00420530 ->lj_tab_len | |
0bcaf156 mov edi, [0x405d84ac] | |
0bcaf15d mov esi, [rsp+0x10] | |
0bcaf161 add eax, +0x01 | |
0bcaf164 cmp eax, [rsi+0x18] | |
0bcaf167 jb 0x0bca0010 ->0 | |
0bcaf16d cmp dword [rsi+0x1c], +0x00 | |
0bcaf171 jnz 0x0bca0010 ->0 | |
0bcaf177 xorps xmm7, xmm7 | |
0bcaf17a cvtsi2sd xmm7, eax | |
0bcaf17e movsd [rsp+0x20], xmm7 | |
0bcaf184 lea rdx, [rsp+0x20] | |
0bcaf189 call 0x004200e0 ->lj_tab_newkey | |
0bcaf18e mov ecx, eax | |
0bcaf190 mov edi, [rsp+0x10] | |
0bcaf194 mov edx, [0x405d84b0] | |
0bcaf19b mov eax, [rsp+0x18] | |
0bcaf19f mov dword [rcx+0x4], 0xfffffff4 | |
0bcaf1a6 mov [rcx], eax | |
0bcaf1a8 test byte [rdi+0x4], 0x4 | |
0bcaf1ac jz 0x0bcaf1c3 | |
0bcaf1ae and byte [rdi+0x4], 0xfb | |
0bcaf1b2 mov esi, [0x405d83f4] | |
0bcaf1b9 mov [0x405d83f4], edi | |
0bcaf1c0 mov [rdi+0xc], esi | |
0bcaf1c3 cmp dword [rdx+0x1c], -0x09 | |
0bcaf1c7 jnz 0x0bca0014 ->1 | |
0bcaf1cd cmp dword [rdx+0x24], -0x0c | |
0bcaf1d1 jnz 0x0bca0014 ->1 | |
0bcaf1d7 mov r12d, [rdx+0x20] | |
0bcaf1db cmp dword [rdx+0x2c], 0xfffeffff | |
0bcaf1e2 jnb 0x0bca0014 ->1 | |
0bcaf1e8 cmp dword [rdx+0x18], 0x405dafd0 | |
0bcaf1ef jnz 0x0bca0014 ->1 | |
0bcaf1f5 cvtsd2si ebp, [rdx+0x28] | |
0bcaf1fa add ebp, +0x01 | |
0bcaf1fd cmp ebp, [r12+0x18] | |
0bcaf202 jnb 0x0bca0014 ->1 | |
0bcaf208 mov eax, [r12+0x8] | |
0bcaf20d cmp dword [rax+rbp*8+0x4], -0x0c | |
0bcaf212 jnz 0x0bca0014 ->1 | |
0bcaf218 mov ebx, [rax+rbp*8] | |
->LOOP: | |
0bcaf21b mov edi, [rsp+0x10] | |
0bcaf21f mov eax, [rsp+0x14] | |
0bcaf223 mov r14d, ebx | |
0bcaf226 mov ebx, [rax+0x1c] | |
0bcaf229 and ebx, 0x7230fd67 | |
0bcaf22f lea ebx, [rbx+rbx*2] | |
0bcaf232 shl ebx, 0x03 | |
0bcaf235 add ebx, [rax+0x14] | |
0bcaf238 cmp dword [rbx+0xc], -0x05 | |
0bcaf23c jnz 0x0bcaf24b | |
0bcaf23e cmp dword [rbx+0x8], 0x405dae40 | |
0bcaf245 jz 0x0bca0018 ->2 | |
0bcaf24b mov ebx, [rbx+0x10] | |
0bcaf24e test ebx, ebx | |
0bcaf250 jnz 0x0bcaf238 | |
0bcaf252 mov ebx, 0x405d8420 | |
0bcaf257 cmp dword [r13+0x1c], +0x01 | |
0bcaf25c jnz 0x0bca0018 ->2 | |
0bcaf262 mov ebx, [r13+0x14] | |
0bcaf266 mov rsi, 0xfffffffb405da430 | |
0bcaf270 cmp rsi, [rbx+0x20] | |
0bcaf274 jnz 0x0bca0018 ->2 | |
0bcaf27a cmp dword [rbx+0x1c], -0x0c | |
0bcaf27e jnz 0x0bca0018 ->2 | |
0bcaf284 mov ebx, [rbx+0x18] | |
0bcaf287 cmp dword [rbx+0x1c], +0x3f | |
0bcaf28b jnz 0x0bca0018 ->2 | |
0bcaf291 mov ebx, [rbx+0x14] | |
0bcaf294 mov rsi, 0xfffffffb405dae40 | |
0bcaf29e cmp rsi, [rbx+0x470] | |
0bcaf2a5 jnz 0x0bca0018 ->2 | |
0bcaf2ab cmp dword [rbx+0x46c], -0x0c | |
0bcaf2b2 jnz 0x0bca0018 ->2 | |
0bcaf2b8 mov ebx, [rbx+0x468] | |
0bcaf2be cmp dword [rbx+0x1c], +0x07 | |
0bcaf2c2 jnz 0x0bca0018 ->2 | |
0bcaf2c8 mov ebx, [rbx+0x14] | |
0bcaf2cb mov rsi, 0xfffffffb405dc4f0 | |
0bcaf2d5 cmp rsi, [rbx+0xb0] | |
0bcaf2dc jnz 0x0bca0018 ->2 | |
0bcaf2e2 cmp dword [rbx+0xac], -0x09 | |
0bcaf2e9 jnz 0x0bca0018 ->2 | |
0bcaf2ef cmp dword [rbx+0xa8], 0x405dc4c8 | |
0bcaf2f9 jnz 0x0bca0018 ->2 | |
0bcaf2ff call 0x00420530 ->lj_tab_len | |
0bcaf304 mov edi, [0x405d84ac] | |
0bcaf30b mov esi, [rsp+0x10] | |
0bcaf30f add eax, +0x01 | |
0bcaf312 cmp eax, [rsi+0x18] | |
0bcaf315 jb 0x0bca0018 ->2 | |
0bcaf31b cmp dword [rsi+0x1c], +0x00 | |
0bcaf31f jnz 0x0bca0018 ->2 | |
0bcaf325 xorps xmm7, xmm7 | |
0bcaf328 cvtsi2sd xmm7, eax | |
0bcaf32c movsd [rsp+0x8], xmm7 | |
0bcaf332 lea rdx, [rsp+0x8] | |
0bcaf337 call 0x004200e0 ->lj_tab_newkey | |
0bcaf33c mov dword [rax+0x4], 0xfffffff4 | |
0bcaf343 mov [rax], r14d | |
0bcaf346 mov r15d, ebp | |
0bcaf349 add ebp, +0x01 | |
0bcaf34c cmp ebp, [r12+0x18] | |
0bcaf351 jnb 0x0bca001c ->3 | |
0bcaf357 mov ebx, [r12+0x8] | |
0bcaf35c cmp dword [rbx+rbp*8+0x4], -0x0c | |
0bcaf361 jnz 0x0bca001c ->3 | |
0bcaf367 mov ebx, [rbx+rbp*8] | |
0bcaf36a jmp 0x0bcaf21b ->LOOP | |
---- TRACE 6 stop -> loop | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 7 start 1/0 utils.lua:39 | |
0006 GGET 8 1 ; "table" | |
0007 TGETS 8 8 2 ; "insert" | |
0008 MOV 9 2 | |
0009 MOV 10 7 | |
0010 CALL 8 1 3 | |
0000 . FUNCC ; table.insert | |
0011 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0012 JITERL 6 1 | |
---- TRACE 7 IR | |
0001 <span class="irt_fun">fun</span> SLOAD #0 R | |
0002 <span class="irt_tab">tab</span> FLOAD 0001 func.env | |
0003 <span class="irt_p32">p32</span> HREF 0002 <span class="irt_str">"table"</span> | |
0004 > <span class="irt_p32">p32</span> EQ 0003 <span class="irt_p32">[0x405d8420]</span> | |
0005 <span class="irt_tab">tab</span> FLOAD 0002 tab.meta | |
0006 > <span class="irt_tab">tab</span> NE 0005 <span class="irt_tab">[NULL]</span> | |
0007 <span class="irt_int">int</span> FLOAD 0005 tab.hmask | |
0008 > <span class="irt_int">int</span> EQ 0007 <span class="irt_int">+1 </span> | |
0009 <span class="irt_p32">p32</span> FLOAD 0005 tab.node | |
0010 > <span class="irt_p32">p32</span> HREFK 0009 <span class="irt_str">"__index"</span> @1 | |
0011 > <span class="irt_tab">tab</span> HLOAD 0010 | |
0012 <span class="irt_int">int</span> FLOAD 0011 tab.hmask | |
0013 > <span class="irt_int">int</span> EQ 0012 <span class="irt_int">+63 </span> | |
0014 <span class="irt_p32">p32</span> FLOAD 0011 tab.node | |
0015 > <span class="irt_p32">p32</span> HREFK 0014 <span class="irt_str">"table"</span> @47 | |
0016 > <span class="irt_tab">tab</span> HLOAD 0015 | |
0017 <span class="irt_int">int</span> FLOAD 0016 tab.hmask | |
0018 > <span class="irt_int">int</span> EQ 0017 <span class="irt_int">+7 </span> | |
0019 <span class="irt_p32">p32</span> FLOAD 0016 tab.node | |
0020 > <span class="irt_p32">p32</span> HREFK 0019 <span class="irt_str">"insert"</span> @7 | |
0021 > <span class="irt_fun">fun</span> HLOAD 0020 | |
0022 > <span class="irt_tab">tab</span> SLOAD #3 T | |
0023 > <span class="irt_tab">tab</span> SLOAD #8 T | |
0024 > <span class="irt_fun">fun</span> EQ 0021 <span class="irt_fun">table.insert</span> | |
0025 <span class="irt_int">int</span> CALLL lj_tab_len (0022) | |
0026 <span class="irt_int">int</span> ADD 0025 <span class="irt_int">+1 </span> | |
0027 <span class="irt_int">int</span> FLOAD 0022 tab.asize | |
0028 > <span class="irt_int">int</span> ABC 0027 0026 | |
0029 <span class="irt_p32">p32</span> FLOAD 0022 tab.array | |
0030 <span class="irt_p32">p32</span> AREF 0029 0026 | |
0031 <span class="irt_tab">tab</span> ASTORE 0030 0023 | |
0032 <span class="irt_nil">nil</span> TBAR 0022 | |
0033 > <span class="irt_fun">fun</span> SLOAD #4 T | |
0034 > <span class="irt_tab">tab</span> SLOAD #5 T | |
0035 > <span class="irt_num">num</span> SLOAD #6 T | |
0036 > <span class="irt_fun">fun</span> EQ 0033 <span class="irt_fun">ipairs_aux</span> | |
0037 <span class="irt_int">int</span> CONV 0035 <span class="irt_int">int</span>.<span class="irt_num">num</span> | |
0038 + <span class="irt_int">int</span> ADD 0037 <span class="irt_int">+1 </span> | |
0039 <span class="irt_int">int</span> FLOAD 0034 tab.asize | |
0040 > <span class="irt_int">int</span> ABC 0039 0038 | |
0041 <span class="irt_p32">p32</span> FLOAD 0034 tab.array | |
0042 <span class="irt_p32">p32</span> AREF 0041 0038 | |
0043 >+ <span class="irt_tab">tab</span> ALOAD 0042 | |
0044 ------ LOOP ------------ | |
0045 <span class="irt_int">int</span> CALLL lj_tab_len (0022) | |
0046 <span class="irt_int">int</span> ADD 0045 <span class="irt_int">+1 </span> | |
0047 > <span class="irt_int">int</span> ABC 0027 0046 | |
0048 <span class="irt_p32">p32</span> AREF 0029 0046 | |
0049 <span class="irt_tab">tab</span> ASTORE 0048 0043 | |
0050 <span class="irt_num">num</span> CONV 0038 <span class="irt_num">num</span>.<span class="irt_int">int</span> | |
0051 + <span class="irt_int">int</span> ADD 0038 <span class="irt_int">+1 </span> | |
0052 > <span class="irt_int">int</span> ABC 0039 0051 | |
0053 <span class="irt_p32">p32</span> AREF 0041 0051 | |
0054 >+ <span class="irt_tab">tab</span> ALOAD 0053 | |
0055 <span class="irt_tab">tab</span> PHI 0043 0054 | |
0056 <span class="irt_int">int</span> PHI 0038 0051 | |
---- TRACE 7 mcode 540 | |
0bcaee02 mov dword [0x405d84a0], 0x7 | |
0bcaee0d mov edx, [0x405d84b0] | |
0bcaee14 mov eax, [rdx-0x8] | |
0bcaee17 mov eax, [rax+0x8] | |
0bcaee1a mov ecx, [rax+0x1c] | |
0bcaee1d and ecx, 0x7230fd67 | |
0bcaee23 lea ecx, [rcx+rcx*2] | |
0bcaee26 shl ecx, 0x03 | |
0bcaee29 add ecx, [rax+0x14] | |
0bcaee2c cmp dword [rcx+0xc], -0x05 | |
0bcaee30 jnz 0x0bcaee3f | |
0bcaee32 cmp dword [rcx+0x8], 0x405dae40 | |
0bcaee39 jz 0x0bca0010 ->0 | |
0bcaee3f mov ecx, [rcx+0x10] | |
0bcaee42 test ecx, ecx | |
0bcaee44 jnz 0x0bcaee2c | |
0bcaee46 mov ecx, 0x405d8420 | |
0bcaee4b mov eax, [rax+0x10] | |
0bcaee4e test eax, eax | |
0bcaee50 jz 0x0bca0010 ->0 | |
0bcaee56 cmp dword [rax+0x1c], +0x01 | |
0bcaee5a jnz 0x0bca0010 ->0 | |
0bcaee60 mov eax, [rax+0x14] | |
0bcaee63 mov rdi, 0xfffffffb405da430 | |
0bcaee6d cmp rdi, [rax+0x20] | |
0bcaee71 jnz 0x0bca0010 ->0 | |
0bcaee77 cmp dword [rax+0x1c], -0x0c | |
0bcaee7b jnz 0x0bca0010 ->0 | |
0bcaee81 mov eax, [rax+0x18] | |
0bcaee84 cmp dword [rax+0x1c], +0x3f | |
0bcaee88 jnz 0x0bca0010 ->0 | |
0bcaee8e mov eax, [rax+0x14] | |
0bcaee91 mov rdi, 0xfffffffb405dae40 | |
0bcaee9b cmp rdi, [rax+0x470] | |
0bcaeea2 jnz 0x0bca0010 ->0 | |
0bcaeea8 cmp dword [rax+0x46c], -0x0c | |
0bcaeeaf jnz 0x0bca0010 ->0 | |
0bcaeeb5 mov eax, [rax+0x468] | |
0bcaeebb cmp dword [rax+0x1c], +0x07 | |
0bcaeebf jnz 0x0bca0010 ->0 | |
0bcaeec5 mov eax, [rax+0x14] | |
0bcaeec8 mov rdi, 0xfffffffb405dc4f0 | |
0bcaeed2 cmp rdi, [rax+0xb0] | |
0bcaeed9 jnz 0x0bca0010 ->0 | |
0bcaeedf cmp dword [rax+0xac], -0x09 | |
0bcaeee6 jnz 0x0bca0010 ->0 | |
0bcaeeec cmp dword [rdx+0x14], -0x0c | |
0bcaeef0 jnz 0x0bca0010 ->0 | |
0bcaeef6 mov edi, [rdx+0x10] | |
0bcaeef9 mov [rsp+0x10], edi | |
0bcaeefd cmp dword [rdx+0x3c], -0x0c | |
0bcaef01 jnz 0x0bca0010 ->0 | |
0bcaef07 mov esi, [rdx+0x38] | |
0bcaef0a mov [rsp+0x14], esi | |
0bcaef0e cmp dword [rax+0xa8], 0x405dc4c8 | |
0bcaef18 jnz 0x0bca0010 ->0 | |
0bcaef1e call 0x00420530 ->lj_tab_len | |
0bcaef23 mov ecx, eax | |
0bcaef25 mov edi, [rsp+0x10] | |
0bcaef29 mov edx, [0x405d84b0] | |
0bcaef30 mov eax, [rsp+0x14] | |
0bcaef34 mov ebx, ecx | |
0bcaef36 add ebx, +0x01 | |
0bcaef39 mov ecx, [rdi+0x18] | |
0bcaef3c mov [rsp+0xc], ecx | |
0bcaef40 cmp ebx, [rdi+0x18] | |
0bcaef43 jnb 0x0bca0010 ->0 | |
0bcaef49 mov ecx, [rdi+0x8] | |
0bcaef4c mov [rsp+0x8], ecx | |
0bcaef50 mov dword [rcx+rbx*8+0x4], 0xfffffff4 | |
0bcaef58 mov [rcx+rbx*8], eax | |
0bcaef5b test byte [rdi+0x4], 0x4 | |
0bcaef5f jz 0x0bcaef76 | |
0bcaef61 and byte [rdi+0x4], 0xfb | |
0bcaef65 mov esi, [0x405d83f4] | |
0bcaef6c mov [0x405d83f4], edi | |
0bcaef73 mov [rdi+0xc], esi | |
0bcaef76 cmp dword [rdx+0x1c], -0x09 | |
0bcaef7a jnz 0x0bca0014 ->1 | |
0bcaef80 cmp dword [rdx+0x24], -0x0c | |
0bcaef84 jnz 0x0bca0014 ->1 | |
0bcaef8a mov eax, [rdx+0x20] | |
0bcaef8d cmp dword [rdx+0x2c], 0xfffeffff | |
0bcaef94 jnb 0x0bca0014 ->1 | |
0bcaef9a cmp dword [rdx+0x18], 0x405dafd0 | |
0bcaefa1 jnz 0x0bca0014 ->1 | |
0bcaefa7 cvtsd2si ebp, [rdx+0x28] | |
0bcaefac add ebp, +0x01 | |
0bcaefaf mov r13d, [rax+0x18] | |
0bcaefb3 cmp ebp, r13d | |
0bcaefb6 jnb 0x0bca0014 ->1 | |
0bcaefbc mov r12d, [rax+0x8] | |
0bcaefc0 cmp dword [r12+rbp*8+0x4], -0x0c | |
0bcaefc6 jnz 0x0bca0014 ->1 | |
0bcaefcc mov ebx, [r12+rbp*8] | |
->LOOP: | |
0bcaefd0 mov edi, [rsp+0x10] | |
0bcaefd4 mov r14d, ebx | |
0bcaefd7 call 0x00420530 ->lj_tab_len | |
0bcaefdc mov ebx, eax | |
0bcaefde mov ecx, [rsp+0xc] | |
0bcaefe2 mov eax, [rsp+0x8] | |
0bcaefe6 add ebx, +0x01 | |
0bcaefe9 cmp ebx, ecx | |
0bcaefeb jnb 0x0bca0018 ->2 | |
0bcaeff1 mov dword [rax+rbx*8+0x4], 0xfffffff4 | |
0bcaeff9 mov [rax+rbx*8], r14d | |
0bcaeffd mov r15d, ebp | |
0bcaf000 add ebp, +0x01 | |
0bcaf003 cmp ebp, r13d | |
0bcaf006 jnb 0x0bca001c ->3 | |
0bcaf00c cmp dword [r12+rbp*8+0x4], -0x0c | |
0bcaf012 jnz 0x0bca001c ->3 | |
0bcaf018 mov ebx, [r12+rbp*8] | |
0bcaf01c jmp 0x0bcaefd0 ->LOOP | |
---- TRACE 7 stop -> loop | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 8 start expand.lua:685 | |
0081 TDUP 4 15 | |
0082 GGET 5 2 ; "table" | |
0083 TGETS 5 5 16 ; "remove" | |
0084 MOV 6 3 | |
0085 CALL 5 2 2 | |
0000 . FUNCC ; table.remove | |
0086 TSETB 5 4 2 | |
0087 TSETB 2 4 3 | |
0088 TDUP 5 17 | |
0089 TSETB 5 4 4 | |
0090 MOV 2 4 | |
0091 JMP 4 => 0077 | |
0077 LEN 4 3 | |
0078 ISEQN 4 2 ; 0 | |
0079 JMP 4 => 0092 | |
0080 LOOP 4 => 0092 | |
---- TRACE 8 IR | |
0001 >+ <span class="irt_tab">tab</span> TDUP <span class="irt_tab">{0x40b40c98}</span> | |
0002 <span class="irt_fun">fun</span> SLOAD #0 R | |
0003 <span class="irt_tab">tab</span> FLOAD 0002 func.env | |
0004 <span class="irt_p32">p32</span> HREF 0003 <span class="irt_str">"table"</span> | |
0005 > <span class="irt_p32">p32</span> EQ 0004 <span class="irt_p32">[0x405d8420]</span> | |
0006 <span class="irt_tab">tab</span> FLOAD 0003 tab.meta | |
0007 > <span class="irt_tab">tab</span> NE 0006 <span class="irt_tab">[NULL]</span> | |
0008 <span class="irt_int">int</span> FLOAD 0006 tab.hmask | |
0009 > <span class="irt_int">int</span> EQ 0008 <span class="irt_int">+1 </span> | |
0010 <span class="irt_p32">p32</span> FLOAD 0006 tab.node | |
0011 > <span class="irt_p32">p32</span> HREFK 0010 <span class="irt_str">"__index"</span> @1 | |
0012 > <span class="irt_tab">tab</span> HLOAD 0011 | |
0013 <span class="irt_int">int</span> FLOAD 0012 tab.hmask | |
0014 > <span class="irt_int">int</span> EQ 0013 <span class="irt_int">+63 </span> | |
0015 <span class="irt_p32">p32</span> FLOAD 0012 tab.node | |
0016 > <span class="irt_p32">p32</span> HREFK 0015 <span class="irt_str">"table"</span> @47 | |
0017 > <span class="irt_tab">tab</span> HLOAD 0016 | |
0018 <span class="irt_int">int</span> FLOAD 0017 tab.hmask | |
0019 > <span class="irt_int">int</span> EQ 0018 <span class="irt_int">+7 </span> | |
0020 <span class="irt_p32">p32</span> FLOAD 0017 tab.node | |
0021 > <span class="irt_p32">p32</span> HREFK 0020 <span class="irt_str">"remove"</span> @2 | |
0022 > <span class="irt_fun">fun</span> HLOAD 0021 | |
0023 > <span class="irt_tab">tab</span> SLOAD #4 T | |
0024 > <span class="irt_fun">fun</span> EQ 0022 <span class="irt_fun">table.remove</span> | |
0025 <span class="irt_int">int</span> CALLL lj_tab_len (0023) | |
0026 > <span class="irt_int">int</span> NE 0025 <span class="irt_int">+0 </span> | |
0027 <span class="irt_int">int</span> FLOAD 0023 tab.asize | |
0028 > <span class="irt_int">int</span> ABC 0027 0025 | |
0029 <span class="irt_p32">p32</span> FLOAD 0023 tab.array | |
0030 <span class="irt_p32">p32</span> AREF 0029 0025 | |
0031 > <span class="irt_tab">tab</span> ALOAD 0030 | |
0032 <span class="irt_nil">nil</span> ASTORE 0030 <span class="irt_nil">nil </span> | |
0033 <span class="irt_p32">p32</span> FLOAD 0001 tab.array | |
0034 <span class="irt_p32">p32</span> AREF 0033 <span class="irt_int">+2 </span> | |
0035 <span class="irt_tab">tab</span> ASTORE 0034 0031 | |
0036 > <span class="irt_tab">tab</span> SLOAD #3 T | |
0037 <span class="irt_p32">p32</span> AREF 0033 <span class="irt_int">+3 </span> | |
0038 <span class="irt_tab">tab</span> ASTORE 0037 0036 | |
0039 > <span class="irt_tab">tab</span> TDUP <span class="irt_tab">{0x40b40cd0}</span> | |
0040 <span class="irt_p32">p32</span> AREF 0033 <span class="irt_int">+4 </span> | |
0041 <span class="irt_tab">tab</span> ASTORE 0040 0039 | |
0042 + <span class="irt_int">int</span> CALLL lj_tab_len (0023) | |
0043 > <span class="irt_int">int</span> NE 0042 <span class="irt_int">+0 </span> | |
0044 ------ LOOP ------------ | |
0045 >+ <span class="irt_tab">tab</span> TDUP <span class="irt_tab">{0x40b40c98}</span> | |
0046 > <span class="irt_int">int</span> ABC 0027 0042 | |
0047 <span class="irt_p32">p32</span> AREF 0029 0042 | |
0048 > <span class="irt_tab">tab</span> ALOAD 0047 | |
0049 <span class="irt_nil">nil</span> ASTORE 0047 <span class="irt_nil">nil </span> | |
0050 <span class="irt_p32">p32</span> FLOAD 0045 tab.array | |
0051 <span class="irt_p32">p32</span> AREF 0050 <span class="irt_int">+2 </span> | |
0052 <span class="irt_tab">tab</span> ASTORE 0051 0048 | |
0053 <span class="irt_p32">p32</span> AREF 0050 <span class="irt_int">+3 </span> | |
0054 <span class="irt_tab">tab</span> ASTORE 0053 0001 | |
0055 > <span class="irt_tab">tab</span> TDUP <span class="irt_tab">{0x40b40cd0}</span> | |
0056 <span class="irt_p32">p32</span> AREF 0050 <span class="irt_int">+4 </span> | |
0057 <span class="irt_tab">tab</span> ASTORE 0056 0055 | |
0058 + <span class="irt_int">int</span> CALLL lj_tab_len (0023) | |
0059 > <span class="irt_int">int</span> NE 0058 <span class="irt_int">+0 </span> | |
0060 <span class="irt_int">int</span> PHI 0042 0058 | |
0061 <span class="irt_tab">tab</span> PHI 0001 0045 | |
---- TRACE 8 mcode 660 | |
0bcaeb6e add rsp, -0x10 | |
0bcaeb72 mov dword [0x405d84a0], 0x8 | |
0bcaeb7d mov edi, [0x405d83d8] | |
0bcaeb84 cmp edi, [0x405d83dc] | |
0bcaeb8b jb 0x0bcaeba4 | |
0bcaeb8d mov esi, 0x2 | |
0bcaeb92 mov edi, 0x405d83b8 | |
0bcaeb97 call 0x0041f3d0 ->lj_gc_step_jit | |
0bcaeb9c test eax, eax | |
0bcaeb9e jnz 0x0bca0010 ->0 | |
0bcaeba4 mov edi, [0x405d84ac] | |
0bcaebab mov esi, 0x40b40c98 | |
0bcaebb0 call 0x0041f850 ->lj_tab_dup | |
0bcaebb5 mov ebp, eax | |
0bcaebb7 mov [rsp+0x10], ebp | |
0bcaebbb mov edx, [0x405d84b0] | |
0bcaebc2 mov eax, [rdx-0x8] | |
0bcaebc5 mov eax, [rax+0x8] | |
0bcaebc8 mov ecx, [rax+0x1c] | |
0bcaebcb and ecx, 0x7230fd67 | |
0bcaebd1 lea ecx, [rcx+rcx*2] | |
0bcaebd4 shl ecx, 0x03 | |
0bcaebd7 add ecx, [rax+0x14] | |
0bcaebda cmp dword [rcx+0xc], -0x05 | |
0bcaebde jnz 0x0bcaebed | |
0bcaebe0 cmp dword [rcx+0x8], 0x405dae40 | |
0bcaebe7 jz 0x0bca0010 ->0 | |
0bcaebed mov ecx, [rcx+0x10] | |
0bcaebf0 test ecx, ecx | |
0bcaebf2 jnz 0x0bcaebda | |
0bcaebf4 mov ecx, 0x405d8420 | |
0bcaebf9 mov eax, [rax+0x10] | |
0bcaebfc test eax, eax | |
0bcaebfe jz 0x0bca0010 ->0 | |
0bcaec04 cmp dword [rax+0x1c], +0x01 | |
0bcaec08 jnz 0x0bca0010 ->0 | |
0bcaec0e mov eax, [rax+0x14] | |
0bcaec11 mov rdi, 0xfffffffb405da430 | |
0bcaec1b cmp rdi, [rax+0x20] | |
0bcaec1f jnz 0x0bca0010 ->0 | |
0bcaec25 cmp dword [rax+0x1c], -0x0c | |
0bcaec29 jnz 0x0bca0010 ->0 | |
0bcaec2f mov eax, [rax+0x18] | |
0bcaec32 cmp dword [rax+0x1c], +0x3f | |
0bcaec36 jnz 0x0bca0010 ->0 | |
0bcaec3c mov eax, [rax+0x14] | |
0bcaec3f mov rdi, 0xfffffffb405dae40 | |
0bcaec49 cmp rdi, [rax+0x470] | |
0bcaec50 jnz 0x0bca0010 ->0 | |
0bcaec56 cmp dword [rax+0x46c], -0x0c | |
0bcaec5d jnz 0x0bca0010 ->0 | |
0bcaec63 mov eax, [rax+0x468] | |
0bcaec69 cmp dword [rax+0x1c], +0x07 | |
0bcaec6d jnz 0x0bca0010 ->0 | |
0bcaec73 mov eax, [rax+0x14] | |
0bcaec76 mov rdi, 0xfffffffb405dc538 | |
0bcaec80 cmp rdi, [rax+0x38] | |
0bcaec84 jnz 0x0bca0010 ->0 | |
0bcaec8a cmp dword [rax+0x34], -0x09 | |
0bcaec8e jnz 0x0bca0010 ->0 | |
0bcaec94 cmp dword [rdx+0x1c], -0x0c | |
0bcaec98 jnz 0x0bca0010 ->0 | |
0bcaec9e mov edi, [rdx+0x18] | |
0bcaeca1 mov [rsp+0xc], edi | |
0bcaeca5 cmp dword [rax+0x30], 0x405dc510 | |
0bcaecac jnz 0x0bca0010 ->0 | |
0bcaecb2 call 0x00420530 ->lj_tab_len | |
0bcaecb7 mov ecx, eax | |
0bcaecb9 mov edi, [rsp+0xc] | |
0bcaecbd mov edx, [0x405d84b0] | |
0bcaecc4 test ecx, ecx | |
0bcaecc6 jz 0x0bca0010 ->0 | |
0bcaeccc mov r13d, [rdi+0x18] | |
0bcaecd0 cmp ecx, r13d | |
0bcaecd3 jnb 0x0bca0010 ->0 | |
0bcaecd9 mov r12d, [rdi+0x8] | |
0bcaecdd mov edi, [0x405d84ac] | |
0bcaece4 cmp dword [r12+rcx*8+0x4], -0x0c | |
0bcaecea jnz 0x0bca0010 ->0 | |
0bcaecf0 mov eax, [r12+rcx*8] | |
0bcaecf4 mov dword [r12+rcx*8+0x4], 0xffffffff | |
0bcaecfd mov r14d, [rbp+0x8] | |
0bcaed01 mov dword [r14+0x14], 0xfffffff4 | |
0bcaed09 mov [r14+0x10], eax | |
0bcaed0d cmp dword [rdx+0x14], -0x0c | |
0bcaed11 jnz 0x0bca0014 ->1 | |
0bcaed17 mov eax, [rdx+0x10] | |
0bcaed1a mov dword [r14+0x1c], 0xfffffff4 | |
0bcaed22 mov [r14+0x18], eax | |
0bcaed26 mov esi, 0x40b40cd0 | |
0bcaed2b call 0x0041f850 ->lj_tab_dup | |
0bcaed30 mov edi, [rsp+0xc] | |
0bcaed34 mov dword [r14+0x24], 0xfffffff4 | |
0bcaed3c mov [r14+0x20], eax | |
0bcaed40 call 0x00420530 ->lj_tab_len | |
0bcaed45 mov ebp, eax | |
0bcaed47 mov eax, [rsp+0x10] | |
0bcaed4b test ebp, ebp | |
0bcaed4d jz 0x0bca001c ->3 | |
->LOOP: | |
0bcaed53 mov ebx, eax | |
0bcaed55 mov edi, [0x405d83d8] | |
0bcaed5c cmp edi, [0x405d83dc] | |
0bcaed63 jb 0x0bcaed7c | |
0bcaed65 mov esi, 0x2 | |
0bcaed6a mov edi, 0x405d83b8 | |
0bcaed6f call 0x0041f3d0 ->lj_gc_step_jit | |
0bcaed74 test eax, eax | |
0bcaed76 jnz 0x0bca0020 ->4 | |
0bcaed7c mov edi, [0x405d84ac] | |
0bcaed83 mov esi, 0x40b40c98 | |
0bcaed88 call 0x0041f850 ->lj_tab_dup | |
0bcaed8d mov [rsp+0x8], eax | |
0bcaed91 mov edi, [0x405d84ac] | |
0bcaed98 cmp ebp, r13d | |
0bcaed9b jnb 0x0bca0020 ->4 | |
0bcaeda1 cmp dword [r12+rbp*8+0x4], -0x0c | |
0bcaeda7 jnz 0x0bca0020 ->4 | |
0bcaedad mov r15d, [r12+rbp*8] | |
0bcaedb1 mov dword [r12+rbp*8+0x4], 0xffffffff | |
0bcaedba mov ebp, [rax+0x8] | |
0bcaedbd mov dword [rbp+0x14], 0xfffffff4 | |
0bcaedc4 mov [rbp+0x10], r15d | |
0bcaedc8 mov dword [rbp+0x1c], 0xfffffff4 | |
0bcaedcf mov [rbp+0x18], ebx | |
0bcaedd2 mov esi, 0x40b40cd0 | |
0bcaedd7 call 0x0041f850 ->lj_tab_dup | |
0bcaeddc mov edi, [rsp+0xc] | |
0bcaede0 mov dword [rbp+0x24], 0xfffffff4 | |
0bcaede7 mov [rbp+0x20], eax | |
0bcaedea call 0x00420530 ->lj_tab_len | |
0bcaedef mov ebp, eax | |
0bcaedf1 mov eax, [rsp+0x8] | |
0bcaedf5 test ebp, ebp | |
0bcaedf7 jnz 0x0bcaed53 ->LOOP | |
0bcaedfd jmp 0x0bca0028 ->6 | |
---- TRACE 8 stop -> loop | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 9 start 2/0 utils.lua:39 | |
0011 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0012 JITERL 6 1 | |
0013 GGET 3 0 ; "ipairs" | |
0014 MOV 4 1 | |
0015 CALL 3 4 2 | |
0000 . FUNCC ; ipairs | |
0016 JMP 6 => 0022 | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 JITERL 6 4 | |
0024 RET1 2 2 | |
0018 RETM 6 1 | |
0005 UGET 3 2 ; concat | |
0006 MOV 4 2 | |
0007 TNEW 5 3 | |
0008 TSETB 1 5 1 | |
0009 CALLT 3 3 | |
0000 FUNCF 11 ; utils.lua:37 | |
0001 TNEW 2 0 | |
0002 GGET 3 0 ; "ipairs" | |
0003 MOV 4 0 | |
0004 CALL 3 4 2 | |
0000 . FUNCC ; ipairs | |
0005 JMP 6 => 0011 | |
0011 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0012 JITERL 6 1 | |
---- TRACE 9 IR | |
0001 > <span class="irt_fun">fun</span> SLOAD #4 T | |
0002 > <span class="irt_tab">tab</span> SLOAD #5 T | |
0003 > <span class="irt_num">num</span> SLOAD #6 T | |
0004 > <span class="irt_fun">fun</span> EQ 0001 <span class="irt_fun">ipairs_aux</span> | |
0005 <span class="irt_int">int</span> CONV 0003 <span class="irt_int">int</span>.<span class="irt_num">num</span> | |
0006 <span class="irt_int">int</span> ADD 0005 <span class="irt_int">+1 </span> | |
0007 <span class="irt_int">int</span> FLOAD 0002 tab.asize | |
0008 > <span class="irt_int">int</span> ABC 0007 0006 | |
0009 <span class="irt_p32">p32</span> FLOAD 0002 tab.array | |
0010 <span class="irt_p32">p32</span> AREF 0009 0006 | |
0011 > <span class="irt_nil">nil</span> ALOAD 0010 | |
0012 <span class="irt_fun">fun</span> SLOAD #0 R | |
0013 <span class="irt_tab">tab</span> FLOAD 0012 func.env | |
0014 <span class="irt_p32">p32</span> HREF 0013 <span class="irt_str">"ipairs"</span> | |
0015 > <span class="irt_p32">p32</span> EQ 0014 <span class="irt_p32">[0x405d8420]</span> | |
0016 <span class="irt_tab">tab</span> FLOAD 0013 tab.meta | |
0017 > <span class="irt_tab">tab</span> NE 0016 <span class="irt_tab">[NULL]</span> | |
0018 <span class="irt_int">int</span> FLOAD 0016 tab.hmask | |
0019 > <span class="irt_int">int</span> EQ 0018 <span class="irt_int">+1 </span> | |
0020 <span class="irt_p32">p32</span> FLOAD 0016 tab.node | |
0021 > <span class="irt_p32">p32</span> HREFK 0020 <span class="irt_str">"__index"</span> @1 | |
0022 > <span class="irt_tab">tab</span> HLOAD 0021 | |
0023 <span class="irt_int">int</span> FLOAD 0022 tab.hmask | |
0024 > <span class="irt_int">int</span> EQ 0023 <span class="irt_int">+63 </span> | |
0025 <span class="irt_p32">p32</span> FLOAD 0022 tab.node | |
0026 > <span class="irt_p32">p32</span> HREFK 0025 <span class="irt_str">"ipairs"</span> @18 | |
0027 > <span class="irt_fun">fun</span> HLOAD 0026 | |
0028 > <span class="irt_tab">tab</span> SLOAD #2 T | |
0029 > <span class="irt_fun">fun</span> EQ 0027 <span class="irt_fun">ipairs</span> | |
0030 <span class="irt_int">int</span> FLOAD 0028 tab.asize | |
0031 > <span class="irt_int">int</span> ULE 0030 <span class="irt_int">+1 </span> | |
0032 <span class="irt_int">int</span> FLOAD 0028 tab.hmask | |
0033 > <span class="irt_int">int</span> EQ 0032 <span class="irt_int">+0 </span> | |
0034 > <span class="irt_tab">tab</span> SLOAD #3 T | |
0035 > <span class="irt_p32">p32</span> RETF <span class="irt_pro">proto: 0x40b58a90</span> <span class="irt_p32">[0x40b58b18]</span> | |
0036 > <span class="irt_tab">tab</span> SLOAD #7 T | |
0037 > <span class="irt_p32">p32</span> RETF <span class="irt_pro">proto: 0x403ab5e0</span> <span class="irt_p32">[0x403ab634]</span> | |
0038 <span class="irt_fun">fun</span> SLOAD #0 R | |
0039 > <span class="irt_p32">p32</span> UREFC 0038 #2 | |
0040 > <span class="irt_fun">fun</span> ULOAD 0039 | |
0041 > <span class="irt_tab">tab</span> TNEW #3 #0 | |
0042 <span class="irt_p32">p32</span> FLOAD 0041 tab.array | |
0043 <span class="irt_p32">p32</span> AREF 0042 <span class="irt_int">+1 </span> | |
0044 <span class="irt_tab">tab</span> ASTORE 0043 0036 | |
0045 > <span class="irt_fun">fun</span> EQ 0040 <span class="irt_fun">utils.lua:37</span> | |
0046 > <span class="irt_tab">tab</span> TNEW #0 #0 | |
0047 <span class="irt_tab">tab</span> FLOAD <span class="irt_fun">utils.lua:37</span> func.env | |
0048 <span class="irt_p32">p32</span> HREF 0047 <span class="irt_str">"ipairs"</span> | |
0049 > <span class="irt_p32">p32</span> EQ 0048 <span class="irt_p32">[0x405d8420]</span> | |
0050 <span class="irt_tab">tab</span> FLOAD 0047 tab.meta | |
0051 > <span class="irt_tab">tab</span> NE 0050 <span class="irt_tab">[NULL]</span> | |
0052 <span class="irt_int">int</span> FLOAD 0050 tab.hmask | |
0053 > <span class="irt_int">int</span> EQ 0052 <span class="irt_int">+1 </span> | |
0054 <span class="irt_p32">p32</span> FLOAD 0050 tab.node | |
0055 > <span class="irt_p32">p32</span> HREFK 0054 <span class="irt_str">"__index"</span> @1 | |
0056 > <span class="irt_tab">tab</span> HLOAD 0055 | |
0057 <span class="irt_int">int</span> FLOAD 0056 tab.hmask | |
0058 > <span class="irt_int">int</span> EQ 0057 <span class="irt_int">+63 </span> | |
0059 <span class="irt_p32">p32</span> FLOAD 0056 tab.node | |
0060 > <span class="irt_p32">p32</span> HREFK 0059 <span class="irt_str">"ipairs"</span> @18 | |
0061 > <span class="irt_fun">fun</span> HLOAD 0060 | |
0062 > <span class="irt_fun">fun</span> EQ 0061 <span class="irt_fun">ipairs</span> | |
0063 <span class="irt_int">int</span> FLOAD 0034 tab.asize | |
0064 > <span class="irt_int">int</span> ABC 0063 <span class="irt_int">+1 </span> | |
0065 <span class="irt_p32">p32</span> FLOAD 0034 tab.array | |
0066 <span class="irt_p32">p32</span> AREF 0065 <span class="irt_int">+1 </span> | |
0067 > <span class="irt_tab">tab</span> ALOAD 0066 | |
---- TRACE 9 mcode 854 | |
0bcae815 mov dword [0x405d84a0], 0x9 | |
0bcae820 mov edi, [0x405d83d8] | |
0bcae827 cmp edi, [0x405d83dc] | |
0bcae82e jb 0x0bcae847 | |
0bcae830 mov esi, 0x2 | |
0bcae835 mov edi, 0x405d83b8 | |
0bcae83a call 0x0041f3d0 ->lj_gc_step_jit | |
0bcae83f test eax, eax | |
0bcae841 jnz 0x0bca0010 ->0 | |
0bcae847 mov edi, [0x405d84ac] | |
0bcae84e mov edx, [0x405d84b0] | |
0bcae855 cmp dword [rdx+0x1c], -0x09 | |
0bcae859 jnz 0x0bca0010 ->0 | |
0bcae85f cmp dword [rdx+0x24], -0x0c | |
0bcae863 jnz 0x0bca0010 ->0 | |
0bcae869 mov ebp, [rdx+0x20] | |
0bcae86c cmp dword [rdx+0x2c], 0xfffeffff | |
0bcae873 jnb 0x0bca0010 ->0 | |
0bcae879 cmp dword [rdx+0x18], 0x405dafd0 | |
0bcae880 jnz 0x0bca0010 ->0 | |
0bcae886 cvtsd2si ebx, [rdx+0x28] | |
0bcae88b add ebx, +0x01 | |
0bcae88e cmp ebx, [rbp+0x18] | |
0bcae891 jnb 0x0bca0010 ->0 | |
0bcae897 mov ebp, [rbp+0x8] | |
0bcae89a cmp dword [rbp+rbx*8+0x4], -0x01 | |
0bcae89f jnz 0x0bca0010 ->0 | |
0bcae8a5 mov ebp, [rdx-0x8] | |
0bcae8a8 mov ebp, [rbp+0x8] | |
0bcae8ab mov ebx, [rbp+0x1c] | |
0bcae8ae and ebx, 0x644f2e12 | |
0bcae8b4 lea ebx, [rbx+rbx*2] | |
0bcae8b7 shl ebx, 0x03 | |
0bcae8ba add ebx, [rbp+0x14] | |
0bcae8bd cmp dword [rbx+0xc], -0x05 | |
0bcae8c1 jnz 0x0bcae8d0 | |
0bcae8c3 cmp dword [rbx+0x8], 0x405db028 | |
0bcae8ca jz 0x0bca0010 ->0 | |
0bcae8d0 mov ebx, [rbx+0x10] | |
0bcae8d3 test ebx, ebx | |
0bcae8d5 jnz 0x0bcae8bd | |
0bcae8d7 mov ebx, 0x405d8420 | |
0bcae8dc mov ebp, [rbp+0x10] | |
0bcae8df test ebp, ebp | |
0bcae8e1 jz 0x0bca0010 ->0 | |
0bcae8e7 cmp dword [rbp+0x1c], +0x01 | |
0bcae8eb jnz 0x0bca0010 ->0 | |
0bcae8f1 mov ebp, [rbp+0x14] | |
0bcae8f4 mov rsi, 0xfffffffb405da430 | |
0bcae8fe cmp rsi, [rbp+0x20] | |
0bcae902 jnz 0x0bca0010 ->0 | |
0bcae908 cmp dword [rbp+0x1c], -0x0c | |
0bcae90c jnz 0x0bca0010 ->0 | |
0bcae912 mov ebp, [rbp+0x18] | |
0bcae915 cmp dword [rbp+0x1c], +0x3f | |
0bcae919 jnz 0x0bca0010 ->0 | |
0bcae91f mov ebx, [rbp+0x14] | |
0bcae922 mov rsi, 0xfffffffb405db028 | |
0bcae92c cmp rsi, [rbx+0x1b8] | |
0bcae933 jnz 0x0bca0010 ->0 | |
0bcae939 cmp dword [rbx+0x1b4], -0x09 | |
0bcae940 jnz 0x0bca0010 ->0 | |
0bcae946 cmp dword [rdx+0xc], -0x0c | |
0bcae94a jnz 0x0bca0010 ->0 | |
0bcae950 mov ebp, [rdx+0x8] | |
0bcae953 cmp dword [rbx+0x1b0], 0x405daff8 | |
0bcae95d jnz 0x0bca0010 ->0 | |
0bcae963 cmp dword [rbp+0x18], +0x01 | |
0bcae967 ja 0x0bca0010 ->0 | |
0bcae96d cmp dword [rbp+0x1c], +0x00 | |
0bcae971 jnz 0x0bca0010 ->0 | |
0bcae977 cmp dword [rdx+0x14], -0x0c | |
0bcae97b jnz 0x0bca0010 ->0 | |
0bcae981 mov ebp, [rdx+0x10] | |
0bcae984 cmp dword [rdx-0x4], 0x40b58b18 | |
0bcae98b jnz 0x0bca0014 ->1 | |
0bcae991 add edx, -0x40 | |
0bcae994 mov [0x405d84b0], edx | |
0bcae99b cmp dword [rdx+0x34], -0x0c | |
0bcae99f jnz 0x0bca0018 ->2 | |
0bcae9a5 mov ebx, [rdx+0x30] | |
0bcae9a8 cmp dword [rdx-0x4], 0x403ab634 | |
0bcae9af jnz 0x0bca001c ->3 | |
0bcae9b5 add edx, -0x10 | |
0bcae9b8 mov [0x405d84b0], edx | |
0bcae9bf mov r15d, [rdx-0x8] | |
0bcae9c3 mov esi, [r15+0x1c] | |
0bcae9c7 cmp byte [rsi+0x6], 0x1 | |
0bcae9cb jnz 0x0bca0020 ->4 | |
0bcae9d1 lea r15d, [rsi+0x8] | |
0bcae9d5 cmp dword [r15+0x4], -0x09 | |
0bcae9da jnz 0x0bca0020 ->4 | |
0bcae9e0 mov r14d, [r15] | |
0bcae9e3 mov esi, 0x3 | |
0bcae9e8 call 0x0041f7e0 ->lj_tab_new1 | |
0bcae9ed mov [rsp+0x8], eax | |
0bcae9f1 mov edi, [0x405d84ac] | |
0bcae9f8 mov dword [rax+0x2c], 0xfffffff4 | |
0bcae9ff mov [rax+0x28], ebx | |
0bcaea02 cmp r14d, 0x40b42658 | |
0bcaea09 jnz 0x0bca0024 ->5 | |
0bcaea0f xor esi, esi | |
0bcaea11 call 0x0041f7e0 ->lj_tab_new1 | |
0bcaea16 mov ebx, eax | |
0bcaea18 mov edx, [0x405d84b0] | |
0bcaea1f mov eax, [rsp+0x8] | |
0bcaea23 movsd xmm7, [0x401f5ce0] | |
0bcaea2c mov r15d, [0x40b42660] | |
0bcaea34 mov r13d, [r15+0x1c] | |
0bcaea38 and r13d, 0x644f2e12 | |
0bcaea3f lea r13d, [r13+r13*2+0x0] | |
0bcaea44 shl r13d, 0x03 | |
0bcaea48 add r13d, [r15+0x14] | |
0bcaea4c cmp dword [r13+0xc], -0x05 | |
0bcaea51 jnz 0x0bcaea61 | |
0bcaea53 cmp dword [r13+0x8], 0x405db028 | |
0bcaea5b jz 0x0bca0024 ->5 | |
0bcaea61 mov r13d, [r13+0x10] | |
0bcaea65 test r13d, r13d | |
0bcaea68 jnz 0x0bcaea4c | |
0bcaea6a mov r13d, 0x405d8420 | |
0bcaea70 mov r15d, [r15+0x10] | |
0bcaea74 test r15d, r15d | |
0bcaea77 jz 0x0bca0024 ->5 | |
0bcaea7d cmp dword [r15+0x1c], +0x01 | |
0bcaea82 jnz 0x0bca0024 ->5 | |
0bcaea88 mov r15d, [r15+0x14] | |
0bcaea8c mov rdi, 0xfffffffb405da430 | |
0bcaea96 cmp rdi, [r15+0x20] | |
0bcaea9a jnz 0x0bca0024 ->5 | |
0bcaeaa0 cmp dword [r15+0x1c], -0x0c | |
0bcaeaa5 jnz 0x0bca0024 ->5 | |
0bcaeaab mov r15d, [r15+0x18] | |
0bcaeaaf cmp dword [r15+0x1c], +0x3f | |
0bcaeab4 jnz 0x0bca0024 ->5 | |
0bcaeaba mov r15d, [r15+0x14] | |
0bcaeabe mov rdi, 0xfffffffb405db028 | |
0bcaeac8 cmp rdi, [r15+0x1b8] | |
0bcaeacf jnz 0x0bca0024 ->5 | |
0bcaead5 cmp dword [r15+0x1b4], -0x09 | |
0bcaeadd jnz 0x0bca0024 ->5 | |
0bcaeae3 cmp dword [r15+0x1b0], 0x405daff8 | |
0bcaeaee jnz 0x0bca0024 ->5 | |
0bcaeaf4 cmp dword [rbp+0x18], +0x01 | |
0bcaeaf8 jbe 0x0bca0024 ->5 | |
0bcaeafe mov r15d, [rbp+0x8] | |
0bcaeb02 cmp dword [r15+0xc], -0x0c | |
0bcaeb07 jnz 0x0bca0024 ->5 | |
0bcaeb0d mov r15d, [r15+0x8] | |
0bcaeb11 mov dword [rdx+0x3c], 0xfffffff4 | |
0bcaeb18 mov [rdx+0x38], r15d | |
0bcaeb1c movsd [rdx+0x30], xmm7 | |
0bcaeb21 movsd [rdx+0x28], xmm7 | |
0bcaeb26 mov dword [rdx+0x24], 0xfffffff4 | |
0bcaeb2d mov [rdx+0x20], ebp | |
0bcaeb30 mov dword [rdx+0x1c], 0xfffffff7 | |
0bcaeb37 mov dword [rdx+0x18], 0x405dafd0 | |
0bcaeb3e mov dword [rdx+0x14], 0xfffffff4 | |
0bcaeb45 mov [rdx+0x10], ebx | |
0bcaeb48 mov dword [rdx+0xc], 0xfffffff4 | |
0bcaeb4f mov [rdx+0x8], eax | |
0bcaeb52 mov dword [rdx+0x4], 0xfffffff4 | |
0bcaeb59 mov [rdx], ebp | |
0bcaeb5b mov dword [rdx-0x8], 0x40b42658 | |
0bcaeb62 add rsp, +0x20 | |
0bcaeb66 jmp 0x0bcafcc1 | |
---- TRACE 9 stop -> 1 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 10 start 6/1 utils.lua:40 | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 JITERL 6 4 | |
0024 RET1 2 2 | |
0018 RETM 6 1 | |
0005 UGET 3 2 ; concat | |
0006 MOV 4 2 | |
0007 TNEW 5 3 | |
0008 TSETB 1 5 1 | |
0009 CALLT 3 3 | |
0000 FUNCF 11 ; utils.lua:37 | |
0001 TNEW 2 0 | |
0002 GGET 3 0 ; "ipairs" | |
0003 MOV 4 0 | |
0004 CALL 3 4 2 | |
0000 . FUNCC ; ipairs | |
0005 JMP 6 => 0011 | |
0011 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0012 JITERL 6 1 | |
---- TRACE 10 IR | |
0001 > <span class="irt_fun">fun</span> SLOAD #4 T | |
0002 > <span class="irt_tab">tab</span> SLOAD #5 T | |
0003 > <span class="irt_num">num</span> SLOAD #6 T | |
0004 > <span class="irt_fun">fun</span> EQ 0001 <span class="irt_fun">ipairs_aux</span> | |
0005 <span class="irt_int">int</span> CONV 0003 <span class="irt_int">int</span>.<span class="irt_num">num</span> | |
0006 <span class="irt_int">int</span> ADD 0005 <span class="irt_int">+1 </span> | |
0007 <span class="irt_int">int</span> FLOAD 0002 tab.asize | |
0008 > <span class="irt_int">int</span> ABC 0007 0006 | |
0009 <span class="irt_p32">p32</span> FLOAD 0002 tab.array | |
0010 <span class="irt_p32">p32</span> AREF 0009 0006 | |
0011 > <span class="irt_nil">nil</span> ALOAD 0010 | |
0012 > <span class="irt_tab">tab</span> SLOAD #3 T | |
0013 > <span class="irt_p32">p32</span> RETF <span class="irt_pro">proto: 0x40b58a90</span> <span class="irt_p32">[0x40b58b18]</span> | |
0014 > <span class="irt_tab">tab</span> SLOAD #7 T | |
0015 > <span class="irt_p32">p32</span> RETF <span class="irt_pro">proto: 0x403ab5e0</span> <span class="irt_p32">[0x403ab634]</span> | |
0016 <span class="irt_fun">fun</span> SLOAD #0 R | |
0017 > <span class="irt_p32">p32</span> UREFC 0016 #2 | |
0018 > <span class="irt_fun">fun</span> ULOAD 0017 | |
0019 > <span class="irt_tab">tab</span> TNEW #3 #0 | |
0020 <span class="irt_p32">p32</span> FLOAD 0019 tab.array | |
0021 <span class="irt_p32">p32</span> AREF 0020 <span class="irt_int">+1 </span> | |
0022 <span class="irt_tab">tab</span> ASTORE 0021 0014 | |
0023 > <span class="irt_fun">fun</span> EQ 0018 <span class="irt_fun">utils.lua:37</span> | |
0024 > <span class="irt_tab">tab</span> TNEW #0 #0 | |
0025 <span class="irt_tab">tab</span> FLOAD <span class="irt_fun">utils.lua:37</span> func.env | |
0026 <span class="irt_p32">p32</span> HREF 0025 <span class="irt_str">"ipairs"</span> | |
0027 > <span class="irt_p32">p32</span> EQ 0026 <span class="irt_p32">[0x405d8420]</span> | |
0028 <span class="irt_tab">tab</span> FLOAD 0025 tab.meta | |
0029 > <span class="irt_tab">tab</span> NE 0028 <span class="irt_tab">[NULL]</span> | |
0030 <span class="irt_int">int</span> FLOAD 0028 tab.hmask | |
0031 > <span class="irt_int">int</span> EQ 0030 <span class="irt_int">+1 </span> | |
0032 <span class="irt_p32">p32</span> FLOAD 0028 tab.node | |
0033 > <span class="irt_p32">p32</span> HREFK 0032 <span class="irt_str">"__index"</span> @1 | |
0034 > <span class="irt_tab">tab</span> HLOAD 0033 | |
0035 <span class="irt_int">int</span> FLOAD 0034 tab.hmask | |
0036 > <span class="irt_int">int</span> EQ 0035 <span class="irt_int">+63 </span> | |
0037 <span class="irt_p32">p32</span> FLOAD 0034 tab.node | |
0038 > <span class="irt_p32">p32</span> HREFK 0037 <span class="irt_str">"ipairs"</span> @18 | |
0039 > <span class="irt_fun">fun</span> HLOAD 0038 | |
0040 > <span class="irt_fun">fun</span> EQ 0039 <span class="irt_fun">ipairs</span> | |
0041 <span class="irt_int">int</span> FLOAD 0012 tab.asize | |
0042 > <span class="irt_int">int</span> ABC 0041 <span class="irt_int">+1 </span> | |
0043 <span class="irt_p32">p32</span> FLOAD 0012 tab.array | |
0044 <span class="irt_p32">p32</span> AREF 0043 <span class="irt_int">+1 </span> | |
0045 > <span class="irt_tab">tab</span> ALOAD 0044 | |
---- TRACE 10 mcode 644 | |
0bcae58e mov dword [0x405d84a0], 0xa | |
0bcae599 mov edi, [0x405d83d8] | |
0bcae5a0 cmp edi, [0x405d83dc] | |
0bcae5a7 jb 0x0bcae5c0 | |
0bcae5a9 mov esi, 0x2 | |
0bcae5ae mov edi, 0x405d83b8 | |
0bcae5b3 call 0x0041f3d0 ->lj_gc_step_jit | |
0bcae5b8 test eax, eax | |
0bcae5ba jnz 0x0bca0010 ->0 | |
0bcae5c0 mov edi, [0x405d84ac] | |
0bcae5c7 mov edx, [0x405d84b0] | |
0bcae5ce cmp dword [rdx+0x1c], -0x09 | |
0bcae5d2 jnz 0x0bca0010 ->0 | |
0bcae5d8 cmp dword [rdx+0x24], -0x0c | |
0bcae5dc jnz 0x0bca0010 ->0 | |
0bcae5e2 mov ebp, [rdx+0x20] | |
0bcae5e5 cmp dword [rdx+0x2c], 0xfffeffff | |
0bcae5ec jnb 0x0bca0010 ->0 | |
0bcae5f2 cmp dword [rdx+0x18], 0x405dafd0 | |
0bcae5f9 jnz 0x0bca0010 ->0 | |
0bcae5ff cvtsd2si ebx, [rdx+0x28] | |
0bcae604 add ebx, +0x01 | |
0bcae607 cmp ebx, [rbp+0x18] | |
0bcae60a jnb 0x0bca0010 ->0 | |
0bcae610 mov ebp, [rbp+0x8] | |
0bcae613 cmp dword [rbp+rbx*8+0x4], -0x01 | |
0bcae618 jnz 0x0bca0010 ->0 | |
0bcae61e cmp dword [rdx+0x14], -0x0c | |
0bcae622 jnz 0x0bca0010 ->0 | |
0bcae628 mov ebp, [rdx+0x10] | |
0bcae62b cmp dword [rdx-0x4], 0x40b58b18 | |
0bcae632 jnz 0x0bca0014 ->1 | |
0bcae638 add edx, -0x40 | |
0bcae63b mov [0x405d84b0], edx | |
0bcae642 cmp dword [rdx+0x34], -0x0c | |
0bcae646 jnz 0x0bca0018 ->2 | |
0bcae64c mov ebx, [rdx+0x30] | |
0bcae64f cmp dword [rdx-0x4], 0x403ab634 | |
0bcae656 jnz 0x0bca001c ->3 | |
0bcae65c add edx, -0x10 | |
0bcae65f mov [0x405d84b0], edx | |
0bcae666 mov r15d, [rdx-0x8] | |
0bcae66a mov esi, [r15+0x1c] | |
0bcae66e cmp byte [rsi+0x6], 0x1 | |
0bcae672 jnz 0x0bca0020 ->4 | |
0bcae678 lea r15d, [rsi+0x8] | |
0bcae67c cmp dword [r15+0x4], -0x09 | |
0bcae681 jnz 0x0bca0020 ->4 | |
0bcae687 mov r14d, [r15] | |
0bcae68a mov esi, 0x3 | |
0bcae68f call 0x0041f7e0 ->lj_tab_new1 | |
0bcae694 mov [rsp+0x8], eax | |
0bcae698 mov edi, [0x405d84ac] | |
0bcae69f mov dword [rax+0x2c], 0xfffffff4 | |
0bcae6a6 mov [rax+0x28], ebx | |
0bcae6a9 cmp r14d, 0x40b42658 | |
0bcae6b0 jnz 0x0bca0024 ->5 | |
0bcae6b6 xor esi, esi | |
0bcae6b8 call 0x0041f7e0 ->lj_tab_new1 | |
0bcae6bd mov ebx, eax | |
0bcae6bf mov edx, [0x405d84b0] | |
0bcae6c6 mov eax, [rsp+0x8] | |
0bcae6ca movsd xmm7, [0x401f5ce0] | |
0bcae6d3 mov r15d, [0x40b42660] | |
0bcae6db mov r13d, [r15+0x1c] | |
0bcae6df and r13d, 0x644f2e12 | |
0bcae6e6 lea r13d, [r13+r13*2+0x0] | |
0bcae6eb shl r13d, 0x03 | |
0bcae6ef add r13d, [r15+0x14] | |
0bcae6f3 cmp dword [r13+0xc], -0x05 | |
0bcae6f8 jnz 0x0bcae708 | |
0bcae6fa cmp dword [r13+0x8], 0x405db028 | |
0bcae702 jz 0x0bca0024 ->5 | |
0bcae708 mov r13d, [r13+0x10] | |
0bcae70c test r13d, r13d | |
0bcae70f jnz 0x0bcae6f3 | |
0bcae711 mov r13d, 0x405d8420 | |
0bcae717 mov r15d, [r15+0x10] | |
0bcae71b test r15d, r15d | |
0bcae71e jz 0x0bca0024 ->5 | |
0bcae724 cmp dword [r15+0x1c], +0x01 | |
0bcae729 jnz 0x0bca0024 ->5 | |
0bcae72f mov r15d, [r15+0x14] | |
0bcae733 mov rdi, 0xfffffffb405da430 | |
0bcae73d cmp rdi, [r15+0x20] | |
0bcae741 jnz 0x0bca0024 ->5 | |
0bcae747 cmp dword [r15+0x1c], -0x0c | |
0bcae74c jnz 0x0bca0024 ->5 | |
0bcae752 mov r15d, [r15+0x18] | |
0bcae756 cmp dword [r15+0x1c], +0x3f | |
0bcae75b jnz 0x0bca0024 ->5 | |
0bcae761 mov r15d, [r15+0x14] | |
0bcae765 mov rdi, 0xfffffffb405db028 | |
0bcae76f cmp rdi, [r15+0x1b8] | |
0bcae776 jnz 0x0bca0024 ->5 | |
0bcae77c cmp dword [r15+0x1b4], -0x09 | |
0bcae784 jnz 0x0bca0024 ->5 | |
0bcae78a cmp dword [r15+0x1b0], 0x405daff8 | |
0bcae795 jnz 0x0bca0024 ->5 | |
0bcae79b cmp dword [rbp+0x18], +0x01 | |
0bcae79f jbe 0x0bca0024 ->5 | |
0bcae7a5 mov r15d, [rbp+0x8] | |
0bcae7a9 cmp dword [r15+0xc], -0x0c | |
0bcae7ae jnz 0x0bca0024 ->5 | |
0bcae7b4 mov r15d, [r15+0x8] | |
0bcae7b8 mov dword [rdx+0x3c], 0xfffffff4 | |
0bcae7bf mov [rdx+0x38], r15d | |
0bcae7c3 movsd [rdx+0x30], xmm7 | |
0bcae7c8 movsd [rdx+0x28], xmm7 | |
0bcae7cd mov dword [rdx+0x24], 0xfffffff4 | |
0bcae7d4 mov [rdx+0x20], ebp | |
0bcae7d7 mov dword [rdx+0x1c], 0xfffffff7 | |
0bcae7de mov dword [rdx+0x18], 0x405dafd0 | |
0bcae7e5 mov dword [rdx+0x14], 0xfffffff4 | |
0bcae7ec mov [rdx+0x10], ebx | |
0bcae7ef mov dword [rdx+0xc], 0xfffffff4 | |
0bcae7f6 mov [rdx+0x8], eax | |
0bcae7f9 mov dword [rdx+0x4], 0xfffffff4 | |
0bcae800 mov [rdx], ebp | |
0bcae802 mov dword [rdx-0x8], 0x40b42658 | |
0bcae809 add rsp, +0x20 | |
0bcae80d jmp 0x0bcafcc1 | |
---- TRACE 10 stop -> 1 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 11 start 2/2 utils.lua:41 | |
0024 RET1 2 2 | |
0018 CALLM 3 2 1 | |
0000 . FUNCF 11 ; utils.lua:37 | |
0001 . TNEW 2 0 | |
0002 . GGET 3 0 ; "ipairs" | |
0003 . MOV 4 0 | |
0004 . CALL 3 4 2 | |
0000 . . FUNCC ; ipairs | |
0005 . JMP 6 => 0011 | |
0011 . ITERC 6 3 3 | |
0000 . . FUNCC ; ipairs_aux | |
0012 . JITERL 6 1 | |
---- TRACE 11 IR | |
0001 > <span class="irt_tab">tab</span> SLOAD #3 T | |
0002 > <span class="irt_p32">p32</span> RETF <span class="irt_pro">proto: 0x40b40870</span> <span class="irt_p32">[0x40b408f8]</span> | |
0003 > <span class="irt_fun">fun</span> SLOAD #4 T | |
0004 > <span class="irt_tab">tab</span> SLOAD #5 T | |
0005 > <span class="irt_fun">fun</span> EQ 0003 <span class="irt_fun">utils.lua:37</span> | |
0006 > <span class="irt_tab">tab</span> TNEW #0 #0 | |
0007 <span class="irt_tab">tab</span> FLOAD <span class="irt_fun">utils.lua:37</span> func.env | |
0008 <span class="irt_p32">p32</span> HREF 0007 <span class="irt_str">"ipairs"</span> | |
0009 > <span class="irt_p32">p32</span> EQ 0008 <span class="irt_p32">[0x405d8420]</span> | |
0010 <span class="irt_tab">tab</span> FLOAD 0007 tab.meta | |
0011 > <span class="irt_tab">tab</span> NE 0010 <span class="irt_tab">[NULL]</span> | |
0012 <span class="irt_int">int</span> FLOAD 0010 tab.hmask | |
0013 > <span class="irt_int">int</span> EQ 0012 <span class="irt_int">+1 </span> | |
0014 <span class="irt_p32">p32</span> FLOAD 0010 tab.node | |
0015 > <span class="irt_p32">p32</span> HREFK 0014 <span class="irt_str">"__index"</span> @1 | |
0016 > <span class="irt_tab">tab</span> HLOAD 0015 | |
0017 <span class="irt_int">int</span> FLOAD 0016 tab.hmask | |
0018 > <span class="irt_int">int</span> EQ 0017 <span class="irt_int">+63 </span> | |
0019 <span class="irt_p32">p32</span> FLOAD 0016 tab.node | |
0020 > <span class="irt_p32">p32</span> HREFK 0019 <span class="irt_str">"ipairs"</span> @18 | |
0021 > <span class="irt_fun">fun</span> HLOAD 0020 | |
0022 > <span class="irt_fun">fun</span> EQ 0021 <span class="irt_fun">ipairs</span> | |
0023 <span class="irt_int">int</span> FLOAD 0004 tab.asize | |
0024 > <span class="irt_int">int</span> ABC 0023 <span class="irt_int">+1 </span> | |
0025 <span class="irt_p32">p32</span> FLOAD 0004 tab.array | |
0026 <span class="irt_p32">p32</span> AREF 0025 <span class="irt_int">+1 </span> | |
0027 > <span class="irt_tab">tab</span> ALOAD 0026 | |
---- TRACE 11 mcode 485 | |
0bcae3a6 mov dword [0x405d84a0], 0xb | |
0bcae3b1 mov edi, [0x405d83d8] | |
0bcae3b8 cmp edi, [0x405d83dc] | |
0bcae3bf jb 0x0bcae3d8 | |
0bcae3c1 mov esi, 0x1 | |
0bcae3c6 mov edi, 0x405d83b8 | |
0bcae3cb call 0x0041f3d0 ->lj_gc_step_jit | |
0bcae3d0 test eax, eax | |
0bcae3d2 jnz 0x0bca0010 ->0 | |
0bcae3d8 mov edi, [0x405d84ac] | |
0bcae3df mov edx, [0x405d84b0] | |
0bcae3e6 cmp dword [rdx+0x14], -0x0c | |
0bcae3ea jnz 0x0bca0010 ->0 | |
0bcae3f0 mov ebp, [rdx+0x10] | |
0bcae3f3 cmp dword [rdx-0x4], 0x40b408f8 | |
0bcae3fa jnz 0x0bca0014 ->1 | |
0bcae400 add edx, -0x30 | |
0bcae403 mov [0x405d84b0], edx | |
0bcae40a cmp dword [rdx+0x1c], -0x09 | |
0bcae40e jnz 0x0bca0018 ->2 | |
0bcae414 cmp dword [rdx+0x24], -0x0c | |
0bcae418 jnz 0x0bca0018 ->2 | |
0bcae41e mov ebx, [rdx+0x20] | |
0bcae421 cmp dword [rdx+0x18], 0x40b42658 | |
0bcae428 jnz 0x0bca0018 ->2 | |
0bcae42e xor esi, esi | |
0bcae430 call 0x0041f7e0 ->lj_tab_new1 | |
0bcae435 mov edx, [0x405d84b0] | |
0bcae43c movsd xmm7, [0x401f5ce0] | |
0bcae445 mov r15d, [0x40b42660] | |
0bcae44d mov r14d, [r15+0x1c] | |
0bcae451 and r14d, 0x644f2e12 | |
0bcae458 lea r14d, [r14+r14*2] | |
0bcae45c shl r14d, 0x03 | |
0bcae460 add r14d, [r15+0x14] | |
0bcae464 cmp dword [r14+0xc], -0x05 | |
0bcae469 jnz 0x0bcae479 | |
0bcae46b cmp dword [r14+0x8], 0x405db028 | |
0bcae473 jz 0x0bca0018 ->2 | |
0bcae479 mov r14d, [r14+0x10] | |
0bcae47d test r14d, r14d | |
0bcae480 jnz 0x0bcae464 | |
0bcae482 mov r14d, 0x405d8420 | |
0bcae488 mov r15d, [r15+0x10] | |
0bcae48c test r15d, r15d | |
0bcae48f jz 0x0bca0018 ->2 | |
0bcae495 cmp dword [r15+0x1c], +0x01 | |
0bcae49a jnz 0x0bca0018 ->2 | |
0bcae4a0 mov r15d, [r15+0x14] | |
0bcae4a4 mov rdi, 0xfffffffb405da430 | |
0bcae4ae cmp rdi, [r15+0x20] | |
0bcae4b2 jnz 0x0bca0018 ->2 | |
0bcae4b8 cmp dword [r15+0x1c], -0x0c | |
0bcae4bd jnz 0x0bca0018 ->2 | |
0bcae4c3 mov r15d, [r15+0x18] | |
0bcae4c7 cmp dword [r15+0x1c], +0x3f | |
0bcae4cc jnz 0x0bca0018 ->2 | |
0bcae4d2 mov r15d, [r15+0x14] | |
0bcae4d6 mov rdi, 0xfffffffb405db028 | |
0bcae4e0 cmp rdi, [r15+0x1b8] | |
0bcae4e7 jnz 0x0bca0018 ->2 | |
0bcae4ed cmp dword [r15+0x1b4], -0x09 | |
0bcae4f5 jnz 0x0bca0018 ->2 | |
0bcae4fb cmp dword [r15+0x1b0], 0x405daff8 | |
0bcae506 jnz 0x0bca0018 ->2 | |
0bcae50c cmp dword [rbx+0x18], +0x01 | |
0bcae510 jbe 0x0bca0018 ->2 | |
0bcae516 mov r15d, [rbx+0x8] | |
0bcae51a cmp dword [r15+0xc], -0x0c | |
0bcae51f jnz 0x0bca0018 ->2 | |
0bcae525 mov r15d, [r15+0x8] | |
0bcae529 mov dword [rdx+0x5c], 0xfffffff4 | |
0bcae530 mov [rdx+0x58], r15d | |
0bcae534 movsd [rdx+0x50], xmm7 | |
0bcae539 movsd [rdx+0x48], xmm7 | |
0bcae53e mov dword [rdx+0x44], 0xfffffff4 | |
0bcae545 mov [rdx+0x40], ebx | |
0bcae548 mov dword [rdx+0x3c], 0xfffffff7 | |
0bcae54f mov dword [rdx+0x38], 0x405dafd0 | |
0bcae556 mov dword [rdx+0x34], 0xfffffff4 | |
0bcae55d mov [rdx+0x30], eax | |
0bcae560 mov dword [rdx+0x2c], 0xfffffff4 | |
0bcae567 mov [rdx+0x28], ebp | |
0bcae56a mov dword [rdx+0x1c], 0x40b408fc | |
0bcae571 mov dword [rdx+0x18], 0x40b42658 | |
0bcae578 add edx, +0x20 | |
0bcae57b mov [0x405d84b0], edx | |
0bcae582 add rsp, +0x20 | |
0bcae586 jmp 0x0bcafcc1 | |
---- TRACE 11 stop -> 1 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 12 start 4/1 utils.lua:40 | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 JITERL 6 4 | |
0024 RET1 2 2 | |
0088 TDUP 11 15 | |
0089 TDUP 12 16 | |
0090 TSETB 4 12 2 | |
0091 TSETB 6 12 3 | |
0092 TSETB 12 11 2 | |
0093 TSETB 8 11 3 | |
0094 ISNEN 8 0 ; 1 | |
0095 JMP 12 => 0099 | |
0099 ISNEN 8 1 ; 2 | |
0100 JMP 12 => 0105 | |
0101 TDUP 12 17 | |
0102 TSETB 11 12 2 | |
0103 MOV 13 10 | |
0104 RET 12 3 | |
0005 UGET 4 0 ; expand_arith | |
0006 TGETB 5 0 3 | |
0007 MOV 6 1 | |
0008 CALL 4 3 3 | |
0000 . FUNCF 14 ; expand.lua:632 | |
0001 . GGET 2 0 ; "assert" | |
0002 . MOV 3 0 | |
0003 . CALL 2 1 2 | |
0000 . . FUNCC ; assert | |
0004 . GGET 2 1 ; "type" | |
0005 . MOV 3 0 | |
0006 . CALL 2 2 2 | |
0000 . . FUNCC ; type | |
0007 . ISEQS 2 2 ; "number" | |
0008 . JMP 2 => 0011 | |
0011 . MOV 2 0 | |
0012 . TNEW 3 0 | |
0013 . RET 2 3 | |
0009 TNEW 6 4 | |
0010 TGETB 7 0 1 | |
0011 TSETB 7 6 1 | |
0012 TSETB 2 6 2 | |
0013 TSETB 4 6 3 | |
0014 UGET 7 1 ; concat | |
0015 MOV 8 3 | |
0016 MOV 9 5 | |
0017 CALL 7 0 3 | |
0000 . FUNCF 11 ; utils.lua:37 | |
0001 . TNEW 2 0 | |
0002 . GGET 3 0 ; "ipairs" | |
0003 . MOV 4 0 | |
0004 . CALL 3 4 2 | |
0000 . . FUNCC ; ipairs | |
0005 . JMP 6 => 0011 | |
0011 . ITERC 6 3 3 | |
0000 . . FUNCC ; ipairs_aux | |
0012 . JITERL 6 1 | |
---- TRACE 12 IR | |
0001 > <span class="irt_fun">fun</span> SLOAD #4 T | |
0002 > <span class="irt_tab">tab</span> SLOAD #5 T | |
0003 > <span class="irt_num">num</span> SLOAD #6 T | |
0004 > <span class="irt_fun">fun</span> EQ 0001 <span class="irt_fun">ipairs_aux</span> | |
0005 <span class="irt_int">int</span> CONV 0003 <span class="irt_int">int</span>.<span class="irt_num">num</span> | |
0006 <span class="irt_int">int</span> ADD 0005 <span class="irt_int">+1 </span> | |
0007 <span class="irt_int">int</span> FLOAD 0002 tab.asize | |
0008 > <span class="irt_int">int</span> ABC 0007 0006 | |
0009 <span class="irt_p32">p32</span> FLOAD 0002 tab.array | |
0010 <span class="irt_p32">p32</span> AREF 0009 0006 | |
0011 > <span class="irt_nil">nil</span> ALOAD 0010 | |
0012 > <span class="irt_tab">tab</span> SLOAD #3 T | |
0013 > <span class="irt_p32">p32</span> RETF <span class="irt_pro">proto: 0x40b54c08</span> <span class="irt_p32">[0x40b54da8]</span> | |
0014 > <span class="irt_tab">tab</span> TDUP <span class="irt_tab">{0x405e1ee8}</span> | |
0015 > <span class="irt_tab">tab</span> TDUP <span class="irt_tab">{0x405e3708}</span> | |
0016 > <span class="irt_tab">tab</span> SLOAD #5 T | |
0017 <span class="irt_p32">p32</span> FLOAD 0015 tab.array | |
0018 <span class="irt_p32">p32</span> AREF 0017 <span class="irt_int">+2 </span> | |
0019 <span class="irt_tab">tab</span> ASTORE 0018 0016 | |
0020 > <span class="irt_num">num</span> SLOAD #7 T | |
0021 <span class="irt_p32">p32</span> AREF 0017 <span class="irt_int">+3 </span> | |
0022 <span class="irt_num">num</span> ASTORE 0021 0020 | |
0023 <span class="irt_p32">p32</span> FLOAD 0014 tab.array | |
0024 <span class="irt_p32">p32</span> AREF 0023 <span class="irt_int">+2 </span> | |
0025 <span class="irt_tab">tab</span> ASTORE 0024 0015 | |
0026 > <span class="irt_num">num</span> SLOAD #9 T | |
0027 <span class="irt_p32">p32</span> AREF 0023 <span class="irt_int">+3 </span> | |
0028 <span class="irt_num">num</span> ASTORE 0027 0026 | |
0029 > <span class="irt_num">num</span> NE 0026 <span class="irt_num">+1 </span> | |
0030 > <span class="irt_num">num</span> EQ 0026 <span class="irt_num">+2 </span> | |
0031 > <span class="irt_tab">tab</span> TDUP <span class="irt_tab">{0x40be9a48}</span> | |
0032 <span class="irt_p32">p32</span> FLOAD 0031 tab.array | |
0033 <span class="irt_p32">p32</span> AREF 0032 <span class="irt_int">+2 </span> | |
0034 <span class="irt_tab">tab</span> ASTORE 0033 0014 | |
0035 > <span class="irt_p32">p32</span> RETF <span class="irt_pro">proto: 0x40b58a90</span> <span class="irt_p32">[0x40b58ae4]</span> | |
0036 <span class="irt_fun">fun</span> SLOAD #0 R | |
0037 > <span class="irt_p32">p32</span> UREFC 0036 #0 | |
0038 > <span class="irt_fun">fun</span> ULOAD 0037 | |
0039 > <span class="irt_tab">tab</span> SLOAD #1 T | |
0040 <span class="irt_int">int</span> FLOAD 0039 tab.asize | |
0041 > <span class="irt_int">int</span> ABC 0040 <span class="irt_int">+3 </span> | |
0042 <span class="irt_p32">p32</span> FLOAD 0039 tab.array | |
0043 <span class="irt_p32">p32</span> AREF 0042 <span class="irt_int">+3 </span> | |
0044 > <span class="irt_num">num</span> ALOAD 0043 | |
0045 > <span class="irt_str">str</span> SLOAD #2 T | |
0046 > <span class="irt_fun">fun</span> EQ 0038 <span class="irt_fun">expand.lua:632</span> | |
0047 <span class="irt_tab">tab</span> FLOAD <span class="irt_fun">expand.lua:632</span> func.env | |
0048 <span class="irt_p32">p32</span> HREF 0047 <span class="irt_str">"assert"</span> | |
0049 > <span class="irt_p32">p32</span> EQ 0048 <span class="irt_p32">[0x405d8420]</span> | |
0050 <span class="irt_tab">tab</span> FLOAD 0047 tab.meta | |
0051 > <span class="irt_tab">tab</span> NE 0050 <span class="irt_tab">[NULL]</span> | |
0052 <span class="irt_int">int</span> FLOAD 0050 tab.hmask | |
0053 > <span class="irt_int">int</span> EQ 0052 <span class="irt_int">+1 </span> | |
0054 <span class="irt_p32">p32</span> FLOAD 0050 tab.node | |
0055 > <span class="irt_p32">p32</span> HREFK 0054 <span class="irt_str">"__index"</span> @1 | |
0056 > <span class="irt_tab">tab</span> HLOAD 0055 | |
0057 <span class="irt_int">int</span> FLOAD 0056 tab.hmask | |
0058 > <span class="irt_int">int</span> EQ 0057 <span class="irt_int">+63 </span> | |
0059 <span class="irt_p32">p32</span> FLOAD 0056 tab.node | |
0060 > <span class="irt_p32">p32</span> HREFK 0059 <span class="irt_str">"assert"</span> @3 | |
0061 > <span class="irt_fun">fun</span> HLOAD 0060 | |
0062 > <span class="irt_fun">fun</span> EQ 0061 <span class="irt_fun">assert</span> | |
0063 <span class="irt_p32">p32</span> HREF 0047 <span class="irt_str">"type"</span> | |
0064 > <span class="irt_p32">p32</span> EQ 0063 <span class="irt_p32">[0x405d8420]</span> | |
0065 > <span class="irt_p32">p32</span> HREFK 0059 <span class="irt_str">"type"</span> @60 | |
0066 > <span class="irt_fun">fun</span> HLOAD 0065 | |
0067 > <span class="irt_fun">fun</span> EQ 0066 <span class="irt_fun">type</span> | |
0068 > <span class="irt_tab">tab</span> TNEW #0 #0 | |
0069 > <span class="irt_tab">tab</span> TNEW #4 #0 | |
0070 <span class="irt_p32">p32</span> AREF 0042 <span class="irt_int">+1 </span> | |
0071 > <span class="irt_str">str</span> ALOAD 0070 | |
0072 <span class="irt_p32">p32</span> FLOAD 0069 tab.array | |
0073 <span class="irt_p32">p32</span> AREF 0072 <span class="irt_int">+1 </span> | |
0074 <span class="irt_str">str</span> ASTORE 0073 0071 | |
0075 <span class="irt_p32">p32</span> AREF 0072 <span class="irt_int">+2 </span> | |
0076 <span class="irt_tab">tab</span> ASTORE 0075 0031 | |
0077 <span class="irt_p32">p32</span> AREF 0072 <span class="irt_int">+3 </span> | |
0078 <span class="irt_num">num</span> ASTORE 0077 0044 | |
0079 > <span class="irt_fun">fun</span> EQ 0036 <span class="irt_fun">expand.lua:664</span> | |
0080 > <span class="irt_tab">tab</span> TNEW #0 #0 | |
0081 <span class="irt_tab">tab</span> FLOAD <span class="irt_fun">utils.lua:37</span> func.env | |
0082 <span class="irt_p32">p32</span> HREF 0081 <span class="irt_str">"ipairs"</span> | |
0083 > <span class="irt_p32">p32</span> EQ 0082 <span class="irt_p32">[0x405d8420]</span> | |
0084 <span class="irt_tab">tab</span> FLOAD 0081 tab.meta | |
0085 > <span class="irt_tab">tab</span> NE 0084 <span class="irt_tab">[NULL]</span> | |
0086 <span class="irt_int">int</span> FLOAD 0084 tab.hmask | |
0087 > <span class="irt_int">int</span> EQ 0086 <span class="irt_int">+1 </span> | |
0088 <span class="irt_p32">p32</span> FLOAD 0084 tab.node | |
0089 > <span class="irt_p32">p32</span> HREFK 0088 <span class="irt_str">"__index"</span> @1 | |
0090 > <span class="irt_tab">tab</span> HLOAD 0089 | |
0091 <span class="irt_int">int</span> FLOAD 0090 tab.hmask | |
0092 > <span class="irt_int">int</span> EQ 0091 <span class="irt_int">+63 </span> | |
0093 <span class="irt_p32">p32</span> FLOAD 0090 tab.node | |
0094 > <span class="irt_p32">p32</span> HREFK 0093 <span class="irt_str">"ipairs"</span> @18 | |
0095 > <span class="irt_fun">fun</span> HLOAD 0094 | |
0096 > <span class="irt_fun">fun</span> EQ 0095 <span class="irt_fun">ipairs</span> | |
0097 <span class="irt_int">int</span> FLOAD 0012 tab.asize | |
0098 > <span class="irt_int">int</span> ABC 0097 <span class="irt_int">+1 </span> | |
0099 <span class="irt_p32">p32</span> FLOAD 0012 tab.array | |
0100 <span class="irt_p32">p32</span> AREF 0099 <span class="irt_int">+1 </span> | |
0101 > <span class="irt_tab">tab</span> ALOAD 0100 | |
---- TRACE 12 mcode 1332 | |
0bcade6f mov dword [0x405d84a0], 0xc | |
0bcade7a mov edi, [0x405d83d8] | |
0bcade81 cmp edi, [0x405d83dc] | |
0bcade88 jb 0x0bcadea1 | |
0bcade8a mov esi, 0x6 | |
0bcade8f mov edi, 0x405d83b8 | |
0bcade94 call 0x0041f3d0 ->lj_gc_step_jit | |
0bcade99 test eax, eax | |
0bcade9b jnz 0x0bca0010 ->0 | |
0bcadea1 mov edi, [0x405d84ac] | |
0bcadea8 mov edx, [0x405d84b0] | |
0bcadeaf cmp dword [rdx+0x1c], -0x09 | |
0bcadeb3 jnz 0x0bca0010 ->0 | |
0bcadeb9 cmp dword [rdx+0x24], -0x0c | |
0bcadebd jnz 0x0bca0010 ->0 | |
0bcadec3 mov ebp, [rdx+0x20] | |
0bcadec6 cmp dword [rdx+0x2c], 0xfffeffff | |
0bcadecd jnb 0x0bca0010 ->0 | |
0bcaded3 cmp dword [rdx+0x18], 0x405dafd0 | |
0bcadeda jnz 0x0bca0010 ->0 | |
0bcadee0 cvtsd2si ebx, [rdx+0x28] | |
0bcadee5 add ebx, +0x01 | |
0bcadee8 cmp ebx, [rbp+0x18] | |
0bcadeeb jnb 0x0bca0010 ->0 | |
0bcadef1 mov ebp, [rbp+0x8] | |
0bcadef4 cmp dword [rbp+rbx*8+0x4], -0x01 | |
0bcadef9 jnz 0x0bca0010 ->0 | |
0bcadeff cmp dword [rdx+0x14], -0x0c | |
0bcadf03 jnz 0x0bca0010 ->0 | |
0bcadf09 mov ebp, [rdx+0x10] | |
0bcadf0c cmp dword [rdx-0x4], 0x40b54da8 | |
0bcadf13 jnz 0x0bca0014 ->1 | |
0bcadf19 add edx, -0x58 | |
0bcadf1c mov [0x405d84b0], edx | |
0bcadf23 mov esi, 0x405e1ee8 | |
0bcadf28 call 0x0041f850 ->lj_tab_dup | |
0bcadf2d mov [rsp+0x18], eax | |
0bcadf31 mov edi, [0x405d84ac] | |
0bcadf38 mov esi, 0x405e3708 | |
0bcadf3d call 0x0041f850 ->lj_tab_dup | |
0bcadf42 mov ebx, eax | |
0bcadf44 mov edi, [0x405d84ac] | |
0bcadf4b mov edx, [0x405d84b0] | |
0bcadf52 mov eax, [rsp+0x18] | |
0bcadf56 cmp dword [rdx+0x24], -0x0c | |
0bcadf5a jnz 0x0bca0018 ->2 | |
0bcadf60 mov r14d, [rdx+0x20] | |
0bcadf64 mov r15d, [rbx+0x8] | |
0bcadf68 mov dword [r15+0x14], 0xfffffff4 | |
0bcadf70 mov [r15+0x10], r14d | |
0bcadf74 cmp dword [rdx+0x34], 0xfffeffff | |
0bcadf7b jnb 0x0bca001c ->3 | |
0bcadf81 movsd xmm7, [rdx+0x30] | |
0bcadf86 movsd [r15+0x18], xmm7 | |
0bcadf8c mov eax, [rax+0x8] | |
0bcadf8f mov dword [rax+0x14], 0xfffffff4 | |
0bcadf96 mov [rax+0x10], ebx | |
0bcadf99 cmp dword [rdx+0x44], 0xfffeffff | |
0bcadfa0 jnb 0x0bca0020 ->4 | |
0bcadfa6 movsd xmm7, [rdx+0x40] | |
0bcadfab movsd [rax+0x18], xmm7 | |
0bcadfb0 ucomisd xmm7, [0x401f5ce0] | |
0bcadfb9 jpe 0x0bcadfc1 | |
0bcadfbb jz 0x0bca0024 ->5 | |
0bcadfc1 ucomisd xmm7, [0x401f5cf0] | |
0bcadfca jpe 0x0bca0028 ->6 | |
0bcadfd0 jnz 0x0bca0028 ->6 | |
0bcadfd6 mov esi, 0x40be9a48 | |
0bcadfdb call 0x0041f850 ->lj_tab_dup | |
0bcadfe0 mov ebx, eax | |
0bcadfe2 mov [rsp+0xc], ebx | |
0bcadfe6 mov edi, [0x405d84ac] | |
0bcadfed mov edx, [0x405d84b0] | |
0bcadff4 mov eax, [rsp+0x18] | |
0bcadff8 mov ebx, [rbx+0x8] | |
0bcadffb mov dword [rbx+0x14], 0xfffffff4 | |
0bcae002 mov [rbx+0x10], eax | |
0bcae005 cmp dword [rdx-0x4], 0x40b58ae4 | |
0bcae00c jnz 0x0bca0030 ->8 | |
0bcae012 add edx, -0x18 | |
0bcae015 mov [0x405d84b0], edx | |
0bcae01c mov r15d, [rdx-0x8] | |
0bcae020 mov esi, [r15+0x14] | |
0bcae024 cmp byte [rsi+0x6], 0x1 | |
0bcae028 jnz 0x0bca0034 ->9 | |
0bcae02e lea ebx, [rsi+0x8] | |
0bcae031 cmp dword [rbx+0x4], -0x09 | |
0bcae035 jnz 0x0bca0034 ->9 | |
0bcae03b cmp dword [rdx+0x4], -0x0c | |
0bcae03f jnz 0x0bca0034 ->9 | |
0bcae045 mov r14d, [rdx] | |
0bcae048 cmp dword [r14+0x18], +0x03 | |
0bcae04d jbe 0x0bca0034 ->9 | |
0bcae053 mov r14d, [r14+0x8] | |
0bcae057 cmp dword [r14+0x1c], 0xfffeffff | |
0bcae05f jnb 0x0bca0034 ->9 | |
0bcae065 movsd xmm7, [r14+0x18] | |
0bcae06b movsd [rsp+0x10], xmm7 | |
0bcae071 cmp dword [rdx+0xc], -0x05 | |
0bcae075 jnz 0x0bca0034 ->9 | |
0bcae07b cmp dword [rbx], 0x40b41f28 | |
0bcae081 jnz 0x0bca0034 ->9 | |
0bcae087 mov r12d, [0x40b41f30] | |
0bcae08f mov ebx, [r12+0x1c] | |
0bcae094 and ebx, 0xce2b6183 | |
0bcae09a lea ebx, [rbx+rbx*2] | |
0bcae09d shl ebx, 0x03 | |
0bcae0a0 add ebx, [r12+0x14] | |
0bcae0a5 cmp dword [rbx+0xc], -0x05 | |
0bcae0a9 jnz 0x0bcae0b8 | |
0bcae0ab cmp dword [rbx+0x8], 0x405dad18 | |
0bcae0b2 jz 0x0bca0034 ->9 | |
0bcae0b8 mov ebx, [rbx+0x10] | |
0bcae0bb test ebx, ebx | |
0bcae0bd jnz 0x0bcae0a5 | |
0bcae0bf mov ebx, 0x405d8420 | |
0bcae0c4 mov ebx, [r12+0x10] | |
0bcae0c9 test ebx, ebx | |
0bcae0cb jz 0x0bca0034 ->9 | |
0bcae0d1 cmp dword [rbx+0x1c], +0x01 | |
0bcae0d5 jnz 0x0bca0034 ->9 | |
0bcae0db mov ebx, [rbx+0x14] | |
0bcae0de mov rsi, 0xfffffffb405da430 | |
0bcae0e8 cmp rsi, [rbx+0x20] | |
0bcae0ec jnz 0x0bca0034 ->9 | |
0bcae0f2 cmp dword [rbx+0x1c], -0x0c | |
0bcae0f6 jnz 0x0bca0034 ->9 | |
0bcae0fc mov ebx, [rbx+0x18] | |
0bcae0ff cmp dword [rbx+0x1c], +0x3f | |
0bcae103 jnz 0x0bca0034 ->9 | |
0bcae109 mov ebx, [rbx+0x14] | |
0bcae10c mov rsi, 0xfffffffb405dad18 | |
0bcae116 cmp rsi, [rbx+0x50] | |
0bcae11a jnz 0x0bca0034 ->9 | |
0bcae120 cmp dword [rbx+0x4c], -0x09 | |
0bcae124 jnz 0x0bca0034 ->9 | |
0bcae12a cmp dword [rbx+0x48], 0x405dacf0 | |
0bcae131 jnz 0x0bca0034 ->9 | |
0bcae137 mov r13d, [r12+0x1c] | |
0bcae13c and r13d, 0x798a813c | |
0bcae143 lea r13d, [r13+r13*2+0x0] | |
0bcae148 shl r13d, 0x03 | |
0bcae14c add r13d, [r12+0x14] | |
0bcae151 cmp dword [r13+0xc], -0x05 | |
0bcae156 jnz 0x0bcae166 | |
0bcae158 cmp dword [r13+0x8], 0x405daf18 | |
0bcae160 jz 0x0bca0034 ->9 | |
0bcae166 mov r13d, [r13+0x10] | |
0bcae16a test r13d, r13d | |
0bcae16d jnz 0x0bcae151 | |
0bcae16f mov r13d, 0x405d8420 | |
0bcae175 mov rsi, 0xfffffffb405daf18 | |
0bcae17f cmp rsi, [rbx+0x5a8] | |
0bcae186 jnz 0x0bca0034 ->9 | |
0bcae18c cmp dword [rbx+0x5a4], -0x09 | |
0bcae193 jnz 0x0bca0034 ->9 | |
0bcae199 cmp dword [rbx+0x5a0], 0x405dae80 | |
0bcae1a3 jnz 0x0bca0034 ->9 | |
0bcae1a9 xor esi, esi | |
0bcae1ab call 0x0041f7e0 ->lj_tab_new1 | |
0bcae1b0 mov [rsp+0x8], eax | |
0bcae1b4 mov edi, [0x405d84ac] | |
0bcae1bb mov esi, 0x4 | |
0bcae1c0 call 0x0041f7e0 ->lj_tab_new1 | |
0bcae1c5 mov ebx, eax | |
0bcae1c7 mov edi, [0x405d84ac] | |
0bcae1ce mov eax, [rsp+0xc] | |
0bcae1d2 movsd xmm7, [rsp+0x10] | |
0bcae1d8 cmp dword [r14+0xc], -0x05 | |
0bcae1dd jnz 0x0bca0034 ->9 | |
0bcae1e3 mov r14d, [r14+0x8] | |
0bcae1e7 mov dword [rbx+0x2c], 0xfffffffb | |
0bcae1ee mov [rbx+0x28], r14d | |
0bcae1f2 mov dword [rbx+0x34], 0xfffffff4 | |
0bcae1f9 mov [rbx+0x30], eax | |
0bcae1fc movsd [rbx+0x38], xmm7 | |
0bcae201 cmp r15d, 0x40b420e8 | |
0bcae208 jnz 0x0bca0038 ->10 | |
0bcae20e xor esi, esi | |
0bcae210 call 0x0041f7e0 ->lj_tab_new1 | |
0bcae215 mov r15d, eax | |
0bcae218 mov edx, [0x405d84b0] | |
0bcae21f mov eax, [rsp+0x8] | |
0bcae223 movsd xmm7, [0x401f5ce0] | |
0bcae22c mov r14d, [0x40b42660] | |
0bcae234 mov r13d, [r14+0x1c] | |
0bcae238 and r13d, 0x644f2e12 | |
0bcae23f lea r13d, [r13+r13*2+0x0] | |
0bcae244 shl r13d, 0x03 | |
0bcae248 add r13d, [r14+0x14] | |
0bcae24c cmp dword [r13+0xc], -0x05 | |
0bcae251 jnz 0x0bcae261 | |
0bcae253 cmp dword [r13+0x8], 0x405db028 | |
0bcae25b jz 0x0bca0038 ->10 | |
0bcae261 mov r13d, [r13+0x10] | |
0bcae265 test r13d, r13d | |
0bcae268 jnz 0x0bcae24c | |
0bcae26a mov r13d, 0x405d8420 | |
0bcae270 mov r14d, [r14+0x10] | |
0bcae274 test r14d, r14d | |
0bcae277 jz 0x0bca0038 ->10 | |
0bcae27d cmp dword [r14+0x1c], +0x01 | |
0bcae282 jnz 0x0bca0038 ->10 | |
0bcae288 mov r14d, [r14+0x14] | |
0bcae28c mov rdi, 0xfffffffb405da430 | |
0bcae296 cmp rdi, [r14+0x20] | |
0bcae29a jnz 0x0bca0038 ->10 | |
0bcae2a0 cmp dword [r14+0x1c], -0x0c | |
0bcae2a5 jnz 0x0bca0038 ->10 | |
0bcae2ab mov r14d, [r14+0x18] | |
0bcae2af cmp dword [r14+0x1c], +0x3f | |
0bcae2b4 jnz 0x0bca0038 ->10 | |
0bcae2ba mov r14d, [r14+0x14] | |
0bcae2be mov rdi, 0xfffffffb405db028 | |
0bcae2c8 cmp rdi, [r14+0x1b8] | |
0bcae2cf jnz 0x0bca0038 ->10 | |
0bcae2d5 cmp dword [r14+0x1b4], -0x09 | |
0bcae2dd jnz 0x0bca0038 ->10 | |
0bcae2e3 cmp dword [r14+0x1b0], 0x405daff8 | |
0bcae2ee jnz 0x0bca0038 ->10 | |
0bcae2f4 cmp dword [rbp+0x18], +0x01 | |
0bcae2f8 jbe 0x0bca0038 ->10 | |
0bcae2fe mov r14d, [rbp+0x8] | |
0bcae302 cmp dword [r14+0xc], -0x0c | |
0bcae307 jnz 0x0bca0038 ->10 | |
0bcae30d mov r14d, [r14+0x8] | |
0bcae311 mov dword [rdx+0x7c], 0xfffffff4 | |
0bcae318 mov [rdx+0x78], r14d | |
0bcae31c movsd [rdx+0x70], xmm7 | |
0bcae321 movsd [rdx+0x68], xmm7 | |
0bcae326 mov dword [rdx+0x64], 0xfffffff4 | |
0bcae32d mov [rdx+0x60], ebp | |
0bcae330 mov dword [rdx+0x5c], 0xfffffff7 | |
0bcae337 mov dword [rdx+0x58], 0x405dafd0 | |
0bcae33e mov dword [rdx+0x54], 0xfffffff4 | |
0bcae345 mov [rdx+0x50], r15d | |
0bcae349 mov dword [rdx+0x4c], 0xfffffff4 | |
0bcae350 mov [rdx+0x48], eax | |
0bcae353 mov dword [rdx+0x44], 0xfffffff4 | |
0bcae35a mov [rdx+0x40], ebp | |
0bcae35d mov dword [rdx+0x3c], 0x40b58b18 | |
0bcae364 mov dword [rdx+0x38], 0x40b42658 | |
0bcae36b mov dword [rdx+0x34], 0xfffffff4 | |
0bcae372 mov [rdx+0x30], ebx | |
0bcae375 mov dword [rdx+0x2c], 0xfffffff4 | |
0bcae37c mov [rdx+0x28], eax | |
0bcae37f mov dword [rdx+0x1c], 0xfffffff4 | |
0bcae386 mov [rdx+0x18], ebp | |
0bcae389 mov dword [rdx-0x8], 0x40b420e8 | |
0bcae390 add edx, +0x40 | |
0bcae393 mov [0x405d84b0], edx | |
0bcae39a add rsp, +0x10 | |
0bcae39e jmp 0x0bcafcc1 | |
---- TRACE 12 stop -> 1 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 13 start expand.lua:632 | |
0001 GGET 2 0 ; "assert" | |
0002 MOV 3 0 | |
0003 CALL 2 1 2 | |
0000 . FUNCC ; assert | |
0004 GGET 2 1 ; "type" | |
0005 MOV 3 0 | |
0006 CALL 2 2 2 | |
0000 . FUNCC ; type | |
0007 ISEQS 2 2 ; "number" | |
0008 JMP 2 => 0011 | |
0009 ISNES 0 3 ; "len" | |
0010 JMP 2 => 0014 | |
0014 TGETB 2 0 1 | |
0015 UGET 3 0 ; binops | |
0016 TGETV 3 3 2 | |
0017 ISF 3 | |
0018 JMP 4 => 0048 | |
0048 GGET 3 0 ; "assert" | |
0049 ISNES 2 7 ; "[]" | |
0050 JMP 4 => 0053 | |
0053 KPRI 4 2 | |
0054 KSTR 5 8 ; "expr has already been expanded?" | |
0055 CALL 3 1 3 | |
0000 . FUNCC ; assert | |
0056 GGET 3 0 ; "assert" | |
0057 MOV 5 2 | |
0058 TGETS 4 2 9 ; "match" | |
0059 KSTR 6 10 ; "^%[(.+)%]$" | |
0060 CALL 4 2 3 | |
0000 . FUNCC ; string.match | |
---- TRACE 13 abort expand.lua:651 -- NYI: FastFunc string.match | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 13 start 6/2 utils.lua:40 | |
0017 GGET 8 1 ; "table" | |
0018 TGETS 8 8 2 ; "insert" | |
0019 MOV 9 2 | |
0020 MOV 10 7 | |
0021 CALL 8 1 3 | |
0000 . FUNCC ; table.insert | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 JITERL 6 4 | |
0024 RET1 2 2 | |
0068 UCLO 0 => 0069 | |
---- TRACE 13 abort expand.lua:617 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 13 start 6/2 utils.lua:40 | |
0017 GGET 8 1 ; "table" | |
0018 TGETS 8 8 2 ; "insert" | |
0019 MOV 9 2 | |
0020 MOV 10 7 | |
0021 CALL 8 1 3 | |
0000 . FUNCC ; table.insert | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 JITERL 6 4 | |
0024 RET1 2 2 | |
0068 UCLO 0 => 0069 | |
---- TRACE 13 abort expand.lua:617 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 13 start 10/1 utils.lua:41 | |
0024 RET1 2 2 | |
0088 TDUP 11 15 | |
0089 TDUP 12 16 | |
0090 TSETB 4 12 2 | |
0091 TSETB 6 12 3 | |
0092 TSETB 12 11 2 | |
0093 TSETB 8 11 3 | |
0094 ISNEN 8 0 ; 1 | |
0095 JMP 12 => 0099 | |
0099 ISNEN 8 1 ; 2 | |
0100 JMP 12 => 0105 | |
0101 TDUP 12 17 | |
0102 TSETB 11 12 2 | |
0103 MOV 13 10 | |
0104 RET 12 3 | |
0005 UGET 4 0 ; expand_arith | |
0006 TGETB 5 0 3 | |
0007 MOV 6 1 | |
0008 CALL 4 3 3 | |
0000 . FUNCF 14 ; expand.lua:632 | |
0001 . GGET 2 0 ; "assert" | |
0002 . MOV 3 0 | |
0003 . CALL 2 1 2 | |
0000 . . FUNCC ; assert | |
0004 . GGET 2 1 ; "type" | |
0005 . MOV 3 0 | |
0006 . CALL 2 2 2 | |
0000 . . FUNCC ; type | |
0007 . ISEQS 2 2 ; "number" | |
0008 . JMP 2 => 0011 | |
0011 . MOV 2 0 | |
0012 . TNEW 3 0 | |
0013 . RET 2 3 | |
0009 TNEW 6 4 | |
0010 TGETB 7 0 1 | |
0011 TSETB 7 6 1 | |
0012 TSETB 2 6 2 | |
0013 TSETB 4 6 3 | |
0014 UGET 7 1 ; concat | |
0015 MOV 8 3 | |
0016 MOV 9 5 | |
0017 CALL 7 0 3 | |
0000 . FUNCF 11 ; utils.lua:37 | |
0001 . TNEW 2 0 | |
0002 . GGET 3 0 ; "ipairs" | |
0003 . MOV 4 0 | |
0004 . CALL 3 4 2 | |
0000 . . FUNCC ; ipairs | |
0005 . JMP 6 => 0011 | |
0011 . ITERC 6 3 3 | |
0000 . . FUNCC ; ipairs_aux | |
0012 . JITERL 6 1 | |
---- TRACE 13 IR | |
0001 > <span class="irt_tab">tab</span> SLOAD #3 T | |
0002 > <span class="irt_p32">p32</span> RETF <span class="irt_pro">proto: 0x40b54c08</span> <span class="irt_p32">[0x40b54da8]</span> | |
0003 > <span class="irt_tab">tab</span> TDUP <span class="irt_tab">{0x405e1ee8}</span> | |
0004 > <span class="irt_tab">tab</span> TDUP <span class="irt_tab">{0x405e3708}</span> | |
0005 > <span class="irt_num">num</span> SLOAD #5 T | |
0006 <span class="irt_p32">p32</span> FLOAD 0004 tab.array | |
0007 <span class="irt_p32">p32</span> AREF 0006 <span class="irt_int">+2 </span> | |
0008 <span class="irt_num">num</span> ASTORE 0007 0005 | |
0009 > <span class="irt_num">num</span> SLOAD #7 T | |
0010 <span class="irt_p32">p32</span> AREF 0006 <span class="irt_int">+3 </span> | |
0011 <span class="irt_num">num</span> ASTORE 0010 0009 | |
0012 <span class="irt_p32">p32</span> FLOAD 0003 tab.array | |
0013 <span class="irt_p32">p32</span> AREF 0012 <span class="irt_int">+2 </span> | |
0014 <span class="irt_tab">tab</span> ASTORE 0013 0004 | |
0015 > <span class="irt_num">num</span> SLOAD #9 T | |
0016 <span class="irt_p32">p32</span> AREF 0012 <span class="irt_int">+3 </span> | |
0017 <span class="irt_num">num</span> ASTORE 0016 0015 | |
0018 > <span class="irt_num">num</span> NE 0015 <span class="irt_num">+1 </span> | |
0019 > <span class="irt_num">num</span> EQ 0015 <span class="irt_num">+2 </span> | |
0020 > <span class="irt_tab">tab</span> TDUP <span class="irt_tab">{0x40be9a48}</span> | |
0021 <span class="irt_p32">p32</span> FLOAD 0020 tab.array | |
0022 <span class="irt_p32">p32</span> AREF 0021 <span class="irt_int">+2 </span> | |
0023 <span class="irt_tab">tab</span> ASTORE 0022 0003 | |
0024 > <span class="irt_p32">p32</span> RETF <span class="irt_pro">proto: 0x40b58a90</span> <span class="irt_p32">[0x40b58ae4]</span> | |
0025 <span class="irt_fun">fun</span> SLOAD #0 R | |
0026 > <span class="irt_p32">p32</span> UREFC 0025 #0 | |
0027 > <span class="irt_fun">fun</span> ULOAD 0026 | |
0028 > <span class="irt_tab">tab</span> SLOAD #1 T | |
0029 <span class="irt_int">int</span> FLOAD 0028 tab.asize | |
0030 > <span class="irt_int">int</span> ABC 0029 <span class="irt_int">+3 </span> | |
0031 <span class="irt_p32">p32</span> FLOAD 0028 tab.array | |
0032 <span class="irt_p32">p32</span> AREF 0031 <span class="irt_int">+3 </span> | |
0033 > <span class="irt_num">num</span> ALOAD 0032 | |
0034 > <span class="irt_str">str</span> SLOAD #2 T | |
0035 > <span class="irt_fun">fun</span> EQ 0027 <span class="irt_fun">expand.lua:632</span> | |
0036 <span class="irt_tab">tab</span> FLOAD <span class="irt_fun">expand.lua:632</span> func.env | |
0037 <span class="irt_p32">p32</span> HREF 0036 <span class="irt_str">"assert"</span> | |
0038 > <span class="irt_p32">p32</span> EQ 0037 <span class="irt_p32">[0x405d8420]</span> | |
0039 <span class="irt_tab">tab</span> FLOAD 0036 tab.meta | |
0040 > <span class="irt_tab">tab</span> NE 0039 <span class="irt_tab">[NULL]</span> | |
0041 <span class="irt_int">int</span> FLOAD 0039 tab.hmask | |
0042 > <span class="irt_int">int</span> EQ 0041 <span class="irt_int">+1 </span> | |
0043 <span class="irt_p32">p32</span> FLOAD 0039 tab.node | |
0044 > <span class="irt_p32">p32</span> HREFK 0043 <span class="irt_str">"__index"</span> @1 | |
0045 > <span class="irt_tab">tab</span> HLOAD 0044 | |
0046 <span class="irt_int">int</span> FLOAD 0045 tab.hmask | |
0047 > <span class="irt_int">int</span> EQ 0046 <span class="irt_int">+63 </span> | |
0048 <span class="irt_p32">p32</span> FLOAD 0045 tab.node | |
0049 > <span class="irt_p32">p32</span> HREFK 0048 <span class="irt_str">"assert"</span> @3 | |
0050 > <span class="irt_fun">fun</span> HLOAD 0049 | |
0051 > <span class="irt_fun">fun</span> EQ 0050 <span class="irt_fun">assert</span> | |
0052 <span class="irt_p32">p32</span> HREF 0036 <span class="irt_str">"type"</span> | |
0053 > <span class="irt_p32">p32</span> EQ 0052 <span class="irt_p32">[0x405d8420]</span> | |
0054 > <span class="irt_p32">p32</span> HREFK 0048 <span class="irt_str">"type"</span> @60 | |
0055 > <span class="irt_fun">fun</span> HLOAD 0054 | |
0056 > <span class="irt_fun">fun</span> EQ 0055 <span class="irt_fun">type</span> | |
0057 > <span class="irt_tab">tab</span> TNEW #0 #0 | |
0058 > <span class="irt_tab">tab</span> TNEW #4 #0 | |
0059 <span class="irt_p32">p32</span> AREF 0031 <span class="irt_int">+1 </span> | |
0060 > <span class="irt_str">str</span> ALOAD 0059 | |
0061 <span class="irt_p32">p32</span> FLOAD 0058 tab.array | |
0062 <span class="irt_p32">p32</span> AREF 0061 <span class="irt_int">+1 </span> | |
0063 <span class="irt_str">str</span> ASTORE 0062 0060 | |
0064 <span class="irt_p32">p32</span> AREF 0061 <span class="irt_int">+2 </span> | |
0065 <span class="irt_tab">tab</span> ASTORE 0064 0020 | |
0066 <span class="irt_p32">p32</span> AREF 0061 <span class="irt_int">+3 </span> | |
0067 <span class="irt_num">num</span> ASTORE 0066 0033 | |
0068 > <span class="irt_fun">fun</span> EQ 0025 <span class="irt_fun">expand.lua:664</span> | |
0069 > <span class="irt_tab">tab</span> TNEW #0 #0 | |
0070 <span class="irt_tab">tab</span> FLOAD <span class="irt_fun">utils.lua:37</span> func.env | |
0071 <span class="irt_p32">p32</span> HREF 0070 <span class="irt_str">"ipairs"</span> | |
0072 > <span class="irt_p32">p32</span> EQ 0071 <span class="irt_p32">[0x405d8420]</span> | |
0073 <span class="irt_tab">tab</span> FLOAD 0070 tab.meta | |
0074 > <span class="irt_tab">tab</span> NE 0073 <span class="irt_tab">[NULL]</span> | |
0075 <span class="irt_int">int</span> FLOAD 0073 tab.hmask | |
0076 > <span class="irt_int">int</span> EQ 0075 <span class="irt_int">+1 </span> | |
0077 <span class="irt_p32">p32</span> FLOAD 0073 tab.node | |
0078 > <span class="irt_p32">p32</span> HREFK 0077 <span class="irt_str">"__index"</span> @1 | |
0079 > <span class="irt_tab">tab</span> HLOAD 0078 | |
0080 <span class="irt_int">int</span> FLOAD 0079 tab.hmask | |
0081 > <span class="irt_int">int</span> EQ 0080 <span class="irt_int">+63 </span> | |
0082 <span class="irt_p32">p32</span> FLOAD 0079 tab.node | |
0083 > <span class="irt_p32">p32</span> HREFK 0082 <span class="irt_str">"ipairs"</span> @18 | |
0084 > <span class="irt_fun">fun</span> HLOAD 0083 | |
0085 > <span class="irt_fun">fun</span> EQ 0084 <span class="irt_fun">ipairs</span> | |
0086 <span class="irt_int">int</span> FLOAD 0001 tab.asize | |
0087 > <span class="irt_int">int</span> ABC 0086 <span class="irt_int">+1 </span> | |
0088 <span class="irt_p32">p32</span> FLOAD 0001 tab.array | |
0089 <span class="irt_p32">p32</span> AREF 0088 <span class="irt_int">+1 </span> | |
0090 > <span class="irt_tab">tab</span> ALOAD 0089 | |
---- TRACE 13 mcode 1250 | |
0bcad98a mov dword [0x405d84a0], 0xd | |
0bcad995 mov edi, [0x405d83d8] | |
0bcad99c cmp edi, [0x405d83dc] | |
0bcad9a3 jb 0x0bcad9bc | |
0bcad9a5 mov esi, 0x6 | |
0bcad9aa mov edi, 0x405d83b8 | |
0bcad9af call 0x0041f3d0 ->lj_gc_step_jit | |
0bcad9b4 test eax, eax | |
0bcad9b6 jnz 0x0bca0010 ->0 | |
0bcad9bc mov edi, [0x405d84ac] | |
0bcad9c3 mov edx, [0x405d84b0] | |
0bcad9ca cmp dword [rdx+0x14], -0x0c | |
0bcad9ce jnz 0x0bca0010 ->0 | |
0bcad9d4 mov ebp, [rdx+0x10] | |
0bcad9d7 cmp dword [rdx-0x4], 0x40b54da8 | |
0bcad9de jnz 0x0bca0014 ->1 | |
0bcad9e4 add edx, -0x58 | |
0bcad9e7 mov [0x405d84b0], edx | |
0bcad9ee mov esi, 0x405e1ee8 | |
0bcad9f3 call 0x0041f850 ->lj_tab_dup | |
0bcad9f8 mov [rsp+0x18], eax | |
0bcad9fc mov edi, [0x405d84ac] | |
0bcada03 mov esi, 0x405e3708 | |
0bcada08 call 0x0041f850 ->lj_tab_dup | |
0bcada0d mov ebx, eax | |
0bcada0f mov edi, [0x405d84ac] | |
0bcada16 mov edx, [0x405d84b0] | |
0bcada1d mov eax, [rsp+0x18] | |
0bcada21 cmp dword [rdx+0x24], 0xfffeffff | |
0bcada28 jnb 0x0bca0018 ->2 | |
0bcada2e movsd xmm7, [rdx+0x20] | |
0bcada33 mov r15d, [rbx+0x8] | |
0bcada37 movsd [r15+0x10], xmm7 | |
0bcada3d cmp dword [rdx+0x34], 0xfffeffff | |
0bcada44 jnb 0x0bca001c ->3 | |
0bcada4a movsd xmm7, [rdx+0x30] | |
0bcada4f movsd [r15+0x18], xmm7 | |
0bcada55 mov eax, [rax+0x8] | |
0bcada58 mov dword [rax+0x14], 0xfffffff4 | |
0bcada5f mov [rax+0x10], ebx | |
0bcada62 cmp dword [rdx+0x44], 0xfffeffff | |
0bcada69 jnb 0x0bca0020 ->4 | |
0bcada6f movsd xmm7, [rdx+0x40] | |
0bcada74 movsd [rax+0x18], xmm7 | |
0bcada79 ucomisd xmm7, [0x401f5ce0] | |
0bcada82 jpe 0x0bcada8a | |
0bcada84 jz 0x0bca0024 ->5 | |
0bcada8a ucomisd xmm7, [0x401f5cf0] | |
0bcada93 jpe 0x0bca0028 ->6 | |
0bcada99 jnz 0x0bca0028 ->6 | |
0bcada9f mov esi, 0x40be9a48 | |
0bcadaa4 call 0x0041f850 ->lj_tab_dup | |
0bcadaa9 mov ebx, eax | |
0bcadaab mov [rsp+0xc], ebx | |
0bcadaaf mov edi, [0x405d84ac] | |
0bcadab6 mov edx, [0x405d84b0] | |
0bcadabd mov eax, [rsp+0x18] | |
0bcadac1 mov ebx, [rbx+0x8] | |
0bcadac4 mov dword [rbx+0x14], 0xfffffff4 | |
0bcadacb mov [rbx+0x10], eax | |
0bcadace cmp dword [rdx-0x4], 0x40b58ae4 | |
0bcadad5 jnz 0x0bca0030 ->8 | |
0bcadadb add edx, -0x18 | |
0bcadade mov [0x405d84b0], edx | |
0bcadae5 mov r15d, [rdx-0x8] | |
0bcadae9 mov esi, [r15+0x14] | |
0bcadaed cmp byte [rsi+0x6], 0x1 | |
0bcadaf1 jnz 0x0bca0034 ->9 | |
0bcadaf7 lea ebx, [rsi+0x8] | |
0bcadafa cmp dword [rbx+0x4], -0x09 | |
0bcadafe jnz 0x0bca0034 ->9 | |
0bcadb04 cmp dword [rdx+0x4], -0x0c | |
0bcadb08 jnz 0x0bca0034 ->9 | |
0bcadb0e mov r14d, [rdx] | |
0bcadb11 cmp dword [r14+0x18], +0x03 | |
0bcadb16 jbe 0x0bca0034 ->9 | |
0bcadb1c mov r14d, [r14+0x8] | |
0bcadb20 cmp dword [r14+0x1c], 0xfffeffff | |
0bcadb28 jnb 0x0bca0034 ->9 | |
0bcadb2e movsd xmm7, [r14+0x18] | |
0bcadb34 movsd [rsp+0x10], xmm7 | |
0bcadb3a cmp dword [rdx+0xc], -0x05 | |
0bcadb3e jnz 0x0bca0034 ->9 | |
0bcadb44 cmp dword [rbx], 0x40b41f28 | |
0bcadb4a jnz 0x0bca0034 ->9 | |
0bcadb50 mov r12d, [0x40b41f30] | |
0bcadb58 mov ebx, [r12+0x1c] | |
0bcadb5d and ebx, 0xce2b6183 | |
0bcadb63 lea ebx, [rbx+rbx*2] | |
0bcadb66 shl ebx, 0x03 | |
0bcadb69 add ebx, [r12+0x14] | |
0bcadb6e cmp dword [rbx+0xc], -0x05 | |
0bcadb72 jnz 0x0bcadb81 | |
0bcadb74 cmp dword [rbx+0x8], 0x405dad18 | |
0bcadb7b jz 0x0bca0034 ->9 | |
0bcadb81 mov ebx, [rbx+0x10] | |
0bcadb84 test ebx, ebx | |
0bcadb86 jnz 0x0bcadb6e | |
0bcadb88 mov ebx, 0x405d8420 | |
0bcadb8d mov ebx, [r12+0x10] | |
0bcadb92 test ebx, ebx | |
0bcadb94 jz 0x0bca0034 ->9 | |
0bcadb9a cmp dword [rbx+0x1c], +0x01 | |
0bcadb9e jnz 0x0bca0034 ->9 | |
0bcadba4 mov ebx, [rbx+0x14] | |
0bcadba7 mov rsi, 0xfffffffb405da430 | |
0bcadbb1 cmp rsi, [rbx+0x20] | |
0bcadbb5 jnz 0x0bca0034 ->9 | |
0bcadbbb cmp dword [rbx+0x1c], -0x0c | |
0bcadbbf jnz 0x0bca0034 ->9 | |
0bcadbc5 mov ebx, [rbx+0x18] | |
0bcadbc8 cmp dword [rbx+0x1c], +0x3f | |
0bcadbcc jnz 0x0bca0034 ->9 | |
0bcadbd2 mov ebx, [rbx+0x14] | |
0bcadbd5 mov rsi, 0xfffffffb405dad18 | |
0bcadbdf cmp rsi, [rbx+0x50] | |
0bcadbe3 jnz 0x0bca0034 ->9 | |
0bcadbe9 cmp dword [rbx+0x4c], -0x09 | |
0bcadbed jnz 0x0bca0034 ->9 | |
0bcadbf3 cmp dword [rbx+0x48], 0x405dacf0 | |
0bcadbfa jnz 0x0bca0034 ->9 | |
0bcadc00 mov r13d, [r12+0x1c] | |
0bcadc05 and r13d, 0x798a813c | |
0bcadc0c lea r13d, [r13+r13*2+0x0] | |
0bcadc11 shl r13d, 0x03 | |
0bcadc15 add r13d, [r12+0x14] | |
0bcadc1a cmp dword [r13+0xc], -0x05 | |
0bcadc1f jnz 0x0bcadc2f | |
0bcadc21 cmp dword [r13+0x8], 0x405daf18 | |
0bcadc29 jz 0x0bca0034 ->9 | |
0bcadc2f mov r13d, [r13+0x10] | |
0bcadc33 test r13d, r13d | |
0bcadc36 jnz 0x0bcadc1a | |
0bcadc38 mov r13d, 0x405d8420 | |
0bcadc3e mov rsi, 0xfffffffb405daf18 | |
0bcadc48 cmp rsi, [rbx+0x5a8] | |
0bcadc4f jnz 0x0bca0034 ->9 | |
0bcadc55 cmp dword [rbx+0x5a4], -0x09 | |
0bcadc5c jnz 0x0bca0034 ->9 | |
0bcadc62 cmp dword [rbx+0x5a0], 0x405dae80 | |
0bcadc6c jnz 0x0bca0034 ->9 | |
0bcadc72 xor esi, esi | |
0bcadc74 call 0x0041f7e0 ->lj_tab_new1 | |
0bcadc79 mov [rsp+0x8], eax | |
0bcadc7d mov edi, [0x405d84ac] | |
0bcadc84 mov esi, 0x4 | |
0bcadc89 call 0x0041f7e0 ->lj_tab_new1 | |
0bcadc8e mov ebx, eax | |
0bcadc90 mov edi, [0x405d84ac] | |
0bcadc97 mov eax, [rsp+0xc] | |
0bcadc9b movsd xmm7, [rsp+0x10] | |
0bcadca1 cmp dword [r14+0xc], -0x05 | |
0bcadca6 jnz 0x0bca0034 ->9 | |
0bcadcac mov r14d, [r14+0x8] | |
0bcadcb0 mov dword [rbx+0x2c], 0xfffffffb | |
0bcadcb7 mov [rbx+0x28], r14d | |
0bcadcbb mov dword [rbx+0x34], 0xfffffff4 | |
0bcadcc2 mov [rbx+0x30], eax | |
0bcadcc5 movsd [rbx+0x38], xmm7 | |
0bcadcca cmp r15d, 0x40b420e8 | |
0bcadcd1 jnz 0x0bca0038 ->10 | |
0bcadcd7 xor esi, esi | |
0bcadcd9 call 0x0041f7e0 ->lj_tab_new1 | |
0bcadcde mov r15d, eax | |
0bcadce1 mov edx, [0x405d84b0] | |
0bcadce8 mov eax, [rsp+0x8] | |
0bcadcec movsd xmm7, [0x401f5ce0] | |
0bcadcf5 mov r14d, [0x40b42660] | |
0bcadcfd mov r13d, [r14+0x1c] | |
0bcadd01 and r13d, 0x644f2e12 | |
0bcadd08 lea r13d, [r13+r13*2+0x0] | |
0bcadd0d shl r13d, 0x03 | |
0bcadd11 add r13d, [r14+0x14] | |
0bcadd15 cmp dword [r13+0xc], -0x05 | |
0bcadd1a jnz 0x0bcadd2a | |
0bcadd1c cmp dword [r13+0x8], 0x405db028 | |
0bcadd24 jz 0x0bca0038 ->10 | |
0bcadd2a mov r13d, [r13+0x10] | |
0bcadd2e test r13d, r13d | |
0bcadd31 jnz 0x0bcadd15 | |
0bcadd33 mov r13d, 0x405d8420 | |
0bcadd39 mov r14d, [r14+0x10] | |
0bcadd3d test r14d, r14d | |
0bcadd40 jz 0x0bca0038 ->10 | |
0bcadd46 cmp dword [r14+0x1c], +0x01 | |
0bcadd4b jnz 0x0bca0038 ->10 | |
0bcadd51 mov r14d, [r14+0x14] | |
0bcadd55 mov rdi, 0xfffffffb405da430 | |
0bcadd5f cmp rdi, [r14+0x20] | |
0bcadd63 jnz 0x0bca0038 ->10 | |
0bcadd69 cmp dword [r14+0x1c], -0x0c | |
0bcadd6e jnz 0x0bca0038 ->10 | |
0bcadd74 mov r14d, [r14+0x18] | |
0bcadd78 cmp dword [r14+0x1c], +0x3f | |
0bcadd7d jnz 0x0bca0038 ->10 | |
0bcadd83 mov r14d, [r14+0x14] | |
0bcadd87 mov rdi, 0xfffffffb405db028 | |
0bcadd91 cmp rdi, [r14+0x1b8] | |
0bcadd98 jnz 0x0bca0038 ->10 | |
0bcadd9e cmp dword [r14+0x1b4], -0x09 | |
0bcadda6 jnz 0x0bca0038 ->10 | |
0bcaddac cmp dword [r14+0x1b0], 0x405daff8 | |
0bcaddb7 jnz 0x0bca0038 ->10 | |
0bcaddbd cmp dword [rbp+0x18], +0x01 | |
0bcaddc1 jbe 0x0bca0038 ->10 | |
0bcaddc7 mov r14d, [rbp+0x8] | |
0bcaddcb cmp dword [r14+0xc], -0x0c | |
0bcaddd0 jnz 0x0bca0038 ->10 | |
0bcaddd6 mov r14d, [r14+0x8] | |
0bcaddda mov dword [rdx+0x7c], 0xfffffff4 | |
0bcadde1 mov [rdx+0x78], r14d | |
0bcadde5 movsd [rdx+0x70], xmm7 | |
0bcaddea movsd [rdx+0x68], xmm7 | |
0bcaddef mov dword [rdx+0x64], 0xfffffff4 | |
0bcaddf6 mov [rdx+0x60], ebp | |
0bcaddf9 mov dword [rdx+0x5c], 0xfffffff7 | |
0bcade00 mov dword [rdx+0x58], 0x405dafd0 | |
0bcade07 mov dword [rdx+0x54], 0xfffffff4 | |
0bcade0e mov [rdx+0x50], r15d | |
0bcade12 mov dword [rdx+0x4c], 0xfffffff4 | |
0bcade19 mov [rdx+0x48], eax | |
0bcade1c mov dword [rdx+0x44], 0xfffffff4 | |
0bcade23 mov [rdx+0x40], ebp | |
0bcade26 mov dword [rdx+0x3c], 0x40b58b18 | |
0bcade2d mov dword [rdx+0x38], 0x40b42658 | |
0bcade34 mov dword [rdx+0x34], 0xfffffff4 | |
0bcade3b mov [rdx+0x30], ebx | |
0bcade3e mov dword [rdx+0x2c], 0xfffffff4 | |
0bcade45 mov [rdx+0x28], eax | |
0bcade48 mov dword [rdx+0x1c], 0xfffffff4 | |
0bcade4f mov [rdx+0x18], ebp | |
0bcade52 mov dword [rdx-0x8], 0x40b420e8 | |
0bcade59 add edx, +0x40 | |
0bcade5c mov [0x405d84b0], edx | |
0bcade63 add rsp, +0x20 | |
0bcade67 jmp 0x0bcafcc1 | |
---- TRACE 13 stop -> 1 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 14 start 6/2 utils.lua:40 | |
0017 GGET 8 1 ; "table" | |
0018 TGETS 8 8 2 ; "insert" | |
0019 MOV 9 2 | |
0020 MOV 10 7 | |
0021 CALL 8 1 3 | |
0000 . FUNCC ; table.insert | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 JITERL 6 4 | |
0024 RET1 2 2 | |
0068 UCLO 0 => 0069 | |
---- TRACE 14 abort expand.lua:617 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 14 start utils.lua:37 | |
0001 TNEW 2 0 | |
0002 GGET 3 0 ; "ipairs" | |
0003 MOV 4 0 | |
0004 CALL 3 4 2 | |
0000 . FUNCC ; ipairs | |
0005 JMP 6 => 0011 | |
0011 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0012 JITERL 6 1 | |
---- TRACE 14 abort utils.lua:39 -- inner loop in root trace | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 14 start 6/2 utils.lua:40 | |
0017 GGET 8 1 ; "table" | |
0018 TGETS 8 8 2 ; "insert" | |
0019 MOV 9 2 | |
0020 MOV 10 7 | |
0021 CALL 8 1 3 | |
0000 . FUNCC ; table.insert | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 JITERL 6 4 | |
0024 RET1 2 2 | |
0068 UCLO 0 => 0069 | |
---- TRACE 14 abort expand.lua:617 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 14 start 6/2 utils.lua:40 | |
---- TRACE 14 IR | |
0001 <span class="irt_int">int</span> SLOAD #6 PI | |
0002 <span class="irt_tab">tab</span> SLOAD #8 PI | |
0003 <span class="irt_num">num</span> CONV 0001 <span class="irt_num">num</span>.<span class="irt_int">int</span> | |
---- TRACE 14 mcode 68 | |
0bcad943 mov dword [0x405d84a0], 0xe | |
0bcad94e mov edx, [0x405d84b0] | |
0bcad955 xorps xmm7, xmm7 | |
0bcad958 cvtsi2sd xmm7, ebp | |
0bcad95c mov dword [rdx+0x3c], 0xfffffff4 | |
0bcad963 mov [rdx+0x38], r14d | |
0bcad967 movsd [rdx+0x30], xmm7 | |
0bcad96c movsd [rdx+0x28], xmm7 | |
0bcad971 xor eax, eax | |
0bcad973 mov ebx, 0x40bed52c | |
0bcad978 mov r14d, 0x405d8f78 | |
0bcad97e add rsp, +0x20 | |
0bcad982 jmp 0x0041d9f8 | |
---- TRACE 14 stop -> interpreter | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 15 start 5/0 utils.lua:39 | |
0011 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0012 JITERL 6 1 | |
0013 GGET 3 0 ; "ipairs" | |
0014 MOV 4 1 | |
0015 CALL 3 4 2 | |
0000 . FUNCC ; ipairs | |
0016 JMP 6 => 0022 | |
0022 ITERC 6 3 3 | |
0000 . FUNCC ; ipairs_aux | |
0023 JITERL 6 4 | |
0024 RET1 2 2 | |
0085 TNEW 12 3 | |
0086 TSETB 9 12 1 | |
0087 CALL 10 2 3 | |
0000 . FUNCF 11 ; utils.lua:37 | |
0001 . TNEW 2 0 | |
0002 . GGET 3 0 ; "ipairs" | |
0003 . MOV 4 0 | |
0004 . CALL 3 4 2 | |
0000 . . FUNCC ; ipairs | |
0005 . JMP 6 => 0011 | |
0011 . ITERC 6 3 3 | |
0000 . . FUNCC ; ipairs_aux | |
0012 . JITERL 6 1 | |
---- TRACE 15 IR | |
0001 <span class="irt_int">int</span> SLOAD #6 PI | |
0002 <span class="irt_tab">tab</span> SLOAD #8 PI | |
0003 > <span class="irt_fun">fun</span> SLOAD #4 T | |
0004 > <span class="irt_tab">tab</span> SLOAD #5 T | |
0005 > <span class="irt_fun">fun</span> EQ 0003 <span class="irt_fun">ipairs_aux</span> | |
0006 <span class="irt_int">int</span> ADD 0001 <span class="irt_int">+1 </span> | |
0007 <span class="irt_int">int</span> FLOAD 0004 tab.asize | |
0008 > <span class="irt_int">int</span> ULE 0007 0006 | |
0009 <span class="irt_int">int</span> FLOAD 0004 tab.hmask | |
0010 > <span class="irt_int">int</span> EQ 0009 <span class="irt_int">+0 </span> | |
0011 <span class="irt_fun">fun</span> SLOAD #0 R | |
0012 <span class="irt_tab">tab</span> FLOAD 0011 func.env | |
0013 <span class="irt_p32">p32</span> HREF 0012 <span class="irt_str">"ipairs"</span> | |
0014 > <span class="irt_p32">p32</span> EQ 0013 <span class="irt_p32">[0x405d8420]</span> | |
0015 <span class="irt_tab">tab</span> FLOAD 0012 tab.meta | |
0016 > <span class="irt_tab">tab</span> NE 0015 <span class="irt_tab">[NULL]</span> | |
0017 <span class="irt_int">int</span> FLOAD 0015 tab.hmask | |
0018 > <span class="irt_int">int</span> EQ 0017 <span class="irt_int">+1 </span> | |
0019 <span class="irt_p32">p32</span> FLOAD 0015 tab.node | |
0020 > <span class="irt_p32">p32</span> HREFK 0019 <span class="irt_str">"__index"</span> @1 | |
0021 > <span class="irt_tab">tab</span> HLOAD 0020 | |
0022 <span class="irt_int">int</span> FLOAD 0021 tab.hmask | |
0023 > <span class="irt_int">int</span> EQ 0022 <span class="irt_int">+63 </span> | |
0024 <span class="irt_p32">p32</span> FLOAD 0021 tab.node | |
0025 > <span class="irt_p32">p32</span> HREFK 0024 <span class="irt_str">"ipairs"</span> @18 | |
0026 > <span class="irt_fun">fun</span> HLOAD 0025 | |
0027 > <span class="irt_tab">tab</span> SLOAD #2 T | |
0028 > <span class="irt_fun">fun</span> EQ 0026 <span class="irt_fun">ipairs</span> | |
0029 <span class="irt_int">int</span> FLOAD 0027 tab.asize | |
0030 > <span class="irt_int">int</span> ULE 0029 <span class="irt_int">+1 </span> | |
0031 <span class="irt_int">int</span> FLOAD 0027 tab.hmask | |
0032 > <span class="irt_int">int</span> EQ 0031 <span class="irt_int">+0 </span> | |
0033 > <span class="irt_tab">tab</span> SLOAD #3 T | |
0034 > <span class="irt_p32">p32</span> RETF <span class="irt_pro">proto: 0x40b54c08</span> <span class="irt_p32">[0x40b54d9c]</span> | |
0035 > <span class="irt_tab">tab</span> TNEW #3 #0 | |
0036 > <span class="irt_tab">tab</span> SLOAD #10 T | |
0037 <span class="irt_p32">p32</span> FLOAD 0035 tab.array | |
0038 <span class="irt_p32">p32</span> AREF 0037 <span class="irt_int">+1 </span> | |
0039 <span class="irt_tab">tab</span> ASTORE 0038 0036 | |
0040 > <span class="irt_fun">fun</span> SLOAD #11 T | |
0041 > <span class="irt_fun">fun</span> EQ 0040 <span class="irt_fun">utils.lua:37</span> | |
0042 > <span class="irt_tab">tab</span> TNEW #0 #0 | |
0043 <span class="irt_tab">tab</span> FLOAD <span class="irt_fun">utils.lua:37</span> func.env | |
0044 <span class="irt_p32">p32</span> HREF 0043 <span class="irt_str">"ipairs"</span> | |
0045 > <span class="irt_p32">p32</span> EQ 0044 <span class="irt_p32">[0x405d8420]</span> | |
0046 <span class="irt_tab">tab</span> FLOAD 0043 tab.meta | |
0047 > <span class="irt_tab">tab</span> NE 0046 <span class="irt_tab">[NULL]</span> | |
0048 <span class="irt_int">int</span> FLOAD 0046 tab.hmask | |
0049 > <span class="irt_int">int</span> EQ 0048 <span class="irt_int">+1 </span> | |
0050 <span class="irt_p32">p32</span> FLOAD 0046 tab.node | |
0051 > <span class="irt_p32">p32</span> HREFK 0050 <span class="irt_str">"__index"</span> @1 | |
0052 > <span class="irt_tab">tab</span> HLOAD 0051 | |
0053 <span class="irt_int">int</span> FLOAD 0052 tab.hmask | |
0054 > <span class="irt_int">int</span> EQ 0053 <span class="irt_int">+63 </span> | |
0055 <span class="irt_p32">p32</span> FLOAD 0052 tab.node | |
0056 > <span class="irt_p32">p32</span> HREFK 0055 <span class="irt_str">"ipairs"</span> @18 | |
0057 > <span class="irt_fun">fun</span> HLOAD 0056 | |
0058 > <span class="irt_fun">fun</span> EQ 0057 <span class="irt_fun">ipairs</span> | |
0059 <span class="irt_int">int</span> FLOAD 0033 tab.asize | |
0060 > <span class="irt_int">int</span> ABC 0059 <span class="irt_int">+1 </span> | |
0061 <span class="irt_p32">p32</span> FLOAD 0033 tab.array | |
0062 <span class="irt_p32">p32</span> AREF 0061 <span class="irt_int">+1 </span> | |
0063 > <span class="irt_tab">tab</span> ALOAD 0062 | |
---- TRACE 15 mcode 820 | |
0bcad60c mov dword [0x405d84a0], 0xf | |
0bcad617 mov edi, [0x405d83d8] | |
0bcad61e cmp edi, [0x405d83dc] | |
0bcad625 jb 0x0bcad63e | |
0bcad627 mov esi, 0x2 | |
0bcad62c mov edi, 0x405d83b8 | |
0bcad631 call 0x0041f3d0 ->lj_gc_step_jit | |
0bcad636 test eax, eax | |
0bcad638 jnz 0x0bca0010 ->0 | |
0bcad63e mov edi, [0x405d84ac] | |
0bcad645 mov edx, [0x405d84b0] | |
0bcad64c cmp dword [rdx+0x1c], -0x09 | |
0bcad650 jnz 0x0bca0010 ->0 | |
0bcad656 cmp dword [rdx+0x24], -0x0c | |
0bcad65a jnz 0x0bca0010 ->0 | |
0bcad660 mov ebp, [rdx+0x20] | |
0bcad663 cmp dword [rdx+0x18], 0x405dafd0 | |
0bcad66a jnz 0x0bca0010 ->0 | |
0bcad670 lea ebx, [r15+0x1] | |
0bcad674 cmp ebx, [rbp+0x18] | |
0bcad677 jb 0x0bca0010 ->0 | |
0bcad67d cmp dword [rbp+0x1c], +0x00 | |
0bcad681 jnz 0x0bca0010 ->0 | |
0bcad687 mov ebp, [rdx-0x8] | |
0bcad68a mov ebp, [rbp+0x8] | |
0bcad68d mov ebx, [rbp+0x1c] | |
0bcad690 and ebx, 0x644f2e12 | |
0bcad696 lea ebx, [rbx+rbx*2] | |
0bcad699 shl ebx, 0x03 | |
0bcad69c add ebx, [rbp+0x14] | |
0bcad69f cmp dword [rbx+0xc], -0x05 | |
0bcad6a3 jnz 0x0bcad6b2 | |
0bcad6a5 cmp dword [rbx+0x8], 0x405db028 | |
0bcad6ac jz 0x0bca0010 ->0 | |
0bcad6b2 mov ebx, [rbx+0x10] | |
0bcad6b5 test ebx, ebx | |
0bcad6b7 jnz 0x0bcad69f | |
0bcad6b9 mov ebx, 0x405d8420 | |
0bcad6be mov ebp, [rbp+0x10] | |
0bcad6c1 test ebp, ebp | |
0bcad6c3 jz 0x0bca0010 ->0 | |
0bcad6c9 cmp dword [rbp+0x1c], +0x01 | |
0bcad6cd jnz 0x0bca0010 ->0 | |
0bcad6d3 mov ebp, [rbp+0x14] | |
0bcad6d6 mov rsi, 0xfffffffb405da430 | |
0bcad6e0 cmp rsi, [rbp+0x20] | |
0bcad6e4 jnz 0x0bca0010 ->0 | |
0bcad6ea cmp dword [rbp+0x1c], -0x0c | |
0bcad6ee jnz 0x0bca0010 ->0 | |
0bcad6f4 mov ebp, [rbp+0x18] | |
0bcad6f7 cmp dword [rbp+0x1c], +0x3f | |
0bcad6fb jnz 0x0bca0010 ->0 | |
0bcad701 mov ebx, [rbp+0x14] | |
0bcad704 mov rsi, 0xfffffffb405db028 | |
0bcad70e cmp rsi, [rbx+0x1b8] | |
0bcad715 jnz 0x0bca0010 ->0 | |
0bcad71b cmp dword [rbx+0x1b4], -0x09 | |
0bcad722 jnz 0x0bca0010 ->0 | |
0bcad728 cmp dword [rdx+0xc], -0x0c | |
0bcad72c jnz 0x0bca0010 ->0 | |
0bcad732 mov ebp, [rdx+0x8] | |
0bcad735 cmp dword [rbx+0x1b0], 0x405daff8 | |
0bcad73f jnz 0x0bca0010 ->0 | |
0bcad745 cmp dword [rbp+0x18], +0x01 | |
0bcad749 ja 0x0bca0010 ->0 | |
0bcad74f cmp dword [rbp+0x1c], +0x00 | |
0bcad753 jnz 0x0bca0010 ->0 | |
0bcad759 cmp dword [rdx+0x14], -0x0c | |
0bcad75d jnz 0x0bca0010 ->0 | |
0bcad763 mov ebp, [rdx+0x10] | |
0bcad766 cmp dword [rdx-0x4], 0x40b54d9c | |
0bcad76d jnz 0x0bca0014 ->1 | |
0bcad773 add edx, -0x60 | |
0bcad776 mov [0x405d84b0], edx | |
0bcad77d mov esi, 0x3 | |
0bcad782 call 0x0041f7e0 ->lj_tab_new1 | |
0bcad787 mov [rsp+0x8], eax | |
0bcad78b mov edi, [0x405d84ac] | |
0bcad792 mov edx, [0x405d84b0] | |
0bcad799 cmp dword [rdx+0x4c], -0x0c | |
0bcad79d jnz 0x0bca0018 ->2 | |
0bcad7a3 mov ebx, [rdx+0x48] | |
0bcad7a6 mov dword [rax+0x2c], 0xfffffff4 | |
0bcad7ad mov [rax+0x28], ebx | |
0bcad7b0 cmp dword [rdx+0x54], -0x09 | |
0bcad7b4 jnz 0x0bca001c ->3 | |
0bcad7ba cmp dword [rdx+0x50], 0x40b42658 | |
0bcad7c1 jnz 0x0bca001c ->3 | |
0bcad7c7 xor esi, esi | |
0bcad7c9 call 0x0041f7e0 ->lj_tab_new1 | |
0bcad7ce mov ebx, eax | |
0bcad7d0 mov edx, [0x405d84b0] | |
0bcad7d7 mov eax, [rsp+0x8] | |
0bcad7db movsd xmm7, [0x401f5ce0] | |
0bcad7e4 mov r15d, [0x40b42660] | |
0bcad7ec mov r14d, [r15+0x1c] | |
0bcad7f0 and r14d, 0x644f2e12 | |
0bcad7f7 lea r14d, [r14+r14*2] | |
0bcad7fb shl r14d, 0x03 | |
0bcad7ff add r14d, [r15+0x14] | |
0bcad803 cmp dword [r14+0xc], -0x05 | |
0bcad808 jnz 0x0bcad818 | |
0bcad80a cmp dword [r14+0x8], 0x405db028 | |
0bcad812 jz 0x0bca001c ->3 | |
0bcad818 mov r14d, [r14+0x10] | |
0bcad81c test r14d, r14d | |
0bcad81f jnz 0x0bcad803 | |
0bcad821 mov r14d, 0x405d8420 | |
0bcad827 mov r15d, [r15+0x10] | |
0bcad82b test r15d, r15d | |
0bcad82e jz 0x0bca001c ->3 | |
0bcad834 cmp dword [r15+0x1c], +0x01 | |
0bcad839 jnz 0x0bca001c ->3 | |
0bcad83f mov r15d, [r15+0x14] | |
0bcad843 mov rdi, 0xfffffffb405da430 | |
0bcad84d cmp rdi, [r15+0x20] | |
0bcad851 jnz 0x0bca001c ->3 | |
0bcad857 cmp dword [r15+0x1c], -0x0c | |
0bcad85c jnz 0x0bca001c ->3 | |
0bcad862 mov r15d, [r15+0x18] | |
0bcad866 cmp dword [r15+0x1c], +0x3f | |
0bcad86b jnz 0x0bca001c ->3 | |
0bcad871 mov r15d, [r15+0x14] | |
0bcad875 mov rdi, 0xfffffffb405db028 | |
0bcad87f cmp rdi, [r15+0x1b8] | |
0bcad886 jnz 0x0bca001c ->3 | |
0bcad88c cmp dword [r15+0x1b4], -0x09 | |
0bcad894 jnz 0x0bca001c ->3 | |
0bcad89a cmp dword [r15+0x1b0], 0x405daff8 | |
0bcad8a5 jnz 0x0bca001c ->3 | |
0bcad8ab cmp dword [rbp+0x18], +0x01 | |
0bcad8af jbe 0x0bca001c ->3 | |
0bcad8b5 mov r15d, [rbp+0x8] | |
0bcad8b9 cmp dword [r15+0xc], -0x0c | |
0bcad8be jnz 0x0bca001c ->3 | |
0bcad8c4 mov r15d, [r15+0x8] | |
0bcad8c8 mov dword [rdx+0x94], 0xfffffff4 | |
0bcad8d2 mov [rdx+0x90], r15d | |
0bcad8d9 movsd [rdx+0x88], xmm7 | |
0bcad8e1 movsd [rdx+0x80], xmm7 | |
0bcad8e9 mov dword [rdx+0x7c], 0xfffffff4 | |
0bcad8f0 mov [rdx+0x78], ebp | |
0bcad8f3 mov dword [rdx+0x74], 0xfffffff7 | |
0bcad8fa mov dword [rdx+0x70], 0x405dafd0 | |
0bcad901 mov dword [rdx+0x6c], 0xfffffff4 | |
0bcad908 mov [rdx+0x68], ebx | |
0bcad90b mov dword [rdx+0x64], 0xfffffff4 | |
0bcad912 mov [rdx+0x60], eax | |
0bcad915 mov dword [rdx+0x5c], 0xfffffff4 | |
0bcad91c mov [rdx+0x58], ebp | |
0bcad91f mov dword [rdx+0x54], 0x40b54da8 | |
0bcad926 mov dword [rdx+0x50], 0x40b42658 | |
0bcad92d add edx, +0x58 | |
0bcad930 mov [0x405d84b0], edx | |
0bcad937 add rsp, +0x20 | |
0bcad93b jmp 0x0bcafcc1 | |
---- TRACE 15 stop -> 1 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 16 start 13/5 expand.lua:658 | |
0096 MOV 12 11 | |
0097 MOV 13 10 | |
0098 RET 12 3 | |
0005 UGET 4 0 ; expand_arith | |
0006 TGETB 5 0 3 | |
0007 MOV 6 1 | |
0008 CALL 4 3 3 | |
0000 . FUNCF 14 ; expand.lua:632 | |
0001 . GGET 2 0 ; "assert" | |
0002 . MOV 3 0 | |
0003 . CALL 2 1 2 | |
0000 . . FUNCC ; assert | |
0004 . GGET 2 1 ; "type" | |
0005 . MOV 3 0 | |
0006 . CALL 2 2 2 | |
0000 . . FUNCC ; type | |
0007 . ISEQS 2 2 ; "number" | |
0008 . JMP 2 => 0011 | |
0011 . MOV 2 0 | |
0012 . TNEW 3 0 | |
0013 . RET 2 3 | |
0009 TNEW 6 4 | |
0010 TGETB 7 0 1 | |
0011 TSETB 7 6 1 | |
0012 TSETB 2 6 2 | |
0013 TSETB 4 6 3 | |
0014 UGET 7 1 ; concat | |
0015 MOV 8 3 | |
0016 MOV 9 5 | |
0017 CALL 7 0 3 | |
0000 . FUNCF 11 ; utils.lua:37 | |
0001 . TNEW 2 0 | |
0002 . GGET 3 0 ; "ipairs" | |
0003 . MOV 4 0 | |
0004 . CALL 3 4 2 | |
0000 . . FUNCC ; ipairs | |
0005 . JMP 6 => 0011 | |
0011 . ITERC 6 3 3 | |
0000 . . FUNCC ; ipairs_aux | |
0012 . JITERL 6 1 | |
---- TRACE 16 IR | |
0001 <span class="irt_tab">tab</span> SLOAD #11 PI | |
0002 <span class="irt_tab">tab</span> SLOAD #12 PI | |
0004 > <span class="irt_p32">p32</span> RETF <span class="irt_pro">proto: 0x40b58a90</span> <span class="irt_p32">[0x40b58ae4]</span> | |
0005 <span class="irt_fun">fun</span> SLOAD #0 R | |
0006 > <span class="irt_p32">p32</span> UREFC 0005 #0 | |
0007 > <span class="irt_fun">fun</span> ULOAD 0006 | |
0008 > <span class="irt_tab">tab</span> SLOAD #1 T | |
0009 <span class="irt_int">int</span> FLOAD 0008 tab.asize | |
0010 > <span class="irt_int">int</span> ABC 0009 <span class="irt_int">+3 </span> | |
0011 <span class="irt_p32">p32</span> FLOAD 0008 tab.array | |
0012 <span class="irt_p32">p32</span> AREF 0011 <span class="irt_int">+3 </span> | |
0013 > <span class="irt_num">num</span> ALOAD 0012 | |
0014 > <span class="irt_str">str</span> SLOAD #2 T | |
0015 > <span class="irt_fun">fun</span> EQ 0007 <span class="irt_fun">expand.lua:632</span> | |
0016 <span class="irt_tab">tab</span> FLOAD <span class="irt_fun">expand.lua:632</span> func.env | |
0017 <span class="irt_p32">p32</span> HREF 0016 <span class="irt_str">"assert"</span> | |
0018 > <span class="irt_p32">p32</span> EQ 0017 <span class="irt_p32">[0x405d8420]</span> | |
0019 <span class="irt_tab">tab</span> FLOAD 0016 tab.meta | |
0020 > <span class="irt_tab">tab</span> NE 0019 <span class="irt_tab">[NULL]</span> | |
0021 <span class="irt_int">int</span> FLOAD 0019 tab.hmask | |
0022 > <span class="irt_int">int</span> EQ 0021 <span class="irt_int">+1 </span> | |
0023 <span class="irt_p32">p32</span> FLOAD 0019 tab.node | |
0024 > <span class="irt_p32">p32</span> HREFK 0023 <span class="irt_str">"__index"</span> @1 | |
0025 > <span class="irt_tab">tab</span> HLOAD 0024 | |
0026 <span class="irt_int">int</span> FLOAD 0025 tab.hmask | |
0027 > <span class="irt_int">int</span> EQ 0026 <span class="irt_int">+63 </span> | |
0028 <span class="irt_p32">p32</span> FLOAD 0025 tab.node | |
0029 > <span class="irt_p32">p32</span> HREFK 0028 <span class="irt_str">"assert"</span> @3 | |
0030 > <span class="irt_fun">fun</span> HLOAD 0029 | |
0031 > <span class="irt_fun">fun</span> EQ 0030 <span class="irt_fun">assert</span> | |
0032 <span class="irt_p32">p32</span> HREF 0016 <span class="irt_str">"type"</span> | |
0033 > <span class="irt_p32">p32</span> EQ 0032 <span class="irt_p32">[0x405d8420]</span> | |
0034 > <span class="irt_p32">p32</span> HREFK 0028 <span class="irt_str">"type"</span> @60 | |
0035 > <span class="irt_fun">fun</span> HLOAD 0034 | |
0036 > <span class="irt_fun">fun</span> EQ 0035 <span class="irt_fun">type</span> | |
0037 > <span class="irt_tab">tab</span> TNEW #0 #0 | |
0038 > <span class="irt_tab">tab</span> TNEW #4 #0 | |
0039 <span class="irt_p32">p32</span> AREF 0011 <span class="irt_int">+1 </span> | |
0040 > <span class="irt_str">str</span> ALOAD 0039 | |
0041 <span class="irt_p32">p32</span> FLOAD 0038 tab.array | |
0042 <span class="irt_p32">p32</span> AREF 0041 <span class="irt_int">+1 </span> | |
0043 <span class="irt_str">str</span> ASTORE 0042 0040 | |
0044 <span class="irt_p32">p32</span> AREF 0041 <span class="irt_int">+2 </span> | |
0045 <span class="irt_tab">tab</span> ASTORE 0044 0002 | |
0046 <span class="irt_p32">p32</span> AREF 0041 <span class="irt_int">+3 </span> | |
0047 <span class="irt_num">num</span> ASTORE 0046 0013 | |
0048 > <span class="irt_fun">fun</span> EQ 0005 <span class="irt_fun">expand.lua:664</span> | |
0049 > <span class="irt_tab">tab</span> TNEW #0 #0 | |
0050 <span class="irt_tab">tab</span> FLOAD <span class="irt_fun">utils.lua:37</span> func.env | |
0051 <span class="irt_p32">p32</span> HREF 0050 <span class="irt_str">"ipairs"</span> | |
0052 > <span class="irt_p32">p32</span> EQ 0051 <span class="irt_p32">[0x405d8420]</span> | |
0053 <span class="irt_tab">tab</span> FLOAD 0050 tab.meta | |
0054 > <span class="irt_tab">tab</span> NE 0053 <span class="irt_tab">[NULL]</span> | |
0055 <span class="irt_int">int</span> FLOAD 0053 tab.hmask | |
0056 > <span class="irt_int">int</span> EQ 0055 <span class="irt_int">+1 </span> | |
0057 <span class="irt_p32">p32</span> FLOAD 0053 tab.node | |
0058 > <span class="irt_p32">p32</span> HREFK 0057 <span class="irt_str">"__index"</span> @1 | |
0059 > <span class="irt_tab">tab</span> HLOAD 0058 | |
0060 <span class="irt_int">int</span> FLOAD 0059 tab.hmask | |
0061 > <span class="irt_int">int</span> EQ 0060 <span class="irt_int">+63 </span> | |
0062 <span class="irt_p32">p32</span> FLOAD 0059 tab.node | |
0063 > <span class="irt_p32">p32</span> HREFK 0062 <span class="irt_str">"ipairs"</span> @18 | |
0064 > <span class="irt_fun">fun</span> HLOAD 0063 | |
0065 > <span class="irt_fun">fun</span> EQ 0064 <span class="irt_fun">ipairs</span> | |
0066 <span class="irt_int">int</span> FLOAD 0001 tab.asize | |
0067 > <span class="irt_int">int</span> ABC 0066 <span class="irt_int">+1 </span> | |
0068 <span class="irt_p32">p32</span> FLOAD 0001 tab.array | |
0069 <span class="irt_p32">p32</span> AREF 0068 <span class="irt_int">+1 </span> | |
0070 > <span class="irt_tab">tab</span> ALOAD 0069 | |
---- TRACE 16 mcode 1014 | |
0bcad213 mov eax, [0x405d84ac] | |
0bcad21a mov eax, [rax+0x20] | |
0bcad21d sub eax, [0x405d84b0] | |
0bcad224 cmp eax, 0x80 | |
0bcad22a jb 0x0bca0024 ->5 | |
0bcad230 mov r14d, [rsp+0x18] | |
0bcad235 mov dword [0x405d84a0], 0x10 | |
0bcad240 mov edi, [0x405d83d8] | |
0bcad247 cmp edi, [0x405d83dc] | |
0bcad24e jb 0x0bcad267 | |
0bcad250 mov esi, 0x3 | |
0bcad255 mov edi, 0x405d83b8 | |
0bcad25a call 0x0041f3d0 ->lj_gc_step_jit | |
0bcad25f test eax, eax | |
0bcad261 jnz 0x0bca0010 ->0 | |
0bcad267 mov edi, [0x405d84ac] | |
0bcad26e mov edx, [0x405d84b0] | |
0bcad275 cmp dword [rdx-0x4], 0x40b58ae4 | |
0bcad27c jnz 0x0bca0014 ->1 | |
0bcad282 add edx, -0x18 | |
0bcad285 mov [0x405d84b0], edx | |
0bcad28c mov r15d, [rdx-0x8] | |
0bcad290 mov esi, [r15+0x14] | |
0bcad294 cmp byte [rsi+0x6], 0x1 | |
0bcad298 jnz 0x0bca0018 ->2 | |
0bcad29e lea ebx, [rsi+0x8] | |
0bcad2a1 cmp dword [rbx+0x4], -0x09 | |
0bcad2a5 jnz 0x0bca0018 ->2 | |
0bcad2ab cmp dword [rdx+0x4], -0x0c | |
0bcad2af jnz 0x0bca0018 ->2 | |
0bcad2b5 mov r13d, [rdx] | |
0bcad2b8 cmp dword [r13+0x18], +0x03 | |
0bcad2bd jbe 0x0bca0018 ->2 | |
0bcad2c3 mov r13d, [r13+0x8] | |
0bcad2c7 cmp dword [r13+0x1c], 0xfffeffff | |
0bcad2cf jnb 0x0bca0018 ->2 | |
0bcad2d5 movsd xmm7, [r13+0x18] | |
0bcad2db movsd [rsp+0x10], xmm7 | |
0bcad2e1 cmp dword [rdx+0xc], -0x05 | |
0bcad2e5 jnz 0x0bca0018 ->2 | |
0bcad2eb cmp dword [rbx], 0x40b41f28 | |
0bcad2f1 jnz 0x0bca0018 ->2 | |
0bcad2f7 mov esi, [0x40b41f30] | |
0bcad2fe mov ebx, [rsi+0x1c] | |
0bcad301 and ebx, 0xce2b6183 | |
0bcad307 lea ebx, [rbx+rbx*2] | |
0bcad30a shl ebx, 0x03 | |
0bcad30d add ebx, [rsi+0x14] | |
0bcad310 cmp dword [rbx+0xc], -0x05 | |
0bcad314 jnz 0x0bcad323 | |
0bcad316 cmp dword [rbx+0x8], 0x405dad18 | |
0bcad31d jz 0x0bca0018 ->2 | |
0bcad323 mov ebx, [rbx+0x10] | |
0bcad326 test ebx, ebx | |
0bcad328 jnz 0x0bcad310 | |
0bcad32a mov ebx, 0x405d8420 | |
0bcad32f mov ebx, [rsi+0x10] | |
0bcad332 test ebx, ebx | |
0bcad334 jz 0x0bca0018 ->2 | |
0bcad33a cmp dword [rbx+0x1c], +0x01 | |
0bcad33e jnz 0x0bca0018 ->2 | |
0bcad344 mov ebx, [rbx+0x14] | |
0bcad347 mov rdx, 0xfffffffb405da430 | |
0bcad351 cmp rdx, [rbx+0x20] | |
0bcad355 jnz 0x0bca0018 ->2 | |
0bcad35b cmp dword [rbx+0x1c], -0x0c | |
0bcad35f jnz 0x0bca0018 ->2 | |
0bcad365 mov ebx, [rbx+0x18] | |
0bcad368 cmp dword [rbx+0x1c], +0x3f | |
0bcad36c jnz 0x0bca0018 ->2 | |
0bcad372 mov ebx, [rbx+0x14] | |
0bcad375 mov rdx, 0xfffffffb405dad18 | |
0bcad37f cmp rdx, [rbx+0x50] | |
0bcad383 jnz 0x0bca0018 ->2 | |
0bcad389 cmp dword [rbx+0x4c], -0x09 | |
0bcad38d jnz 0x0bca0018 ->2 | |
0bcad393 cmp dword [rbx+0x48], 0x405dacf0 | |
0bcad39a jnz 0x0bca0018 ->2 | |
0bcad3a0 mov r12d, [rsi+0x1c] | |
0bcad3a4 and r12d, 0x798a813c | |
0bcad3ab lea r12d, [r12+r12*2] | |
0bcad3af shl r12d, 0x03 | |
0bcad3b3 add r12d, [rsi+0x14] | |
0bcad3b7 cmp dword [r12+0xc], -0x05 | |
0bcad3bd jnz 0x0bcad3ce | |
0bcad3bf cmp dword [r12+0x8], 0x405daf18 | |
0bcad3c8 jz 0x0bca0018 ->2 | |
0bcad3ce mov r12d, [r12+0x10] | |
0bcad3d3 test r12d, r12d | |
0bcad3d6 jnz 0x0bcad3b7 | |
0bcad3d8 mov r12d, 0x405d8420 | |
0bcad3de mov rsi, 0xfffffffb405daf18 | |
0bcad3e8 cmp rsi, [rbx+0x5a8] | |
0bcad3ef jnz 0x0bca0018 ->2 | |
0bcad3f5 cmp dword [rbx+0x5a4], -0x09 | |
0bcad3fc jnz 0x0bca0018 ->2 | |
0bcad402 cmp dword [rbx+0x5a0], 0x405dae80 | |
0bcad40c jnz 0x0bca0018 ->2 | |
0bcad412 xor esi, esi | |
0bcad414 call 0x0041f7e0 ->lj_tab_new1 | |
0bcad419 mov [rsp+0x8], eax | |
0bcad41d mov edi, [0x405d84ac] | |
0bcad424 mov esi, 0x4 | |
0bcad429 call 0x0041f7e0 ->lj_tab_new1 | |
0bcad42e mov ebx, eax | |
0bcad430 mov edi, [0x405d84ac] | |
0bcad437 movsd xmm7, [rsp+0x10] | |
0bcad43d cmp dword [r13+0xc], -0x05 | |
0bcad442 jnz 0x0bca0018 ->2 | |
0bcad448 mov r13d, [r13+0x8] | |
0bcad44c mov dword [rbx+0x2c], 0xfffffffb | |
0bcad453 mov [rbx+0x28], r13d | |
0bcad457 mov dword [rbx+0x34], 0xfffffff4 | |
0bcad45e mov [rbx+0x30], r14d | |
0bcad462 movsd [rbx+0x38], xmm7 | |
0bcad467 cmp r15d, 0x40b420e8 | |
0bcad46e jnz 0x0bca001c ->3 | |
0bcad474 xor esi, esi | |
0bcad476 call 0x0041f7e0 ->lj_tab_new1 | |
0bcad47b mov r15d, eax | |
0bcad47e mov edx, [0x405d84b0] | |
0bcad485 mov eax, [rsp+0x8] | |
0bcad489 movsd xmm7, [0x401f5ce0] | |
0bcad492 mov r14d, [0x40b42660] | |
0bcad49a mov r13d, [r14+0x1c] | |
0bcad49e and r13d, 0x644f2e12 | |
0bcad4a5 lea r13d, [r13+r13*2+0x0] | |
0bcad4aa shl r13d, 0x03 | |
0bcad4ae add r13d, [r14+0x14] | |
0bcad4b2 cmp dword [r13+0xc], -0x05 | |
0bcad4b7 jnz 0x0bcad4c7 | |
0bcad4b9 cmp dword [r13+0x8], 0x405db028 | |
0bcad4c1 jz 0x0bca001c ->3 | |
0bcad4c7 mov r13d, [r13+0x10] | |
0bcad4cb test r13d, r13d | |
0bcad4ce jnz 0x0bcad4b2 | |
0bcad4d0 mov r13d, 0x405d8420 | |
0bcad4d6 mov r14d, [r14+0x10] | |
0bcad4da test r14d, r14d | |
0bcad4dd jz 0x0bca001c ->3 | |
0bcad4e3 cmp dword [r14+0x1c], +0x01 | |
0bcad4e8 jnz 0x0bca001c ->3 | |
0bcad4ee mov r14d, [r14+0x14] | |
0bcad4f2 mov rdi, 0xfffffffb405da430 | |
0bcad4fc cmp rdi, [r14+0x20] | |
0bcad500 jnz 0x0bca001c ->3 | |
0bcad506 cmp dword [r14+0x1c], -0x0c | |
0bcad50b jnz 0x0bca001c ->3 | |
0bcad511 mov r14d, [r14+0x18] | |
0bcad515 cmp dword [r14+0x1c], +0x3f | |
0bcad51a jnz 0x0bca001c ->3 | |
0bcad520 mov r14d, [r14+0x14] | |
0bcad524 mov rdi, 0xfffffffb405db028 | |
0bcad52e cmp rdi, [r14+0x1b8] | |
0bcad535 jnz 0x0bca001c ->3 | |
0bcad53b cmp dword [r14+0x1b4], -0x09 | |
0bcad543 jnz 0x0bca001c ->3 | |
0bcad549 cmp dword [r14+0x1b0], 0x405daff8 | |
0bcad554 jnz 0x0bca001c ->3 | |
0bcad55a cmp dword [rbp+0x18], +0x01 | |
0bcad55e jbe 0x0bca001c ->3 | |
0bcad564 mov r14d, [rbp+0x8] | |
0bcad568 cmp dword [r14+0xc], -0x0c | |
0bcad56d jnz 0x0bca001c ->3 | |
0bcad573 mov r14d, [r14+0x8] | |
0bcad577 mov dword [rdx+0x7c], 0xfffffff4 | |
0bcad57e mov [rdx+0x78], r14d | |
0bcad582 movsd [rdx+0x70], xmm7 | |
0bcad587 movsd [rdx+0x68], xmm7 | |
0bcad58c mov dword [rdx+0x64], 0xfffffff4 | |
0bcad593 mov [rdx+0x60], ebp | |
0bcad596 mov dword [rdx+0x5c], 0xfffffff7 | |
0bcad59d mov dword [rdx+0x58], 0x405dafd0 | |
0bcad5a4 mov dword [rdx+0x54], 0xfffffff4 | |
0bcad5ab mov [rdx+0x50], r15d | |
0bcad5af mov dword [rdx+0x4c], 0xfffffff4 | |
0bcad5b6 mov [rdx+0x48], eax | |
0bcad5b9 mov dword [rdx+0x44], 0xfffffff4 | |
0bcad5c0 mov [rdx+0x40], ebp | |
0bcad5c3 mov dword [rdx+0x3c], 0x40b58b18 | |
0bcad5ca mov dword [rdx+0x38], 0x40b42658 | |
0bcad5d1 mov dword [rdx+0x34], 0xfffffff4 | |
0bcad5d8 mov [rdx+0x30], ebx | |
0bcad5db mov dword [rdx+0x2c], 0xfffffff4 | |
0bcad5e2 mov [rdx+0x28], eax | |
0bcad5e5 mov dword [rdx+0x1c], 0xfffffff4 | |
0bcad5ec mov [rdx+0x18], ebp | |
0bcad5ef mov dword [rdx-0x8], 0x40b420e8 | |
0bcad5f6 add edx, +0x40 | |
0bcad5f9 mov [0x405d84b0], edx | |
0bcad600 add rsp, +0x20 | |
0bcad604 jmp 0x0bcafcc1 | |
---- TRACE 16 stop -> 1 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 17 start 8/6 expand.lua:688 | |
0092 RET1 2 2 | |
0037 TSETB 3 2 2 | |
0038 UGET 3 0 ; expand_bool | |
0039 TGETB 4 0 3 | |
0040 MOV 5 1 | |
0041 CALL 3 2 3 | |
0000 . FUNCF 8 ; expand.lua:670 | |
0001 . GGET 2 0 ; "assert" | |
0002 . GGET 3 1 ; "type" | |
0003 . MOV 4 0 | |
0004 . CALL 3 2 2 | |
0000 . . FUNCC ; type | |
0005 . ISEQS 3 2 ; "table" | |
0006 . JMP 3 => 0009 | |
0009 . KPRI 3 2 | |
0010 . KSTR 4 3 ; "logical expression must be a table" | |
0011 . CALL 2 1 3 | |
0000 . . FUNCC ; assert | |
0012 . TGETB 2 0 1 | |
0013 . ISEQS 2 4 ; "not" | |
0014 . JMP 2 => 0018 | |
0015 . TGETB 2 0 1 | |
0016 . ISNES 2 5 ; "!" | |
0017 . JMP 2 => 0026 | |
0026 . TGETB 2 0 1 | |
0027 . ISEQS 2 7 ; "and" | |
0028 . JMP 2 => 0032 | |
0029 . TGETB 2 0 1 | |
0030 . ISNES 2 8 ; "&&" | |
0031 . JMP 2 => 0047 | |
0047 . TGETB 2 0 1 | |
0048 . ISEQS 2 11 ; "or" | |
0049 . JMP 2 => 0053 | |
0050 . TGETB 2 0 1 | |
0051 . ISNES 2 12 ; "||" | |
0052 . JMP 2 => 0068 | |
0068 . UGET 2 1 ; relops | |
0069 . TGETB 3 0 1 | |
0070 . TGETV 2 2 3 | |
0071 . ISF 2 | |
0072 . JMP 3 => 0094 | |
0073 . UGET 2 2 ; expand_relop | |
0074 . MOV 3 0 | |
0075 . MOV 4 1 | |
0076 . CALL 2 3 3 | |
0000 . . FUNCF 10 ; expand.lua:664 | |
0001 . . UGET 2 0 ; expand_arith | |
0002 . . TGETB 3 0 2 | |
0003 . . MOV 4 1 | |
0004 . . CALL 2 3 3 | |
0000 . . . FUNCF 14 ; expand.lua:632 | |
0001 . . . GGET 2 0 ; "assert" | |
0002 . . . MOV 3 0 | |
0003 . . . CALL 2 1 2 | |
0000 . . . . FUNCC ; assert | |
0004 . . . GGET 2 1 ; "type" | |
0005 . . . MOV 3 0 | |
0006 . . . CALL 2 2 2 | |
0000 . . . . FUNCC ; type | |
0007 . . . ISEQS 2 2 ; "number" | |
0008 . . . JMP 2 => 0011 | |
0009 . . . ISNES 0 3 ; "len" | |
0010 . . . JMP 2 => 0014 | |
0014 . . . TGETB 2 0 1 | |
0015 . . . UGET 3 0 ; binops | |
0016 . . . TGETV 3 3 2 | |
0017 . . . ISF 3 | |
0018 . . . JMP 4 => 0048 | |
0048 . . . GGET 3 0 ; "assert" | |
0049 . . . ISNES 2 7 ; "[]" | |
0050 . . . JMP 4 => 0053 | |
0053 . . . KPRI 4 2 | |
0054 . . . KSTR 5 8 ; "expr has already been expanded?" | |
0055 . . . CALL 3 1 3 | |
0000 . . . . FUNCC ; assert | |
0056 . . . GGET 3 0 ; "assert" | |
0057 . . . MOV 5 2 | |
0058 . . . TGETS 4 2 9 ; "match" | |
0059 . . . KSTR 6 10 ; "^%[(.+)%]$" | |
0060 . . . CALL 4 2 3 | |
0000 . . . . FUNCC ; string.match | |
---- TRACE 17 abort expand.lua:651 -- NYI: FastFunc string.match | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 17 start 8/6 expand.lua:688 | |
0092 RET1 2 2 | |
0042 TSETB 3 2 3 | |
0043 TDUP 3 10 | |
0044 TSETB 3 2 4 | |
0045 RET1 2 2 | |
---- TRACE 17 abort expand.lua:677 -- down-recursion, restarting | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 17 start expand.lua:677 | |
0045 RET1 2 2 | |
0065 TSETM 3 1 ; 4 | |
---- TRACE 17 abort expand.lua:681 -- NYI: bytecode 60 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 17 start 11/1 utils.lua:41 | |
0024 RET1 2 2 | |
0007 UGET 3 1 ; assert_expr | |
0008 UGET 4 3 ; has_ether_protocol_min_payload | |
0009 MOV 5 0 | |
0010 CALL 4 0 2 | |
0000 . FUNCF 5 ; expand.lua:94 | |
0001 . UGET 1 0 ; has_proto_min_payload | |
0002 . UGET 2 1 ; ether_min_payloads | |
0003 . MOV 3 0 | |
0004 . KSTR 4 0 ; "[ether*]" | |
0005 . CALLT 1 4 | |
0000 . FUNCF 7 ; expand.lua:86 | |
0001 . GGET 3 0 ; "assert" | |
0002 . TGETV 4 0 1 | |
0003 . CALL 3 2 2 | |
0000 . . FUNCC ; assert | |
0004 . TDUP 4 1 | |
0005 . TDUP 5 2 | |
0006 . TSETB 2 5 1 | |
0007 . SUBVN 6 3 0 ; 1 | |
0008 . TSETB 6 5 2 | |
0009 . TSETB 5 4 3 | |
0010 . RET1 4 2 | |
0011 CALLM 3 0 0 | |
0000 . FUNCF 6 ; expand.lua:565 | |
0001 . UGET 1 0 ; expand_relop | |
0002 . MOV 2 0 | |
0003 . UGET 3 1 ; dlt | |
0004 . CALL 1 3 3 | |
0000 . . FUNCF 10 ; expand.lua:664 | |
0001 . . UGET 2 0 ; expand_arith | |
0002 . . TGETB 3 0 2 | |
0003 . . MOV 4 1 | |
0004 . . CALL 2 3 3 | |
0000 . . . FUNCF 14 ; expand.lua:632 | |
0001 . . . GGET 2 0 ; "assert" | |
0002 . . . MOV 3 0 | |
0003 . . . CALL 2 1 2 | |
0000 . . . . FUNCC ; assert | |
0004 . . . GGET 2 1 ; "type" | |
0005 . . . MOV 3 0 | |
0006 . . . CALL 2 2 2 | |
0000 . . . . FUNCC ; type | |
0007 . . . ISEQS 2 2 ; "number" | |
0008 . . . JMP 2 => 0011 | |
0011 . . . MOV 2 0 | |
0012 . . . TNEW 3 0 | |
0013 . . . RET 2 3 | |
0005 . . UGET 4 0 ; expand_arith | |
0006 . . TGETB 5 0 3 | |
0007 . . MOV 6 1 | |
0008 . . CALL 4 3 3 | |
0000 . . . FUNCF 14 ; expand.lua:632 | |
0001 . . . GGET 2 0 ; "assert" | |
0002 . . . MOV 3 0 | |
0003 . . . CALL 2 1 2 | |
0000 . . . . FUNCC ; assert | |
0004 . . . GGET 2 1 ; "type" | |
0005 . . . MOV 3 0 | |
0006 . . . CALL 2 2 2 | |
0000 . . . . FUNCC ; type | |
0007 . . . ISEQS 2 2 ; "number" | |
0008 . . . JMP 2 => 0011 | |
0009 . . . ISNES 0 3 ; "len" | |
0010 . . . JMP 2 => 0014 | |
0014 . . . TGETB 2 0 1 | |
0015 . . . UGET 3 0 ; binops | |
0016 . . . TGETV 3 3 2 | |
0017 . . . ISF 3 | |
0018 . . . JMP 4 => 0048 | |
0048 . . . GGET 3 0 ; "assert" | |
0049 . . . ISNES 2 7 ; "[]" | |
0050 . . . JMP 4 => 0053 | |
0053 . . . KPRI 4 2 | |
0054 . . . KSTR 5 8 ; "expr has already been expanded?" | |
0055 . . . CALL 3 1 3 | |
0000 . . . . FUNCC ; assert | |
0056 . . . GGET 3 0 ; "assert" | |
0057 . . . MOV 5 2 | |
0058 . . . TGETS 4 2 9 ; "match" | |
0059 . . . KSTR 6 10 ; "^%[(.+)%]$" | |
0060 . . . CALL 4 2 3 | |
0000 . . . . FUNCC ; string.match | |
---- TRACE 17 abort expand.lua:651 -- NYI: FastFunc string.match | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 17 start expand.lua:632 | |
0001 GGET 2 0 ; "assert" | |
0002 MOV 3 0 | |
0003 CALL 2 1 2 | |
0000 . FUNCC ; assert | |
0004 GGET 2 1 ; "type" | |
0005 MOV 3 0 | |
0006 CALL 2 2 2 | |
0000 . FUNCC ; type | |
0007 ISEQS 2 2 ; "number" | |
0008 JMP 2 => 0011 | |
0011 MOV 2 0 | |
0012 TNEW 3 0 | |
0013 RET 2 3 | |
---- TRACE 17 IR | |
0001 <span class="irt_fun">fun</span> SLOAD #0 R | |
0002 <span class="irt_tab">tab</span> FLOAD 0001 func.env | |
0003 <span class="irt_p32">p32</span> HREF 0002 <span class="irt_str">"assert"</span> | |
0004 > <span class="irt_p32">p32</span> EQ 0003 <span class="irt_p32">[0x405d8420]</span> | |
0005 <span class="irt_tab">tab</span> FLOAD 0002 tab.meta | |
0006 > <span class="irt_tab">tab</span> NE 0005 <span class="irt_tab">[NULL]</span> | |
0007 <span class="irt_int">int</span> FLOAD 0005 tab.hmask | |
0008 > <span class="irt_int">int</span> EQ 0007 <span class="irt_int">+1 </span> | |
0009 <span class="irt_p32">p32</span> FLOAD 0005 tab.node | |
0010 > <span class="irt_p32">p32</span> HREFK 0009 <span class="irt_str">"__index"</span> @1 | |
0011 > <span class="irt_tab">tab</span> HLOAD 0010 | |
0012 <span class="irt_int">int</span> FLOAD 0011 tab.hmask | |
0013 > <span class="irt_int">int</span> EQ 0012 <span class="irt_int">+63 </span> | |
0014 <span class="irt_p32">p32</span> FLOAD 0011 tab.node | |
0015 > <span class="irt_p32">p32</span> HREFK 0014 <span class="irt_str">"assert"</span> @3 | |
0016 > <span class="irt_fun">fun</span> HLOAD 0015 | |
0017 > <span class="irt_num">num</span> SLOAD #1 T | |
0018 > <span class="irt_fun">fun</span> EQ 0016 <span class="irt_fun">assert</span> | |
0019 <span class="irt_p32">p32</span> HREF 0002 <span class="irt_str">"type"</span> | |
0020 > <span class="irt_p32">p32</span> EQ 0019 <span class="irt_p32">[0x405d8420]</span> | |
0021 > <span class="irt_p32">p32</span> HREFK 0014 <span class="irt_str">"type"</span> @60 | |
0022 > <span class="irt_fun">fun</span> HLOAD 0021 | |
0023 > <span class="irt_fun">fun</span> EQ 0022 <span class="irt_fun">type</span> | |
0024 > <span class="irt_tab">tab</span> TNEW #0 #0 | |
---- TRACE 17 mcode 416 | |
0bcad06c mov dword [0x405d84a0], 0x11 | |
0bcad077 mov edi, [0x405d83d8] | |
0bcad07e cmp edi, [0x405d83dc] | |
0bcad085 jb 0x0bcad09e | |
0bcad087 mov esi, 0x1 | |
0bcad08c mov edi, 0x405d83b8 | |
0bcad091 call 0x0041f3d0 ->lj_gc_step_jit | |
0bcad096 test eax, eax | |
0bcad098 jnz 0x0bca0010 ->0 | |
0bcad09e mov edi, [0x405d84ac] | |
0bcad0a5 mov edx, [0x405d84b0] | |
0bcad0ac mov ebp, [rdx-0x8] | |
0bcad0af mov r15d, [rbp+0x8] | |
0bcad0b3 mov ebp, [r15+0x1c] | |
0bcad0b7 and ebp, 0xce2b6183 | |
0bcad0bd lea ebp, [rbp+rbp*2+0x0] | |
0bcad0c1 shl ebp, 0x03 | |
0bcad0c4 add ebp, [r15+0x14] | |
0bcad0c8 cmp dword [rbp+0xc], -0x05 | |
0bcad0cc jnz 0x0bcad0db | |
0bcad0ce cmp dword [rbp+0x8], 0x405dad18 | |
0bcad0d5 jz 0x0bca0010 ->0 | |
0bcad0db mov ebp, [rbp+0x10] | |
0bcad0de test ebp, ebp | |
0bcad0e0 jnz 0x0bcad0c8 | |
0bcad0e2 mov ebp, 0x405d8420 | |
0bcad0e7 mov ebp, [r15+0x10] | |
0bcad0eb test ebp, ebp | |
0bcad0ed jz 0x0bca0010 ->0 | |
0bcad0f3 cmp dword [rbp+0x1c], +0x01 | |
0bcad0f7 jnz 0x0bca0010 ->0 | |
0bcad0fd mov ebp, [rbp+0x14] | |
0bcad100 mov rsi, 0xfffffffb405da430 | |
0bcad10a cmp rsi, [rbp+0x20] | |
0bcad10e jnz 0x0bca0010 ->0 | |
0bcad114 cmp dword [rbp+0x1c], -0x0c | |
0bcad118 jnz 0x0bca0010 ->0 | |
0bcad11e mov ebp, [rbp+0x18] | |
0bcad121 cmp dword [rbp+0x1c], +0x3f | |
0bcad125 jnz 0x0bca0010 ->0 | |
0bcad12b mov ebp, [rbp+0x14] | |
0bcad12e mov rsi, 0xfffffffb405dad18 | |
0bcad138 cmp rsi, [rbp+0x50] | |
0bcad13c jnz 0x0bca0010 ->0 | |
0bcad142 cmp dword [rbp+0x4c], -0x09 | |
0bcad146 jnz 0x0bca0010 ->0 | |
0bcad14c cmp dword [rdx+0x4], 0xfffeffff | |
0bcad153 jnb 0x0bca0010 ->0 | |
0bcad159 movsd xmm7, [rdx] | |
0bcad15d movsd [rsp+0x8], xmm7 | |
0bcad163 cmp dword [rbp+0x48], 0x405dacf0 | |
0bcad16a jnz 0x0bca0010 ->0 | |
0bcad170 mov ebx, [r15+0x1c] | |
0bcad174 and ebx, 0x798a813c | |
0bcad17a lea ebx, [rbx+rbx*2] | |
0bcad17d shl ebx, 0x03 | |
0bcad180 add ebx, [r15+0x14] | |
0bcad184 cmp dword [rbx+0xc], -0x05 | |
0bcad188 jnz 0x0bcad197 | |
0bcad18a cmp dword [rbx+0x8], 0x405daf18 | |
0bcad191 jz 0x0bca0010 ->0 | |
0bcad197 mov ebx, [rbx+0x10] | |
0bcad19a test ebx, ebx | |
0bcad19c jnz 0x0bcad184 | |
0bcad19e mov ebx, 0x405d8420 | |
0bcad1a3 mov rsi, 0xfffffffb405daf18 | |
0bcad1ad cmp rsi, [rbp+0x5a8] | |
0bcad1b4 jnz 0x0bca0010 ->0 | |
0bcad1ba cmp dword [rbp+0x5a4], -0x09 | |
0bcad1c1 jnz 0x0bca0010 ->0 | |
0bcad1c7 cmp dword [rbp+0x5a0], 0x405dae80 | |
0bcad1d1 jnz 0x0bca0010 ->0 | |
0bcad1d7 xor esi, esi | |
0bcad1d9 call 0x0041f7e0 ->lj_tab_new1 | |
0bcad1de mov edx, [0x405d84b0] | |
0bcad1e5 movsd xmm7, [rsp+0x8] | |
0bcad1eb mov dword [rdx+0x1c], 0xfffffff4 | |
0bcad1f2 mov [rdx+0x18], eax | |
0bcad1f5 movsd [rdx+0x10], xmm7 | |
0bcad1fa xor eax, eax | |
0bcad1fc mov ebx, 0x40b54c7c | |
0bcad201 mov r14d, 0x405d8f78 | |
0bcad207 jmp 0x0041d9f8 | |
---- TRACE 17 stop -> return | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 18 start 8/6 expand.lua:688 | |
0092 RET1 2 2 | |
0037 TSETB 3 2 2 | |
0038 UGET 3 0 ; expand_bool | |
0039 TGETB 4 0 3 | |
0040 MOV 5 1 | |
0041 CALL 3 2 3 | |
0000 . FUNCF 8 ; expand.lua:670 | |
0001 . GGET 2 0 ; "assert" | |
0002 . GGET 3 1 ; "type" | |
0003 . MOV 4 0 | |
0004 . CALL 3 2 2 | |
0000 . . FUNCC ; type | |
0005 . ISEQS 3 2 ; "table" | |
0006 . JMP 3 => 0009 | |
0009 . KPRI 3 2 | |
0010 . KSTR 4 3 ; "logical expression must be a table" | |
0011 . CALL 2 1 3 | |
0000 . . FUNCC ; assert | |
0012 . TGETB 2 0 1 | |
0013 . ISEQS 2 4 ; "not" | |
0014 . JMP 2 => 0018 | |
0015 . TGETB 2 0 1 | |
0016 . ISNES 2 5 ; "!" | |
0017 . JMP 2 => 0026 | |
0026 . TGETB 2 0 1 | |
0027 . ISEQS 2 7 ; "and" | |
0028 . JMP 2 => 0032 | |
0029 . TGETB 2 0 1 | |
0030 . ISNES 2 8 ; "&&" | |
0031 . JMP 2 => 0047 | |
0047 . TGETB 2 0 1 | |
0048 . ISEQS 2 11 ; "or" | |
0049 . JMP 2 => 0053 | |
0050 . TGETB 2 0 1 | |
0051 . ISNES 2 12 ; "||" | |
0052 . JMP 2 => 0068 | |
0068 . UGET 2 1 ; relops | |
0069 . TGETB 3 0 1 | |
0070 . TGETV 2 2 3 | |
0071 . ISF 2 | |
0072 . JMP 3 => 0094 | |
0073 . UGET 2 2 ; expand_relop | |
0074 . MOV 3 0 | |
0075 . MOV 4 1 | |
0076 . CALL 2 3 3 | |
0000 . . FUNCF 10 ; expand.lua:664 | |
0001 . . UGET 2 0 ; expand_arith | |
0002 . . TGETB 3 0 2 | |
0003 . . MOV 4 1 | |
0004 . . CALL 2 3 3 | |
0000 . . . JFUNCF 14 17 ; expand.lua:632 | |
0001 . . . GGET 2 0 ; "assert" | |
0002 . . . MOV 3 0 | |
0003 . . . CALL 2 1 2 | |
0000 . . . . FUNCC ; assert | |
0004 . . . GGET 2 1 ; "type" | |
0005 . . . MOV 3 0 | |
0006 . . . CALL 2 2 2 | |
0000 . . . . FUNCC ; type | |
0007 . . . ISEQS 2 2 ; "number" | |
0008 . . . JMP 2 => 0011 | |
0009 . . . ISNES 0 3 ; "len" | |
0010 . . . JMP 2 => 0014 | |
0014 . . . TGETB 2 0 1 | |
0015 . . . UGET 3 0 ; binops | |
0016 . . . TGETV 3 3 2 | |
0017 . . . ISF 3 | |
0018 . . . JMP 4 => 0048 | |
0048 . . . GGET 3 0 ; "assert" | |
0049 . . . ISNES 2 7 ; "[]" | |
0050 . . . JMP 4 => 0053 | |
0053 . . . KPRI 4 2 | |
0054 . . . KSTR 5 8 ; "expr has already been expanded?" | |
0055 . . . CALL 3 1 3 | |
0000 . . . . FUNCC ; assert | |
0056 . . . GGET 3 0 ; "assert" | |
0057 . . . MOV 5 2 | |
0058 . . . TGETS 4 2 9 ; "match" | |
0059 . . . KSTR 6 10 ; "^%[(.+)%]$" | |
0060 . . . CALL 4 2 3 | |
0000 . . . . FUNCC ; string.match | |
---- TRACE 18 abort expand.lua:651 -- NYI: FastFunc string.match | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 18 start 11/1 utils.lua:41 | |
0024 RET1 2 2 | |
0007 UGET 3 1 ; assert_expr | |
0008 UGET 4 3 ; has_ether_protocol_min_payload | |
0009 MOV 5 0 | |
0010 CALL 4 0 2 | |
0000 . FUNCF 5 ; expand.lua:94 | |
0001 . UGET 1 0 ; has_proto_min_payload | |
0002 . UGET 2 1 ; ether_min_payloads | |
0003 . MOV 3 0 | |
0004 . KSTR 4 0 ; "[ether*]" | |
0005 . CALLT 1 4 | |
0000 . FUNCF 7 ; expand.lua:86 | |
0001 . GGET 3 0 ; "assert" | |
0002 . TGETV 4 0 1 | |
0003 . CALL 3 2 2 | |
0000 . . FUNCC ; assert | |
0004 . TDUP 4 1 | |
0005 . TDUP 5 2 | |
0006 . TSETB 2 5 1 | |
0007 . SUBVN 6 3 0 ; 1 | |
0008 . TSETB 6 5 2 | |
0009 . TSETB 5 4 3 | |
0010 . RET1 4 2 | |
0011 CALLM 3 0 0 | |
0000 . FUNCF 6 ; expand.lua:565 | |
0001 . UGET 1 0 ; expand_relop | |
0002 . MOV 2 0 | |
0003 . UGET 3 1 ; dlt | |
0004 . CALL 1 3 3 | |
0000 . . FUNCF 10 ; expand.lua:664 | |
0001 . . UGET 2 0 ; expand_arith | |
0002 . . TGETB 3 0 2 | |
0003 . . MOV 4 1 | |
0004 . . CALL 2 3 3 | |
0000 . . . JFUNCF 14 17 ; expand.lua:632 | |
0001 . . . GGET 2 0 ; "assert" | |
0002 . . . MOV 3 0 | |
0003 . . . CALL 2 1 2 | |
0000 . . . . FUNCC ; assert | |
0004 . . . GGET 2 1 ; "type" | |
0005 . . . MOV 3 0 | |
0006 . . . CALL 2 2 2 | |
0000 . . . . FUNCC ; type | |
0007 . . . ISEQS 2 2 ; "number" | |
0008 . . . JMP 2 => 0011 | |
0011 . . . MOV 2 0 | |
0012 . . . TNEW 3 0 | |
0013 . . . RET 2 3 | |
0005 . . UGET 4 0 ; expand_arith | |
0006 . . TGETB 5 0 3 | |
0007 . . MOV 6 1 | |
0008 . . CALL 4 3 3 | |
0000 . . . JFUNCF 14 17 ; expand.lua:632 | |
0001 . . . GGET 2 0 ; "assert" | |
0002 . . . MOV 3 0 | |
0003 . . . CALL 2 1 2 | |
0000 . . . . FUNCC ; assert | |
0004 . . . GGET 2 1 ; "type" | |
0005 . . . MOV 3 0 | |
0006 . . . CALL 2 2 2 | |
0000 . . . . FUNCC ; type | |
0007 . . . ISEQS 2 2 ; "number" | |
0008 . . . JMP 2 => 0011 | |
0009 . . . ISNES 0 3 ; "len" | |
0010 . . . JMP 2 => 0014 | |
0014 . . . TGETB 2 0 1 | |
0015 . . . UGET 3 0 ; binops | |
0016 . . . TGETV 3 3 2 | |
0017 . . . ISF 3 | |
0018 . . . JMP 4 => 0048 | |
0048 . . . GGET 3 0 ; "assert" | |
0049 . . . ISNES 2 7 ; "[]" | |
0050 . . . JMP 4 => 0053 | |
0053 . . . KPRI 4 2 | |
0054 . . . KSTR 5 8 ; "expr has already been expanded?" | |
0055 . . . CALL 3 1 3 | |
0000 . . . . FUNCC ; assert | |
0056 . . . GGET 3 0 ; "assert" | |
0057 . . . MOV 5 2 | |
0058 . . . TGETS 4 2 9 ; "match" | |
0059 . . . KSTR 6 10 ; "^%[(.+)%]$" | |
0060 . . . CALL 4 2 3 | |
0000 . . . . FUNCC ; string.match | |
---- TRACE 18 abort expand.lua:651 -- NYI: FastFunc string.match | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 18 start 9/3 expand.lua:667 | |
0018 RETM 6 1 | |
0077 LEN 4 3 | |
0078 ISEQN 4 2 ; 0 | |
0079 JMP 4 => 0092 | |
0080 JLOOP 4 8 | |
---- TRACE 18 IR | |
0001 <span class="irt_tab">tab</span> SLOAD #8 PI | |
0002 > <span class="irt_tab">tab</span> SLOAD #7 T | |
0003 > <span class="irt_p32">p32</span> RETF <span class="irt_pro">proto: 0x405f22a0</span> <span class="irt_p32">[0x405f2414]</span> | |
0004 <span class="irt_int">int</span> CALLL lj_tab_len (0001) | |
0005 > <span class="irt_int">int</span> NE 0004 <span class="irt_int">+0 </span> | |
---- TRACE 18 mcode 107 | |
0bcacffe mov ebx, ebp | |
0bcad000 mov dword [0x405d84a0], 0x12 | |
0bcad00b mov edx, [0x405d84b0] | |
0bcad012 cmp dword [rdx+0x34], -0x0c | |
0bcad016 jnz 0x0bca0010 ->0 | |
0bcad01c mov ebp, [rdx+0x30] | |
0bcad01f cmp dword [rdx-0x4], 0x405f2414 | |
0bcad026 jnz 0x0bca0014 ->1 | |
0bcad02c add edx, -0x18 | |
0bcad02f mov [0x405d84b0], edx | |
0bcad036 mov edi, ebx | |
0bcad038 call 0x00420530 ->lj_tab_len | |
0bcad03d mov edx, [0x405d84b0] | |
0bcad044 test eax, eax | |
0bcad046 jz 0x0bca0018 ->2 | |
0bcad04c mov dword [rdx+0x1c], 0xfffffff4 | |
0bcad053 mov [rdx+0x18], ebx | |
0bcad056 mov dword [rdx+0x14], 0xfffffff4 | |
0bcad05d mov [rdx+0x10], ebp | |
0bcad060 add rsp, +0x20 | |
0bcad064 jmp 0x0bcaeb6e | |
---- TRACE 18 stop -> 8 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 19 start 8/6 expand.lua:688 | |
0092 RET1 2 2 | |
0042 TSETB 3 2 3 | |
0043 TDUP 3 10 | |
0044 TSETB 3 2 4 | |
0045 RET1 2 2 | |
---- TRACE 19 abort expand.lua:677 -- down-recursion, restarting | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 19 start expand.lua:677 | |
0045 RET1 2 2 | |
0058 TSETB 3 2 2 | |
0059 TDUP 3 14 | |
0060 TSETB 3 2 3 | |
0061 UGET 3 0 ; expand_bool | |
0062 TGETB 4 0 3 | |
0063 MOV 5 1 | |
0064 CALL 3 0 3 | |
0000 . FUNCF 8 ; expand.lua:670 | |
0001 . GGET 2 0 ; "assert" | |
0002 . GGET 3 1 ; "type" | |
0003 . MOV 4 0 | |
0004 . CALL 3 2 2 | |
0000 . . FUNCC ; type | |
0005 . ISEQS 3 2 ; "table" | |
0006 . JMP 3 => 0009 | |
0009 . KPRI 3 2 | |
0010 . KSTR 4 3 ; "logical expression must be a table" | |
0011 . CALL 2 1 3 | |
0000 . . FUNCC ; assert | |
0012 . TGETB 2 0 1 | |
0013 . ISEQS 2 4 ; "not" | |
0014 . JMP 2 => 0018 | |
0015 . TGETB 2 0 1 | |
0016 . ISNES 2 5 ; "!" | |
0017 . JMP 2 => 0026 | |
0026 . TGETB 2 0 1 | |
0027 . ISEQS 2 7 ; "and" | |
0028 . JMP 2 => 0032 | |
0032 . TDUP 2 9 | |
0033 . UGET 3 0 ; expand_bool | |
0034 . TGETB 4 0 2 | |
0035 . MOV 5 1 | |
0036 . CALL 3 2 3 | |
0000 . . FUNCF 8 ; expand.lua:670 | |
0001 . . GGET 2 0 ; "assert" | |
0002 . . GGET 3 1 ; "type" | |
0003 . . MOV 4 0 | |
0004 . . CALL 3 2 2 | |
0000 . . . FUNCC ; type | |
0005 . . ISEQS 3 2 ; "table" | |
0006 . . JMP 3 => 0009 | |
0009 . . KPRI 3 2 | |
0010 . . KSTR 4 3 ; "logical expression must be a table" | |
0011 . . CALL 2 1 3 | |
0000 . . . FUNCC ; assert | |
0012 . . TGETB 2 0 1 | |
0013 . . ISEQS 2 4 ; "not" | |
0014 . . JMP 2 => 0018 | |
0015 . . TGETB 2 0 1 | |
0016 . . ISNES 2 5 ; "!" | |
0017 . . JMP 2 => 0026 | |
0026 . . TGETB 2 0 1 | |
0027 . . ISEQS 2 7 ; "and" | |
0028 . . JMP 2 => 0032 | |
0029 . . TGETB 2 0 1 | |
0030 . . ISNES 2 8 ; "&&" | |
0031 . . JMP 2 => 0047 | |
0047 . . TGETB 2 0 1 | |
0048 . . ISEQS 2 11 ; "or" | |
0049 . . JMP 2 => 0053 | |
0050 . . TGETB 2 0 1 | |
0051 . . ISNES 2 12 ; "||" | |
0052 . . JMP 2 => 0068 | |
0068 . . UGET 2 1 ; relops | |
0069 . . TGETB 3 0 1 | |
0070 . . TGETV 2 2 3 | |
0071 . . ISF 2 | |
0072 . . JMP 3 => 0094 | |
0073 . . UGET 2 2 ; expand_relop | |
0074 . . MOV 3 0 | |
0075 . . MOV 4 1 | |
0076 . . CALL 2 3 3 | |
0000 . . . FUNCF 10 ; expand.lua:664 | |
0001 . . . UGET 2 0 ; expand_arith | |
0002 . . . TGETB 3 0 2 | |
0003 . . . MOV 4 1 | |
0004 . . . CALL 2 3 3 | |
0000 . . . . JFUNCF 14 17 ; expand.lua:632 | |
0001 . . . . GGET 2 0 ; "assert" | |
0002 . . . . MOV 3 0 | |
0003 . . . . CALL 2 1 2 | |
0000 . . . . . FUNCC ; assert | |
0004 . . . . GGET 2 1 ; "type" | |
0005 . . . . MOV 3 0 | |
0006 . . . . CALL 2 2 2 | |
0000 . . . . . FUNCC ; type | |
0007 . . . . ISEQS 2 2 ; "number" | |
0008 . . . . JMP 2 => 0011 | |
0011 . . . . MOV 2 0 | |
0012 . . . . TNEW 3 0 | |
0013 . . . . RET 2 3 | |
0005 . . . UGET 4 0 ; expand_arith | |
0006 . . . TGETB 5 0 3 | |
0007 . . . MOV 6 1 | |
0008 . . . CALL 4 3 3 | |
0000 . . . . JFUNCF 14 17 ; expand.lua:632 | |
0001 . . . . GGET 2 0 ; "assert" | |
0002 . . . . MOV 3 0 | |
0003 . . . . CALL 2 1 2 | |
0000 . . . . . FUNCC ; assert | |
0004 . . . . GGET 2 1 ; "type" | |
0005 . . . . MOV 3 0 | |
0006 . . . . CALL 2 2 2 | |
0000 . . . . . FUNCC ; type | |
0007 . . . . ISEQS 2 2 ; "number" | |
0008 . . . . JMP 2 => 0011 | |
0009 . . . . ISNES 0 3 ; "len" | |
0010 . . . . JMP 2 => 0014 | |
0014 . . . . TGETB 2 0 1 | |
0015 . . . . UGET 3 0 ; binops | |
0016 . . . . TGETV 3 3 2 | |
0017 . . . . ISF 3 | |
0018 . . . . JMP 4 => 0048 | |
0048 . . . . GGET 3 0 ; "assert" | |
0049 . . . . ISNES 2 7 ; "[]" | |
0050 . . . . JMP 4 => 0053 | |
0053 . . . . KPRI 4 2 | |
0054 . . . . KSTR 5 8 ; "expr has already been expanded?" | |
0055 . . . . CALL 3 1 3 | |
0000 . . . . . FUNCC ; assert | |
0056 . . . . GGET 3 0 ; "assert" | |
0057 . . . . MOV 5 2 | |
0058 . . . . TGETS 4 2 9 ; "match" | |
0059 . . . . KSTR 6 10 ; "^%[(.+)%]$" | |
0060 . . . . CALL 4 2 3 | |
0000 . . . . . FUNCC ; string.match | |
---- TRACE 19 abort expand.lua:651 -- NYI: FastFunc string.match | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 19 start expand.lua:563 | |
0001 GGET 2 0 ; "assert" | |
0002 ISEQS 1 1 ; "EN10MB" | |
0003 JMP 3 => 0006 | |
0006 KPRI 3 2 | |
0007 KSTR 4 2 ; "Encapsulation other than EN10MB unimplem"~ | |
0008 CALL 2 1 3 | |
0000 . FUNCC ; assert | |
0009 FNEW 2 3 ; expand.lua:565 | |
---- TRACE 19 abort expand.lua:568 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 19 start 11/1 utils.lua:41 | |
0024 RET1 2 2 | |
0007 UGET 3 1 ; assert_expr | |
0008 UGET 4 3 ; has_ether_protocol_min_payload | |
0009 MOV 5 0 | |
0010 CALL 4 0 2 | |
0000 . FUNCF 5 ; expand.lua:94 | |
0001 . UGET 1 0 ; has_proto_min_payload | |
0002 . UGET 2 1 ; ether_min_payloads | |
0003 . MOV 3 0 | |
0004 . KSTR 4 0 ; "[ether*]" | |
0005 . CALLT 1 4 | |
0000 . FUNCF 7 ; expand.lua:86 | |
0001 . GGET 3 0 ; "assert" | |
0002 . TGETV 4 0 1 | |
0003 . CALL 3 2 2 | |
0000 . . FUNCC ; assert | |
0004 . TDUP 4 1 | |
0005 . TDUP 5 2 | |
0006 . TSETB 2 5 1 | |
0007 . SUBVN 6 3 0 ; 1 | |
0008 . TSETB 6 5 2 | |
0009 . TSETB 5 4 3 | |
0010 . RET1 4 2 | |
0011 CALLM 3 0 0 | |
0000 . FUNCF 6 ; expand.lua:565 | |
0001 . UGET 1 0 ; expand_relop | |
0002 . MOV 2 0 | |
0003 . UGET 3 1 ; dlt | |
0004 . CALL 1 3 3 | |
0000 . . FUNCF 10 ; expand.lua:664 | |
0001 . . UGET 2 0 ; expand_arith | |
0002 . . TGETB 3 0 2 | |
0003 . . MOV 4 1 | |
0004 . . CALL 2 3 3 | |
0000 . . . JFUNCF 14 17 ; expand.lua:632 | |
0001 . . . GGET 2 0 ; "assert" | |
0002 . . . MOV 3 0 | |
0003 . . . CALL 2 1 2 | |
0000 . . . . FUNCC ; assert | |
0004 . . . GGET 2 1 ; "type" | |
0005 . . . MOV 3 0 | |
0006 . . . CALL 2 2 2 | |
0000 . . . . FUNCC ; type | |
0007 . . . ISEQS 2 2 ; "number" | |
0008 . . . JMP 2 => 0011 | |
0011 . . . MOV 2 0 | |
0012 . . . TNEW 3 0 | |
0013 . . . RET 2 3 | |
0005 . . UGET 4 0 ; expand_arith | |
0006 . . TGETB 5 0 3 | |
0007 . . MOV 6 1 | |
0008 . . CALL 4 3 3 | |
0000 . . . JFUNCF 14 17 ; expand.lua:632 | |
0001 . . . GGET 2 0 ; "assert" | |
0002 . . . MOV 3 0 | |
0003 . . . CALL 2 1 2 | |
0000 . . . . FUNCC ; assert | |
0004 . . . GGET 2 1 ; "type" | |
0005 . . . MOV 3 0 | |
0006 . . . CALL 2 2 2 | |
0000 . . . . FUNCC ; type | |
0007 . . . ISEQS 2 2 ; "number" | |
0008 . . . JMP 2 => 0011 | |
0009 . . . ISNES 0 3 ; "len" | |
0010 . . . JMP 2 => 0014 | |
0014 . . . TGETB 2 0 1 | |
0015 . . . UGET 3 0 ; binops | |
0016 . . . TGETV 3 3 2 | |
0017 . . . ISF 3 | |
0018 . . . JMP 4 => 0048 | |
0048 . . . GGET 3 0 ; "assert" | |
0049 . . . ISNES 2 7 ; "[]" | |
0050 . . . JMP 4 => 0053 | |
0053 . . . KPRI 4 2 | |
0054 . . . KSTR 5 8 ; "expr has already been expanded?" | |
0055 . . . CALL 3 1 3 | |
0000 . . . . FUNCC ; assert | |
0056 . . . GGET 3 0 ; "assert" | |
0057 . . . MOV 5 2 | |
0058 . . . TGETS 4 2 9 ; "match" | |
0059 . . . KSTR 6 10 ; "^%[(.+)%]$" | |
0060 . . . CALL 4 2 3 | |
0000 . . . . FUNCC ; string.match | |
---- TRACE 19 abort expand.lua:651 -- NYI: FastFunc string.match | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 19 start 8/6 expand.lua:688 | |
---- TRACE 19 IR | |
0001 <span class="irt_tab">tab</span> SLOAD #3 PI | |
---- TRACE 19 mcode 54 | |
0bcacfc5 mov ebp, [rsp+0x8] | |
0bcacfc9 mov dword [0x405d84a0], 0x13 | |
0bcacfd4 mov edx, [0x405d84b0] | |
0bcacfdb mov dword [rdx+0x14], 0xfffffff4 | |
0bcacfe2 mov [rdx+0x10], ebp | |
0bcacfe5 xor eax, eax | |
0bcacfe7 mov ebx, 0x405f2450 | |
0bcacfec mov r14d, 0x405d8f78 | |
0bcacff2 add rsp, +0x10 | |
0bcacff6 jmp 0x0041d9f8 | |
---- TRACE 19 stop -> interpreter | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 20 start 11/1 utils.lua:41 | |
0024 RET1 2 2 | |
0007 UGET 3 1 ; assert_expr | |
0008 UGET 4 3 ; has_ether_protocol_min_payload | |
0009 MOV 5 0 | |
0010 CALL 4 0 2 | |
0000 . FUNCF 5 ; expand.lua:94 | |
0001 . UGET 1 0 ; has_proto_min_payload | |
0002 . UGET 2 1 ; ether_min_payloads | |
0003 . MOV 3 0 | |
0004 . KSTR 4 0 ; "[ether*]" | |
0005 . CALLT 1 4 | |
0000 . FUNCF 7 ; expand.lua:86 | |
0001 . GGET 3 0 ; "assert" | |
0002 . TGETV 4 0 1 | |
0003 . CALL 3 2 2 | |
0000 . . FUNCC ; assert | |
0004 . TDUP 4 1 | |
0005 . TDUP 5 2 | |
0006 . TSETB 2 5 1 | |
0007 . SUBVN 6 3 0 ; 1 | |
0008 . TSETB 6 5 2 | |
0009 . TSETB 5 4 3 | |
0010 . RET1 4 2 | |
0011 CALLM 3 0 0 | |
0000 . FUNCF 6 ; expand.lua:565 | |
0001 . UGET 1 0 ; expand_relop | |
0002 . MOV 2 0 | |
0003 . UGET 3 1 ; dlt | |
0004 . CALL 1 3 3 | |
0000 . . FUNCF 10 ; expand.lua:664 | |
0001 . . UGET 2 0 ; expand_arith | |
0002 . . TGETB 3 0 2 | |
0003 . . MOV 4 1 | |
0004 . . CALL 2 3 3 | |
0000 . . . JFUNCF 14 17 ; expand.lua:632 | |
0001 . . . GGET 2 0 ; "assert" | |
0002 . . . MOV 3 0 | |
0003 . . . CALL 2 1 2 | |
0000 . . . . FUNCC ; assert | |
0004 . . . GGET 2 1 ; "type" | |
0005 . . . MOV 3 0 | |
0006 . . . CALL 2 2 2 | |
0000 . . . . FUNCC ; type | |
0007 . . . ISEQS 2 2 ; "number" | |
0008 . . . JMP 2 => 0011 | |
0011 . . . MOV 2 0 | |
0012 . . . TNEW 3 0 | |
0013 . . . RET 2 3 | |
0005 . . UGET 4 0 ; expand_arith | |
0006 . . TGETB 5 0 3 | |
0007 . . MOV 6 1 | |
0008 . . CALL 4 3 3 | |
0000 . . . JFUNCF 14 17 ; expand.lua:632 | |
0001 . . . GGET 2 0 ; "assert" | |
0002 . . . MOV 3 0 | |
0003 . . . CALL 2 1 2 | |
0000 . . . . FUNCC ; assert | |
0004 . . . GGET 2 1 ; "type" | |
0005 . . . MOV 3 0 | |
0006 . . . CALL 2 2 2 | |
0000 . . . . FUNCC ; type | |
0007 . . . ISEQS 2 2 ; "number" | |
0008 . . . JMP 2 => 0011 | |
0009 . . . ISNES 0 3 ; "len" | |
0010 . . . JMP 2 => 0014 | |
0014 . . . TGETB 2 0 1 | |
0015 . . . UGET 3 0 ; binops | |
0016 . . . TGETV 3 3 2 | |
0017 . . . ISF 3 | |
0018 . . . JMP 4 => 0048 | |
0048 . . . GGET 3 0 ; "assert" | |
0049 . . . ISNES 2 7 ; "[]" | |
0050 . . . JMP 4 => 0053 | |
0053 . . . KPRI 4 2 | |
0054 . . . KSTR 5 8 ; "expr has already been expanded?" | |
0055 . . . CALL 3 1 3 | |
0000 . . . . FUNCC ; assert | |
0056 . . . GGET 3 0 ; "assert" | |
0057 . . . MOV 5 2 | |
0058 . . . TGETS 4 2 9 ; "match" | |
0059 . . . KSTR 6 10 ; "^%[(.+)%]$" | |
0060 . . . CALL 4 2 3 | |
0000 . . . . FUNCC ; string.match | |
---- TRACE 20 abort expand.lua:651 -- NYI: FastFunc string.match | |
</pre> | |
{ "if", | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
2048 }, | |
{ "fail" } }, | |
{ "if", | |
{ "if", | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
2048 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
19 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
19 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
9 }, | |
1 }, | |
"len" }, | |
{ "=", | |
{ "[]", | |
{ "+", | |
14, | |
<pre class="ljdump"> | |
---- TRACE 20 start utils.lua:65 | |
0001 IST 1 | |
0002 JMP 3 => 0004 | |
0004 IST 2 | |
0005 JMP 3 => 0007 | |
0007 GGET 3 1 ; "type" | |
0008 MOV 4 0 | |
0009 CALL 3 2 2 | |
0000 . FUNCC ; type | |
0010 ISNES 3 2 ; "number" | |
0011 JMP 3 => 0019 | |
0012 GGET 3 3 ; "print" | |
0013 MOV 4 1 | |
0014 MOV 5 0 | |
0015 MOV 6 2 | |
0016 CAT 4 4 6 | |
---- TRACE 20 abort utils.lua:69 -- NYI: bytecode 36 | |
</pre> | |
9 }, | |
1 }, | |
6 }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "true" }, | |
{ "if", | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
2048 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
19 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
19 }, | |
1 } }, | |
<pre class="ljdump"> | |
---- TRACE 20 start utils.lua:80 | |
0081 GGET 7 14 ; "pp" | |
0082 TGETV 8 0 6 | |
0083 MOV 9 1 | |
0084 KSTR 10 15 ; "," | |
0085 CALL 7 1 4 | |
0000 . FUNCF 11 ; utils.lua:65 | |
0001 . IST 1 | |
0002 . JMP 3 => 0004 | |
0004 . IST 2 | |
0005 . JMP 3 => 0007 | |
0007 . GGET 3 1 ; "type" | |
0008 . MOV 4 0 | |
0009 . CALL 3 2 2 | |
0000 . . FUNCC ; type | |
0010 . ISNES 3 2 ; "number" | |
0011 . JMP 3 => 0019 | |
0019 . GGET 3 1 ; "type" | |
0020 . MOV 4 0 | |
0021 . CALL 3 2 2 | |
0000 . . FUNCC ; type | |
0022 . ISNES 3 4 ; "string" | |
0023 . JMP 3 => 0033 | |
0033 . GGET 3 1 ; "type" | |
0034 . MOV 4 0 | |
0035 . CALL 3 2 2 | |
0000 . . FUNCC ; type | |
0036 . ISNES 3 6 ; "boolean" | |
0037 . JMP 3 => 0049 | |
0049 . GGET 3 1 ; "type" | |
0050 . MOV 4 0 | |
0051 . CALL 3 2 2 | |
0000 . . FUNCC ; type | |
0052 . ISNES 3 9 ; "table" | |
0053 . JMP 3 => 0096 | |
0054 . LEN 3 0 | |
0055 . ISNEN 3 0 ; 1 | |
0056 . JMP 3 => 0066 | |
0066 . GGET 3 3 ; "print" | |
0067 . MOV 4 1 | |
0068 . KSTR 5 10 ; "{ "" | |
0069 . TGETB 6 0 1 | |
0070 . KSTR 7 12 ; ""," | |
0071 . CAT 4 4 7 | |
---- TRACE 20 abort utils.lua:78 -- NYI: bytecode 36 | |
</pre> | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
9 }, | |
1 }, | |
"len" }, | |
{ "=", | |
{ "[]", | |
{ "+", | |
14, | |
9 }, | |
1 }, | |
17 }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "true" }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
<pre class="ljdump"> | |
---- TRACE 20 start utils.lua:65 | |
0001 IST 1 | |
0002 JMP 3 => 0004 | |
0004 IST 2 | |
0005 JMP 3 => 0007 | |
0007 GGET 3 1 ; "type" | |
0008 MOV 4 0 | |
0009 CALL 3 2 2 | |
0000 . FUNCC ; type | |
0010 ISNES 3 2 ; "number" | |
0011 JMP 3 => 0019 | |
0019 GGET 3 1 ; "type" | |
0020 MOV 4 0 | |
0021 CALL 3 2 2 | |
0000 . FUNCC ; type | |
0022 ISNES 3 4 ; "string" | |
0023 JMP 3 => 0033 | |
0033 GGET 3 1 ; "type" | |
0034 MOV 4 0 | |
0035 CALL 3 2 2 | |
0000 . FUNCC ; type | |
0036 ISNES 3 6 ; "boolean" | |
0037 JMP 3 => 0049 | |
0049 GGET 3 1 ; "type" | |
0050 MOV 4 0 | |
0051 CALL 3 2 2 | |
0000 . FUNCC ; type | |
0052 ISNES 3 9 ; "table" | |
0053 JMP 3 => 0096 | |
0054 LEN 3 0 | |
0055 ISNEN 3 0 ; 1 | |
0056 JMP 3 => 0066 | |
0066 GGET 3 3 ; "print" | |
0067 MOV 4 1 | |
0068 KSTR 5 10 ; "{ "" | |
0069 TGETB 6 0 1 | |
0070 KSTR 7 12 ; ""," | |
0071 CAT 4 4 7 | |
---- TRACE 20 abort utils.lua:78 -- NYI: bytecode 36 | |
</pre> | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
2048 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
19 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
19 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
9 }, | |
1 }, | |
"len" }, | |
{ "=", | |
{ "[]", | |
{ "+", | |
14, | |
9 }, | |
1 }, | |
<pre class="ljdump"> | |
---- TRACE 20 start utils.lua:80 | |
0087 GGET 3 14 ; "pp" | |
---- TRACE 20 abort utils.lua:81 -- leaving loop in root trace | |
</pre> | |
132 }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } } } }, | |
{ "if", | |
{ "if", | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
2048 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
19 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
19 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
2048 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
19 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
19 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
6 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "uint32", | |
{ "&", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
14, | |
6 }, | |
2 } }, | |
8191 } }, | |
0 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
{ "+", | |
{ "<<", | |
{ "&", | |
{ "[]", | |
14, | |
1 }, | |
15 }, | |
2 }, | |
14 }, | |
0 }, | |
<pre class="ljdump"> | |
---- TRACE 20 start utils.lua:65 | |
0001 IST 1 | |
0002 JMP 3 => 0004 | |
0004 IST 2 | |
0005 JMP 3 => 0007 | |
0007 GGET 3 1 ; "type" | |
0008 MOV 4 0 | |
0009 CALL 3 2 2 | |
0000 . FUNCC ; type | |
0010 ISNES 3 2 ; "number" | |
0011 JMP 3 => 0019 | |
0012 GGET 3 3 ; "print" | |
0013 MOV 4 1 | |
0014 MOV 5 0 | |
0015 MOV 6 2 | |
0016 CAT 4 4 6 | |
---- TRACE 20 abort utils.lua:69 -- NYI: bytecode 36 | |
</pre> | |
2 }, | |
"len" }, | |
{ "<=", | |
0, | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
{ "+", | |
{ "<<", | |
{ "&", | |
{ "[]", | |
14, | |
1 }, | |
15 }, | |
2 }, | |
14 }, | |
0 }, | |
2 } } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
<pre class="ljdump"> | |
---- TRACE 20 start utils.lua:80 | |
0087 GGET 3 14 ; "pp" | |
---- TRACE 20 abort utils.lua:81 -- leaving loop in root trace | |
</pre> | |
12 }, | |
2 } }, | |
2048 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
19 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
19 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
2048 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
19 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
19 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
6 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "uint32", | |
{ "&", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
14, | |
6 }, | |
2 } }, | |
8191 } }, | |
0 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
{ "+", | |
{ "<<", | |
{ "&", | |
{ "[]", | |
14, | |
1 }, | |
15 }, | |
2 }, | |
14 }, | |
0 }, | |
2 }, | |
"len" }, | |
{ "<=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
{ "+", | |
{ "<<", | |
{ "&", | |
{ "[]", | |
14, | |
1 }, | |
15 }, | |
2 }, | |
14 }, | |
0 }, | |
2 } }, | |
6000 }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "false" } }, | |
{ "true" }, | |
{ "if", | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
2048 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
19 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
19 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
2048 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
19 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
19 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
6 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "uint32", | |
{ "&", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
14, | |
6 }, | |
2 } }, | |
8191 } }, | |
0 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
{ "+", | |
{ "<<", | |
{ "&", | |
{ "[]", | |
14, | |
1 }, | |
15 }, | |
2 }, | |
14 }, | |
2 }, | |
2 }, | |
"len" }, | |
{ "<=", | |
0, | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
{ "+", | |
{ "<<", | |
{ "&", | |
{ "[]", | |
14, | |
1 }, | |
15 }, | |
2 }, | |
14 }, | |
2 }, | |
2 } } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "if", | |
{ "<=", | |
<pre class="ljdump"> | |
---- TRACE 20 start utils.lua:65 | |
0001 IST 1 | |
0002 JMP 3 => 0004 | |
0004 IST 2 | |
0005 JMP 3 => 0007 | |
0007 GGET 3 1 ; "type" | |
0008 MOV 4 0 | |
0009 CALL 3 2 2 | |
0000 . FUNCC ; type | |
0010 ISNES 3 2 ; "number" | |
0011 JMP 3 => 0019 | |
0019 GGET 3 1 ; "type" | |
0020 MOV 4 0 | |
0021 CALL 3 2 2 | |
0000 . FUNCC ; type | |
0022 ISNES 3 4 ; "string" | |
0023 JMP 3 => 0033 | |
0033 GGET 3 1 ; "type" | |
0034 MOV 4 0 | |
0035 CALL 3 2 2 | |
0000 . FUNCC ; type | |
0036 ISNES 3 6 ; "boolean" | |
0037 JMP 3 => 0049 | |
0049 GGET 3 1 ; "type" | |
0050 MOV 4 0 | |
0051 CALL 3 2 2 | |
0000 . FUNCC ; type | |
0052 ISNES 3 9 ; "table" | |
0053 JMP 3 => 0096 | |
0054 LEN 3 0 | |
0055 ISNEN 3 0 ; 1 | |
0056 JMP 3 => 0066 | |
0066 GGET 3 3 ; "print" | |
0067 MOV 4 1 | |
0068 KSTR 5 10 ; "{ "" | |
0069 TGETB 6 0 1 | |
0070 KSTR 7 12 ; ""," | |
0071 CAT 4 4 7 | |
---- TRACE 20 abort utils.lua:78 -- NYI: bytecode 36 | |
</pre> | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
2048 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
19 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
19 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
2048 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
19 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
<pre class="ljdump"> | |
---- TRACE 20 start utils.lua:80 | |
0087 GGET 3 14 ; "pp" | |
---- TRACE 20 abort utils.lua:81 -- leaving loop in root trace | |
</pre> | |
19 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
6 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "uint32", | |
{ "&", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
14, | |
6 }, | |
2 } }, | |
8191 } }, | |
0 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
{ "+", | |
{ "<<", | |
{ "&", | |
{ "[]", | |
14, | |
1 }, | |
15 }, | |
2 }, | |
14 }, | |
2 }, | |
2 }, | |
"len" }, | |
{ "<=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
{ "+", | |
{ "<<", | |
{ "&", | |
{ "[]", | |
14, | |
1 }, | |
15 }, | |
2 }, | |
14 }, | |
2 }, | |
2 } }, | |
6000 }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "false" } } }, | |
{ "false" } }, | |
{ "if", | |
{ "if", | |
{ "if", | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
34525 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
39 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
39 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
6 }, | |
1 }, | |
"len" }, | |
{ "=", | |
{ "[]", | |
{ "+", | |
14, | |
6 }, | |
1 }, | |
6 }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "true" }, | |
{ "if", | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
34525 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
39 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
39 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
6 }, | |
1 }, | |
"len" }, | |
{ "=", | |
{ "[]", | |
{ "+", | |
14, | |
6 }, | |
1 }, | |
44 }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
34525 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
39 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
39 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
40 }, | |
1 }, | |
"len" }, | |
{ "=", | |
{ "[]", | |
{ "+", | |
14, | |
40 }, | |
1 }, | |
6 }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "false" } } }, | |
{ "true" }, | |
{ "if", | |
{ "if", | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
34525 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
39 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
39 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
6 }, | |
1 }, | |
"len" }, | |
{ "=", | |
{ "[]", | |
{ "+", | |
14, | |
6 }, | |
1 }, | |
17 }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "true" }, | |
{ "if", | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
34525 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
39 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
39 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
6 }, | |
1 }, | |
"len" }, | |
{ "=", | |
{ "[]", | |
{ "+", | |
14, | |
6 }, | |
1 }, | |
44 }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
34525 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
39 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
39 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
40 }, | |
1 }, | |
"len" }, | |
{ "=", | |
{ "[]", | |
{ "+", | |
14, | |
40 }, | |
1 }, | |
17 }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "false" } } }, | |
{ "true" }, | |
{ "if", | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
34525 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
39 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
39 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
6 }, | |
1 }, | |
"len" }, | |
{ "=", | |
{ "[]", | |
{ "+", | |
14, | |
6 }, | |
1 }, | |
132 }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "true" }, | |
{ "if", | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
34525 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
39 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
39 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
6 }, | |
1 }, | |
"len" }, | |
{ "=", | |
{ "[]", | |
{ "+", | |
14, | |
6 }, | |
1 }, | |
44 }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
34525 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
39 }, | |
1 }, | |
<pre class="ljdump"> | |
---- TRACE 20 start utils.lua:65 | |
0001 IST 1 | |
0002 JMP 3 => 0004 | |
0004 IST 2 | |
0005 JMP 3 => 0007 | |
0007 GGET 3 1 ; "type" | |
0008 MOV 4 0 | |
0009 CALL 3 2 2 | |
0000 . FUNCC ; type | |
0010 ISNES 3 2 ; "number" | |
0011 JMP 3 => 0019 | |
0019 GGET 3 1 ; "type" | |
0020 MOV 4 0 | |
0021 CALL 3 2 2 | |
0000 . FUNCC ; type | |
0022 ISNES 3 4 ; "string" | |
0023 JMP 3 => 0033 | |
0024 GGET 3 3 ; "print" | |
0025 MOV 4 1 | |
0026 KSTR 5 5 ; """ | |
0027 MOV 6 0 | |
0028 KSTR 7 5 ; """ | |
0029 MOV 8 2 | |
0030 CAT 4 4 8 | |
---- TRACE 20 abort utils.lua:71 -- NYI: bytecode 36 | |
</pre> | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
39 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
40 }, | |
1 }, | |
"len" }, | |
{ "=", | |
{ "[]", | |
{ "+", | |
14, | |
40 }, | |
1 }, | |
132 }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "false" } } } } }, | |
{ "if", | |
{ "if", | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
34525 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
39 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
39 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
{ "+", | |
14, | |
<pre class="ljdump"> | |
---- TRACE 20 start utils.lua:80 | |
0087 GGET 3 14 ; "pp" | |
---- TRACE 20 abort utils.lua:81 -- leaving loop in root trace | |
</pre> | |
40 }, | |
0 }, | |
2 }, | |
"len" }, | |
{ "<=", | |
0, | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
{ "+", | |
14, | |
40 }, | |
0 }, | |
2 } } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
34525 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
39 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
39 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
{ "+", | |
14, | |
40 }, | |
0 }, | |
2 }, | |
"len" }, | |
{ "<=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
{ "+", | |
14, | |
40 }, | |
0 }, | |
2 } }, | |
6000 }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "false" } }, | |
{ "true" }, | |
{ "if", | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
34525 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
39 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
39 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
{ "+", | |
14, | |
40 }, | |
2 }, | |
2 }, | |
"len" }, | |
{ "<=", | |
0, | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
{ "+", | |
14, | |
40 }, | |
2 }, | |
2 } } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
0, | |
12 }, | |
2 }, | |
"len" }, | |
{ "if", | |
{ "=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
0, | |
12 }, | |
2 } }, | |
34525 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
14, | |
39 }, | |
1 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
0, | |
{ "[]", | |
{ "+", | |
14, | |
39 }, | |
1 } }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "+", | |
{ "+", | |
14, | |
40 }, | |
2 }, | |
2 }, | |
"len" }, | |
{ "<=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
{ "+", | |
14, | |
40 }, | |
2 }, | |
2 } }, | |
6000 }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "false" } } }, | |
{ "false" } } } | |
<pre class="ljdump"> | |
---- TRACE 20 start optimize.lua:54 | |
0001 UGET 1 0 ; cache | |
0002 TGETV 1 1 0 | |
0003 ISNEP 1 0 | |
0004 JMP 2 => 0011 | |
0011 RET1 1 2 | |
---- TRACE 20 IR | |
0001 <span class="irt_fun">fun</span> SLOAD #0 R | |
0002 > <span class="irt_p32">p32</span> UREFC 0001 #0 | |
0003 > <span class="irt_tab">tab</span> ULOAD 0002 | |
0004 > <span class="irt_tab">tab</span> SLOAD #1 T | |
0005 <span class="irt_p32">p32</span> HREF 0003 0004 | |
0006 > <span class="irt_str">str</span> HLOAD 0005 | |
---- TRACE 20 mcode 161 | |
0bcacf1d mov dword [0x405d84a0], 0x14 | |
0bcacf28 mov ebp, [rdx-0x8] | |
0bcacf2b mov edi, [rbp+0x14] | |
0bcacf2e cmp byte [rdi+0x6], 0x1 | |
0bcacf32 jnz 0x0bca0010 ->0 | |
0bcacf38 lea ebp, [rdi+0x8] | |
0bcacf3b cmp dword [rbp+0x4], -0x0c | |
0bcacf3f jnz 0x0bca0010 ->0 | |
0bcacf45 mov ebx, [rbp+0x0] | |
0bcacf48 cmp dword [rdx+0x4], -0x0c | |
0bcacf4c jnz 0x0bca0010 ->0 | |
0bcacf52 mov r15d, [rdx] | |
0bcacf55 lea ebp, [r15-0x4c11db7] | |
0bcacf5c mov edi, r15d | |
0bcacf5f xor edi, ebp | |
0bcacf61 rol ebp, 0x0e | |
0bcacf64 sub edi, ebp | |
0bcacf66 rol ebp, 0x05 | |
0bcacf69 xor ebp, edi | |
0bcacf6b rol edi, 0x0d | |
0bcacf6e sub ebp, edi | |
0bcacf70 and ebp, [rbx+0x1c] | |
0bcacf73 lea ebp, [rbp+rbp*2+0x0] | |
0bcacf77 shl ebp, 0x03 | |
0bcacf7a add ebp, [rbx+0x14] | |
0bcacf7d cmp dword [rbp+0xc], -0x0c | |
0bcacf81 jnz 0x0bcacf89 | |
0bcacf83 cmp r15d, [rbp+0x8] | |
0bcacf87 jz 0x0bcacf95 | |
0bcacf89 mov ebp, [rbp+0x10] | |
0bcacf8c test ebp, ebp | |
0bcacf8e jnz 0x0bcacf7d | |
0bcacf90 mov ebp, 0x405d8420 | |
0bcacf95 cmp dword [rbp+0x4], -0x05 | |
0bcacf99 jnz 0x0bca0010 ->0 | |
0bcacf9f mov ebp, [rbp+0x0] | |
0bcacfa2 mov dword [rdx+0xc], 0xfffffffb | |
0bcacfa9 mov [rdx+0x8], ebp | |
0bcacfac xor eax, eax | |
0bcacfae mov ebx, 0x40b58f1c | |
0bcacfb3 mov r14d, 0x405d8f78 | |
0bcacfb9 jmp 0x0041d9f8 | |
---- TRACE 20 stop -> return | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 21 start 20/0 optimize.lua:55 | |
0001 UGET 1 0 ; cache | |
0002 TGETV 1 1 0 | |
0003 ISNEP 1 0 | |
0004 JMP 2 => 0011 | |
0011 RET1 1 2 | |
0010 CAT 1 1 2 | |
---- TRACE 21 abort optimize.lua:68 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 21 start 20/0 optimize.lua:55 | |
0001 UGET 1 0 ; cache | |
0002 TGETV 1 1 0 | |
0003 ISNEP 1 0 | |
0004 JMP 2 => 0011 | |
0005 UGET 2 1 ; f | |
0006 MOV 3 0 | |
0007 CALL 2 2 2 | |
0000 . FUNCF 10 ; optimize.lua:66 | |
0001 . GGET 1 0 ; "type" | |
0002 . MOV 2 0 | |
0003 . CALL 1 2 2 | |
0000 . . FUNCC ; type | |
0004 . ISNES 1 1 ; "table" | |
0005 . JMP 1 => 0027 | |
0006 . KSTR 1 2 ; "table(" | |
0007 . UGET 2 0 ; cfkey | |
0008 . TGETB 3 0 1 | |
0009 . CALL 2 2 2 | |
0000 . . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . . UGET 1 0 ; cache | |
0002 . . TGETV 1 1 0 | |
0003 . . ISNEP 1 0 | |
0004 . . JMP 2 => 0011 | |
0011 . . RET1 1 2 | |
0010 . CAT 1 1 2 | |
---- TRACE 21 abort optimize.lua:68 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 21 start 20/0 optimize.lua:55 | |
0001 UGET 1 0 ; cache | |
0002 TGETV 1 1 0 | |
0003 ISNEP 1 0 | |
0004 JMP 2 => 0011 | |
0005 UGET 2 1 ; f | |
0006 MOV 3 0 | |
0007 CALL 2 2 2 | |
0000 . FUNCF 10 ; optimize.lua:66 | |
0001 . GGET 1 0 ; "type" | |
0002 . MOV 2 0 | |
0003 . CALL 1 2 2 | |
0000 . . FUNCC ; type | |
0004 . ISNES 1 1 ; "table" | |
0005 . JMP 1 => 0027 | |
0006 . KSTR 1 2 ; "table(" | |
0007 . UGET 2 0 ; cfkey | |
0008 . TGETB 3 0 1 | |
0009 . CALL 2 2 2 | |
0000 . . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . . UGET 1 0 ; cache | |
0002 . . TGETV 1 1 0 | |
0003 . . ISNEP 1 0 | |
0004 . . JMP 2 => 0011 | |
0011 . . RET1 1 2 | |
0010 . CAT 1 1 2 | |
---- TRACE 21 abort optimize.lua:68 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 21 start 20/0 optimize.lua:55 | |
0001 UGET 1 0 ; cache | |
0002 TGETV 1 1 0 | |
0003 ISNEP 1 0 | |
0004 JMP 2 => 0011 | |
0011 RET1 1 2 | |
0020 CAT 1 6 8 | |
---- TRACE 21 abort optimize.lua:69 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 21 start 20/0 optimize.lua:55 | |
---- TRACE 21 IR | |
---- TRACE 21 mcode 29 | |
0bcacef9 mov dword [0x405d84a0], 0x15 | |
0bcacf04 xor eax, eax | |
0bcacf06 mov ebx, 0x40b58ef4 | |
0bcacf0b mov r14d, 0x405d8f78 | |
0bcacf11 jmp 0x0041d9f8 | |
---- TRACE 21 stop -> interpreter | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 22 start optimize.lua:69 | |
0015 MOV 6 1 | |
0016 KSTR 7 3 ; " " | |
0017 UGET 8 0 ; cfkey | |
0018 TGETV 9 0 5 | |
0019 CALL 8 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0011 . RET1 1 2 | |
0020 CAT 1 6 8 | |
---- TRACE 22 abort optimize.lua:69 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 22 start optimize.lua:66 | |
0001 GGET 1 0 ; "type" | |
0002 MOV 2 0 | |
0003 CALL 1 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 1 1 ; "table" | |
0005 JMP 1 => 0027 | |
0006 KSTR 1 2 ; "table(" | |
0007 UGET 2 0 ; cfkey | |
0008 TGETB 3 0 1 | |
0009 CALL 2 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0011 . RET1 1 2 | |
0010 CAT 1 1 2 | |
---- TRACE 22 abort optimize.lua:68 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 22 start optimize.lua:69 | |
0015 MOV 6 1 | |
0016 KSTR 7 3 ; " " | |
0017 UGET 8 0 ; cfkey | |
0018 TGETV 9 0 5 | |
0019 CALL 8 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0011 . RET1 1 2 | |
0020 CAT 1 6 8 | |
---- TRACE 22 abort optimize.lua:69 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 22 start optimize.lua:124 | |
0001 GGET 1 0 ; "type" | |
0002 MOV 2 0 | |
0003 CALL 1 2 2 | |
0000 . FUNCC ; type | |
0004 ISEQS 1 1 ; "table" | |
0005 JMP 1 => 0007 | |
0007 TGETB 1 0 1 | |
0008 FNEW 2 2 ; optimize.lua:127 | |
---- TRACE 22 abort optimize.lua:133 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 22 start optimize.lua:124 | |
0001 GGET 1 0 ; "type" | |
0002 MOV 2 0 | |
0003 CALL 1 2 2 | |
0000 . FUNCC ; type | |
0004 ISEQS 1 1 ; "table" | |
0005 JMP 1 => 0007 | |
0006 UCLO 0 => 0308 | |
---- TRACE 22 abort optimize.lua:125 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 22 start optimize.lua:66 | |
0001 GGET 1 0 ; "type" | |
0002 MOV 2 0 | |
0003 CALL 1 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 1 1 ; "table" | |
0005 JMP 1 => 0027 | |
0027 GGET 1 0 ; "type" | |
0028 MOV 2 0 | |
0029 CALL 1 2 2 | |
0000 . FUNCC ; type | |
0030 KSTR 2 5 ; "(" | |
0031 GGET 3 6 ; "tostring" | |
0032 MOV 4 0 | |
0033 CALL 3 2 2 | |
0000 . FUNCC ; tostring | |
0034 KSTR 4 4 ; ")" | |
0035 CAT 1 1 4 | |
---- TRACE 22 abort optimize.lua:72 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 22 start optimize.lua:69 | |
0015 MOV 6 1 | |
0016 KSTR 7 3 ; " " | |
0017 UGET 8 0 ; cfkey | |
0018 TGETV 9 0 5 | |
0019 CALL 8 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0011 . RET1 1 2 | |
0020 CAT 1 6 8 | |
---- TRACE 22 abort optimize.lua:69 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 22 start optimize.lua:82 | |
0001 GGET 3 0 ; "assert" | |
0002 GGET 4 1 ; "type" | |
0003 MOV 5 2 | |
0004 CALL 4 2 2 | |
0000 . FUNCC ; type | |
0005 ISNES 4 2 ; "number" | |
0006 JMP 4 => 0012 | |
0007 GGET 4 1 ; "type" | |
0008 MOV 5 1 | |
0009 CALL 4 2 2 | |
0000 . FUNCC ; type | |
0010 ISNES 4 2 ; "number" | |
0011 JMP 4 => 0014 | |
0014 KPRI 4 2 | |
0015 CALL 3 1 2 | |
0000 . FUNCC ; assert | |
0016 TGETB 3 1 1 | |
0017 ISEQS 0 3 ; "=" | |
0018 JMP 4 => 0023 | |
0019 ISEQS 0 4 ; "!=" | |
0020 JMP 4 => 0023 | |
0021 KPRI 4 1 | |
0022 JMP 5 => 0024 | |
0024 UGET 5 0 ; bswap_ops | |
0025 TGETV 5 5 3 | |
0026 ISF 5 | |
0027 JMP 6 => 0062 | |
0062 ISNES 3 5 ; "uint32" | |
0063 JMP 5 => 0080 | |
0080 ISNES 3 7 ; "int32" | |
0081 JMP 5 => 0096 | |
0096 UGET 5 5 ; bitops | |
0097 TGETV 5 5 3 | |
0098 ISF 5 | |
0099 JMP 6 => 0161 | |
0161 MOV 5 0 | |
0162 MOV 6 1 | |
0163 MOV 7 2 | |
0164 RET 5 4 | |
---- TRACE 22 IR | |
0001 <span class="irt_fun">fun</span> SLOAD #0 R | |
0002 <span class="irt_tab">tab</span> FLOAD 0001 func.env | |
0003 <span class="irt_p32">p32</span> HREF 0002 <span class="irt_str">"assert"</span> | |
0004 > <span class="irt_p32">p32</span> EQ 0003 <span class="irt_p32">[0x405d8420]</span> | |
0005 <span class="irt_tab">tab</span> FLOAD 0002 tab.meta | |
0006 > <span class="irt_tab">tab</span> NE 0005 <span class="irt_tab">[NULL]</span> | |
0007 <span class="irt_int">int</span> FLOAD 0005 tab.hmask | |
0008 > <span class="irt_int">int</span> EQ 0007 <span class="irt_int">+1 </span> | |
0009 <span class="irt_p32">p32</span> FLOAD 0005 tab.node | |
0010 > <span class="irt_p32">p32</span> HREFK 0009 <span class="irt_str">"__index"</span> @1 | |
0011 > <span class="irt_tab">tab</span> HLOAD 0010 | |
0012 <span class="irt_int">int</span> FLOAD 0011 tab.hmask | |
0013 > <span class="irt_int">int</span> EQ 0012 <span class="irt_int">+63 </span> | |
0014 <span class="irt_p32">p32</span> FLOAD 0011 tab.node | |
0015 > <span class="irt_p32">p32</span> HREFK 0014 <span class="irt_str">"assert"</span> @3 | |
0016 > <span class="irt_fun">fun</span> HLOAD 0015 | |
0017 <span class="irt_p32">p32</span> HREF 0002 <span class="irt_str">"type"</span> | |
0018 > <span class="irt_p32">p32</span> EQ 0017 <span class="irt_p32">[0x405d8420]</span> | |
0019 > <span class="irt_p32">p32</span> HREFK 0014 <span class="irt_str">"type"</span> @60 | |
0020 > <span class="irt_fun">fun</span> HLOAD 0019 | |
0021 > <span class="irt_num">num</span> SLOAD #3 T | |
0022 > <span class="irt_fun">fun</span> EQ 0020 <span class="irt_fun">type</span> | |
0023 > <span class="irt_str">str</span> SLOAD #2 T | |
0024 > <span class="irt_fun">fun</span> EQ 0016 <span class="irt_fun">assert</span> | |
0025 <span class="irt_int">int</span> FLOAD <span class="irt_tab">{0x405dda28}</span> tab.hmask | |
0026 > <span class="irt_int">int</span> EQ 0025 <span class="irt_int">+1 </span> | |
0027 <span class="irt_p32">p32</span> FLOAD <span class="irt_tab">{0x405dda28}</span> tab.node | |
0028 > <span class="irt_p32">p32</span> HREFK 0027 <span class="irt_str">"__index"</span> @1 | |
0029 > <span class="irt_tab">tab</span> HLOAD 0028 | |
0030 <span class="irt_int">int</span> FLOAD 0029 tab.asize | |
0031 > <span class="irt_int">int</span> ULE 0030 <span class="irt_int">+1 </span> | |
0032 <span class="irt_p32">p32</span> HREF 0029 <span class="irt_num">+1 </span> | |
0033 > <span class="irt_p32">p32</span> EQ 0032 <span class="irt_p32">[0x405d8420]</span> | |
0034 <span class="irt_tab">tab</span> FLOAD 0029 tab.meta | |
0035 > <span class="irt_tab">tab</span> EQ 0034 <span class="irt_tab">[NULL]</span> | |
0036 > <span class="irt_str">str</span> SLOAD #1 T | |
0037 > <span class="irt_str">str</span> NE 0036 <span class="irt_str">"=" </span> | |
0038 > <span class="irt_str">str</span> NE 0036 <span class="irt_str">"!="</span> | |
0039 > <span class="irt_p32">p32</span> UREFC 0001 #0 | |
0040 > <span class="irt_tab">tab</span> ULOAD 0039 | |
0041 <span class="irt_tab">tab</span> FLOAD 0040 tab.meta | |
0042 > <span class="irt_tab">tab</span> EQ 0041 <span class="irt_tab">[NULL]</span> | |
0043 > <span class="irt_p32">p32</span> UREFC 0001 #5 | |
0044 > <span class="irt_tab">tab</span> ULOAD 0043 | |
0045 <span class="irt_tab">tab</span> FLOAD 0044 tab.meta | |
0046 > <span class="irt_tab">tab</span> EQ 0045 <span class="irt_tab">[NULL]</span> | |
---- TRACE 22 mcode 617 | |
0bcacc89 mov dword [0x405d84a0], 0x16 | |
0bcacc94 mov r15d, [rdx-0x8] | |
0bcacc98 mov r14d, [r15+0x8] | |
0bcacc9c mov ebp, [r14+0x1c] | |
0bcacca0 and ebp, 0xce2b6183 | |
0bcacca6 lea ebp, [rbp+rbp*2+0x0] | |
0bcaccaa shl ebp, 0x03 | |
0bcaccad add ebp, [r14+0x14] | |
0bcaccb1 cmp dword [rbp+0xc], -0x05 | |
0bcaccb5 jnz 0x0bcaccc4 | |
0bcaccb7 cmp dword [rbp+0x8], 0x405dad18 | |
0bcaccbe jz 0x0bca0010 ->0 | |
0bcaccc4 mov ebp, [rbp+0x10] | |
0bcaccc7 test ebp, ebp | |
0bcaccc9 jnz 0x0bcaccb1 | |
0bcacccb mov ebp, 0x405d8420 | |
0bcaccd0 mov ebp, [r14+0x10] | |
0bcaccd4 test ebp, ebp | |
0bcaccd6 jz 0x0bca0010 ->0 | |
0bcaccdc cmp dword [rbp+0x1c], +0x01 | |
0bcacce0 jnz 0x0bca0010 ->0 | |
0bcacce6 mov ebp, [rbp+0x14] | |
0bcacce9 mov rdi, 0xfffffffb405da430 | |
0bcaccf3 cmp rdi, [rbp+0x20] | |
0bcaccf7 jnz 0x0bca0010 ->0 | |
0bcaccfd cmp dword [rbp+0x1c], -0x0c | |
0bcacd01 jnz 0x0bca0010 ->0 | |
0bcacd07 mov ebp, [rbp+0x18] | |
0bcacd0a cmp dword [rbp+0x1c], +0x3f | |
0bcacd0e jnz 0x0bca0010 ->0 | |
0bcacd14 mov ebp, [rbp+0x14] | |
0bcacd17 mov rdi, 0xfffffffb405dad18 | |
0bcacd21 cmp rdi, [rbp+0x50] | |
0bcacd25 jnz 0x0bca0010 ->0 | |
0bcacd2b cmp dword [rbp+0x4c], -0x09 | |
0bcacd2f jnz 0x0bca0010 ->0 | |
0bcacd35 mov ebx, [r14+0x1c] | |
0bcacd39 and ebx, 0x798a813c | |
0bcacd3f lea ebx, [rbx+rbx*2] | |
0bcacd42 shl ebx, 0x03 | |
0bcacd45 add ebx, [r14+0x14] | |
0bcacd49 cmp dword [rbx+0xc], -0x05 | |
0bcacd4d jnz 0x0bcacd5c | |
0bcacd4f cmp dword [rbx+0x8], 0x405daf18 | |
0bcacd56 jz 0x0bca0010 ->0 | |
0bcacd5c mov ebx, [rbx+0x10] | |
0bcacd5f test ebx, ebx | |
0bcacd61 jnz 0x0bcacd49 | |
0bcacd63 mov ebx, 0x405d8420 | |
0bcacd68 mov rdi, 0xfffffffb405daf18 | |
0bcacd72 cmp rdi, [rbp+0x5a8] | |
0bcacd79 jnz 0x0bca0010 ->0 | |
0bcacd7f cmp dword [rbp+0x5a4], -0x09 | |
0bcacd86 jnz 0x0bca0010 ->0 | |
0bcacd8c cmp dword [rdx+0x14], 0xfffeffff | |
0bcacd93 jnb 0x0bca0010 ->0 | |
0bcacd99 movsd xmm7, [rdx+0x10] | |
0bcacd9e cmp dword [rbp+0x5a0], 0x405dae80 | |
0bcacda8 jnz 0x0bca0010 ->0 | |
0bcacdae cmp dword [rdx+0xc], -0x05 | |
0bcacdb2 jnz 0x0bca0010 ->0 | |
0bcacdb8 mov ebx, [rdx+0x8] | |
0bcacdbb cmp dword [rbp+0x48], 0x405dacf0 | |
0bcacdc2 jnz 0x0bca0010 ->0 | |
0bcacdc8 cmp dword [0x405dda44], +0x01 | |
0bcacdd0 jnz 0x0bca0010 ->0 | |
0bcacdd6 mov ebp, [0x405dda3c] | |
0bcacddd mov rdi, 0xfffffffb405da430 | |
0bcacde7 cmp rdi, [rbp+0x20] | |
0bcacdeb jnz 0x0bca0010 ->0 | |
0bcacdf1 cmp dword [rbp+0x1c], -0x0c | |
0bcacdf5 jnz 0x0bca0010 ->0 | |
0bcacdfb mov ebp, [rbp+0x18] | |
0bcacdfe cmp dword [rbp+0x18], +0x01 | |
0bcace02 ja 0x0bca0010 ->0 | |
0bcace08 mov r14d, [rbp+0x1c] | |
0bcace0c and r14d, 0x83db0f0d | |
0bcace13 lea r14d, [r14+r14*2] | |
0bcace17 shl r14d, 0x03 | |
0bcace1b add r14d, [rbp+0x14] | |
0bcace1f cmp dword [r14+0xc], 0x3ff00000 | |
0bcace27 jnz 0x0bcace34 | |
0bcace29 cmp dword [r14+0x8], +0x00 | |
0bcace2e jz 0x0bca0010 ->0 | |
0bcace34 mov r14d, [r14+0x10] | |
0bcace38 test r14d, r14d | |
0bcace3b jnz 0x0bcace1f | |
0bcace3d mov r14d, 0x405d8420 | |
0bcace43 cmp dword [rbp+0x10], +0x00 | |
0bcace47 jnz 0x0bca0010 ->0 | |
0bcace4d cmp dword [rdx+0x4], -0x05 | |
0bcace51 jnz 0x0bca0010 ->0 | |
0bcace57 mov ebp, [rdx] | |
0bcace59 cmp ebp, 0x40bddbb8 | |
0bcace5f jz 0x0bca0014 ->1 | |
0bcace65 cmp ebp, 0x405f3f58 | |
0bcace6b jz 0x0bca0018 ->2 | |
0bcace71 mov edi, [r15+0x14] | |
0bcace75 cmp byte [rdi+0x6], 0x1 | |
0bcace79 jnz 0x0bca001c ->3 | |
0bcace7f lea r14d, [rdi+0x8] | |
0bcace83 cmp dword [r14+0x4], -0x0c | |
0bcace88 jnz 0x0bca001c ->3 | |
0bcace8e mov r14d, [r14] | |
0bcace91 cmp dword [r14+0x10], +0x00 | |
0bcace96 jnz 0x0bca001c ->3 | |
0bcace9c mov edi, [r15+0x28] | |
0bcacea0 cmp byte [rdi+0x6], 0x1 | |
0bcacea4 jnz 0x0bca001c ->3 | |
0bcaceaa lea r15d, [rdi+0x8] | |
0bcaceae cmp dword [r15+0x4], -0x0c | |
0bcaceb3 jnz 0x0bca001c ->3 | |
0bcaceb9 mov r15d, [r15] | |
0bcacebc cmp dword [r15+0x10], +0x00 | |
0bcacec1 jnz 0x0bca001c ->3 | |
0bcacec7 movsd [rdx+0x38], xmm7 | |
0bcacecc mov dword [rdx+0x34], 0xfffffffb | |
0bcaced3 mov [rdx+0x30], ebx | |
0bcaced6 mov dword [rdx+0x2c], 0xfffffffb | |
0bcacedd mov [rdx+0x28], ebp | |
0bcacee0 xor eax, eax | |
0bcacee2 mov ebx, 0x40bec430 | |
0bcacee7 mov r14d, 0x405d8f78 | |
0bcaceed jmp 0x0041d9f8 | |
---- TRACE 22 stop -> return | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 23 start optimize.lua:124 | |
0001 GGET 1 0 ; "type" | |
0002 MOV 2 0 | |
0003 CALL 1 2 2 | |
0000 . FUNCC ; type | |
0004 ISEQS 1 1 ; "table" | |
0005 JMP 1 => 0007 | |
0007 TGETB 1 0 1 | |
0008 FNEW 2 2 ; optimize.lua:127 | |
---- TRACE 23 abort optimize.lua:133 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 23 start optimize.lua:182 | |
0305 UCLO 0 => 0306 | |
---- TRACE 23 abort optimize.lua:183 -- leaving loop in root trace | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 23 start optimize.lua:127 | |
0001 GGET 1 0 ; "type" | |
0002 MOV 2 0 | |
0003 CALL 1 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 1 1 ; "table" | |
0005 JMP 1 => 0014 | |
0006 TGETB 1 0 1 | |
0007 ISEQS 1 2 ; "uint32" | |
0008 JMP 1 => 0012 | |
0009 TGETB 1 0 1 | |
0010 ISNES 1 3 ; "int32" | |
0011 JMP 1 => 0014 | |
0014 RET1 0 2 | |
---- TRACE 23 IR | |
0001 <span class="irt_fun">fun</span> SLOAD #0 R | |
0002 <span class="irt_tab">tab</span> FLOAD 0001 func.env | |
0003 <span class="irt_p32">p32</span> HREF 0002 <span class="irt_str">"type"</span> | |
0004 > <span class="irt_p32">p32</span> EQ 0003 <span class="irt_p32">[0x405d8420]</span> | |
0005 <span class="irt_tab">tab</span> FLOAD 0002 tab.meta | |
0006 > <span class="irt_tab">tab</span> NE 0005 <span class="irt_tab">[NULL]</span> | |
0007 <span class="irt_int">int</span> FLOAD 0005 tab.hmask | |
0008 > <span class="irt_int">int</span> EQ 0007 <span class="irt_int">+1 </span> | |
0009 <span class="irt_p32">p32</span> FLOAD 0005 tab.node | |
0010 > <span class="irt_p32">p32</span> HREFK 0009 <span class="irt_str">"__index"</span> @1 | |
0011 > <span class="irt_tab">tab</span> HLOAD 0010 | |
0012 <span class="irt_int">int</span> FLOAD 0011 tab.hmask | |
0013 > <span class="irt_int">int</span> EQ 0012 <span class="irt_int">+63 </span> | |
0014 <span class="irt_p32">p32</span> FLOAD 0011 tab.node | |
0015 > <span class="irt_p32">p32</span> HREFK 0014 <span class="irt_str">"type"</span> @60 | |
0016 > <span class="irt_fun">fun</span> HLOAD 0015 | |
0017 > <span class="irt_tab">tab</span> SLOAD #1 T | |
0018 > <span class="irt_fun">fun</span> EQ 0016 <span class="irt_fun">type</span> | |
0019 <span class="irt_int">int</span> FLOAD 0017 tab.asize | |
0020 > <span class="irt_int">int</span> ABC 0019 <span class="irt_int">+1 </span> | |
0021 <span class="irt_p32">p32</span> FLOAD 0017 tab.array | |
0022 <span class="irt_p32">p32</span> AREF 0021 <span class="irt_int">+1 </span> | |
0023 > <span class="irt_str">str</span> ALOAD 0022 | |
0024 > <span class="irt_str">str</span> NE 0023 <span class="irt_str">"uint32"</span> | |
0025 > <span class="irt_str">str</span> NE 0023 <span class="irt_str">"int32"</span> | |
---- TRACE 23 mcode 268 | |
0bcacb76 mov dword [0x405d84a0], 0x17 | |
0bcacb81 mov ebp, [rdx-0x8] | |
0bcacb84 mov ebp, [rbp+0x8] | |
0bcacb87 mov ebx, [rbp+0x1c] | |
0bcacb8a and ebx, 0x798a813c | |
0bcacb90 lea ebx, [rbx+rbx*2] | |
0bcacb93 shl ebx, 0x03 | |
0bcacb96 add ebx, [rbp+0x14] | |
0bcacb99 cmp dword [rbx+0xc], -0x05 | |
0bcacb9d jnz 0x0bcacbac | |
0bcacb9f cmp dword [rbx+0x8], 0x405daf18 | |
0bcacba6 jz 0x0bca0010 ->0 | |
0bcacbac mov ebx, [rbx+0x10] | |
0bcacbaf test ebx, ebx | |
0bcacbb1 jnz 0x0bcacb99 | |
0bcacbb3 mov ebx, 0x405d8420 | |
0bcacbb8 mov ebp, [rbp+0x10] | |
0bcacbbb test ebp, ebp | |
0bcacbbd jz 0x0bca0010 ->0 | |
0bcacbc3 cmp dword [rbp+0x1c], +0x01 | |
0bcacbc7 jnz 0x0bca0010 ->0 | |
0bcacbcd mov ebp, [rbp+0x14] | |
0bcacbd0 mov rdi, 0xfffffffb405da430 | |
0bcacbda cmp rdi, [rbp+0x20] | |
0bcacbde jnz 0x0bca0010 ->0 | |
0bcacbe4 cmp dword [rbp+0x1c], -0x0c | |
0bcacbe8 jnz 0x0bca0010 ->0 | |
0bcacbee mov ebp, [rbp+0x18] | |
0bcacbf1 cmp dword [rbp+0x1c], +0x3f | |
0bcacbf5 jnz 0x0bca0010 ->0 | |
0bcacbfb mov ebx, [rbp+0x14] | |
0bcacbfe mov rdi, 0xfffffffb405daf18 | |
0bcacc08 cmp rdi, [rbx+0x5a8] | |
0bcacc0f jnz 0x0bca0010 ->0 | |
0bcacc15 cmp dword [rbx+0x5a4], -0x09 | |
0bcacc1c jnz 0x0bca0010 ->0 | |
0bcacc22 cmp dword [rdx+0x4], -0x0c | |
0bcacc26 jnz 0x0bca0010 ->0 | |
0bcacc2c mov ebp, [rdx] | |
0bcacc2e cmp dword [rbx+0x5a0], 0x405dae80 | |
0bcacc38 jnz 0x0bca0010 ->0 | |
0bcacc3e cmp dword [rbp+0x18], +0x01 | |
0bcacc42 jbe 0x0bca0010 ->0 | |
0bcacc48 mov ebp, [rbp+0x8] | |
0bcacc4b cmp dword [rbp+0xc], -0x05 | |
0bcacc4f jnz 0x0bca0010 ->0 | |
0bcacc55 mov ebp, [rbp+0x8] | |
0bcacc58 cmp ebp, 0x40bef0e8 | |
0bcacc5e jz 0x0bca0014 ->1 | |
0bcacc64 cmp ebp, 0x40bd77d0 | |
0bcacc6a jz 0x0bca0018 ->2 | |
0bcacc70 xor eax, eax | |
0bcacc72 mov ebx, 0x40bdefb8 | |
0bcacc77 mov r14d, 0x405d8f78 | |
0bcacc7d jmp 0x0041d9f8 | |
---- TRACE 23 stop -> return | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 24 start optimize.lua:69 | |
0015 MOV 6 1 | |
0016 KSTR 7 3 ; " " | |
0017 UGET 8 0 ; cfkey | |
0018 TGETV 9 0 5 | |
0019 CALL 8 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0005 . UGET 2 1 ; f | |
0006 . MOV 3 0 | |
0007 . CALL 2 2 2 | |
0000 . . FUNCF 10 ; optimize.lua:66 | |
0001 . . GGET 1 0 ; "type" | |
0002 . . MOV 2 0 | |
0003 . . CALL 1 2 2 | |
0000 . . . FUNCC ; type | |
0004 . . ISNES 1 1 ; "table" | |
0005 . . JMP 1 => 0027 | |
0027 . . GGET 1 0 ; "type" | |
0028 . . MOV 2 0 | |
0029 . . CALL 1 2 2 | |
0000 . . . FUNCC ; type | |
0030 . . KSTR 2 5 ; "(" | |
0031 . . GGET 3 6 ; "tostring" | |
0032 . . MOV 4 0 | |
0033 . . CALL 3 2 2 | |
0000 . . . FUNCC ; tostring | |
0034 . . KSTR 4 4 ; ")" | |
0035 . . CAT 1 1 4 | |
---- TRACE 24 abort optimize.lua:72 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 24 start optimize.lua:66 | |
0001 GGET 1 0 ; "type" | |
0002 MOV 2 0 | |
0003 CALL 1 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 1 1 ; "table" | |
0005 JMP 1 => 0027 | |
0006 KSTR 1 2 ; "table(" | |
0007 UGET 2 0 ; cfkey | |
0008 TGETB 3 0 1 | |
0009 CALL 2 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0011 . RET1 1 2 | |
0010 CAT 1 1 2 | |
---- TRACE 24 abort optimize.lua:68 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 24 start 22/0 optimize.lua:83 | |
0001 GGET 3 0 ; "assert" | |
0002 GGET 4 1 ; "type" | |
0003 MOV 5 2 | |
0004 CALL 4 2 2 | |
0000 . FUNCC ; type | |
0005 ISNES 4 2 ; "number" | |
0006 JMP 4 => 0012 | |
0007 GGET 4 1 ; "type" | |
0008 MOV 5 1 | |
0009 CALL 4 2 2 | |
0000 . FUNCC ; type | |
0010 ISNES 4 2 ; "number" | |
0011 JMP 4 => 0014 | |
0014 KPRI 4 2 | |
0015 CALL 3 1 2 | |
0000 . FUNCC ; assert | |
0016 TGETB 3 1 1 | |
0017 ISEQS 0 3 ; "=" | |
0018 JMP 4 => 0023 | |
0019 ISEQS 0 4 ; "!=" | |
0020 JMP 4 => 0023 | |
0021 KPRI 4 1 | |
0022 JMP 5 => 0024 | |
0024 UGET 5 0 ; bswap_ops | |
0025 TGETV 5 5 3 | |
0026 ISF 5 | |
0027 JMP 6 => 0062 | |
0062 ISNES 3 5 ; "uint32" | |
0063 JMP 5 => 0080 | |
0080 ISNES 3 7 ; "int32" | |
0081 JMP 5 => 0096 | |
0096 UGET 5 5 ; bitops | |
0097 TGETV 5 5 3 | |
0098 ISF 5 | |
0099 JMP 6 => 0161 | |
0161 MOV 5 0 | |
0162 MOV 6 1 | |
0163 MOV 7 2 | |
0164 RET 5 4 | |
0224 MOV 4 7 | |
0225 MOV 3 6 | |
0226 MOV 1 5 | |
0227 JMP 5 => 0241 | |
0241 TNEW 5 4 | |
0242 TSETB 1 5 1 | |
0243 TSETB 3 5 2 | |
0244 TSETB 4 5 3 | |
0245 UCLO 0 => 0246 | |
---- TRACE 24 abort optimize.lua:171 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 24 start 22/0 optimize.lua:83 | |
0001 GGET 3 0 ; "assert" | |
0002 GGET 4 1 ; "type" | |
0003 MOV 5 2 | |
0004 CALL 4 2 2 | |
0000 . FUNCC ; type | |
0005 ISNES 4 2 ; "number" | |
0006 JMP 4 => 0012 | |
0007 GGET 4 1 ; "type" | |
0008 MOV 5 1 | |
0009 CALL 4 2 2 | |
0000 . FUNCC ; type | |
0010 ISNES 4 2 ; "number" | |
0011 JMP 4 => 0014 | |
0014 KPRI 4 2 | |
0015 CALL 3 1 2 | |
0000 . FUNCC ; assert | |
0016 TGETB 3 1 1 | |
0017 ISEQS 0 3 ; "=" | |
0018 JMP 4 => 0023 | |
0023 KPRI 4 2 | |
0024 UGET 5 0 ; bswap_ops | |
0025 TGETV 5 5 3 | |
0026 ISF 5 | |
0027 JMP 6 => 0062 | |
0028 ISF 4 | |
0029 JMP 5 => 0062 | |
0030 TGETB 5 1 2 | |
0031 UGET 6 1 ; int32ops | |
0032 TGETB 7 5 1 | |
0033 TGETV 6 6 7 | |
0034 ISF 6 | |
0035 JMP 7 => 0046 | |
0046 UGET 6 3 ; uint32ops | |
0047 TGETB 7 5 1 | |
0048 TGETV 6 6 7 | |
0049 ISF 6 | |
0050 JMP 7 => 0161 | |
0051 MOV 6 0 | |
0052 MOV 7 5 | |
0053 GGET 8 0 ; "assert" | |
0054 UGET 9 2 ; folders | |
0055 TGETV 9 9 3 | |
0056 CALL 8 2 2 | |
0000 . FUNCC ; assert | |
0057 MOV 9 2 | |
0058 CALL 8 2 2 | |
0000 . FUNCF 4 ; optimize.lua:40 | |
0001 . UGET 1 0 ; bit | |
0002 . TGETS 1 1 0 ; "rshift" | |
0003 . UGET 2 0 ; bit | |
0004 . TGETS 2 2 1 ; "bswap" | |
0005 . MOV 3 0 | |
0006 . CALL 2 2 2 | |
0000 . . FUNCC ; bit.bswap | |
0007 . KSHORT 3 16 | |
0008 . CALLT 1 3 | |
0000 . FUNCC ; bit.rshift | |
0059 MODVN 8 8 0 ; 4294967296 | |
0060 RET 6 4 | |
0238 MOV 4 7 | |
0239 MOV 3 6 | |
0240 MOV 1 5 | |
0241 TNEW 5 4 | |
0242 TSETB 1 5 1 | |
0243 TSETB 3 5 2 | |
0244 TSETB 4 5 3 | |
0245 UCLO 0 => 0246 | |
---- TRACE 24 abort optimize.lua:171 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 24 start 22/0 optimize.lua:83 | |
0001 GGET 3 0 ; "assert" | |
0002 GGET 4 1 ; "type" | |
0003 MOV 5 2 | |
0004 CALL 4 2 2 | |
0000 . FUNCC ; type | |
0005 ISNES 4 2 ; "number" | |
0006 JMP 4 => 0012 | |
0007 GGET 4 1 ; "type" | |
0008 MOV 5 1 | |
0009 CALL 4 2 2 | |
0000 . FUNCC ; type | |
0010 ISNES 4 2 ; "number" | |
0011 JMP 4 => 0014 | |
0014 KPRI 4 2 | |
0015 CALL 3 1 2 | |
0000 . FUNCC ; assert | |
0016 TGETB 3 1 1 | |
0017 ISEQS 0 3 ; "=" | |
0018 JMP 4 => 0023 | |
0019 ISEQS 0 4 ; "!=" | |
0020 JMP 4 => 0023 | |
0021 KPRI 4 1 | |
0022 JMP 5 => 0024 | |
0024 UGET 5 0 ; bswap_ops | |
0025 TGETV 5 5 3 | |
0026 ISF 5 | |
0027 JMP 6 => 0062 | |
0062 ISNES 3 5 ; "uint32" | |
0063 JMP 5 => 0080 | |
0080 ISNES 3 7 ; "int32" | |
0081 JMP 5 => 0096 | |
0096 UGET 5 5 ; bitops | |
0097 TGETV 5 5 3 | |
0098 ISF 5 | |
0099 JMP 6 => 0161 | |
0161 MOV 5 0 | |
0162 MOV 6 1 | |
0163 MOV 7 2 | |
0164 RET 5 4 | |
0224 MOV 4 7 | |
0225 MOV 3 6 | |
0226 MOV 1 5 | |
0227 JMP 5 => 0241 | |
0241 TNEW 5 4 | |
0242 TSETB 1 5 1 | |
0243 TSETB 3 5 2 | |
0244 TSETB 4 5 3 | |
0245 UCLO 0 => 0246 | |
---- TRACE 24 abort optimize.lua:171 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 24 start 22/0 optimize.lua:83 | |
0001 GGET 3 0 ; "assert" | |
0002 GGET 4 1 ; "type" | |
0003 MOV 5 2 | |
0004 CALL 4 2 2 | |
0000 . FUNCC ; type | |
0005 ISNES 4 2 ; "number" | |
0006 JMP 4 => 0012 | |
0007 GGET 4 1 ; "type" | |
0008 MOV 5 1 | |
0009 CALL 4 2 2 | |
0000 . FUNCC ; type | |
0010 ISNES 4 2 ; "number" | |
0011 JMP 4 => 0014 | |
0014 KPRI 4 2 | |
0015 CALL 3 1 2 | |
0000 . FUNCC ; assert | |
0016 TGETB 3 1 1 | |
0017 ISEQS 0 3 ; "=" | |
0018 JMP 4 => 0023 | |
0023 KPRI 4 2 | |
0024 UGET 5 0 ; bswap_ops | |
0025 TGETV 5 5 3 | |
0026 ISF 5 | |
0027 JMP 6 => 0062 | |
0062 ISNES 3 5 ; "uint32" | |
0063 JMP 5 => 0080 | |
0064 ISF 4 | |
0065 JMP 5 => 0080 | |
0066 TGETB 5 1 2 | |
0067 UGET 6 1 ; int32ops | |
0068 TGETB 7 5 1 | |
0069 TGETV 6 6 7 | |
0070 ISF 6 | |
0071 JMP 7 => 0161 | |
0072 MOV 6 0 | |
0073 MOV 7 5 | |
0074 UGET 8 4 ; bit | |
0075 TGETS 8 8 6 ; "tobit" | |
0076 MOV 9 2 | |
0077 CALL 8 0 2 | |
0000 . FUNCC ; bit.tobit | |
0078 RETM 6 2 | |
0238 MOV 4 7 | |
0239 MOV 3 6 | |
0240 MOV 1 5 | |
0241 TNEW 5 4 | |
0242 TSETB 1 5 1 | |
0243 TSETB 3 5 2 | |
0244 TSETB 4 5 3 | |
0245 UCLO 0 => 0246 | |
---- TRACE 24 abort optimize.lua:171 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 24 start 22/0 optimize.lua:83 | |
---- TRACE 24 IR | |
---- TRACE 24 mcode 29 | |
0bcacb52 mov dword [0x405d84a0], 0x18 | |
0bcacb5d xor eax, eax | |
0bcacb5f mov ebx, 0x40bec1a4 | |
0bcacb64 mov r14d, 0x405d8f78 | |
0bcacb6a jmp 0x0041d9f8 | |
---- TRACE 24 stop -> interpreter | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 25 start optimize.lua:124 | |
0001 GGET 1 0 ; "type" | |
0002 MOV 2 0 | |
0003 CALL 1 2 2 | |
0000 . FUNCC ; type | |
0004 ISEQS 1 1 ; "table" | |
0005 JMP 1 => 0007 | |
0007 TGETB 1 0 1 | |
0008 FNEW 2 2 ; optimize.lua:127 | |
---- TRACE 25 abort optimize.lua:133 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 25 start optimize.lua:69 | |
0022 MOV 2 1 | |
---- TRACE 25 abort optimize.lua:70 -- leaving loop in root trace | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 25 start optimize.lua:187 | |
0001 TGETB 3 0 1 | |
0002 ISNES 3 0 ; "not" | |
0003 JMP 4 => 0010 | |
0010 ISNES 3 1 ; "true" | |
0011 JMP 4 => 0014 | |
0014 ISNES 3 2 ; "false" | |
0015 JMP 4 => 0018 | |
0018 ISNES 3 3 ; "fail" | |
0019 JMP 4 => 0022 | |
0022 TGETB 4 1 1 | |
0023 ISNES 4 1 ; "true" | |
0024 JMP 4 => 0030 | |
0030 ISNES 3 4 ; "if" | |
0031 JMP 4 => 0142 | |
0142 TGETB 4 2 1 | |
0143 ISNES 4 4 ; "if" | |
0144 JMP 4 => 0167 | |
0167 TGETB 4 1 1 | |
0168 ISNES 4 4 ; "if" | |
0169 JMP 4 => 0192 | |
0170 UGET 4 1 ; cfkey | |
0171 MOV 5 2 | |
0172 CALL 4 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0005 . UGET 2 1 ; f | |
0006 . MOV 3 0 | |
0007 . CALL 2 2 2 | |
0000 . . FUNCF 10 ; optimize.lua:66 | |
0001 . . GGET 1 0 ; "type" | |
0002 . . MOV 2 0 | |
0003 . . CALL 1 2 2 | |
0000 . . . FUNCC ; type | |
0004 . . ISNES 1 1 ; "table" | |
0005 . . JMP 1 => 0027 | |
0006 . . KSTR 1 2 ; "table(" | |
0007 . . UGET 2 0 ; cfkey | |
0008 . . TGETB 3 0 1 | |
0009 . . CALL 2 2 2 | |
0000 . . . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . . . UGET 1 0 ; cache | |
0002 . . . TGETV 1 1 0 | |
0003 . . . ISNEP 1 0 | |
0004 . . . JMP 2 => 0011 | |
0011 . . . RET1 1 2 | |
0010 . . CAT 1 1 2 | |
---- TRACE 25 abort optimize.lua:68 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 25 start optimize.lua:66 | |
0001 GGET 1 0 ; "type" | |
0002 MOV 2 0 | |
0003 CALL 1 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 1 1 ; "table" | |
0005 JMP 1 => 0027 | |
0006 KSTR 1 2 ; "table(" | |
0007 UGET 2 0 ; cfkey | |
0008 TGETB 3 0 1 | |
0009 CALL 2 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0011 . RET1 1 2 | |
0010 CAT 1 1 2 | |
---- TRACE 25 abort optimize.lua:68 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 25 start optimize.lua:31 | |
0001 ADDVV 2 0 1 | |
0002 RET1 2 2 | |
---- TRACE 25 IR | |
0001 > <span class="irt_num">num</span> SLOAD #1 T | |
0002 > <span class="irt_num">num</span> SLOAD #2 T | |
0003 <span class="irt_num">num</span> ADD 0002 0001 | |
---- TRACE 25 mcode 69 | |
0bcacb06 mov dword [0x405d84a0], 0x19 | |
0bcacb11 cmp dword [rdx+0x4], 0xfffeffff | |
0bcacb18 jnb 0x0bca0010 ->0 | |
0bcacb1e movsd xmm7, [rdx] | |
0bcacb22 cmp dword [rdx+0xc], 0xfffeffff | |
0bcacb29 jnb 0x0bca0010 ->0 | |
0bcacb2f addsd xmm7, [rdx+0x8] | |
0bcacb34 movsd [rdx+0x10], xmm7 | |
0bcacb39 xor eax, eax | |
0bcacb3b mov ebx, 0x405f75a8 | |
0bcacb40 mov r14d, 0x405d8f78 | |
0bcacb46 jmp 0x0041d9f8 | |
---- TRACE 25 stop -> return | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 26 start optimize.lua:187 | |
0001 TGETB 3 0 1 | |
0002 ISNES 3 0 ; "not" | |
0003 JMP 4 => 0010 | |
0010 ISNES 3 1 ; "true" | |
0011 JMP 4 => 0014 | |
0014 ISNES 3 2 ; "false" | |
0015 JMP 4 => 0018 | |
0018 ISNES 3 3 ; "fail" | |
0019 JMP 4 => 0022 | |
0022 TGETB 4 1 1 | |
0023 ISNES 4 1 ; "true" | |
0024 JMP 4 => 0030 | |
0030 ISNES 3 4 ; "if" | |
0031 JMP 4 => 0142 | |
0142 TGETB 4 2 1 | |
0143 ISNES 4 4 ; "if" | |
0144 JMP 4 => 0167 | |
0167 TGETB 4 1 1 | |
0168 ISNES 4 4 ; "if" | |
0169 JMP 4 => 0192 | |
0170 UGET 4 1 ; cfkey | |
0171 MOV 5 2 | |
0172 CALL 4 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0005 . UGET 2 1 ; f | |
0006 . MOV 3 0 | |
0007 . CALL 2 2 2 | |
0000 . . FUNCF 10 ; optimize.lua:66 | |
0001 . . GGET 1 0 ; "type" | |
0002 . . MOV 2 0 | |
0003 . . CALL 1 2 2 | |
0000 . . . FUNCC ; type | |
0004 . . ISNES 1 1 ; "table" | |
0005 . . JMP 1 => 0027 | |
0006 . . KSTR 1 2 ; "table(" | |
0007 . . UGET 2 0 ; cfkey | |
0008 . . TGETB 3 0 1 | |
0009 . . CALL 2 2 2 | |
0000 . . . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . . . UGET 1 0 ; cache | |
0002 . . . TGETV 1 1 0 | |
0003 . . . ISNEP 1 0 | |
0004 . . . JMP 2 => 0011 | |
0011 . . . RET1 1 2 | |
0010 . . CAT 1 1 2 | |
---- TRACE 26 abort optimize.lua:68 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 26 start optimize.lua:124 | |
0001 GGET 1 0 ; "type" | |
0002 MOV 2 0 | |
0003 CALL 1 2 2 | |
0000 . FUNCC ; type | |
0004 ISEQS 1 1 ; "table" | |
0005 JMP 1 => 0007 | |
0006 UCLO 0 => 0308 | |
---- TRACE 26 abort optimize.lua:125 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 26 start optimize.lua:238 | |
0001 GGET 2 0 ; "type" | |
0002 MOV 3 0 | |
0003 CALL 2 2 2 | |
0000 . FUNCC ; type | |
0004 ISEQS 2 1 ; "table" | |
0005 JMP 2 => 0007 | |
0007 TGETB 2 0 1 | |
0008 UGET 3 0 ; binops | |
0009 TGETV 3 3 2 | |
0010 ISF 3 | |
0011 JMP 4 => 0014 | |
0014 UGET 3 1 ; unops | |
0015 TGETV 3 3 2 | |
0016 ISF 3 | |
0017 JMP 4 => 0020 | |
0020 UGET 3 2 ; relops | |
0021 TGETV 3 3 2 | |
0022 ISF 3 | |
0023 JMP 4 => 0042 | |
0042 ISNES 2 4 ; "not" | |
0043 JMP 3 => 0081 | |
0081 ISNES 2 7 ; "if" | |
0082 JMP 3 => 0142 | |
0083 UGET 3 4 ; cfold | |
0084 TGETB 4 0 2 | |
0085 MOV 5 1 | |
0086 CALL 3 2 3 | |
0000 . FUNCF 11 ; optimize.lua:238 | |
0001 . GGET 2 0 ; "type" | |
0002 . MOV 3 0 | |
0003 . CALL 2 2 2 | |
0000 . . FUNCC ; type | |
0004 . ISEQS 2 1 ; "table" | |
0005 . JMP 2 => 0007 | |
0007 . TGETB 2 0 1 | |
0008 . UGET 3 0 ; binops | |
0009 . TGETV 3 3 2 | |
0010 . ISF 3 | |
0011 . JMP 4 => 0014 | |
0014 . UGET 3 1 ; unops | |
0015 . TGETV 3 3 2 | |
0016 . ISF 3 | |
0017 . JMP 4 => 0020 | |
0020 . UGET 3 2 ; relops | |
0021 . TGETV 3 3 2 | |
0022 . ISF 3 | |
0023 . JMP 4 => 0042 | |
0024 . UGET 3 3 ; cfkey | |
0025 . MOV 4 0 | |
0026 . CALL 3 2 2 | |
0000 . . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . . UGET 1 0 ; cache | |
0002 . . TGETV 1 1 0 | |
0003 . . ISNEP 1 0 | |
0004 . . JMP 2 => 0011 | |
0011 . . RET1 1 2 | |
0027 . TGETV 4 1 3 | |
0028 . ISEQP 4 0 | |
0029 . JMP 4 => 0040 | |
0030 . TNEW 4 3 | |
0031 . TGETV 5 1 3 | |
0032 . ISF 5 | |
0033 . JMP 6 => 0036 | |
0034 . KSTR 5 2 ; "true" | |
0035 . JMP 6 => 0037 | |
0037 . TSETB 5 4 1 | |
0038 . RET1 4 2 | |
0087 UGET 4 3 ; cfkey | |
0088 MOV 5 3 | |
0089 CALL 4 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0005 . UGET 2 1 ; f | |
0006 . MOV 3 0 | |
0007 . CALL 2 2 2 | |
0000 . . FUNCF 10 ; optimize.lua:66 | |
0001 . . GGET 1 0 ; "type" | |
0002 . . MOV 2 0 | |
0003 . . CALL 1 2 2 | |
0000 . . . FUNCC ; type | |
0004 . . ISNES 1 1 ; "table" | |
0005 . . JMP 1 => 0027 | |
0006 . . KSTR 1 2 ; "table(" | |
0007 . . UGET 2 0 ; cfkey | |
0008 . . TGETB 3 0 1 | |
0009 . . CALL 2 2 2 | |
0000 . . . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . . . UGET 1 0 ; cache | |
0002 . . . TGETV 1 1 0 | |
0003 . . . ISNEP 1 0 | |
0004 . . . JMP 2 => 0011 | |
0011 . . . RET1 1 2 | |
0010 . . CAT 1 1 2 | |
---- TRACE 26 abort optimize.lua:68 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 26 start optimize.lua:238 | |
0001 GGET 2 0 ; "type" | |
0002 MOV 3 0 | |
0003 CALL 2 2 2 | |
0000 . FUNCC ; type | |
0004 ISEQS 2 1 ; "table" | |
0005 JMP 2 => 0007 | |
0007 TGETB 2 0 1 | |
0008 UGET 3 0 ; binops | |
0009 TGETV 3 3 2 | |
0010 ISF 3 | |
0011 JMP 4 => 0014 | |
0014 UGET 3 1 ; unops | |
0015 TGETV 3 3 2 | |
0016 ISF 3 | |
0017 JMP 4 => 0020 | |
0020 UGET 3 2 ; relops | |
0021 TGETV 3 3 2 | |
0022 ISF 3 | |
0023 JMP 4 => 0042 | |
0042 ISNES 2 4 ; "not" | |
0043 JMP 3 => 0081 | |
0081 ISNES 2 7 ; "if" | |
0082 JMP 3 => 0142 | |
0083 UGET 3 4 ; cfold | |
0084 TGETB 4 0 2 | |
0085 MOV 5 1 | |
0086 CALL 3 2 3 | |
0000 . FUNCF 11 ; optimize.lua:238 | |
0001 . GGET 2 0 ; "type" | |
0002 . MOV 3 0 | |
0003 . CALL 2 2 2 | |
0000 . . FUNCC ; type | |
0004 . ISEQS 2 1 ; "table" | |
0005 . JMP 2 => 0007 | |
0007 . TGETB 2 0 1 | |
0008 . UGET 3 0 ; binops | |
0009 . TGETV 3 3 2 | |
0010 . ISF 3 | |
0011 . JMP 4 => 0014 | |
0014 . UGET 3 1 ; unops | |
0015 . TGETV 3 3 2 | |
0016 . ISF 3 | |
0017 . JMP 4 => 0020 | |
0020 . UGET 3 2 ; relops | |
0021 . TGETV 3 3 2 | |
0022 . ISF 3 | |
0023 . JMP 4 => 0042 | |
0024 . UGET 3 3 ; cfkey | |
0025 . MOV 4 0 | |
0026 . CALL 3 2 2 | |
0000 . . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . . UGET 1 0 ; cache | |
0002 . . TGETV 1 1 0 | |
0003 . . ISNEP 1 0 | |
0004 . . JMP 2 => 0011 | |
0011 . . RET1 1 2 | |
0027 . TGETV 4 1 3 | |
0028 . ISEQP 4 0 | |
0029 . JMP 4 => 0040 | |
0030 . TNEW 4 3 | |
0031 . TGETV 5 1 3 | |
0032 . ISF 5 | |
0033 . JMP 6 => 0036 | |
0034 . KSTR 5 2 ; "true" | |
0035 . JMP 6 => 0037 | |
0037 . TSETB 5 4 1 | |
0038 . RET1 4 2 | |
0087 UGET 4 3 ; cfkey | |
0088 MOV 5 3 | |
0089 CALL 4 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0005 . UGET 2 1 ; f | |
0006 . MOV 3 0 | |
0007 . CALL 2 2 2 | |
0000 . . FUNCF 10 ; optimize.lua:66 | |
0001 . . GGET 1 0 ; "type" | |
0002 . . MOV 2 0 | |
0003 . . CALL 1 2 2 | |
0000 . . . FUNCC ; type | |
0004 . . ISNES 1 1 ; "table" | |
0005 . . JMP 1 => 0027 | |
0006 . . KSTR 1 2 ; "table(" | |
0007 . . UGET 2 0 ; cfkey | |
0008 . . TGETB 3 0 1 | |
0009 . . CALL 2 2 2 | |
0000 . . . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . . . UGET 1 0 ; cache | |
0002 . . . TGETV 1 1 0 | |
0003 . . . ISNEP 1 0 | |
0004 . . . JMP 2 => 0011 | |
0011 . . . RET1 1 2 | |
0010 . . CAT 1 1 2 | |
---- TRACE 26 abort optimize.lua:68 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 26 start 23/0 optimize.lua:128 | |
0001 GGET 1 0 ; "type" | |
0002 MOV 2 0 | |
0003 CALL 1 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 1 1 ; "table" | |
0005 JMP 1 => 0014 | |
0014 RET1 0 2 | |
0120 MOV 4 6 | |
0121 MOV 3 5 | |
0122 TNEW 5 4 | |
0123 TSETB 1 5 1 | |
0124 TSETB 3 5 2 | |
0125 TSETB 4 5 3 | |
0126 UCLO 0 => 0127 | |
---- TRACE 26 abort optimize.lua:152 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 26 start 23/0 optimize.lua:128 | |
0001 GGET 1 0 ; "type" | |
0002 MOV 2 0 | |
0003 CALL 1 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 1 1 ; "table" | |
0005 JMP 1 => 0014 | |
0014 RET1 0 2 | |
0120 MOV 4 6 | |
0121 MOV 3 5 | |
0122 TNEW 5 4 | |
0123 TSETB 1 5 1 | |
0124 TSETB 3 5 2 | |
0125 TSETB 4 5 3 | |
0126 UCLO 0 => 0127 | |
---- TRACE 26 abort optimize.lua:152 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 26 start 23/0 optimize.lua:128 | |
0001 GGET 1 0 ; "type" | |
0002 MOV 2 0 | |
0003 CALL 1 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 1 1 ; "table" | |
0005 JMP 1 => 0014 | |
0014 RET1 0 2 | |
0120 MOV 4 6 | |
0121 MOV 3 5 | |
0122 TNEW 5 4 | |
0123 TSETB 1 5 1 | |
0124 TSETB 3 5 2 | |
0125 TSETB 4 5 3 | |
0126 UCLO 0 => 0127 | |
---- TRACE 26 abort optimize.lua:152 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 26 start 23/0 optimize.lua:128 | |
0001 GGET 1 0 ; "type" | |
0002 MOV 2 0 | |
0003 CALL 1 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 1 1 ; "table" | |
0005 JMP 1 => 0014 | |
0014 RET1 0 2 | |
0120 MOV 4 6 | |
0121 MOV 3 5 | |
0122 TNEW 5 4 | |
0123 TSETB 1 5 1 | |
0124 TSETB 3 5 2 | |
0125 TSETB 4 5 3 | |
0126 UCLO 0 => 0127 | |
---- TRACE 26 abort optimize.lua:152 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 26 start optimize.lua:69 | |
0015 MOV 6 1 | |
0016 KSTR 7 3 ; " " | |
0017 UGET 8 0 ; cfkey | |
0018 TGETV 9 0 5 | |
0019 CALL 8 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0011 . RET1 1 2 | |
0020 CAT 1 6 8 | |
---- TRACE 26 abort optimize.lua:69 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 26 start optimize.lua:66 | |
0001 GGET 1 0 ; "type" | |
0002 MOV 2 0 | |
0003 CALL 1 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 1 1 ; "table" | |
0005 JMP 1 => 0027 | |
0006 KSTR 1 2 ; "table(" | |
0007 UGET 2 0 ; cfkey | |
0008 TGETB 3 0 1 | |
0009 CALL 2 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0011 . RET1 1 2 | |
0010 CAT 1 1 2 | |
---- TRACE 26 abort optimize.lua:68 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 26 start optimize.lua:394 | |
0001 TGETB 1 0 1 | |
0002 RET1 1 2 | |
---- TRACE 26 IR | |
0001 > <span class="irt_tab">tab</span> SLOAD #1 T | |
0002 <span class="irt_int">int</span> FLOAD 0001 tab.asize | |
0003 > <span class="irt_int">int</span> ABC 0002 <span class="irt_int">+1 </span> | |
0004 <span class="irt_p32">p32</span> FLOAD 0001 tab.array | |
0005 <span class="irt_p32">p32</span> AREF 0004 <span class="irt_int">+1 </span> | |
0006 > <span class="irt_tab">tab</span> ALOAD 0005 | |
---- TRACE 26 mcode 77 | |
0bcacab2 mov dword [0x405d84a0], 0x1a | |
0bcacabd cmp dword [rdx+0x4], -0x0c | |
0bcacac1 jnz 0x0bca0010 ->0 | |
0bcacac7 mov ebp, [rdx] | |
0bcacac9 cmp dword [rbp+0x18], +0x01 | |
0bcacacd jbe 0x0bca0010 ->0 | |
0bcacad3 mov ebp, [rbp+0x8] | |
0bcacad6 cmp dword [rbp+0xc], -0x0c | |
0bcacada jnz 0x0bca0010 ->0 | |
0bcacae0 mov ebp, [rbp+0x8] | |
0bcacae3 mov dword [rdx+0xc], 0xfffffff4 | |
0bcacaea mov [rdx+0x8], ebp | |
0bcacaed xor eax, eax | |
0bcacaef mov ebx, 0x40b4d058 | |
0bcacaf4 mov r14d, 0x405d8f78 | |
0bcacafa jmp 0x0041d9f8 | |
---- TRACE 26 stop -> return | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 27 start optimize.lua:401 | |
0016 UGET 3 2 ; car | |
0017 MOV 4 0 | |
0018 CALL 3 2 2 | |
0000 . JFUNCF 2 26 ; optimize.lua:394 | |
0001 . TGETB 1 0 1 | |
0002 . RET1 1 2 | |
0019 TGETV 3 3 2 | |
0020 ISF 3 | |
0021 JMP 4 => 0023 | |
0023 UGET 4 3 ; cdr | |
0024 MOV 5 0 | |
0025 CALL 4 2 2 | |
0000 . FUNCF 2 ; optimize.lua:395 | |
0001 . TGETB 1 0 2 | |
0002 . RET1 1 2 | |
0026 MOV 0 4 | |
0027 JMP 3 => 0013 | |
0013 ISF 0 | |
0014 JMP 3 => 0028 | |
0015 LOOP 3 => 0028 | |
---- TRACE 27 IR | |
0001 <span class="irt_fun">fun</span> SLOAD #0 R | |
0002 > <span class="irt_fun">fun</span> EQ 0001 <span class="irt_fun">optimize.lua:398</span> | |
0003 > <span class="irt_tab">tab</span> SLOAD #1 T | |
0004 <span class="irt_int">int</span> FLOAD 0003 tab.asize | |
0005 > <span class="irt_int">int</span> ABC 0004 <span class="irt_int">+2 </span> | |
0006 <span class="irt_p32">p32</span> FLOAD 0003 tab.array | |
0007 <span class="irt_p32">p32</span> AREF 0006 <span class="irt_int">+1 </span> | |
0008 > <span class="irt_tab">tab</span> ALOAD 0007 | |
0009 > <span class="irt_str">str</span> SLOAD #3 T | |
0010 <span class="irt_int">int</span> FLOAD 0008 tab.hmask | |
0011 > <span class="irt_int">int</span> EQ 0010 <span class="irt_int">+0 </span> | |
0012 <span class="irt_tab">tab</span> FLOAD 0008 tab.meta | |
0013 > <span class="irt_tab">tab</span> EQ 0012 <span class="irt_tab">[NULL]</span> | |
0014 <span class="irt_p32">p32</span> AREF 0006 <span class="irt_int">+2 </span> | |
0015 >+ <span class="irt_tab">tab</span> ALOAD 0014 | |
0016 ------ LOOP ------------ | |
0017 <span class="irt_int">int</span> FLOAD 0015 tab.asize | |
0018 > <span class="irt_int">int</span> ABC 0017 <span class="irt_int">+2 </span> | |
0019 <span class="irt_p32">p32</span> FLOAD 0015 tab.array | |
0020 <span class="irt_p32">p32</span> AREF 0019 <span class="irt_int">+1 </span> | |
0021 > <span class="irt_tab">tab</span> ALOAD 0020 | |
0022 <span class="irt_int">int</span> FLOAD 0021 tab.hmask | |
0023 > <span class="irt_int">int</span> EQ 0022 <span class="irt_int">+0 </span> | |
0024 <span class="irt_tab">tab</span> FLOAD 0021 tab.meta | |
0025 > <span class="irt_tab">tab</span> EQ 0024 <span class="irt_tab">[NULL]</span> | |
0026 <span class="irt_p32">p32</span> AREF 0019 <span class="irt_int">+2 </span> | |
0027 >+ <span class="irt_tab">tab</span> ALOAD 0026 | |
0028 <span class="irt_tab">tab</span> PHI 0015 0027 | |
---- TRACE 27 mcode 171 | |
0bcaca07 mov dword [0x405d84a0], 0x1b | |
0bcaca12 cmp dword [rdx-0x8], 0x41fba2b0 | |
0bcaca19 jnz 0x0bca0010 ->0 | |
0bcaca1f cmp dword [rdx+0x4], -0x0c | |
0bcaca23 jnz 0x0bca0010 ->0 | |
0bcaca29 mov esi, [rdx] | |
0bcaca2b cmp dword [rsi+0x18], +0x02 | |
0bcaca2f jbe 0x0bca0010 ->0 | |
0bcaca35 mov eax, [rsi+0x8] | |
0bcaca38 cmp dword [rax+0xc], -0x0c | |
0bcaca3c jnz 0x0bca0010 ->0 | |
0bcaca42 mov ecx, [rax+0x8] | |
0bcaca45 cmp dword [rdx+0x14], -0x05 | |
0bcaca49 jnz 0x0bca0010 ->0 | |
0bcaca4f cmp dword [rcx+0x1c], +0x00 | |
0bcaca53 jnz 0x0bca0010 ->0 | |
0bcaca59 cmp dword [rcx+0x10], +0x00 | |
0bcaca5d jnz 0x0bca0010 ->0 | |
0bcaca63 cmp dword [rax+0x14], -0x0c | |
0bcaca67 jnz 0x0bca0010 ->0 | |
0bcaca6d mov ebp, [rax+0x10] | |
->LOOP: | |
0bcaca70 mov ebx, ebp | |
0bcaca72 cmp dword [rbx+0x18], +0x02 | |
0bcaca76 jbe 0x0bca0014 ->1 | |
0bcaca7c mov ebp, [rbx+0x8] | |
0bcaca7f cmp dword [rbp+0xc], -0x0c | |
0bcaca83 jnz 0x0bca0014 ->1 | |
0bcaca89 mov r15d, [rbp+0x8] | |
0bcaca8d cmp dword [r15+0x1c], +0x00 | |
0bcaca92 jnz 0x0bca0014 ->1 | |
0bcaca98 cmp dword [r15+0x10], +0x00 | |
0bcaca9d jnz 0x0bca0014 ->1 | |
0bcacaa3 cmp dword [rbp+0x14], -0x0c | |
0bcacaa7 jnz 0x0bca0014 ->1 | |
0bcacaad mov ebp, [rbp+0x10] | |
0bcacab0 jmp 0x0bcaca70 ->LOOP | |
---- TRACE 27 stop -> loop | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 28 start optimize.lua:281 | |
0001 TGETS 1 0 0 ; "min_" | |
0002 RET1 1 2 | |
---- TRACE 28 IR | |
0001 > <span class="irt_tab">tab</span> SLOAD #1 T | |
0002 <span class="irt_int">int</span> FLOAD 0001 tab.hmask | |
0003 > <span class="irt_int">int</span> EQ 0002 <span class="irt_int">+31 </span> | |
0004 <span class="irt_p32">p32</span> FLOAD 0001 tab.node | |
0005 > <span class="irt_p32">p32</span> HREFK 0004 <span class="irt_str">"min_"</span> @30 | |
0006 > <span class="irt_num">num</span> HLOAD 0005 | |
---- TRACE 28 mcode 106 | |
0bcac996 mov dword [0x405d84a0], 0x1c | |
0bcac9a1 cmp dword [rdx+0x4], -0x0c | |
0bcac9a5 jnz 0x0bca0010 ->0 | |
0bcac9ab mov ebp, [rdx] | |
0bcac9ad cmp dword [rbp+0x1c], +0x1f | |
0bcac9b1 jnz 0x0bca0010 ->0 | |
0bcac9b7 mov ebp, [rbp+0x14] | |
0bcac9ba mov rdi, 0xfffffffb40bdc7b8 | |
0bcac9c4 cmp rdi, [rbp+0x2d8] | |
0bcac9cb jnz 0x0bca0010 ->0 | |
0bcac9d1 cmp dword [rbp+0x2d4], 0xfffeffff | |
0bcac9db jnb 0x0bca0010 ->0 | |
0bcac9e1 movsd xmm7, [rbp+0x2d0] | |
0bcac9e9 movsd [rdx+0x8], xmm7 | |
0bcac9ee xor eax, eax | |
0bcac9f0 mov ebx, 0x40bdcfe0 | |
0bcac9f5 mov r14d, 0x405d8f78 | |
0bcac9fb jmp 0x0041d9f8 | |
---- TRACE 28 stop -> return | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 29 start 27/0 optimize.lua:402 | |
0016 UGET 3 2 ; car | |
0017 MOV 4 0 | |
0018 CALL 3 2 2 | |
0000 . JFUNCF 2 26 ; optimize.lua:394 | |
0001 . TGETB 1 0 1 | |
0002 . RET1 1 2 | |
0019 TGETV 3 3 2 | |
0020 ISF 3 | |
0021 JMP 4 => 0023 | |
0022 RET1 3 2 | |
0008 MOV 7 6 | |
0009 TGETS 6 6 0 ; "restrict" | |
0010 MOV 8 2 | |
0011 CALL 6 0 3 | |
0000 . FUNCF 8 ; optimize.lua:293 | |
0001 . UGET 2 0 ; Range | |
0002 . GGET 3 0 ; "math" | |
0003 . TGETS 3 3 1 ; "max" | |
0004 . MOV 5 0 | |
0005 . TGETS 4 0 2 ; "min" | |
0006 . CALL 4 2 2 | |
0000 . . JFUNCF 2 28 ; optimize.lua:281 | |
0001 . . TGETS 1 0 0 ; "min_" | |
0002 . . RET1 1 2 | |
0007 . MOV 6 1 | |
0008 . TGETS 5 1 2 ; "min" | |
0009 . CALL 5 0 2 | |
0000 . . JFUNCF 2 28 ; optimize.lua:281 | |
0001 . . TGETS 1 0 0 ; "min_" | |
0002 . . RET1 1 2 | |
0010 . CALLM 3 2 1 | |
0000 . . FUNCC ; math.max | |
0011 . GGET 4 0 ; "math" | |
0012 . TGETS 4 4 2 ; "min" | |
0013 . MOV 6 0 | |
0014 . TGETS 5 0 1 ; "max" | |
0015 . CALL 5 2 2 | |
0000 . . FUNCF 2 ; optimize.lua:282 | |
0001 . . TGETS 1 0 0 ; "max_" | |
0002 . . RET1 1 2 | |
0016 . MOV 7 1 | |
0017 . TGETS 6 1 1 ; "max" | |
0018 . CALL 6 0 2 | |
0000 . . FUNCF 2 ; optimize.lua:282 | |
0001 . . TGETS 1 0 0 ; "max_" | |
0002 . . RET1 1 2 | |
0019 . CALLM 4 0 1 | |
0000 . . FUNCC ; math.min | |
0020 . CALLMT 2 1 | |
0000 . FUNCF 4 ; optimize.lua:276 | |
0001 . ISGE 1 0 | |
0002 . JMP 2 => 0006 | |
0006 . TDUP 2 0 | |
0007 . TSETS 0 2 1 ; "min_" | |
0008 . TSETS 1 2 2 ; "max_" | |
0009 . FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 29 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 29 start 27/0 optimize.lua:402 | |
0016 UGET 3 2 ; car | |
0017 MOV 4 0 | |
0018 CALL 3 2 2 | |
0000 . JFUNCF 2 26 ; optimize.lua:394 | |
0001 . TGETB 1 0 1 | |
0002 . RET1 1 2 | |
0019 TGETV 3 3 2 | |
0020 ISF 3 | |
0021 JMP 4 => 0023 | |
0022 RET1 3 2 | |
0008 MOV 7 6 | |
0009 TGETS 6 6 0 ; "restrict" | |
0010 MOV 8 2 | |
0011 CALL 6 0 3 | |
0000 . FUNCF 8 ; optimize.lua:293 | |
0001 . UGET 2 0 ; Range | |
0002 . GGET 3 0 ; "math" | |
0003 . TGETS 3 3 1 ; "max" | |
0004 . MOV 5 0 | |
0005 . TGETS 4 0 2 ; "min" | |
0006 . CALL 4 2 2 | |
0000 . . JFUNCF 2 28 ; optimize.lua:281 | |
0001 . . TGETS 1 0 0 ; "min_" | |
0002 . . RET1 1 2 | |
0007 . MOV 6 1 | |
0008 . TGETS 5 1 2 ; "min" | |
0009 . CALL 5 0 2 | |
0000 . . JFUNCF 2 28 ; optimize.lua:281 | |
0001 . . TGETS 1 0 0 ; "min_" | |
0002 . . RET1 1 2 | |
0010 . CALLM 3 2 1 | |
0000 . . FUNCC ; math.max | |
0011 . GGET 4 0 ; "math" | |
0012 . TGETS 4 4 2 ; "min" | |
0013 . MOV 6 0 | |
0014 . TGETS 5 0 1 ; "max" | |
0015 . CALL 5 2 2 | |
0000 . . FUNCF 2 ; optimize.lua:282 | |
0001 . . TGETS 1 0 0 ; "max_" | |
0002 . . RET1 1 2 | |
0016 . MOV 7 1 | |
0017 . TGETS 6 1 1 ; "max" | |
0018 . CALL 6 0 2 | |
0000 . . FUNCF 2 ; optimize.lua:282 | |
0001 . . TGETS 1 0 0 ; "max_" | |
0002 . . RET1 1 2 | |
0019 . CALLM 4 0 1 | |
0000 . . FUNCC ; math.min | |
0020 . CALLMT 2 1 | |
0000 . FUNCF 4 ; optimize.lua:276 | |
0001 . ISGE 1 0 | |
0002 . JMP 2 => 0006 | |
0006 . TDUP 2 0 | |
0007 . TSETS 0 2 1 ; "min_" | |
0008 . TSETS 1 2 2 ; "max_" | |
0009 . FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 29 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 29 start optimize.lua:398 | |
0001 GGET 2 0 ; "type" | |
0002 MOV 3 1 | |
0003 CALL 2 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 2 1 ; "number" | |
0005 JMP 2 => 0010 | |
0006 UGET 2 0 ; Range | |
0007 MOV 3 1 | |
0008 MOV 4 1 | |
0009 CALLT 2 3 | |
0000 FUNCF 4 ; optimize.lua:276 | |
0001 ISGE 1 0 | |
0002 JMP 2 => 0006 | |
0006 TDUP 2 0 | |
0007 TSETS 0 2 1 ; "min_" | |
0008 TSETS 1 2 2 ; "max_" | |
0009 FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 29 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 29 start optimize.lua:48 | |
0001 ISLE 1 0 | |
0002 JMP 2 => 0005 | |
0005 KPRI 2 2 | |
0006 RET1 2 2 | |
---- TRACE 29 IR | |
0001 > <span class="irt_num">num</span> SLOAD #2 T | |
0002 > <span class="irt_num">num</span> SLOAD #1 T | |
0003 > <span class="irt_num">num</span> GE 0002 0001 | |
---- TRACE 29 mcode 77 | |
0bcac942 mov dword [0x405d84a0], 0x1d | |
0bcac94d cmp dword [rdx+0xc], 0xfffeffff | |
0bcac954 jnb 0x0bca0010 ->0 | |
0bcac95a cmp dword [rdx+0x4], 0xfffeffff | |
0bcac961 jnb 0x0bca0010 ->0 | |
0bcac967 movsd xmm7, [rdx] | |
0bcac96b ucomisd xmm7, [rdx+0x8] | |
0bcac970 jb 0x0bca0014 ->1 | |
0bcac976 mov dword [rdx+0x14], 0xfffffffd | |
0bcac97d xor eax, eax | |
0bcac97f mov ebx, 0x40b4b8e8 | |
0bcac984 mov r14d, 0x405d8f78 | |
0bcac98a jmp 0x0041d9f8 | |
---- TRACE 29 stop -> return | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 30 start 27/0 optimize.lua:402 | |
0016 UGET 3 2 ; car | |
0017 MOV 4 0 | |
0018 CALL 3 2 2 | |
0000 . JFUNCF 2 26 ; optimize.lua:394 | |
0001 . TGETB 1 0 1 | |
0002 . RET1 1 2 | |
0019 TGETV 3 3 2 | |
0020 ISF 3 | |
0021 JMP 4 => 0023 | |
0023 UGET 4 3 ; cdr | |
0024 MOV 5 0 | |
0025 CALL 4 2 2 | |
0000 . FUNCF 2 ; optimize.lua:395 | |
0001 . TGETB 1 0 2 | |
0002 . RET1 1 2 | |
0026 MOV 0 4 | |
0027 JMP 3 => 0013 | |
0013 ISF 0 | |
0014 JMP 3 => 0028 | |
0028 UGET 3 0 ; Range | |
0029 UGET 4 4 ; Inf | |
0030 UNM 4 4 | |
0031 UGET 5 4 ; Inf | |
0032 CALLT 3 3 | |
0000 FUNCF 4 ; optimize.lua:276 | |
0001 ISGE 1 0 | |
0002 JMP 2 => 0006 | |
0006 TDUP 2 0 | |
0007 TSETS 0 2 1 ; "min_" | |
0008 TSETS 1 2 2 ; "max_" | |
0009 FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 30 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 30 start 27/0 optimize.lua:402 | |
0016 UGET 3 2 ; car | |
0017 MOV 4 0 | |
0018 CALL 3 2 2 | |
0000 . JFUNCF 2 26 ; optimize.lua:394 | |
0001 . TGETB 1 0 1 | |
0002 . RET1 1 2 | |
0019 TGETV 3 3 2 | |
0020 ISF 3 | |
0021 JMP 4 => 0023 | |
0022 RET1 3 2 | |
0444 UGET 10 6 ; lookup | |
0445 MOV 11 6 | |
0446 MOV 12 8 | |
0447 CALL 10 2 3 | |
0000 . FUNCF 6 ; optimize.lua:398 | |
0001 . GGET 2 0 ; "type" | |
0002 . MOV 3 1 | |
0003 . CALL 2 2 2 | |
0000 . . FUNCC ; type | |
0004 . ISNES 2 1 ; "number" | |
0005 . JMP 2 => 0010 | |
0006 . UGET 2 0 ; Range | |
0007 . MOV 3 1 | |
0008 . MOV 4 1 | |
0009 . CALLT 2 3 | |
0000 . FUNCF 4 ; optimize.lua:276 | |
0001 . ISGE 1 0 | |
0002 . JMP 2 => 0006 | |
0006 . TDUP 2 0 | |
0007 . TSETS 0 2 1 ; "min_" | |
0008 . TSETS 1 2 2 ; "max_" | |
0009 . FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 30 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 30 start 27/0 optimize.lua:402 | |
---- TRACE 30 IR | |
---- TRACE 30 mcode 29 | |
0bcac91e mov dword [0x405d84a0], 0x1e | |
0bcac929 xor eax, eax | |
0bcac92b mov ebx, 0x405ebc38 | |
0bcac930 mov r14d, 0x405d8f78 | |
0bcac936 jmp 0x0041d9f8 | |
---- TRACE 30 stop -> interpreter | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 31 start 27/1 optimize.lua:402 | |
0016 UGET 3 2 ; car | |
0017 MOV 4 0 | |
0018 CALL 3 2 2 | |
0000 . JFUNCF 2 26 ; optimize.lua:394 | |
0001 . TGETB 1 0 1 | |
0002 . RET1 1 2 | |
0019 TGETV 3 3 2 | |
0020 ISF 3 | |
0021 JMP 4 => 0023 | |
0023 UGET 4 3 ; cdr | |
0024 MOV 5 0 | |
0025 CALL 4 2 2 | |
0000 . FUNCF 2 ; optimize.lua:395 | |
0001 . TGETB 1 0 2 | |
0002 . RET1 1 2 | |
0026 MOV 0 4 | |
0027 JMP 3 => 0013 | |
0013 ISF 0 | |
0014 JMP 3 => 0028 | |
0015 JLOOP 3 27 | |
---- TRACE 31 IR | |
0001 <span class="irt_tab">tab</span> SLOAD #1 PI | |
0002 <span class="irt_int">int</span> FLOAD 0001 tab.asize | |
0003 > <span class="irt_int">int</span> ABC 0002 <span class="irt_int">+2 </span> | |
0004 <span class="irt_p32">p32</span> FLOAD 0001 tab.array | |
0005 <span class="irt_p32">p32</span> AREF 0004 <span class="irt_int">+1 </span> | |
0006 > <span class="irt_tab">tab</span> ALOAD 0005 | |
0007 > <span class="irt_str">str</span> SLOAD #3 T | |
0008 <span class="irt_p32">p32</span> HREF 0006 0007 | |
0009 > <span class="irt_p32">p32</span> EQ 0008 <span class="irt_p32">[0x405d8420]</span> | |
0010 <span class="irt_tab">tab</span> FLOAD 0006 tab.meta | |
0011 > <span class="irt_tab">tab</span> EQ 0010 <span class="irt_tab">[NULL]</span> | |
0012 <span class="irt_p32">p32</span> AREF 0004 <span class="irt_int">+2 </span> | |
0013 > <span class="irt_tab">tab</span> ALOAD 0012 | |
---- TRACE 31 mcode 149 | |
0bcac882 mov dword [0x405d84a0], 0x1f | |
0bcac88d cmp dword [rbx+0x18], +0x02 | |
0bcac891 jbe 0x0bca0010 ->0 | |
0bcac897 mov ebp, [rbx+0x8] | |
0bcac89a cmp dword [rbp+0xc], -0x0c | |
0bcac89e jnz 0x0bca0010 ->0 | |
0bcac8a4 mov r15d, [rbp+0x8] | |
0bcac8a8 cmp dword [rdx+0x14], -0x05 | |
0bcac8ac jnz 0x0bca0010 ->0 | |
0bcac8b2 mov r13d, [rdx+0x10] | |
0bcac8b6 mov r14d, [r15+0x1c] | |
0bcac8ba and r14d, [r13+0x8] | |
0bcac8be lea r14d, [r14+r14*2] | |
0bcac8c2 shl r14d, 0x03 | |
0bcac8c6 add r14d, [r15+0x14] | |
0bcac8ca cmp dword [r14+0xc], -0x05 | |
0bcac8cf jnz 0x0bcac8db | |
0bcac8d1 cmp r13d, [r14+0x8] | |
0bcac8d5 jz 0x0bca0010 ->0 | |
0bcac8db mov r14d, [r14+0x10] | |
0bcac8df test r14d, r14d | |
0bcac8e2 jnz 0x0bcac8ca | |
0bcac8e4 mov r14d, 0x405d8420 | |
0bcac8ea cmp dword [r15+0x10], +0x00 | |
0bcac8ef jnz 0x0bca0010 ->0 | |
0bcac8f5 cmp dword [rbp+0x14], -0x0c | |
0bcac8f9 jnz 0x0bca0010 ->0 | |
0bcac8ff mov ebp, [rbp+0x10] | |
0bcac902 mov dword [rdx+0x4], 0xfffffff4 | |
0bcac909 mov [rdx], ebp | |
0bcac90b mov dword [rdx-0x8], 0x41fba2b0 | |
0bcac912 jmp 0x0bcaca07 | |
---- TRACE 31 stop -> 27 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 32 start optimize.lua:276 | |
0001 ISGE 1 0 | |
0002 JMP 2 => 0006 | |
0006 TDUP 2 0 | |
0007 TSETS 0 2 1 ; "min_" | |
0008 TSETS 1 2 2 ; "max_" | |
0009 FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 32 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 32 start optimize.lua:395 | |
0001 TGETB 1 0 2 | |
0002 RET1 1 2 | |
---- TRACE 32 IR | |
0001 > <span class="irt_tab">tab</span> SLOAD #1 T | |
0002 <span class="irt_int">int</span> FLOAD 0001 tab.asize | |
0003 > <span class="irt_int">int</span> ABC 0002 <span class="irt_int">+2 </span> | |
0004 <span class="irt_p32">p32</span> FLOAD 0001 tab.array | |
0005 <span class="irt_p32">p32</span> AREF 0004 <span class="irt_int">+2 </span> | |
0006 > <span class="irt_tab">tab</span> ALOAD 0005 | |
---- TRACE 32 mcode 77 | |
0bcac82e mov dword [0x405d84a0], 0x20 | |
0bcac839 cmp dword [rdx+0x4], -0x0c | |
0bcac83d jnz 0x0bca0010 ->0 | |
0bcac843 mov ebp, [rdx] | |
0bcac845 cmp dword [rbp+0x18], +0x02 | |
0bcac849 jbe 0x0bca0010 ->0 | |
0bcac84f mov ebp, [rbp+0x8] | |
0bcac852 cmp dword [rbp+0x14], -0x0c | |
0bcac856 jnz 0x0bca0010 ->0 | |
0bcac85c mov ebp, [rbp+0x10] | |
0bcac85f mov dword [rdx+0xc], 0xfffffff4 | |
0bcac866 mov [rdx+0x8], ebp | |
0bcac869 xor eax, eax | |
0bcac86b mov ebx, 0x40bd7658 | |
0bcac870 mov r14d, 0x405d8f78 | |
0bcac876 jmp 0x0041d9f8 | |
---- TRACE 32 stop -> return | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 33 start 31/0 optimize.lua:402 | |
0016 UGET 3 2 ; car | |
0017 MOV 4 0 | |
0018 CALL 3 2 2 | |
0000 . JFUNCF 2 26 ; optimize.lua:394 | |
0001 . TGETB 1 0 1 | |
0002 . RET1 1 2 | |
0019 TGETV 3 3 2 | |
0020 ISF 3 | |
0021 JMP 4 => 0023 | |
0022 RET1 3 2 | |
0008 MOV 7 6 | |
0009 TGETS 6 6 0 ; "restrict" | |
0010 MOV 8 2 | |
0011 CALL 6 0 3 | |
0000 . FUNCF 8 ; optimize.lua:293 | |
0001 . UGET 2 0 ; Range | |
0002 . GGET 3 0 ; "math" | |
0003 . TGETS 3 3 1 ; "max" | |
0004 . MOV 5 0 | |
0005 . TGETS 4 0 2 ; "min" | |
0006 . CALL 4 2 2 | |
0000 . . JFUNCF 2 28 ; optimize.lua:281 | |
0001 . . TGETS 1 0 0 ; "min_" | |
0002 . . RET1 1 2 | |
0007 . MOV 6 1 | |
0008 . TGETS 5 1 2 ; "min" | |
0009 . CALL 5 0 2 | |
0000 . . JFUNCF 2 28 ; optimize.lua:281 | |
0001 . . TGETS 1 0 0 ; "min_" | |
0002 . . RET1 1 2 | |
0010 . CALLM 3 2 1 | |
0000 . . FUNCC ; math.max | |
0011 . GGET 4 0 ; "math" | |
0012 . TGETS 4 4 2 ; "min" | |
0013 . MOV 6 0 | |
0014 . TGETS 5 0 1 ; "max" | |
0015 . CALL 5 2 2 | |
0000 . . FUNCF 2 ; optimize.lua:282 | |
0001 . . TGETS 1 0 0 ; "max_" | |
0002 . . RET1 1 2 | |
0016 . MOV 7 1 | |
0017 . TGETS 6 1 1 ; "max" | |
0018 . CALL 6 0 2 | |
0000 . . FUNCF 2 ; optimize.lua:282 | |
0001 . . TGETS 1 0 0 ; "max_" | |
0002 . . RET1 1 2 | |
0019 . CALLM 4 0 1 | |
0000 . . FUNCC ; math.min | |
0020 . CALLMT 2 1 | |
0000 . FUNCF 4 ; optimize.lua:276 | |
0001 . ISGE 1 0 | |
0002 . JMP 2 => 0006 | |
0006 . TDUP 2 0 | |
0007 . TSETS 0 2 1 ; "min_" | |
0008 . TSETS 1 2 2 ; "max_" | |
0009 . FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 33 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 33 start 31/0 optimize.lua:402 | |
0016 UGET 3 2 ; car | |
0017 MOV 4 0 | |
0018 CALL 3 2 2 | |
0000 . JFUNCF 2 26 ; optimize.lua:394 | |
0001 . TGETB 1 0 1 | |
0002 . RET1 1 2 | |
0019 TGETV 3 3 2 | |
0020 ISF 3 | |
0021 JMP 4 => 0023 | |
0022 RET1 3 2 | |
0324 MOV 12 11 | |
0325 TGETS 11 11 18 ; "restrict" | |
0326 UGET 13 12 ; Range | |
0327 KSHORT 14 0 | |
0328 MOV 15 10 | |
0329 CALL 13 0 3 | |
0000 . FUNCF 4 ; optimize.lua:276 | |
0001 . ISGE 1 0 | |
0002 . JMP 2 => 0006 | |
0006 . TDUP 2 0 | |
0007 . TSETS 0 2 1 ; "min_" | |
0008 . TSETS 1 2 2 ; "max_" | |
0009 . FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 33 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 33 start 31/0 optimize.lua:402 | |
0016 UGET 3 2 ; car | |
0017 MOV 4 0 | |
0018 CALL 3 2 2 | |
0000 . JFUNCF 2 26 ; optimize.lua:394 | |
0001 . TGETB 1 0 1 | |
0002 . RET1 1 2 | |
0019 TGETV 3 3 2 | |
0020 ISF 3 | |
0021 JMP 4 => 0023 | |
0022 RET1 3 2 | |
0008 MOV 7 6 | |
0009 TGETS 6 6 0 ; "restrict" | |
0010 MOV 8 2 | |
0011 CALL 6 0 3 | |
0000 . FUNCF 8 ; optimize.lua:293 | |
0001 . UGET 2 0 ; Range | |
0002 . GGET 3 0 ; "math" | |
0003 . TGETS 3 3 1 ; "max" | |
0004 . MOV 5 0 | |
0005 . TGETS 4 0 2 ; "min" | |
0006 . CALL 4 2 2 | |
0000 . . JFUNCF 2 28 ; optimize.lua:281 | |
0001 . . TGETS 1 0 0 ; "min_" | |
0002 . . RET1 1 2 | |
0007 . MOV 6 1 | |
0008 . TGETS 5 1 2 ; "min" | |
0009 . CALL 5 0 2 | |
0000 . . JFUNCF 2 28 ; optimize.lua:281 | |
0001 . . TGETS 1 0 0 ; "min_" | |
0002 . . RET1 1 2 | |
0010 . CALLM 3 2 1 | |
0000 . . FUNCC ; math.max | |
0011 . GGET 4 0 ; "math" | |
0012 . TGETS 4 4 2 ; "min" | |
0013 . MOV 6 0 | |
0014 . TGETS 5 0 1 ; "max" | |
0015 . CALL 5 2 2 | |
0000 . . FUNCF 2 ; optimize.lua:282 | |
0001 . . TGETS 1 0 0 ; "max_" | |
0002 . . RET1 1 2 | |
0016 . MOV 7 1 | |
0017 . TGETS 6 1 1 ; "max" | |
0018 . CALL 6 0 2 | |
0000 . . FUNCF 2 ; optimize.lua:282 | |
0001 . . TGETS 1 0 0 ; "max_" | |
0002 . . RET1 1 2 | |
0019 . CALLM 4 0 1 | |
0000 . . FUNCC ; math.min | |
0020 . CALLMT 2 1 | |
0000 . FUNCF 4 ; optimize.lua:276 | |
0001 . ISGE 1 0 | |
0002 . JMP 2 => 0006 | |
0006 . TDUP 2 0 | |
0007 . TSETS 0 2 1 ; "min_" | |
0008 . TSETS 1 2 2 ; "max_" | |
0009 . FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 33 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 33 start 31/0 optimize.lua:402 | |
0016 UGET 3 2 ; car | |
0017 MOV 4 0 | |
0018 CALL 3 2 2 | |
0000 . JFUNCF 2 26 ; optimize.lua:394 | |
0001 . TGETB 1 0 1 | |
0002 . RET1 1 2 | |
0019 TGETV 3 3 2 | |
0020 ISF 3 | |
0021 JMP 4 => 0023 | |
0022 RET1 3 2 | |
0324 MOV 12 11 | |
0325 TGETS 11 11 18 ; "restrict" | |
0326 UGET 13 12 ; Range | |
0327 KSHORT 14 0 | |
0328 MOV 15 10 | |
0329 CALL 13 0 3 | |
0000 . FUNCF 4 ; optimize.lua:276 | |
0001 . ISGE 1 0 | |
0002 . JMP 2 => 0006 | |
0006 . TDUP 2 0 | |
0007 . TSETS 0 2 1 ; "min_" | |
0008 . TSETS 1 2 2 ; "max_" | |
0009 . FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 33 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 33 start 31/0 optimize.lua:402 | |
---- TRACE 33 IR | |
0001 <span class="irt_tab">tab</span> SLOAD #1 PI | |
---- TRACE 33 mcode 45 | |
0bcac7fa mov dword [0x405d84a0], 0x21 | |
0bcac805 mov dword [rdx+0x4], 0xfffffff4 | |
0bcac80c mov [rdx], ebx | |
0bcac80e mov dword [rdx-0x8], 0x41fba2b0 | |
0bcac815 xor eax, eax | |
0bcac817 mov ebx, 0x405ebc38 | |
0bcac81c mov r14d, 0x405d8f78 | |
0bcac822 jmp 0x0041d9f8 | |
---- TRACE 33 stop -> interpreter | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 34 start optimize.lua:276 | |
0001 ISGE 1 0 | |
0002 JMP 2 => 0006 | |
0006 TDUP 2 0 | |
0007 TSETS 0 2 1 ; "min_" | |
0008 TSETS 1 2 2 ; "max_" | |
0009 FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 34 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 34 start optimize.lua:398 | |
0001 GGET 2 0 ; "type" | |
0002 MOV 3 1 | |
0003 CALL 2 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 2 1 ; "number" | |
0005 JMP 2 => 0010 | |
0010 UGET 2 1 ; cfkey | |
0011 MOV 3 1 | |
0012 CALL 2 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0011 . RET1 1 2 | |
0013 ISF 0 | |
0014 JMP 3 => 0028 | |
0015 JLOOP 3 27 | |
---- TRACE 34 abort optimize.lua:402 -- inner loop in root trace | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 34 start optimize.lua:293 | |
0001 UGET 2 0 ; Range | |
0002 GGET 3 0 ; "math" | |
0003 TGETS 3 3 1 ; "max" | |
0004 MOV 5 0 | |
0005 TGETS 4 0 2 ; "min" | |
0006 CALL 4 2 2 | |
0000 . JFUNCF 2 28 ; optimize.lua:281 | |
0001 . TGETS 1 0 0 ; "min_" | |
0002 . RET1 1 2 | |
0007 MOV 6 1 | |
0008 TGETS 5 1 2 ; "min" | |
0009 CALL 5 0 2 | |
0000 . JFUNCF 2 28 ; optimize.lua:281 | |
0001 . TGETS 1 0 0 ; "min_" | |
0002 . RET1 1 2 | |
0010 CALLM 3 2 1 | |
0000 . FUNCC ; math.max | |
0011 GGET 4 0 ; "math" | |
0012 TGETS 4 4 2 ; "min" | |
0013 MOV 6 0 | |
0014 TGETS 5 0 1 ; "max" | |
0015 CALL 5 2 2 | |
0000 . FUNCF 2 ; optimize.lua:282 | |
0001 . TGETS 1 0 0 ; "max_" | |
0002 . RET1 1 2 | |
0016 MOV 7 1 | |
0017 TGETS 6 1 1 ; "max" | |
0018 CALL 6 0 2 | |
0000 . FUNCF 2 ; optimize.lua:282 | |
0001 . TGETS 1 0 0 ; "max_" | |
0002 . RET1 1 2 | |
0019 CALLM 4 0 1 | |
0000 . FUNCC ; math.min | |
0020 CALLMT 2 1 | |
0000 FUNCF 4 ; optimize.lua:276 | |
0001 ISGE 1 0 | |
0002 JMP 2 => 0006 | |
0006 TDUP 2 0 | |
0007 TSETS 0 2 1 ; "min_" | |
0008 TSETS 1 2 2 ; "max_" | |
0009 FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 34 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 34 start optimize.lua:397 | |
0001 UGET 1 0 ; cons | |
0002 TNEW 2 0 | |
0003 MOV 3 0 | |
0004 CALLT 1 3 | |
0000 FUNCF 3 ; optimize.lua:393 | |
0001 TNEW 2 3 | |
0002 TSETB 0 2 1 | |
0003 TSETB 1 2 2 | |
0004 RET1 2 2 | |
---- TRACE 34 IR | |
0001 <span class="irt_fun">fun</span> SLOAD #0 R | |
0002 > <span class="irt_fun">fun</span> EQ 0001 <span class="irt_fun">optimize.lua:397</span> | |
0003 > <span class="irt_tab">tab</span> TNEW #0 #0 | |
0004 > <span class="irt_tab">tab</span> SLOAD #1 T | |
0005 > <span class="irt_tab">tab</span> TNEW #3 #0 | |
0006 <span class="irt_p32">p32</span> FLOAD 0005 tab.array | |
0007 <span class="irt_p32">p32</span> AREF 0006 <span class="irt_int">+1 </span> | |
0008 <span class="irt_tab">tab</span> ASTORE 0007 0003 | |
0009 <span class="irt_p32">p32</span> AREF 0006 <span class="irt_int">+2 </span> | |
0010 <span class="irt_tab">tab</span> ASTORE 0009 0004 | |
---- TRACE 34 mcode 205 | |
0bcac726 mov dword [0x405d84a0], 0x22 | |
0bcac731 mov edi, [0x405d83d8] | |
0bcac738 cmp edi, [0x405d83dc] | |
0bcac73f jb 0x0bcac758 | |
0bcac741 mov esi, 0x2 | |
0bcac746 mov edi, 0x405d83b8 | |
0bcac74b call 0x0041f3d0 ->lj_gc_step_jit | |
0bcac750 test eax, eax | |
0bcac752 jnz 0x0bca0010 ->0 | |
0bcac758 mov edi, [0x405d84ac] | |
0bcac75f mov edx, [0x405d84b0] | |
0bcac766 cmp dword [rdx-0x8], 0x403c87b8 | |
0bcac76d jnz 0x0bca0010 ->0 | |
0bcac773 xor esi, esi | |
0bcac775 call 0x0041f7e0 ->lj_tab_new1 | |
0bcac77a mov ebx, eax | |
0bcac77c mov edi, [0x405d84ac] | |
0bcac783 mov edx, [0x405d84b0] | |
0bcac78a cmp dword [rdx+0x4], -0x0c | |
0bcac78e jnz 0x0bca0010 ->0 | |
0bcac794 mov ebp, [rdx] | |
0bcac796 mov esi, 0x3 | |
0bcac79b call 0x0041f7e0 ->lj_tab_new1 | |
0bcac7a0 mov edx, [0x405d84b0] | |
0bcac7a7 mov dword [rax+0x2c], 0xfffffff4 | |
0bcac7ae mov [rax+0x28], ebx | |
0bcac7b1 mov dword [rax+0x34], 0xfffffff4 | |
0bcac7b8 mov [rax+0x30], ebp | |
0bcac7bb mov ecx, [0x405d84ac] | |
0bcac7c2 mov ecx, [rcx+0x20] | |
0bcac7c5 sub ecx, edx | |
0bcac7c7 cmp ecx, +0x18 | |
0bcac7ca jb 0x0bca0014 ->1 | |
0bcac7d0 mov dword [rdx+0x14], 0xfffffff4 | |
0bcac7d7 mov [rdx+0x10], eax | |
0bcac7da mov dword [rdx-0x8], 0x409d2a78 | |
0bcac7e1 xor eax, eax | |
0bcac7e3 mov ebx, 0x40b46ee0 | |
0bcac7e8 mov r14d, 0x405d8f78 | |
0bcac7ee jmp 0x0041d9f8 | |
---- TRACE 34 stop -> return | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 35 start optimize.lua:284 | |
0001 MOV 2 0 | |
0002 TGETS 1 0 0 ; "min" | |
0003 CALL 1 2 2 | |
0000 . JFUNCF 2 28 ; optimize.lua:281 | |
0001 . TGETS 1 0 0 ; "min_" | |
0002 . RET1 1 2 | |
0004 MOV 3 0 | |
0005 TGETS 2 0 1 ; "max" | |
0006 CALL 2 2 2 | |
0000 . FUNCF 2 ; optimize.lua:282 | |
0001 . TGETS 1 0 0 ; "max_" | |
0002 . RET1 1 2 | |
0007 ISNEV 1 2 | |
0008 JMP 1 => 0012 | |
0012 RET0 0 1 | |
---- TRACE 35 IR | |
0001 > <span class="irt_tab">tab</span> SLOAD #1 T | |
0002 <span class="irt_int">int</span> FLOAD 0001 tab.hmask | |
0003 > <span class="irt_int">int</span> EQ 0002 <span class="irt_int">+31 </span> | |
0004 <span class="irt_p32">p32</span> FLOAD 0001 tab.node | |
0005 > <span class="irt_p32">p32</span> HREFK 0004 <span class="irt_str">"min"</span> @22 | |
0006 > <span class="irt_fun">fun</span> HLOAD 0005 | |
0007 <span class="irt_p32">p32</span> FLOAD 0006 func.pc | |
0008 > <span class="irt_p32">p32</span> EQ 0007 <span class="irt_p32">[0x40bdcfd8]</span> | |
0009 > <span class="irt_p32">p32</span> HREFK 0004 <span class="irt_str">"min_"</span> @30 | |
0010 > <span class="irt_num">num</span> HLOAD 0009 | |
0011 > <span class="irt_p32">p32</span> HREFK 0004 <span class="irt_str">"max"</span> @16 | |
0012 > <span class="irt_fun">fun</span> HLOAD 0011 | |
0013 <span class="irt_p32">p32</span> FLOAD 0012 func.pc | |
0014 > <span class="irt_p32">p32</span> EQ 0013 <span class="irt_p32">[0x40bdc8b0]</span> | |
0015 > <span class="irt_p32">p32</span> HREFK 0004 <span class="irt_str">"max_"</span> @18 | |
0016 > <span class="irt_num">num</span> HLOAD 0015 | |
0017 > <span class="irt_num">num</span> NE 0016 0010 | |
---- TRACE 35 mcode 266 | |
0bcac615 mov dword [0x405d84a0], 0x23 | |
0bcac620 cmp dword [rdx+0x4], -0x0c | |
0bcac624 jnz 0x0bca0010 ->0 | |
0bcac62a mov ebp, [rdx] | |
0bcac62c cmp dword [rbp+0x1c], +0x1f | |
0bcac630 jnz 0x0bca0010 ->0 | |
0bcac636 mov ebp, [rbp+0x14] | |
0bcac639 mov rdi, 0xfffffffb405de540 | |
0bcac643 cmp rdi, [rbp+0x218] | |
0bcac64a jnz 0x0bca0010 ->0 | |
0bcac650 cmp dword [rbp+0x214], -0x09 | |
0bcac657 jnz 0x0bca0010 ->0 | |
0bcac65d mov ebx, [rbp+0x210] | |
0bcac663 cmp dword [rbx+0x10], 0x40bdcfd8 | |
0bcac66a jnz 0x0bca0010 ->0 | |
0bcac670 mov rdi, 0xfffffffb40bdc7b8 | |
0bcac67a cmp rdi, [rbp+0x2d8] | |
0bcac681 jnz 0x0bca0010 ->0 | |
0bcac687 cmp dword [rbp+0x2d4], 0xfffeffff | |
0bcac691 jnb 0x0bca0010 ->0 | |
0bcac697 mov rdi, 0xfffffffb405de588 | |
0bcac6a1 cmp rdi, [rbp+0x188] | |
0bcac6a8 jnz 0x0bca0010 ->0 | |
0bcac6ae cmp dword [rbp+0x184], -0x09 | |
0bcac6b5 jnz 0x0bca0010 ->0 | |
0bcac6bb mov ebx, [rbp+0x180] | |
0bcac6c1 cmp dword [rbx+0x10], 0x40bdc8b0 | |
0bcac6c8 jnz 0x0bca0010 ->0 | |
0bcac6ce mov rdi, 0xfffffffb405e7640 | |
0bcac6d8 cmp rdi, [rbp+0x1b8] | |
0bcac6df jnz 0x0bca0010 ->0 | |
0bcac6e5 cmp dword [rbp+0x1b4], 0xfffeffff | |
0bcac6ef jnb 0x0bca0010 ->0 | |
0bcac6f5 movsd xmm7, [rbp+0x1b0] | |
0bcac6fd ucomisd xmm7, [rbp+0x2d0] | |
0bcac705 jpe 0x0bcac70d | |
0bcac707 jz 0x0bca0014 ->1 | |
0bcac70d xor eax, eax | |
0bcac70f mov ebx, 0x40b4ad30 | |
0bcac714 mov r14d, 0x405d8f78 | |
0bcac71a jmp 0x0041d9f8 | |
---- TRACE 35 stop -> return | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 36 start 32/0 optimize.lua:395 | |
0001 TGETB 1 0 2 | |
0002 RET1 1 2 | |
0026 MOV 0 4 | |
0027 JMP 3 => 0013 | |
0013 ISF 0 | |
0014 JMP 3 => 0028 | |
0028 UGET 3 0 ; Range | |
0029 UGET 4 4 ; Inf | |
0030 UNM 4 4 | |
0031 UGET 5 4 ; Inf | |
0032 CALLT 3 3 | |
0000 FUNCF 4 ; optimize.lua:276 | |
0001 ISGE 1 0 | |
0002 JMP 2 => 0006 | |
0006 TDUP 2 0 | |
0007 TSETS 0 2 1 ; "min_" | |
0008 TSETS 1 2 2 ; "max_" | |
0009 FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 36 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 36 start optimize.lua:276 | |
0001 ISGE 1 0 | |
0002 JMP 2 => 0006 | |
0006 TDUP 2 0 | |
0007 TSETS 0 2 1 ; "min_" | |
0008 TSETS 1 2 2 ; "max_" | |
0009 FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 36 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 36 start 32/0 optimize.lua:395 | |
0001 TGETB 1 0 2 | |
0002 RET1 1 2 | |
0026 MOV 0 4 | |
0027 JMP 3 => 0013 | |
0013 ISF 0 | |
0014 JMP 3 => 0028 | |
0028 UGET 3 0 ; Range | |
0029 UGET 4 4 ; Inf | |
0030 UNM 4 4 | |
0031 UGET 5 4 ; Inf | |
0032 CALLT 3 3 | |
0000 FUNCF 4 ; optimize.lua:276 | |
0001 ISGE 1 0 | |
0002 JMP 2 => 0006 | |
0006 TDUP 2 0 | |
0007 TSETS 0 2 1 ; "min_" | |
0008 TSETS 1 2 2 ; "max_" | |
0009 FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 36 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 36 start 32/0 optimize.lua:395 | |
0001 TGETB 1 0 2 | |
0002 RET1 1 2 | |
0026 MOV 0 4 | |
0027 JMP 3 => 0013 | |
0013 ISF 0 | |
0014 JMP 3 => 0028 | |
0028 UGET 3 0 ; Range | |
0029 UGET 4 4 ; Inf | |
0030 UNM 4 4 | |
0031 UGET 5 4 ; Inf | |
0032 CALLT 3 3 | |
0000 FUNCF 4 ; optimize.lua:276 | |
0001 ISGE 1 0 | |
0002 JMP 2 => 0006 | |
0006 TDUP 2 0 | |
0007 TSETS 0 2 1 ; "min_" | |
0008 TSETS 1 2 2 ; "max_" | |
0009 FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 36 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 36 start 35/1 optimize.lua:285 | |
0009 MOV 2 0 | |
0010 TGETS 1 0 0 ; "min" | |
0011 CALLT 1 2 | |
0000 JFUNCF 2 28 ; optimize.lua:281 | |
0001 TGETS 1 0 0 ; "min_" | |
0002 RET1 1 2 | |
0017 ISF 3 | |
0018 JMP 4 => 0022 | |
0019 MOV 4 2 | |
0020 TGETS 3 2 3 ; "min" | |
0021 CALLT 3 2 | |
0000 JFUNCF 2 28 ; optimize.lua:281 | |
0001 TGETS 1 0 0 ; "min_" | |
0002 RET1 1 2 | |
0109 UGET 16 8 ; restrict | |
0110 MOV 17 2 | |
0111 MOV 18 7 | |
0112 MOV 19 13 | |
0113 CALL 16 1 4 | |
0000 . FUNCF 9 ; optimize.lua:414 | |
0001 . UGET 3 0 ; define | |
0002 . MOV 4 0 | |
0003 . MOV 5 1 | |
0004 . UGET 6 1 ; lookup | |
0005 . MOV 7 0 | |
0006 . MOV 8 1 | |
0007 . CALL 6 2 3 | |
0000 . . FUNCF 6 ; optimize.lua:398 | |
0001 . . GGET 2 0 ; "type" | |
0002 . . MOV 3 1 | |
0003 . . CALL 2 2 2 | |
0000 . . . FUNCC ; type | |
0004 . . ISNES 2 1 ; "number" | |
0005 . . JMP 2 => 0010 | |
0010 . . UGET 2 1 ; cfkey | |
0011 . . MOV 3 1 | |
0012 . . CALL 2 2 2 | |
0000 . . . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . . . UGET 1 0 ; cache | |
0002 . . . TGETV 1 1 0 | |
0003 . . . ISNEP 1 0 | |
0004 . . . JMP 2 => 0011 | |
0011 . . . RET1 1 2 | |
0013 . . ISF 0 | |
0014 . . JMP 3 => 0028 | |
0015 . . JLOOP 3 27 | |
---- TRACE 36 IR | |
0001 > <span class="irt_tab">tab</span> SLOAD #1 T | |
0002 <span class="irt_int">int</span> FLOAD 0001 tab.hmask | |
0003 > <span class="irt_int">int</span> EQ 0002 <span class="irt_int">+31 </span> | |
0004 <span class="irt_p32">p32</span> FLOAD 0001 tab.node | |
0005 > <span class="irt_p32">p32</span> HREFK 0004 <span class="irt_str">"min"</span> @22 | |
0006 > <span class="irt_fun">fun</span> HLOAD 0005 | |
0007 <span class="irt_p32">p32</span> FLOAD 0006 func.pc | |
0008 > <span class="irt_p32">p32</span> EQ 0007 <span class="irt_p32">[0x40bdcfd8]</span> | |
0009 > <span class="irt_p32">p32</span> HREFK 0004 <span class="irt_str">"min_"</span> @30 | |
0010 > <span class="irt_num">num</span> HLOAD 0009 | |
0011 > <span class="irt_p32">p32</span> RETF <span class="irt_pro">proto: 0x40bdfc10</span> <span class="irt_p32">[0x40bdfc94]</span> | |
0012 > <span class="irt_tab">tab</span> SLOAD #3 T | |
0013 <span class="irt_int">int</span> FLOAD 0012 tab.hmask | |
0014 > <span class="irt_int">int</span> EQ 0013 <span class="irt_int">+31 </span> | |
0015 <span class="irt_p32">p32</span> FLOAD 0012 tab.node | |
0016 > <span class="irt_p32">p32</span> HREFK 0015 <span class="irt_str">"min"</span> @22 | |
0017 > <span class="irt_fun">fun</span> HLOAD 0016 | |
0018 <span class="irt_p32">p32</span> FLOAD 0017 func.pc | |
0019 > <span class="irt_p32">p32</span> EQ 0018 <span class="irt_p32">[0x40bdcfd8]</span> | |
0020 > <span class="irt_p32">p32</span> HREFK 0015 <span class="irt_str">"min_"</span> @30 | |
0021 > <span class="irt_num">num</span> HLOAD 0020 | |
0022 > <span class="irt_p32">p32</span> RETF <span class="irt_pro">proto: 0x40b579f8</span> <span class="irt_p32">[0x40b57bec]</span> | |
0023 <span class="irt_fun">fun</span> SLOAD #0 R | |
0024 > <span class="irt_fun">fun</span> EQ 0023 <span class="irt_fun">optimize.lua:488</span> | |
0025 > <span class="irt_tab">tab</span> SLOAD #3 T | |
0026 > <span class="irt_tab">tab</span> SLOAD #8 T | |
0027 > <span class="irt_tab">tab</span> SLOAD #14 T | |
0028 <span class="irt_tab">tab</span> FLOAD <span class="irt_fun">optimize.lua:398</span> func.env | |
0029 <span class="irt_p32">p32</span> HREF 0028 <span class="irt_str">"type"</span> | |
0030 > <span class="irt_p32">p32</span> EQ 0029 <span class="irt_p32">[0x405d8420]</span> | |
0031 <span class="irt_tab">tab</span> FLOAD 0028 tab.meta | |
0032 > <span class="irt_tab">tab</span> NE 0031 <span class="irt_tab">[NULL]</span> | |
0033 <span class="irt_int">int</span> FLOAD 0031 tab.hmask | |
0034 > <span class="irt_int">int</span> EQ 0033 <span class="irt_int">+1 </span> | |
0035 <span class="irt_p32">p32</span> FLOAD 0031 tab.node | |
0036 > <span class="irt_p32">p32</span> HREFK 0035 <span class="irt_str">"__index"</span> @1 | |
0037 > <span class="irt_tab">tab</span> HLOAD 0036 | |
0038 <span class="irt_int">int</span> FLOAD 0037 tab.hmask | |
0039 > <span class="irt_int">int</span> EQ 0038 <span class="irt_int">+63 </span> | |
0040 <span class="irt_p32">p32</span> FLOAD 0037 tab.node | |
0041 > <span class="irt_p32">p32</span> HREFK 0040 <span class="irt_str">"type"</span> @60 | |
0042 > <span class="irt_fun">fun</span> HLOAD 0041 | |
0043 > <span class="irt_fun">fun</span> EQ 0042 <span class="irt_fun">type</span> | |
0044 > <span class="irt_p32">p32</span> UREFC <span class="irt_fun">optimize.lua:398</span> #1 | |
0045 > <span class="irt_fun">fun</span> ULOAD 0044 | |
0046 > <span class="irt_fun">fun</span> EQ 0045 <span class="irt_fun">optimize.lua:54</span> | |
0047 > <span class="irt_p32">p32</span> UREFC <span class="irt_fun">optimize.lua:54</span> #0 | |
0048 > <span class="irt_tab">tab</span> ULOAD 0047 | |
0049 <span class="irt_p32">p32</span> HREF 0048 0026 | |
0050 > <span class="irt_str">str</span> HLOAD 0049 | |
---- TRACE 36 mcode 952 | |
0bcac256 mov eax, [0x405d84ac] | |
0bcac25d mov eax, [rax+0x20] | |
0bcac260 sub eax, edx | |
0bcac262 cmp eax, +0x48 | |
0bcac265 jb 0x0bca0014 ->1 | |
0bcac26b mov dword [0x405d84a0], 0x24 | |
0bcac276 cmp dword [rdx+0x4], -0x0c | |
0bcac27a jnz 0x0bca0010 ->0 | |
0bcac280 mov ebp, [rdx] | |
0bcac282 cmp dword [rbp+0x1c], +0x1f | |
0bcac286 jnz 0x0bca0010 ->0 | |
0bcac28c mov ebx, [rbp+0x14] | |
0bcac28f mov rdi, 0xfffffffb405de540 | |
0bcac299 cmp rdi, [rbx+0x218] | |
0bcac2a0 jnz 0x0bca0010 ->0 | |
0bcac2a6 cmp dword [rbx+0x214], -0x09 | |
0bcac2ad jnz 0x0bca0010 ->0 | |
0bcac2b3 mov ebp, [rbx+0x210] | |
0bcac2b9 cmp dword [rbp+0x10], 0x40bdcfd8 | |
0bcac2c0 jnz 0x0bca0010 ->0 | |
0bcac2c6 mov rdi, 0xfffffffb40bdc7b8 | |
0bcac2d0 cmp rdi, [rbx+0x2d8] | |
0bcac2d7 jnz 0x0bca0010 ->0 | |
0bcac2dd cmp dword [rbx+0x2d4], 0xfffeffff | |
0bcac2e7 jnb 0x0bca0010 ->0 | |
0bcac2ed movsd xmm6, [rbx+0x2d0] | |
0bcac2f5 cmp dword [rdx-0x4], 0x40bdfc94 | |
0bcac2fc jnz 0x0bca0014 ->1 | |
0bcac302 add edx, -0x20 | |
0bcac305 mov [0x405d84b0], edx | |
0bcac30c cmp dword [rdx+0x14], -0x0c | |
0bcac310 jnz 0x0bca0018 ->2 | |
0bcac316 mov ebx, [rdx+0x10] | |
0bcac319 cmp dword [rbx+0x1c], +0x1f | |
0bcac31d jnz 0x0bca0018 ->2 | |
0bcac323 mov r15d, [rbx+0x14] | |
0bcac327 mov rdi, 0xfffffffb405de540 | |
0bcac331 cmp rdi, [r15+0x218] | |
0bcac338 jnz 0x0bca0018 ->2 | |
0bcac33e cmp dword [r15+0x214], -0x09 | |
0bcac346 jnz 0x0bca0018 ->2 | |
0bcac34c mov ebp, [r15+0x210] | |
0bcac353 cmp dword [rbp+0x10], 0x40bdcfd8 | |
0bcac35a jnz 0x0bca0018 ->2 | |
0bcac360 mov rdi, 0xfffffffb40bdc7b8 | |
0bcac36a cmp rdi, [r15+0x2d8] | |
0bcac371 jnz 0x0bca0018 ->2 | |
0bcac377 cmp dword [r15+0x2d4], 0xfffeffff | |
0bcac382 jnb 0x0bca0018 ->2 | |
0bcac388 movsd xmm7, [r15+0x2d0] | |
0bcac391 cmp dword [rdx-0x4], 0x40b57bec | |
0bcac398 jnz 0x0bca001c ->3 | |
0bcac39e add edx, 0xffffff78 | |
0bcac3a4 mov [0x405d84b0], edx | |
0bcac3ab cmp dword [rdx-0x8], 0x409a3d78 | |
0bcac3b2 jnz 0x0bca0020 ->4 | |
0bcac3b8 cmp dword [rdx+0x14], -0x0c | |
0bcac3bc jnz 0x0bca0020 ->4 | |
0bcac3c2 mov ebp, [rdx+0x10] | |
0bcac3c5 cmp dword [rdx+0x3c], -0x0c | |
0bcac3c9 jnz 0x0bca0020 ->4 | |
0bcac3cf mov ebx, [rdx+0x38] | |
0bcac3d2 cmp dword [rdx+0x6c], -0x0c | |
0bcac3d6 jnz 0x0bca0020 ->4 | |
0bcac3dc mov r15d, [rdx+0x68] | |
0bcac3e0 mov r14d, [0x41fba2b8] | |
0bcac3e8 mov r13d, [r14+0x1c] | |
0bcac3ec and r13d, 0x798a813c | |
0bcac3f3 lea r13d, [r13+r13*2+0x0] | |
0bcac3f8 shl r13d, 0x03 | |
0bcac3fc add r13d, [r14+0x14] | |
0bcac400 cmp dword [r13+0xc], -0x05 | |
0bcac405 jnz 0x0bcac415 | |
0bcac407 cmp dword [r13+0x8], 0x405daf18 | |
0bcac40f jz 0x0bca0020 ->4 | |
0bcac415 mov r13d, [r13+0x10] | |
0bcac419 test r13d, r13d | |
0bcac41c jnz 0x0bcac400 | |
0bcac41e mov r13d, 0x405d8420 | |
0bcac424 mov r14d, [r14+0x10] | |
0bcac428 test r14d, r14d | |
0bcac42b jz 0x0bca0020 ->4 | |
0bcac431 cmp dword [r14+0x1c], +0x01 | |
0bcac436 jnz 0x0bca0020 ->4 | |
0bcac43c mov r14d, [r14+0x14] | |
0bcac440 mov rdi, 0xfffffffb405da430 | |
0bcac44a cmp rdi, [r14+0x20] | |
0bcac44e jnz 0x0bca0020 ->4 | |
0bcac454 cmp dword [r14+0x1c], -0x0c | |
0bcac459 jnz 0x0bca0020 ->4 | |
0bcac45f mov r14d, [r14+0x18] | |
0bcac463 cmp dword [r14+0x1c], +0x3f | |
0bcac468 jnz 0x0bca0020 ->4 | |
0bcac46e mov r14d, [r14+0x14] | |
0bcac472 mov rdi, 0xfffffffb405daf18 | |
0bcac47c cmp rdi, [r14+0x5a8] | |
0bcac483 jnz 0x0bca0020 ->4 | |
0bcac489 cmp dword [r14+0x5a4], -0x09 | |
0bcac491 jnz 0x0bca0020 ->4 | |
0bcac497 cmp dword [r14+0x5a0], 0x405dae80 | |
0bcac4a2 jnz 0x0bca0020 ->4 | |
0bcac4a8 cmp dword [0x40b3fa3c], -0x09 | |
0bcac4b0 jnz 0x0bca0020 ->4 | |
0bcac4b6 cmp dword [0x40b3fa38], 0x40b3fa78 | |
0bcac4c1 jnz 0x0bca0020 ->4 | |
0bcac4c7 cmp dword [0x40b3faac], -0x0c | |
0bcac4cf jnz 0x0bca0020 ->4 | |
0bcac4d5 mov r13d, [0x40b3faa8] | |
0bcac4dd lea r14d, [rbx-0x4c11db7] | |
0bcac4e4 mov edi, ebx | |
0bcac4e6 xor edi, r14d | |
0bcac4e9 rol r14d, 0x0e | |
0bcac4ed sub edi, r14d | |
0bcac4f0 rol r14d, 0x05 | |
0bcac4f4 xor r14d, edi | |
0bcac4f7 rol edi, 0x0d | |
0bcac4fa sub r14d, edi | |
0bcac4fd and r14d, [r13+0x1c] | |
0bcac501 lea r14d, [r14+r14*2] | |
0bcac505 shl r14d, 0x03 | |
0bcac509 add r14d, [r13+0x14] | |
0bcac50d cmp dword [r14+0xc], -0x0c | |
0bcac512 jnz 0x0bcac51a | |
0bcac514 cmp ebx, [r14+0x8] | |
0bcac518 jz 0x0bcac529 | |
0bcac51a mov r14d, [r14+0x10] | |
0bcac51e test r14d, r14d | |
0bcac521 jnz 0x0bcac50d | |
0bcac523 mov r14d, 0x405d8420 | |
0bcac529 cmp dword [r14+0x4], -0x05 | |
0bcac52e jnz 0x0bca0020 ->4 | |
0bcac534 mov r14d, [r14] | |
0bcac537 mov dword [rdx+0xd4], 0xfffffffb | |
0bcac541 mov [rdx+0xd0], r14d | |
0bcac548 mov dword [rdx+0xcc], 0xfffffff4 | |
0bcac552 mov [rdx+0xc8], ebx | |
0bcac558 mov dword [rdx+0xc4], 0xfffffff4 | |
0bcac562 mov [rdx+0xc0], ebp | |
0bcac568 mov dword [rdx+0xbc], 0x40bd65d0 | |
0bcac572 mov dword [rdx+0xb8], 0x41fba2b0 | |
0bcac57c mov dword [rdx+0xb4], 0xfffffff4 | |
0bcac586 mov [rdx+0xb0], ebx | |
0bcac58c mov dword [rdx+0xac], 0xfffffff4 | |
0bcac596 mov [rdx+0xa8], ebp | |
0bcac59c mov dword [rdx+0xa4], 0xfffffff7 | |
0bcac5a6 mov dword [rdx+0xa0], 0x405f6578 | |
0bcac5b0 mov dword [rdx+0x9c], 0xfffffff4 | |
0bcac5ba mov [rdx+0x98], r15d | |
0bcac5c1 mov dword [rdx+0x94], 0xfffffff4 | |
0bcac5cb mov [rdx+0x90], ebx | |
0bcac5d1 mov dword [rdx+0x8c], 0xfffffff4 | |
0bcac5db mov [rdx+0x88], ebp | |
0bcac5e1 mov dword [rdx+0x84], 0x40b57c00 | |
0bcac5eb mov dword [rdx+0x80], 0x4099b030 | |
0bcac5f5 mov dword [rdx-0x8], 0x409a3d78 | |
0bcac5fc add edx, 0xc0 | |
0bcac602 mov [0x405d84b0], edx | |
0bcac609 jmp 0x0bcaca07 | |
---- TRACE 36 stop -> 27 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 37 start optimize.lua:293 | |
0001 UGET 2 0 ; Range | |
0002 GGET 3 0 ; "math" | |
0003 TGETS 3 3 1 ; "max" | |
0004 MOV 5 0 | |
0005 TGETS 4 0 2 ; "min" | |
0006 CALL 4 2 2 | |
0000 . JFUNCF 2 28 ; optimize.lua:281 | |
0001 . TGETS 1 0 0 ; "min_" | |
0002 . RET1 1 2 | |
0007 MOV 6 1 | |
0008 TGETS 5 1 2 ; "min" | |
0009 CALL 5 0 2 | |
0000 . JFUNCF 2 28 ; optimize.lua:281 | |
0001 . TGETS 1 0 0 ; "min_" | |
0002 . RET1 1 2 | |
0010 CALLM 3 2 1 | |
0000 . FUNCC ; math.max | |
0011 GGET 4 0 ; "math" | |
0012 TGETS 4 4 2 ; "min" | |
0013 MOV 6 0 | |
0014 TGETS 5 0 1 ; "max" | |
0015 CALL 5 2 2 | |
0000 . FUNCF 2 ; optimize.lua:282 | |
0001 . TGETS 1 0 0 ; "max_" | |
0002 . RET1 1 2 | |
0016 MOV 7 1 | |
0017 TGETS 6 1 1 ; "max" | |
0018 CALL 6 0 2 | |
0000 . FUNCF 2 ; optimize.lua:282 | |
0001 . TGETS 1 0 0 ; "max_" | |
0002 . RET1 1 2 | |
0019 CALLM 4 0 1 | |
0000 . FUNCC ; math.min | |
0020 CALLMT 2 1 | |
0000 FUNCF 4 ; optimize.lua:276 | |
0001 ISGE 1 0 | |
0002 JMP 2 => 0006 | |
0006 TDUP 2 0 | |
0007 TSETS 0 2 1 ; "min_" | |
0008 TSETS 1 2 2 ; "max_" | |
0009 FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 37 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 37 start 32/0 optimize.lua:395 | |
0001 TGETB 1 0 2 | |
0002 RET1 1 2 | |
0026 MOV 0 4 | |
0027 JMP 3 => 0013 | |
0013 ISF 0 | |
0014 JMP 3 => 0028 | |
0028 UGET 3 0 ; Range | |
0029 UGET 4 4 ; Inf | |
0030 UNM 4 4 | |
0031 UGET 5 4 ; Inf | |
0032 CALLT 3 3 | |
0000 FUNCF 4 ; optimize.lua:276 | |
0001 ISGE 1 0 | |
0002 JMP 2 => 0006 | |
0006 TDUP 2 0 | |
0007 TSETS 0 2 1 ; "min_" | |
0008 TSETS 1 2 2 ; "max_" | |
0009 FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 37 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 37 start optimize.lua:398 | |
0001 GGET 2 0 ; "type" | |
0002 MOV 3 1 | |
0003 CALL 2 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 2 1 ; "number" | |
0005 JMP 2 => 0010 | |
0010 UGET 2 1 ; cfkey | |
0011 MOV 3 1 | |
0012 CALL 2 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0011 . RET1 1 2 | |
0013 ISF 0 | |
0014 JMP 3 => 0028 | |
0015 JLOOP 3 27 | |
---- TRACE 37 abort optimize.lua:402 -- inner loop in root trace | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 37 start 32/0 optimize.lua:395 | |
---- TRACE 37 IR | |
---- TRACE 37 mcode 29 | |
0bcac232 mov dword [0x405d84a0], 0x25 | |
0bcac23d xor eax, eax | |
0bcac23f mov ebx, 0x40bd7654 | |
0bcac244 mov r14d, 0x405d8f78 | |
0bcac24a jmp 0x0041d9f8 | |
---- TRACE 37 stop -> interpreter | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 38 start optimize.lua:408 | |
0001 GGET 3 0 ; "type" | |
0002 MOV 4 1 | |
0003 CALL 3 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 3 1 ; "number" | |
0005 JMP 3 => 0007 | |
0007 UGET 3 0 ; car | |
0008 MOV 4 0 | |
0009 CALL 3 2 2 | |
0000 . JFUNCF 2 26 ; optimize.lua:394 | |
0001 . TGETB 1 0 1 | |
0002 . RET1 1 2 | |
0010 UGET 4 1 ; cfkey | |
0011 MOV 5 1 | |
0012 CALL 4 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0011 . RET1 1 2 | |
0013 TSETV 2 3 4 | |
0014 MOV 4 2 | |
0015 TGETS 3 2 2 ; "fold" | |
0016 CALL 3 2 2 | |
0000 . JFUNCF 4 35 ; optimize.lua:284 | |
0001 . MOV 2 0 | |
0002 . TGETS 1 0 0 ; "min" | |
0003 . CALL 1 2 2 | |
0000 . . JFUNCF 2 28 ; optimize.lua:281 | |
0001 . . TGETS 1 0 0 ; "min_" | |
0002 . . RET1 1 2 | |
0004 . MOV 3 0 | |
0005 . TGETS 2 0 1 ; "max" | |
0006 . CALL 2 2 2 | |
0000 . . FUNCF 2 ; optimize.lua:282 | |
0001 . . TGETS 1 0 0 ; "max_" | |
0002 . . RET1 1 2 | |
0007 . ISNEV 1 2 | |
0008 . JMP 1 => 0012 | |
0012 . RET0 0 1 | |
0017 ISF 3 | |
0018 JMP 4 => 0022 | |
0022 RET1 1 2 | |
---- TRACE 38 IR | |
0001 <span class="irt_fun">fun</span> SLOAD #0 R | |
0002 <span class="irt_tab">tab</span> FLOAD 0001 func.env | |
0003 <span class="irt_p32">p32</span> HREF 0002 <span class="irt_str">"type"</span> | |
0004 > <span class="irt_p32">p32</span> EQ 0003 <span class="irt_p32">[0x405d8420]</span> | |
0005 <span class="irt_tab">tab</span> FLOAD 0002 tab.meta | |
0006 > <span class="irt_tab">tab</span> NE 0005 <span class="irt_tab">[NULL]</span> | |
0007 <span class="irt_int">int</span> FLOAD 0005 tab.hmask | |
0008 > <span class="irt_int">int</span> EQ 0007 <span class="irt_int">+1 </span> | |
0009 <span class="irt_p32">p32</span> FLOAD 0005 tab.node | |
0010 > <span class="irt_p32">p32</span> HREFK 0009 <span class="irt_str">"__index"</span> @1 | |
0011 > <span class="irt_tab">tab</span> HLOAD 0010 | |
0012 <span class="irt_int">int</span> FLOAD 0011 tab.hmask | |
0013 > <span class="irt_int">int</span> EQ 0012 <span class="irt_int">+63 </span> | |
0014 <span class="irt_p32">p32</span> FLOAD 0011 tab.node | |
0015 > <span class="irt_p32">p32</span> HREFK 0014 <span class="irt_str">"type"</span> @60 | |
0016 > <span class="irt_fun">fun</span> HLOAD 0015 | |
0017 > <span class="irt_tab">tab</span> SLOAD #2 T | |
0018 > <span class="irt_fun">fun</span> EQ 0016 <span class="irt_fun">type</span> | |
0019 > <span class="irt_fun">fun</span> EQ 0001 <span class="irt_fun">optimize.lua:408</span> | |
0020 > <span class="irt_tab">tab</span> SLOAD #1 T | |
0021 <span class="irt_int">int</span> FLOAD 0020 tab.asize | |
0022 > <span class="irt_int">int</span> ABC 0021 <span class="irt_int">+1 </span> | |
0023 <span class="irt_p32">p32</span> FLOAD 0020 tab.array | |
0024 <span class="irt_p32">p32</span> AREF 0023 <span class="irt_int">+1 </span> | |
0025 > <span class="irt_tab">tab</span> ALOAD 0024 | |
0026 > <span class="irt_p32">p32</span> UREFC <span class="irt_fun">optimize.lua:408</span> #1 | |
0027 > <span class="irt_fun">fun</span> ULOAD 0026 | |
0028 > <span class="irt_fun">fun</span> EQ 0027 <span class="irt_fun">optimize.lua:54</span> | |
0029 > <span class="irt_p32">p32</span> UREFC <span class="irt_fun">optimize.lua:54</span> #0 | |
0030 > <span class="irt_tab">tab</span> ULOAD 0029 | |
0031 <span class="irt_p32">p32</span> HREF 0030 0017 | |
0032 > <span class="irt_str">str</span> HLOAD 0031 | |
0033 > <span class="irt_tab">tab</span> SLOAD #3 T | |
0034 <span class="irt_p32">p32</span> HREF 0025 0032 | |
0035 > <span class="irt_p32">p32</span> NE 0034 <span class="irt_p32">[0x405d8420]</span> | |
0036 <span class="irt_tab">tab</span> FLOAD 0025 tab.meta | |
0037 > <span class="irt_tab">tab</span> EQ 0036 <span class="irt_tab">[NULL]</span> | |
0038 <span class="irt_tab">tab</span> HSTORE 0034 0033 | |
0039 <span class="irt_nil">nil</span> TBAR 0025 | |
0040 <span class="irt_p32">p32</span> FREF 0025 tab.nomm | |
0041 <span class="irt_u8 ">u8 </span> FSTORE 0040 <span class="irt_int">+0 </span> | |
0042 <span class="irt_int">int</span> FLOAD 0033 tab.hmask | |
0043 > <span class="irt_int">int</span> EQ 0042 <span class="irt_int">+31 </span> | |
0044 <span class="irt_p32">p32</span> FLOAD 0033 tab.node | |
0045 > <span class="irt_p32">p32</span> HREFK 0044 <span class="irt_str">"fold"</span> @23 | |
0046 > <span class="irt_fun">fun</span> HLOAD 0045 | |
0047 <span class="irt_p32">p32</span> FLOAD 0046 func.pc | |
0048 > <span class="irt_p32">p32</span> EQ 0047 <span class="irt_p32">[0x40b4ad00]</span> | |
0049 > <span class="irt_p32">p32</span> HREFK 0044 <span class="irt_str">"min"</span> @22 | |
0050 > <span class="irt_fun">fun</span> HLOAD 0049 | |
0051 <span class="irt_p32">p32</span> FLOAD 0050 func.pc | |
0052 > <span class="irt_p32">p32</span> EQ 0051 <span class="irt_p32">[0x40bdcfd8]</span> | |
0053 > <span class="irt_p32">p32</span> HREFK 0044 <span class="irt_str">"min_"</span> @30 | |
0054 > <span class="irt_num">num</span> HLOAD 0053 | |
0055 > <span class="irt_p32">p32</span> HREFK 0044 <span class="irt_str">"max"</span> @16 | |
0056 > <span class="irt_fun">fun</span> HLOAD 0055 | |
0057 <span class="irt_p32">p32</span> FLOAD 0056 func.pc | |
0058 > <span class="irt_p32">p32</span> EQ 0057 <span class="irt_p32">[0x40bdc8b0]</span> | |
0059 > <span class="irt_p32">p32</span> HREFK 0044 <span class="irt_str">"max_"</span> @18 | |
0060 > <span class="irt_num">num</span> HLOAD 0059 | |
0061 > <span class="irt_num">num</span> NE 0060 0054 | |
---- TRACE 38 mcode 846 | |
0bcabedd mov dword [0x405d84a0], 0x26 | |
0bcabee8 mov ebp, [rdx-0x8] | |
0bcabeeb mov ebx, [rbp+0x8] | |
0bcabeee mov r15d, [rbx+0x1c] | |
0bcabef2 and r15d, 0x798a813c | |
0bcabef9 lea r15d, [r15+r15*2] | |
0bcabefd shl r15d, 0x03 | |
0bcabf01 add r15d, [rbx+0x14] | |
0bcabf05 cmp dword [r15+0xc], -0x05 | |
0bcabf0a jnz 0x0bcabf1a | |
0bcabf0c cmp dword [r15+0x8], 0x405daf18 | |
0bcabf14 jz 0x0bca0010 ->0 | |
0bcabf1a mov r15d, [r15+0x10] | |
0bcabf1e test r15d, r15d | |
0bcabf21 jnz 0x0bcabf05 | |
0bcabf23 mov r15d, 0x405d8420 | |
0bcabf29 mov ebx, [rbx+0x10] | |
0bcabf2c test ebx, ebx | |
0bcabf2e jz 0x0bca0010 ->0 | |
0bcabf34 cmp dword [rbx+0x1c], +0x01 | |
0bcabf38 jnz 0x0bca0010 ->0 | |
0bcabf3e mov ebx, [rbx+0x14] | |
0bcabf41 mov rdi, 0xfffffffb405da430 | |
0bcabf4b cmp rdi, [rbx+0x20] | |
0bcabf4f jnz 0x0bca0010 ->0 | |
0bcabf55 cmp dword [rbx+0x1c], -0x0c | |
0bcabf59 jnz 0x0bca0010 ->0 | |
0bcabf5f mov ebx, [rbx+0x18] | |
0bcabf62 cmp dword [rbx+0x1c], +0x3f | |
0bcabf66 jnz 0x0bca0010 ->0 | |
0bcabf6c mov ebx, [rbx+0x14] | |
0bcabf6f mov rdi, 0xfffffffb405daf18 | |
0bcabf79 cmp rdi, [rbx+0x5a8] | |
0bcabf80 jnz 0x0bca0010 ->0 | |
0bcabf86 cmp dword [rbx+0x5a4], -0x09 | |
0bcabf8d jnz 0x0bca0010 ->0 | |
0bcabf93 cmp dword [rdx+0xc], -0x0c | |
0bcabf97 jnz 0x0bca0010 ->0 | |
0bcabf9d mov r15d, [rdx+0x8] | |
0bcabfa1 cmp dword [rbx+0x5a0], 0x405dae80 | |
0bcabfab jnz 0x0bca0010 ->0 | |
0bcabfb1 cmp ebp, 0x405f6578 | |
0bcabfb7 jnz 0x0bca0010 ->0 | |
0bcabfbd cmp dword [rdx+0x4], -0x0c | |
0bcabfc1 jnz 0x0bca0010 ->0 | |
0bcabfc7 mov ebp, [rdx] | |
0bcabfc9 cmp dword [rbp+0x18], +0x01 | |
0bcabfcd jbe 0x0bca0010 ->0 | |
0bcabfd3 mov ebp, [rbp+0x8] | |
0bcabfd6 cmp dword [rbp+0xc], -0x0c | |
0bcabfda jnz 0x0bca0010 ->0 | |
0bcabfe0 mov r14d, [rbp+0x8] | |
0bcabfe4 cmp dword [0x40b3fa3c], -0x09 | |
0bcabfec jnz 0x0bca0010 ->0 | |
0bcabff2 cmp dword [0x40b3fa38], 0x40b3fa78 | |
0bcabffd jnz 0x0bca0010 ->0 | |
0bcac003 cmp dword [0x40b3faac], -0x0c | |
0bcac00b jnz 0x0bca0010 ->0 | |
0bcac011 mov ebx, [0x40b3faa8] | |
0bcac018 lea ebp, [r15-0x4c11db7] | |
0bcac01f mov edi, r15d | |
0bcac022 xor edi, ebp | |
0bcac024 rol ebp, 0x0e | |
0bcac027 sub edi, ebp | |
0bcac029 rol ebp, 0x05 | |
0bcac02c xor ebp, edi | |
0bcac02e rol edi, 0x0d | |
0bcac031 sub ebp, edi | |
0bcac033 and ebp, [rbx+0x1c] | |
0bcac036 lea ebp, [rbp+rbp*2+0x0] | |
0bcac03a shl ebp, 0x03 | |
0bcac03d add ebp, [rbx+0x14] | |
0bcac040 cmp dword [rbp+0xc], -0x0c | |
0bcac044 jnz 0x0bcac04c | |
0bcac046 cmp r15d, [rbp+0x8] | |
0bcac04a jz 0x0bcac058 | |
0bcac04c mov ebp, [rbp+0x10] | |
0bcac04f test ebp, ebp | |
0bcac051 jnz 0x0bcac040 | |
0bcac053 mov ebp, 0x405d8420 | |
0bcac058 cmp dword [rbp+0x4], -0x05 | |
0bcac05c jnz 0x0bca0010 ->0 | |
0bcac062 mov r15d, [rbp+0x0] | |
0bcac066 cmp dword [rdx+0x14], -0x0c | |
0bcac06a jnz 0x0bca0014 ->1 | |
0bcac070 mov ebx, [rdx+0x10] | |
0bcac073 mov ebp, [r14+0x1c] | |
0bcac077 and ebp, [r15+0x8] | |
0bcac07b lea ebp, [rbp+rbp*2+0x0] | |
0bcac07f shl ebp, 0x03 | |
0bcac082 add ebp, [r14+0x14] | |
0bcac086 cmp dword [rbp+0xc], -0x05 | |
0bcac08a jnz 0x0bcac092 | |
0bcac08c cmp r15d, [rbp+0x8] | |
0bcac090 jz 0x0bcac09f | |
0bcac092 mov ebp, [rbp+0x10] | |
0bcac095 test ebp, ebp | |
0bcac097 jnz 0x0bcac086 | |
0bcac099 jz 0x0bca0014 ->1 | |
0bcac09f cmp dword [r14+0x10], +0x00 | |
0bcac0a4 jnz 0x0bca0014 ->1 | |
0bcac0aa mov dword [rbp+0x4], 0xfffffff4 | |
0bcac0b1 mov [rbp+0x0], ebx | |
0bcac0b4 test byte [r14+0x4], 0x4 | |
0bcac0b9 jz 0x0bcac0d3 | |
0bcac0bb and byte [r14+0x4], 0xfb | |
0bcac0c0 mov edi, [0x405d83f4] | |
0bcac0c7 mov [0x405d83f4], r14d | |
0bcac0cf mov [r14+0xc], edi | |
0bcac0d3 mov byte [r14+0x6], 0x0 | |
0bcac0d8 cmp dword [rbx+0x1c], +0x1f | |
0bcac0dc jnz 0x0bca0018 ->2 | |
0bcac0e2 mov r15d, [rbx+0x14] | |
0bcac0e6 mov rdi, 0xfffffffb40b4d200 | |
0bcac0f0 cmp rdi, [r15+0x230] | |
0bcac0f7 jnz 0x0bca0018 ->2 | |
0bcac0fd cmp dword [r15+0x22c], -0x09 | |
0bcac105 jnz 0x0bca0018 ->2 | |
0bcac10b mov ebp, [r15+0x228] | |
0bcac112 cmp dword [rbp+0x10], 0x40b4ad00 | |
0bcac119 jnz 0x0bca0018 ->2 | |
0bcac11f mov rdi, 0xfffffffb405de540 | |
0bcac129 cmp rdi, [r15+0x218] | |
0bcac130 jnz 0x0bca0018 ->2 | |
0bcac136 cmp dword [r15+0x214], -0x09 | |
0bcac13e jnz 0x0bca0018 ->2 | |
0bcac144 mov r13d, [r15+0x210] | |
0bcac14b cmp dword [r13+0x10], 0x40bdcfd8 | |
0bcac153 jnz 0x0bca0018 ->2 | |
0bcac159 mov rdi, 0xfffffffb40bdc7b8 | |
0bcac163 cmp rdi, [r15+0x2d8] | |
0bcac16a jnz 0x0bca0018 ->2 | |
0bcac170 cmp dword [r15+0x2d4], 0xfffeffff | |
0bcac17b jnb 0x0bca0018 ->2 | |
0bcac181 mov rdi, 0xfffffffb405de588 | |
0bcac18b cmp rdi, [r15+0x188] | |
0bcac192 jnz 0x0bca0018 ->2 | |
0bcac198 cmp dword [r15+0x184], -0x09 | |
0bcac1a0 jnz 0x0bca0018 ->2 | |
0bcac1a6 mov r13d, [r15+0x180] | |
0bcac1ad cmp dword [r13+0x10], 0x40bdc8b0 | |
0bcac1b5 jnz 0x0bca0018 ->2 | |
0bcac1bb mov rdi, 0xfffffffb405e7640 | |
0bcac1c5 cmp rdi, [r15+0x1b8] | |
0bcac1cc jnz 0x0bca0018 ->2 | |
0bcac1d2 cmp dword [r15+0x1b4], 0xfffeffff | |
0bcac1dd jnb 0x0bca0018 ->2 | |
0bcac1e3 movsd xmm7, [r15+0x1b0] | |
0bcac1ec ucomisd xmm7, [r15+0x2d0] | |
0bcac1f5 jpe 0x0bcac1fd | |
0bcac1f7 jz 0x0bca001c ->3 | |
0bcac1fd mov eax, [0x405d84ac] | |
0bcac204 mov eax, [rax+0x20] | |
0bcac207 sub eax, edx | |
0bcac209 cmp eax, +0x30 | |
0bcac20c jb 0x0bca0020 ->4 | |
0bcac212 mov dword [rdx-0x8], 0x405f6578 | |
0bcac219 xor eax, eax | |
0bcac21b mov ebx, 0x40bdfca8 | |
0bcac220 mov r14d, 0x405d8f78 | |
0bcac226 jmp 0x0041d9f8 | |
---- TRACE 38 stop -> return | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 39 start 23/0 optimize.lua:128 | |
---- TRACE 39 IR | |
---- TRACE 39 mcode 29 | |
0bcabeb9 mov dword [0x405d84a0], 0x27 | |
0bcabec4 xor eax, eax | |
0bcabec6 mov ebx, 0x40bdef84 | |
0bcabecb mov r14d, 0x405d8f78 | |
0bcabed1 jmp 0x0041d9f8 | |
---- TRACE 39 stop -> interpreter | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 40 start optimize.lua:182 | |
0305 UCLO 0 => 0306 | |
---- TRACE 40 abort optimize.lua:183 -- leaving loop in root trace | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 40 start optimize.lua:187 | |
0001 TGETB 3 0 1 | |
0002 ISNES 3 0 ; "not" | |
0003 JMP 4 => 0010 | |
0010 ISNES 3 1 ; "true" | |
0011 JMP 4 => 0014 | |
0014 ISNES 3 2 ; "false" | |
0015 JMP 4 => 0018 | |
0018 ISNES 3 3 ; "fail" | |
0019 JMP 4 => 0022 | |
0022 TGETB 4 1 1 | |
0023 ISNES 4 1 ; "true" | |
0024 JMP 4 => 0030 | |
0025 TGETB 4 2 1 | |
0026 ISNES 4 2 ; "false" | |
0027 JMP 4 => 0030 | |
0030 ISNES 3 4 ; "if" | |
0031 JMP 4 => 0142 | |
0142 TGETB 4 2 1 | |
0143 ISNES 4 4 ; "if" | |
0144 JMP 4 => 0167 | |
0145 UGET 4 1 ; cfkey | |
0146 MOV 5 1 | |
0147 CALL 4 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0005 . UGET 2 1 ; f | |
0006 . MOV 3 0 | |
0007 . CALL 2 2 2 | |
0000 . . FUNCF 10 ; optimize.lua:66 | |
0001 . . GGET 1 0 ; "type" | |
0002 . . MOV 2 0 | |
0003 . . CALL 1 2 2 | |
0000 . . . FUNCC ; type | |
0004 . . ISNES 1 1 ; "table" | |
0005 . . JMP 1 => 0027 | |
0006 . . KSTR 1 2 ; "table(" | |
0007 . . UGET 2 0 ; cfkey | |
0008 . . TGETB 3 0 1 | |
0009 . . CALL 2 2 2 | |
0000 . . . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . . . UGET 1 0 ; cache | |
0002 . . . TGETV 1 1 0 | |
0003 . . . ISNEP 1 0 | |
0004 . . . JMP 2 => 0011 | |
0011 . . . RET1 1 2 | |
0010 . . CAT 1 1 2 | |
---- TRACE 40 abort optimize.lua:68 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 40 start optimize.lua:66 | |
0001 GGET 1 0 ; "type" | |
0002 MOV 2 0 | |
0003 CALL 1 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 1 1 ; "table" | |
0005 JMP 1 => 0027 | |
0006 KSTR 1 2 ; "table(" | |
0007 UGET 2 0 ; cfkey | |
0008 TGETB 3 0 1 | |
0009 CALL 2 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0011 . RET1 1 2 | |
0010 CAT 1 1 2 | |
---- TRACE 40 abort optimize.lua:68 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 40 start optimize.lua:606 | |
0001 TGETB 3 0 1 | |
0002 ISNES 3 0 ; "true" | |
0003 JMP 3 => 0005 | |
0004 RET1 1 2 | |
---- TRACE 40 IR | |
0001 > <span class="irt_tab">tab</span> SLOAD #1 T | |
0002 <span class="irt_int">int</span> FLOAD 0001 tab.asize | |
0003 > <span class="irt_int">int</span> ABC 0002 <span class="irt_int">+1 </span> | |
0004 <span class="irt_p32">p32</span> FLOAD 0001 tab.array | |
0005 <span class="irt_p32">p32</span> AREF 0004 <span class="irt_int">+1 </span> | |
0006 > <span class="irt_str">str</span> ALOAD 0005 | |
0007 > <span class="irt_str">str</span> EQ 0006 <span class="irt_str">"true"</span> | |
0008 > <span class="irt_nil">nil</span> SLOAD #2 T | |
---- TRACE 40 mcode 94 | |
0bcabe54 mov dword [0x405d84a0], 0x28 | |
0bcabe5f cmp dword [rdx+0x4], -0x0c | |
0bcabe63 jnz 0x0bca0010 ->0 | |
0bcabe69 mov ebp, [rdx] | |
0bcabe6b cmp dword [rbp+0x18], +0x01 | |
0bcabe6f jbe 0x0bca0010 ->0 | |
0bcabe75 mov ebp, [rbp+0x8] | |
0bcabe78 cmp dword [rbp+0xc], -0x05 | |
0bcabe7c jnz 0x0bca0010 ->0 | |
0bcabe82 cmp dword [rbp+0x8], 0x405da980 | |
0bcabe89 jnz 0x0bca0014 ->1 | |
0bcabe8f cmp dword [rdx+0xc], -0x01 | |
0bcabe93 jnz 0x0bca0018 ->2 | |
0bcabe99 mov dword [rdx+0xc], 0xffffffff | |
0bcabea0 xor eax, eax | |
0bcabea2 mov ebx, 0x40b4ba58 | |
0bcabea7 mov r14d, 0x405d8f78 | |
0bcabead jmp 0x0041d9f8 | |
---- TRACE 40 stop -> return | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 41 start 40/1 optimize.lua:608 | |
0005 TGETB 3 0 1 | |
0006 ISNES 3 1 ; "false" | |
0007 JMP 3 => 0009 | |
0009 TGETB 3 0 1 | |
0010 ISNES 3 2 ; "fail" | |
0011 JMP 3 => 0014 | |
0014 KPRI 3 0 | |
0015 RET1 3 2 | |
0016 ISNES 0 0 ; "REJECT" | |
0017 JMP 0 => 0021 | |
0021 UGET 0 1 ; t | |
0022 TGETB 0 0 1 | |
0023 ISNES 0 1 ; "true" | |
0024 JMP 0 => 0027 | |
0025 UGET 0 5 ; f_min_f | |
0026 USETV 8 0 ; t_min_f | |
0027 UGET 0 6 ; f | |
0028 TGETB 0 0 1 | |
0029 ISNES 0 1 ; "true" | |
0030 JMP 0 => 0033 | |
0033 UGET 0 1 ; t | |
0034 TGETB 0 0 1 | |
0035 ISNES 0 2 ; "false" | |
0036 JMP 0 => 0039 | |
0039 UGET 0 6 ; f | |
0040 TGETB 0 0 1 | |
0041 ISNES 0 2 ; "false" | |
0042 JMP 0 => 0045 | |
0045 GGET 0 3 ; "math" | |
0046 TGETS 0 0 4 ; "min" | |
0047 UGET 1 7 ; t_min_t | |
0048 UGET 2 4 ; f_min_t | |
0049 CALL 0 2 3 | |
0000 . FUNCC ; math.min | |
0050 GGET 1 3 ; "math" | |
0051 TGETS 1 1 4 ; "min" | |
0052 UGET 2 4 ; f_min_t | |
0053 UGET 3 4 ; f_min_t | |
0054 CALL 1 0 3 | |
0000 . FUNCC ; math.min | |
0055 RETM 0 1 | |
0062 MOV 21 3 | |
0063 MOV 22 19 | |
0064 MOV 23 20 | |
0065 TNEW 24 5 | |
0066 TSETB 5 24 1 | |
0067 TSETB 9 24 2 | |
0068 TSETB 10 24 3 | |
0069 TSETB 11 24 4 | |
0070 UCLO 0 => 0071 | |
---- TRACE 41 abort optimize.lua:643 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 41 start 40/1 optimize.lua:608 | |
0005 TGETB 3 0 1 | |
0006 ISNES 3 1 ; "false" | |
0007 JMP 3 => 0009 | |
0009 TGETB 3 0 1 | |
0010 ISNES 3 2 ; "fail" | |
0011 JMP 3 => 0014 | |
0014 KPRI 3 0 | |
0015 RET1 3 2 | |
0038 CALLM 9 2 2 | |
0000 . FUNCF 25 ; optimize.lua:617 | |
0001 . FNEW 3 0 ; optimize.lua:618 | |
---- TRACE 41 abort optimize.lua:618 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 41 start 40/1 optimize.lua:608 | |
0005 TGETB 3 0 1 | |
0006 ISNES 3 1 ; "false" | |
0007 JMP 3 => 0009 | |
0009 TGETB 3 0 1 | |
0010 ISNES 3 2 ; "fail" | |
0011 JMP 3 => 0014 | |
0014 KPRI 3 0 | |
0015 RET1 3 2 | |
0038 CALLM 9 2 2 | |
0000 . FUNCF 25 ; optimize.lua:617 | |
0001 . FNEW 3 0 ; optimize.lua:618 | |
---- TRACE 41 abort optimize.lua:618 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 41 start 40/1 optimize.lua:608 | |
0005 TGETB 3 0 1 | |
0006 ISNES 3 1 ; "false" | |
0007 JMP 3 => 0009 | |
0009 TGETB 3 0 1 | |
0010 ISNES 3 2 ; "fail" | |
0011 JMP 3 => 0014 | |
0014 KPRI 3 0 | |
0015 RET1 3 2 | |
0033 UGET 12 1 ; eta | |
0034 MOV 13 8 | |
0035 MOV 14 1 | |
0036 MOV 15 2 | |
0037 CALL 12 0 4 | |
0000 . JFUNCF 4 40 ; optimize.lua:606 | |
0001 . TGETB 3 0 1 | |
0002 . ISNES 3 0 ; "true" | |
0003 . JMP 3 => 0005 | |
0005 . TGETB 3 0 1 | |
0006 . ISNES 3 1 ; "false" | |
0007 . JMP 3 => 0009 | |
0008 . RET1 2 2 | |
0038 CALLM 9 2 2 | |
0000 . FUNCF 25 ; optimize.lua:617 | |
0001 . FNEW 3 0 ; optimize.lua:618 | |
---- TRACE 41 abort optimize.lua:618 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 41 start 40/1 optimize.lua:608 | |
---- TRACE 41 IR | |
---- TRACE 41 mcode 29 | |
0bcabe30 mov dword [0x405d84a0], 0x29 | |
0bcabe3b xor eax, eax | |
0bcabe3d mov ebx, 0x40b4ba5c | |
0bcabe42 mov r14d, 0x405d8f78 | |
0bcabe48 jmp 0x0041d9f8 | |
---- TRACE 41 stop -> interpreter | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 42 start optimize.lua:652 | |
0001 TGETB 2 0 1 | |
0002 TGETB 3 0 2 | |
0003 TGETB 4 0 3 | |
0004 ISGE 1 2 | |
0005 JMP 5 => 0026 | |
0026 TGETB 5 4 1 | |
0027 ISNES 5 5 ; "if" | |
0028 JMP 6 => 0065 | |
0065 RET1 4 2 | |
---- TRACE 42 IR | |
0001 > <span class="irt_tab">tab</span> SLOAD #1 T | |
0002 <span class="irt_int">int</span> FLOAD 0001 tab.asize | |
0003 > <span class="irt_int">int</span> ABC 0002 <span class="irt_int">+3 </span> | |
0004 <span class="irt_p32">p32</span> FLOAD 0001 tab.array | |
0005 <span class="irt_p32">p32</span> AREF 0004 <span class="irt_int">+1 </span> | |
0006 > <span class="irt_num">num</span> ALOAD 0005 | |
0007 <span class="irt_p32">p32</span> AREF 0004 <span class="irt_int">+2 </span> | |
0008 > <span class="irt_num">num</span> ALOAD 0007 | |
0009 <span class="irt_p32">p32</span> AREF 0004 <span class="irt_int">+3 </span> | |
0010 > <span class="irt_tab">tab</span> ALOAD 0009 | |
0011 > <span class="irt_num">num</span> SLOAD #2 T | |
0012 > <span class="irt_num">num</span> UGE 0011 0006 | |
0013 <span class="irt_int">int</span> FLOAD 0010 tab.asize | |
0014 > <span class="irt_int">int</span> ABC 0013 <span class="irt_int">+1 </span> | |
0015 <span class="irt_p32">p32</span> FLOAD 0010 tab.array | |
0016 <span class="irt_p32">p32</span> AREF 0015 <span class="irt_int">+1 </span> | |
0017 > <span class="irt_str">str</span> ALOAD 0016 | |
0018 > <span class="irt_str">str</span> NE 0017 <span class="irt_str">"if"</span> | |
---- TRACE 42 mcode 175 | |
0bcabd7a mov dword [0x405d84a0], 0x2a | |
0bcabd85 cmp dword [rdx+0x4], -0x0c | |
0bcabd89 jnz 0x0bca0010 ->0 | |
0bcabd8f mov ebp, [rdx] | |
0bcabd91 cmp dword [rbp+0x18], +0x03 | |
0bcabd95 jbe 0x0bca0010 ->0 | |
0bcabd9b mov ebp, [rbp+0x8] | |
0bcabd9e cmp dword [rbp+0xc], 0xfffeffff | |
0bcabda5 jnb 0x0bca0010 ->0 | |
0bcabdab movsd xmm7, [rbp+0x8] | |
0bcabdb0 cmp dword [rbp+0x14], 0xfffeffff | |
0bcabdb7 jnb 0x0bca0010 ->0 | |
0bcabdbd movsd xmm6, [rbp+0x10] | |
0bcabdc2 cmp dword [rbp+0x1c], -0x0c | |
0bcabdc6 jnz 0x0bca0010 ->0 | |
0bcabdcc mov ebp, [rbp+0x18] | |
0bcabdcf cmp dword [rdx+0xc], 0xfffeffff | |
0bcabdd6 jnb 0x0bca0010 ->0 | |
0bcabddc ucomisd xmm7, [rdx+0x8] | |
0bcabde1 ja 0x0bca0014 ->1 | |
0bcabde7 cmp dword [rbp+0x18], +0x01 | |
0bcabdeb jbe 0x0bca0018 ->2 | |
0bcabdf1 mov ebx, [rbp+0x8] | |
0bcabdf4 cmp dword [rbx+0xc], -0x05 | |
0bcabdf8 jnz 0x0bca0018 ->2 | |
0bcabdfe mov ebx, [rbx+0x8] | |
0bcabe01 cmp ebx, 0x405da860 | |
0bcabe07 jz 0x0bca001c ->3 | |
0bcabe0d mov dword [rdx+0x24], 0xfffffff4 | |
0bcabe14 mov [rdx+0x20], ebp | |
0bcabe17 xor eax, eax | |
0bcabe19 mov ebx, 0x40b51d24 | |
0bcabe1e mov r14d, 0x405d8f78 | |
0bcabe24 jmp 0x0041d9f8 | |
---- TRACE 42 stop -> return | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 43 start optimize.lua:124 | |
0001 GGET 1 0 ; "type" | |
0002 MOV 2 0 | |
0003 CALL 1 2 2 | |
0000 . FUNCC ; type | |
0004 ISEQS 1 1 ; "table" | |
0005 JMP 1 => 0007 | |
0007 TGETB 1 0 1 | |
0008 FNEW 2 2 ; optimize.lua:127 | |
---- TRACE 43 abort optimize.lua:133 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 43 start 38/0 optimize.lua:409 | |
0001 GGET 3 0 ; "type" | |
0002 MOV 4 1 | |
0003 CALL 3 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 3 1 ; "number" | |
0005 JMP 3 => 0007 | |
0007 UGET 3 0 ; car | |
0008 MOV 4 0 | |
0009 CALL 3 2 2 | |
0000 . JFUNCF 2 26 ; optimize.lua:394 | |
0001 . TGETB 1 0 1 | |
0002 . RET1 1 2 | |
0010 UGET 4 1 ; cfkey | |
0011 MOV 5 1 | |
0012 CALL 4 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0011 . RET1 1 2 | |
0013 TSETV 2 3 4 | |
0014 MOV 4 2 | |
0015 TGETS 3 2 2 ; "fold" | |
0016 CALL 3 2 2 | |
0000 . JFUNCF 4 35 ; optimize.lua:284 | |
0001 . MOV 2 0 | |
0002 . TGETS 1 0 0 ; "min" | |
0003 . CALL 1 2 2 | |
0000 . . JFUNCF 2 28 ; optimize.lua:281 | |
0001 . . TGETS 1 0 0 ; "min_" | |
0002 . . RET1 1 2 | |
0004 . MOV 3 0 | |
0005 . TGETS 2 0 1 ; "max" | |
0006 . CALL 2 2 2 | |
0000 . . FUNCF 2 ; optimize.lua:282 | |
0001 . . TGETS 1 0 0 ; "max_" | |
0002 . . RET1 1 2 | |
0007 . ISNEV 1 2 | |
0008 . JMP 1 => 0012 | |
0012 . RET0 0 1 | |
0017 ISF 3 | |
0018 JMP 4 => 0022 | |
0022 RET1 1 2 | |
0114 UGET 16 8 ; restrict | |
0115 MOV 17 1 | |
0116 MOV 18 8 | |
0117 MOV 19 14 | |
0118 CALL 16 1 4 | |
0000 . FUNCF 9 ; optimize.lua:414 | |
0001 . UGET 3 0 ; define | |
0002 . MOV 4 0 | |
0003 . MOV 5 1 | |
0004 . UGET 6 1 ; lookup | |
0005 . MOV 7 0 | |
0006 . MOV 8 1 | |
0007 . CALL 6 2 3 | |
0000 . . FUNCF 6 ; optimize.lua:398 | |
0001 . . GGET 2 0 ; "type" | |
0002 . . MOV 3 1 | |
0003 . . CALL 2 2 2 | |
0000 . . . FUNCC ; type | |
0004 . . ISNES 2 1 ; "number" | |
0005 . . JMP 2 => 0010 | |
0006 . . UGET 2 0 ; Range | |
0007 . . MOV 3 1 | |
0008 . . MOV 4 1 | |
0009 . . CALLT 2 3 | |
0000 . . FUNCF 4 ; optimize.lua:276 | |
0001 . . ISGE 1 0 | |
0002 . . JMP 2 => 0006 | |
0006 . . TDUP 2 0 | |
0007 . . TSETS 0 2 1 ; "min_" | |
0008 . . TSETS 1 2 2 ; "max_" | |
0009 . . FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 43 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 43 start 38/0 optimize.lua:409 | |
0001 GGET 3 0 ; "type" | |
0002 MOV 4 1 | |
0003 CALL 3 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 3 1 ; "number" | |
0005 JMP 3 => 0007 | |
0006 RET1 1 2 | |
0119 UGET 16 8 ; restrict | |
0120 MOV 17 2 | |
0121 MOV 18 8 | |
0122 MOV 19 15 | |
0123 CALL 16 1 4 | |
0000 . FUNCF 9 ; optimize.lua:414 | |
0001 . UGET 3 0 ; define | |
0002 . MOV 4 0 | |
0003 . MOV 5 1 | |
0004 . UGET 6 1 ; lookup | |
0005 . MOV 7 0 | |
0006 . MOV 8 1 | |
0007 . CALL 6 2 3 | |
0000 . . FUNCF 6 ; optimize.lua:398 | |
0001 . . GGET 2 0 ; "type" | |
0002 . . MOV 3 1 | |
0003 . . CALL 2 2 2 | |
0000 . . . FUNCC ; type | |
0004 . . ISNES 2 1 ; "number" | |
0005 . . JMP 2 => 0010 | |
0006 . . UGET 2 0 ; Range | |
0007 . . MOV 3 1 | |
0008 . . MOV 4 1 | |
0009 . . CALLT 2 3 | |
0000 . . FUNCF 4 ; optimize.lua:276 | |
0001 . . ISGE 1 0 | |
0002 . . JMP 2 => 0006 | |
0006 . . TDUP 2 0 | |
0007 . . TSETS 0 2 1 ; "min_" | |
0008 . . TSETS 1 2 2 ; "max_" | |
0009 . . FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 43 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 43 start 38/0 optimize.lua:409 | |
0001 GGET 3 0 ; "type" | |
0002 MOV 4 1 | |
0003 CALL 3 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 3 1 ; "number" | |
0005 JMP 3 => 0007 | |
0006 RET1 1 2 | |
0124 TNEW 16 4 | |
0125 TSETB 5 16 1 | |
0126 TSETB 7 16 2 | |
0127 TSETB 8 16 3 | |
0128 UCLO 0 => 0129 | |
---- TRACE 43 abort optimize.lua:521 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 43 start 34/0 optimize.lua:397 | |
0001 UGET 1 0 ; cons | |
0002 TNEW 2 0 | |
0003 MOV 3 0 | |
0004 CALLT 1 3 | |
0000 FUNCF 3 ; optimize.lua:393 | |
0001 TNEW 2 3 | |
0002 TSETB 0 2 1 | |
0003 TSETB 1 2 2 | |
0004 RET1 2 2 | |
0163 UGET 10 1 ; push | |
0164 MOV 11 1 | |
0165 CALL 10 2 2 | |
0000 . JFUNCF 4 34 ; optimize.lua:397 | |
0001 . UGET 1 0 ; cons | |
0002 . TNEW 2 0 | |
0003 . MOV 3 0 | |
0004 . CALLT 1 3 | |
0000 . FUNCF 3 ; optimize.lua:393 | |
0001 . TNEW 2 3 | |
0002 . TSETB 0 2 1 | |
0003 . TSETB 1 2 2 | |
0004 . RET1 2 2 | |
0166 UGET 11 9 ; eta | |
0167 MOV 12 7 | |
0168 MOV 13 3 | |
0169 MOV 14 4 | |
0170 CALL 11 2 4 | |
0000 . FUNCF 4 ; optimize.lua:427 | |
0001 . TGETB 3 0 1 | |
0002 . ISNES 3 0 ; "true" | |
0003 . JMP 3 => 0005 | |
0005 . TGETB 3 0 1 | |
0006 . ISNES 3 1 ; "false" | |
0007 . JMP 3 => 0009 | |
0009 . TGETB 3 0 1 | |
0010 . ISNES 3 2 ; "fail" | |
0011 . JMP 3 => 0014 | |
0014 . KPRI 3 0 | |
0015 . RET1 3 2 | |
0171 UGET 12 9 ; eta | |
0172 MOV 13 8 | |
0173 MOV 14 3 | |
0174 MOV 15 4 | |
0175 CALL 12 2 4 | |
0000 . FUNCF 4 ; optimize.lua:427 | |
0001 . TGETB 3 0 1 | |
0002 . ISNES 3 0 ; "true" | |
0003 . JMP 3 => 0005 | |
0005 . TGETB 3 0 1 | |
0006 . ISNES 3 1 ; "false" | |
0007 . JMP 3 => 0009 | |
0009 . TGETB 3 0 1 | |
0010 . ISNES 3 2 ; "fail" | |
0011 . JMP 3 => 0014 | |
0014 . KPRI 3 0 | |
0015 . RET1 3 2 | |
0176 UGET 13 2 ; visit | |
0177 MOV 14 6 | |
0178 MOV 15 9 | |
0179 MOV 16 10 | |
0180 MOV 17 11 | |
0181 MOV 18 12 | |
0182 CALL 13 2 6 | |
0000 . FUNCF 25 ; optimize.lua:488 | |
0001 . GGET 5 0 ; "type" | |
0002 . MOV 6 0 | |
0003 . CALL 5 2 2 | |
0000 . . FUNCC ; type | |
0004 . ISEQS 5 1 ; "table" | |
0005 . JMP 5 => 0007 | |
0007 . TGETB 5 0 1 | |
0008 . UGET 6 0 ; relops | |
0009 . TGETV 6 6 5 | |
0010 . ISF 6 | |
0011 . JMP 7 => 0131 | |
0012 . UGET 6 1 ; push | |
0013 . MOV 7 1 | |
0014 . CALL 6 2 2 | |
0000 . . JFUNCF 4 34 ; optimize.lua:397 | |
0001 . . UGET 1 0 ; cons | |
0002 . . TNEW 2 0 | |
0003 . . MOV 3 0 | |
0004 . . CALLT 1 3 | |
0000 . . FUNCF 3 ; optimize.lua:393 | |
0001 . . TNEW 2 3 | |
0002 . . TSETB 0 2 1 | |
0003 . . TSETB 1 2 2 | |
0004 . . RET1 2 2 | |
0015 . UGET 7 2 ; visit | |
0016 . TGETB 8 0 2 | |
0017 . MOV 9 6 | |
0018 . CALL 7 2 3 | |
0000 . . FUNCF 25 ; optimize.lua:488 | |
0001 . . GGET 5 0 ; "type" | |
0002 . . MOV 6 0 | |
0003 . . CALL 5 2 2 | |
0000 . . . FUNCC ; type | |
0004 . . ISEQS 5 1 ; "table" | |
0005 . . JMP 5 => 0007 | |
0007 . . TGETB 5 0 1 | |
0008 . . UGET 6 0 ; relops | |
0009 . . TGETV 6 6 5 | |
0010 . . ISF 6 | |
0011 . . JMP 7 => 0131 | |
0131 . . ISEQS 5 11 ; "false" | |
0132 . . JMP 6 => 0137 | |
0133 . . ISEQS 5 12 ; "true" | |
0134 . . JMP 6 => 0137 | |
0135 . . ISNES 5 13 ; "fail" | |
0136 . . JMP 6 => 0140 | |
0140 . . ISNES 5 14 ; "not" | |
0141 . . JMP 6 => 0155 | |
0155 . . ISNES 5 15 ; "if" | |
0156 . . JMP 6 => 0298 | |
0298 . . MOV 6 1 | |
0299 . . ISNES 5 17 ; "[]" | |
0300 . . JMP 7 => 0338 | |
0301 . . UGET 7 2 ; visit | |
0302 . . TGETB 8 0 2 | |
0303 . . MOV 9 6 | |
0304 . . CALL 7 2 3 | |
0000 . . . FUNCF 25 ; optimize.lua:488 | |
0001 . . . GGET 5 0 ; "type" | |
0002 . . . MOV 6 0 | |
0003 . . . CALL 5 2 2 | |
0000 . . . . FUNCC ; type | |
0004 . . . ISEQS 5 1 ; "table" | |
0005 . . . JMP 5 => 0007 | |
0006 . . . UCLO 0 => 0470 | |
---- TRACE 43 abort optimize.lua:489 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 43 start 38/0 optimize.lua:409 | |
0001 GGET 3 0 ; "type" | |
0002 MOV 4 1 | |
0003 CALL 3 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 3 1 ; "number" | |
0005 JMP 3 => 0007 | |
0007 UGET 3 0 ; car | |
0008 MOV 4 0 | |
0009 CALL 3 2 2 | |
0000 . JFUNCF 2 26 ; optimize.lua:394 | |
0001 . TGETB 1 0 1 | |
0002 . RET1 1 2 | |
0010 UGET 4 1 ; cfkey | |
0011 MOV 5 1 | |
0012 CALL 4 2 2 | |
0000 . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . UGET 1 0 ; cache | |
0002 . TGETV 1 1 0 | |
0003 . ISNEP 1 0 | |
0004 . JMP 2 => 0011 | |
0011 . RET1 1 2 | |
0013 TSETV 2 3 4 | |
0014 MOV 4 2 | |
0015 TGETS 3 2 2 ; "fold" | |
0016 CALL 3 2 2 | |
0000 . JFUNCF 4 35 ; optimize.lua:284 | |
0001 . MOV 2 0 | |
0002 . TGETS 1 0 0 ; "min" | |
0003 . CALL 1 2 2 | |
0000 . . JFUNCF 2 28 ; optimize.lua:281 | |
0001 . . TGETS 1 0 0 ; "min_" | |
0002 . . RET1 1 2 | |
0004 . MOV 3 0 | |
0005 . TGETS 2 0 1 ; "max" | |
0006 . CALL 2 2 2 | |
0000 . . FUNCF 2 ; optimize.lua:282 | |
0001 . . TGETS 1 0 0 ; "max_" | |
0002 . . RET1 1 2 | |
0007 . ISNEV 1 2 | |
0008 . JMP 1 => 0012 | |
0012 . RET0 0 1 | |
0017 ISF 3 | |
0018 JMP 4 => 0022 | |
0022 RET1 1 2 | |
0019 UGET 8 2 ; visit | |
0020 TGETB 9 0 3 | |
0021 MOV 10 6 | |
0022 CALL 8 2 3 | |
0000 . FUNCF 25 ; optimize.lua:488 | |
0001 . GGET 5 0 ; "type" | |
0002 . MOV 6 0 | |
0003 . CALL 5 2 2 | |
0000 . . FUNCC ; type | |
0004 . ISEQS 5 1 ; "table" | |
0005 . JMP 5 => 0007 | |
0006 . UCLO 0 => 0470 | |
---- TRACE 43 abort optimize.lua:489 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 43 start 38/0 optimize.lua:409 | |
---- TRACE 43 IR | |
---- TRACE 43 mcode 29 | |
0bcabd56 mov dword [0x405d84a0], 0x2b | |
0bcabd61 xor eax, eax | |
0bcabd63 mov ebx, 0x40bdfc54 | |
0bcabd68 mov r14d, 0x405d8f78 | |
0bcabd6e jmp 0x0041d9f8 | |
---- TRACE 43 stop -> interpreter | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 44 start 34/0 optimize.lua:397 | |
0001 UGET 1 0 ; cons | |
0002 TNEW 2 0 | |
0003 MOV 3 0 | |
0004 CALLT 1 3 | |
0000 FUNCF 3 ; optimize.lua:393 | |
0001 TNEW 2 3 | |
0002 TSETB 0 2 1 | |
0003 TSETB 1 2 2 | |
0004 RET1 2 2 | |
0187 UGET 14 1 ; push | |
0188 MOV 15 9 | |
0189 CALL 14 2 2 | |
0000 . JFUNCF 4 34 ; optimize.lua:397 | |
0001 . UGET 1 0 ; cons | |
0002 . TNEW 2 0 | |
0003 . MOV 3 0 | |
0004 . CALLT 1 3 | |
0000 . FUNCF 3 ; optimize.lua:393 | |
0001 . TNEW 2 3 | |
0002 . TSETB 0 2 1 | |
0003 . TSETB 1 2 2 | |
0004 . RET1 2 2 | |
0190 UGET 15 1 ; push | |
0191 MOV 16 10 | |
0192 CALL 15 2 2 | |
0000 . JFUNCF 4 34 ; optimize.lua:397 | |
0001 . UGET 1 0 ; cons | |
0002 . TNEW 2 0 | |
0003 . MOV 3 0 | |
0004 . CALLT 1 3 | |
0000 . FUNCF 3 ; optimize.lua:393 | |
0001 . TNEW 2 3 | |
0002 . TSETB 0 2 1 | |
0003 . TSETB 1 2 2 | |
0004 . RET1 2 2 | |
0193 UGET 16 1 ; push | |
0194 MOV 17 10 | |
0195 CALL 16 2 2 | |
0000 . JFUNCF 4 34 ; optimize.lua:397 | |
0001 . UGET 1 0 ; cons | |
0002 . TNEW 2 0 | |
0003 . MOV 3 0 | |
0004 . CALLT 1 3 | |
0000 . FUNCF 3 ; optimize.lua:393 | |
0001 . TNEW 2 3 | |
0002 . TSETB 0 2 1 | |
0003 . TSETB 1 2 2 | |
0004 . RET1 2 2 | |
0196 UGET 17 2 ; visit | |
0197 MOV 18 7 | |
0198 MOV 19 13 | |
0199 MOV 20 14 | |
0200 MOV 21 3 | |
0201 MOV 22 4 | |
0202 CALL 17 2 6 | |
0000 . FUNCF 25 ; optimize.lua:488 | |
0001 . GGET 5 0 ; "type" | |
0002 . MOV 6 0 | |
0003 . CALL 5 2 2 | |
0000 . . FUNCC ; type | |
0004 . ISEQS 5 1 ; "table" | |
0005 . JMP 5 => 0007 | |
0007 . TGETB 5 0 1 | |
0008 . UGET 6 0 ; relops | |
0009 . TGETV 6 6 5 | |
0010 . ISF 6 | |
0011 . JMP 7 => 0131 | |
0131 . ISEQS 5 11 ; "false" | |
0132 . JMP 6 => 0137 | |
0133 . ISEQS 5 12 ; "true" | |
0134 . JMP 6 => 0137 | |
0135 . ISNES 5 13 ; "fail" | |
0136 . JMP 6 => 0140 | |
0140 . ISNES 5 14 ; "not" | |
0141 . JMP 6 => 0155 | |
0155 . ISNES 5 15 ; "if" | |
0156 . JMP 6 => 0298 | |
0157 . TGETB 6 0 2 | |
0158 . TGETB 7 0 3 | |
0159 . TGETB 8 0 4 | |
0160 . UGET 9 1 ; push | |
0161 . MOV 10 1 | |
0162 . CALL 9 2 2 | |
0000 . . JFUNCF 4 34 ; optimize.lua:397 | |
0001 . . UGET 1 0 ; cons | |
0002 . . TNEW 2 0 | |
0003 . . MOV 3 0 | |
0004 . . CALLT 1 3 | |
0000 . . FUNCF 3 ; optimize.lua:393 | |
0001 . . TNEW 2 3 | |
0002 . . TSETB 0 2 1 | |
0003 . . TSETB 1 2 2 | |
0004 . . RET1 2 2 | |
0163 . UGET 10 1 ; push | |
0164 . MOV 11 1 | |
0165 . CALL 10 2 2 | |
0000 . . JFUNCF 4 34 ; optimize.lua:397 | |
0001 . . UGET 1 0 ; cons | |
0002 . . TNEW 2 0 | |
0003 . . MOV 3 0 | |
0004 . . CALLT 1 3 | |
0000 . . FUNCF 3 ; optimize.lua:393 | |
0001 . . TNEW 2 3 | |
0002 . . TSETB 0 2 1 | |
0003 . . TSETB 1 2 2 | |
0004 . . RET1 2 2 | |
0166 . UGET 11 9 ; eta | |
0167 . MOV 12 7 | |
0168 . MOV 13 3 | |
0169 . MOV 14 4 | |
0170 . CALL 11 2 4 | |
0000 . . FUNCF 4 ; optimize.lua:427 | |
0001 . . TGETB 3 0 1 | |
0002 . . ISNES 3 0 ; "true" | |
0003 . . JMP 3 => 0005 | |
0005 . . TGETB 3 0 1 | |
0006 . . ISNES 3 1 ; "false" | |
0007 . . JMP 3 => 0009 | |
0009 . . TGETB 3 0 1 | |
0010 . . ISNES 3 2 ; "fail" | |
0011 . . JMP 3 => 0014 | |
0014 . . KPRI 3 0 | |
0015 . . RET1 3 2 | |
0171 . UGET 12 9 ; eta | |
0172 . MOV 13 8 | |
0173 . MOV 14 3 | |
0174 . MOV 15 4 | |
0175 . CALL 12 2 4 | |
0000 . . FUNCF 4 ; optimize.lua:427 | |
0001 . . TGETB 3 0 1 | |
0002 . . ISNES 3 0 ; "true" | |
0003 . . JMP 3 => 0005 | |
0005 . . TGETB 3 0 1 | |
0006 . . ISNES 3 1 ; "false" | |
0007 . . JMP 3 => 0009 | |
0008 . . RET1 2 2 | |
0176 . UGET 13 2 ; visit | |
0177 . MOV 14 6 | |
0178 . MOV 15 9 | |
0179 . MOV 16 10 | |
0180 . MOV 17 11 | |
0181 . MOV 18 12 | |
0182 . CALL 13 2 6 | |
0000 . . FUNCF 25 ; optimize.lua:488 | |
0001 . . GGET 5 0 ; "type" | |
0002 . . MOV 6 0 | |
0003 . . CALL 5 2 2 | |
0000 . . . FUNCC ; type | |
0004 . . ISEQS 5 1 ; "table" | |
0005 . . JMP 5 => 0007 | |
0007 . . TGETB 5 0 1 | |
0008 . . UGET 6 0 ; relops | |
0009 . . TGETV 6 6 5 | |
0010 . . ISF 6 | |
0011 . . JMP 7 => 0131 | |
0131 . . ISEQS 5 11 ; "false" | |
0132 . . JMP 6 => 0137 | |
0133 . . ISEQS 5 12 ; "true" | |
0134 . . JMP 6 => 0137 | |
0135 . . ISNES 5 13 ; "fail" | |
0136 . . JMP 6 => 0140 | |
0140 . . ISNES 5 14 ; "not" | |
0141 . . JMP 6 => 0155 | |
0155 . . ISNES 5 15 ; "if" | |
0156 . . JMP 6 => 0298 | |
0157 . . TGETB 6 0 2 | |
0158 . . TGETB 7 0 3 | |
0159 . . TGETB 8 0 4 | |
0160 . . UGET 9 1 ; push | |
0161 . . MOV 10 1 | |
0162 . . CALL 9 2 2 | |
0000 . . . JFUNCF 4 34 ; optimize.lua:397 | |
0001 . . . UGET 1 0 ; cons | |
0002 . . . TNEW 2 0 | |
0003 . . . MOV 3 0 | |
0004 . . . CALLT 1 3 | |
0000 . . . FUNCF 3 ; optimize.lua:393 | |
0001 . . . TNEW 2 3 | |
0002 . . . TSETB 0 2 1 | |
0003 . . . TSETB 1 2 2 | |
0004 . . . RET1 2 2 | |
0163 . . UGET 10 1 ; push | |
0164 . . MOV 11 1 | |
0165 . . CALL 10 2 2 | |
0000 . . . JFUNCF 4 34 ; optimize.lua:397 | |
0001 . . . UGET 1 0 ; cons | |
0002 . . . TNEW 2 0 | |
0003 . . . MOV 3 0 | |
0004 . . . CALLT 1 3 | |
0000 . . . FUNCF 3 ; optimize.lua:393 | |
0001 . . . TNEW 2 3 | |
0002 . . . TSETB 0 2 1 | |
0003 . . . TSETB 1 2 2 | |
0004 . . . RET1 2 2 | |
0166 . . UGET 11 9 ; eta | |
0167 . . MOV 12 7 | |
0168 . . MOV 13 3 | |
0169 . . MOV 14 4 | |
0170 . . CALL 11 2 4 | |
0000 . . . FUNCF 4 ; optimize.lua:427 | |
0001 . . . TGETB 3 0 1 | |
0002 . . . ISNES 3 0 ; "true" | |
0003 . . . JMP 3 => 0005 | |
0004 . . . RET1 1 2 | |
0171 . . UGET 12 9 ; eta | |
0172 . . MOV 13 8 | |
0173 . . MOV 14 3 | |
0174 . . MOV 15 4 | |
0175 . . CALL 12 2 4 | |
0000 . . . FUNCF 4 ; optimize.lua:427 | |
0001 . . . TGETB 3 0 1 | |
0002 . . . ISNES 3 0 ; "true" | |
0003 . . . JMP 3 => 0005 | |
0005 . . . TGETB 3 0 1 | |
0006 . . . ISNES 3 1 ; "false" | |
0007 . . . JMP 3 => 0009 | |
0009 . . . TGETB 3 0 1 | |
0010 . . . ISNES 3 2 ; "fail" | |
0011 . . . JMP 3 => 0014 | |
0014 . . . KPRI 3 0 | |
0015 . . . RET1 3 2 | |
0176 . . UGET 13 2 ; visit | |
0177 . . MOV 14 6 | |
0178 . . MOV 15 9 | |
0179 . . MOV 16 10 | |
0180 . . MOV 17 11 | |
0181 . . MOV 18 12 | |
0182 . . CALL 13 2 6 | |
0000 . . . FUNCF 25 ; optimize.lua:488 | |
0001 . . . GGET 5 0 ; "type" | |
0002 . . . MOV 6 0 | |
0003 . . . CALL 5 2 2 | |
0000 . . . . FUNCC ; type | |
0004 . . . ISEQS 5 1 ; "table" | |
0005 . . . JMP 5 => 0007 | |
0007 . . . TGETB 5 0 1 | |
0008 . . . UGET 6 0 ; relops | |
0009 . . . TGETV 6 6 5 | |
0010 . . . ISF 6 | |
0011 . . . JMP 7 => 0131 | |
0012 . . . UGET 6 1 ; push | |
0013 . . . MOV 7 1 | |
0014 . . . CALL 6 2 2 | |
0000 . . . . JFUNCF 4 34 ; optimize.lua:397 | |
0001 . . . . UGET 1 0 ; cons | |
0002 . . . . TNEW 2 0 | |
0003 . . . . MOV 3 0 | |
0004 . . . . CALLT 1 3 | |
0000 . . . . FUNCF 3 ; optimize.lua:393 | |
0001 . . . . TNEW 2 3 | |
0002 . . . . TSETB 0 2 1 | |
0003 . . . . TSETB 1 2 2 | |
0004 . . . . RET1 2 2 | |
0015 . . . UGET 7 2 ; visit | |
0016 . . . TGETB 8 0 2 | |
0017 . . . MOV 9 6 | |
0018 . . . CALL 7 2 3 | |
0000 . . . . FUNCF 25 ; optimize.lua:488 | |
---- TRACE 44 abort optimize.lua:488 -- call unroll limit reached | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 44 start 34/0 optimize.lua:397 | |
0001 UGET 1 0 ; cons | |
0002 TNEW 2 0 | |
0003 MOV 3 0 | |
0004 CALLT 1 3 | |
0000 FUNCF 3 ; optimize.lua:393 | |
0001 TNEW 2 3 | |
0002 TSETB 0 2 1 | |
0003 TSETB 1 2 2 | |
0004 RET1 2 2 | |
0187 UGET 14 1 ; push | |
0188 MOV 15 9 | |
0189 CALL 14 2 2 | |
0000 . JFUNCF 4 34 ; optimize.lua:397 | |
0001 . UGET 1 0 ; cons | |
0002 . TNEW 2 0 | |
0003 . MOV 3 0 | |
0004 . CALLT 1 3 | |
0000 . FUNCF 3 ; optimize.lua:393 | |
0001 . TNEW 2 3 | |
0002 . TSETB 0 2 1 | |
0003 . TSETB 1 2 2 | |
0004 . RET1 2 2 | |
0190 UGET 15 1 ; push | |
0191 MOV 16 10 | |
0192 CALL 15 2 2 | |
0000 . JFUNCF 4 34 ; optimize.lua:397 | |
0001 . UGET 1 0 ; cons | |
0002 . TNEW 2 0 | |
0003 . MOV 3 0 | |
0004 . CALLT 1 3 | |
0000 . FUNCF 3 ; optimize.lua:393 | |
0001 . TNEW 2 3 | |
0002 . TSETB 0 2 1 | |
0003 . TSETB 1 2 2 | |
0004 . RET1 2 2 | |
0193 UGET 16 1 ; push | |
0194 MOV 17 10 | |
0195 CALL 16 2 2 | |
0000 . JFUNCF 4 34 ; optimize.lua:397 | |
0001 . UGET 1 0 ; cons | |
0002 . TNEW 2 0 | |
0003 . MOV 3 0 | |
0004 . CALLT 1 3 | |
0000 . FUNCF 3 ; optimize.lua:393 | |
0001 . TNEW 2 3 | |
0002 . TSETB 0 2 1 | |
0003 . TSETB 1 2 2 | |
0004 . RET1 2 2 | |
0196 UGET 17 2 ; visit | |
0197 MOV 18 7 | |
0198 MOV 19 13 | |
0199 MOV 20 14 | |
0200 MOV 21 3 | |
0201 MOV 22 4 | |
0202 CALL 17 2 6 | |
0000 . FUNCF 25 ; optimize.lua:488 | |
0001 . GGET 5 0 ; "type" | |
0002 . MOV 6 0 | |
0003 . CALL 5 2 2 | |
0000 . . FUNCC ; type | |
0004 . ISEQS 5 1 ; "table" | |
0005 . JMP 5 => 0007 | |
0007 . TGETB 5 0 1 | |
0008 . UGET 6 0 ; relops | |
0009 . TGETV 6 6 5 | |
0010 . ISF 6 | |
0011 . JMP 7 => 0131 | |
0131 . ISEQS 5 11 ; "false" | |
0132 . JMP 6 => 0137 | |
0133 . ISEQS 5 12 ; "true" | |
0134 . JMP 6 => 0137 | |
0137 . UCLO 0 => 0138 | |
---- TRACE 44 abort optimize.lua:523 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 44 start 34/0 optimize.lua:397 | |
0001 UGET 1 0 ; cons | |
0002 TNEW 2 0 | |
0003 MOV 3 0 | |
0004 CALLT 1 3 | |
0000 FUNCF 3 ; optimize.lua:393 | |
0001 TNEW 2 3 | |
0002 TSETB 0 2 1 | |
0003 TSETB 1 2 2 | |
0004 RET1 2 2 | |
0163 UGET 10 1 ; push | |
0164 MOV 11 1 | |
0165 CALL 10 2 2 | |
0000 . JFUNCF 4 34 ; optimize.lua:397 | |
0001 . UGET 1 0 ; cons | |
0002 . TNEW 2 0 | |
0003 . MOV 3 0 | |
0004 . CALLT 1 3 | |
0000 . FUNCF 3 ; optimize.lua:393 | |
0001 . TNEW 2 3 | |
0002 . TSETB 0 2 1 | |
0003 . TSETB 1 2 2 | |
0004 . RET1 2 2 | |
0166 UGET 11 9 ; eta | |
0167 MOV 12 7 | |
0168 MOV 13 3 | |
0169 MOV 14 4 | |
0170 CALL 11 2 4 | |
0000 . FUNCF 4 ; optimize.lua:427 | |
0001 . TGETB 3 0 1 | |
0002 . ISNES 3 0 ; "true" | |
0003 . JMP 3 => 0005 | |
0004 . RET1 1 2 | |
0171 UGET 12 9 ; eta | |
0172 MOV 13 8 | |
0173 MOV 14 3 | |
0174 MOV 15 4 | |
0175 CALL 12 2 4 | |
0000 . FUNCF 4 ; optimize.lua:427 | |
0001 . TGETB 3 0 1 | |
0002 . ISNES 3 0 ; "true" | |
0003 . JMP 3 => 0005 | |
0005 . TGETB 3 0 1 | |
0006 . ISNES 3 1 ; "false" | |
0007 . JMP 3 => 0009 | |
0009 . TGETB 3 0 1 | |
0010 . ISNES 3 2 ; "fail" | |
0011 . JMP 3 => 0014 | |
0014 . KPRI 3 0 | |
0015 . RET1 3 2 | |
0176 UGET 13 2 ; visit | |
0177 MOV 14 6 | |
0178 MOV 15 9 | |
0179 MOV 16 10 | |
0180 MOV 17 11 | |
0181 MOV 18 12 | |
0182 CALL 13 2 6 | |
0000 . FUNCF 25 ; optimize.lua:488 | |
0001 . GGET 5 0 ; "type" | |
0002 . MOV 6 0 | |
0003 . CALL 5 2 2 | |
0000 . . FUNCC ; type | |
0004 . ISEQS 5 1 ; "table" | |
0005 . JMP 5 => 0007 | |
0007 . TGETB 5 0 1 | |
0008 . UGET 6 0 ; relops | |
0009 . TGETV 6 6 5 | |
0010 . ISF 6 | |
0011 . JMP 7 => 0131 | |
0012 . UGET 6 1 ; push | |
0013 . MOV 7 1 | |
0014 . CALL 6 2 2 | |
0000 . . JFUNCF 4 34 ; optimize.lua:397 | |
0001 . . UGET 1 0 ; cons | |
0002 . . TNEW 2 0 | |
0003 . . MOV 3 0 | |
0004 . . CALLT 1 3 | |
0000 . . FUNCF 3 ; optimize.lua:393 | |
0001 . . TNEW 2 3 | |
0002 . . TSETB 0 2 1 | |
0003 . . TSETB 1 2 2 | |
0004 . . RET1 2 2 | |
0015 . UGET 7 2 ; visit | |
0016 . TGETB 8 0 2 | |
0017 . MOV 9 6 | |
0018 . CALL 7 2 3 | |
0000 . . FUNCF 25 ; optimize.lua:488 | |
0001 . . GGET 5 0 ; "type" | |
0002 . . MOV 6 0 | |
0003 . . CALL 5 2 2 | |
0000 . . . FUNCC ; type | |
0004 . . ISEQS 5 1 ; "table" | |
0005 . . JMP 5 => 0007 | |
0007 . . TGETB 5 0 1 | |
0008 . . UGET 6 0 ; relops | |
0009 . . TGETV 6 6 5 | |
0010 . . ISF 6 | |
0011 . . JMP 7 => 0131 | |
0131 . . ISEQS 5 11 ; "false" | |
0132 . . JMP 6 => 0137 | |
0133 . . ISEQS 5 12 ; "true" | |
0134 . . JMP 6 => 0137 | |
0135 . . ISNES 5 13 ; "fail" | |
0136 . . JMP 6 => 0140 | |
0140 . . ISNES 5 14 ; "not" | |
0141 . . JMP 6 => 0155 | |
0155 . . ISNES 5 15 ; "if" | |
0156 . . JMP 6 => 0298 | |
0298 . . MOV 6 1 | |
0299 . . ISNES 5 17 ; "[]" | |
0300 . . JMP 7 => 0338 | |
0301 . . UGET 7 2 ; visit | |
0302 . . TGETB 8 0 2 | |
0303 . . MOV 9 6 | |
0304 . . CALL 7 2 3 | |
0000 . . . FUNCF 25 ; optimize.lua:488 | |
0001 . . . GGET 5 0 ; "type" | |
0002 . . . MOV 6 0 | |
0003 . . . CALL 5 2 2 | |
0000 . . . . FUNCC ; type | |
0004 . . . ISEQS 5 1 ; "table" | |
0005 . . . JMP 5 => 0007 | |
0006 . . . UCLO 0 => 0470 | |
---- TRACE 44 abort optimize.lua:489 -- NYI: bytecode 48 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 44 start 34/0 optimize.lua:397 | |
---- TRACE 44 IR | |
---- TRACE 44 mcode 36 | |
0bcabd2b mov dword [0x405d84a0], 0x2c | |
0bcabd36 mov edx, [0x405d84b0] | |
0bcabd3d xor eax, eax | |
0bcabd3f mov ebx, 0x40bed9c4 | |
0bcabd44 mov r14d, 0x405d8f78 | |
0bcabd4a jmp 0x0041d9f8 | |
---- TRACE 44 stop -> interpreter | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 45 start optimize.lua:393 | |
0001 TNEW 2 3 | |
0002 TSETB 0 2 1 | |
0003 TSETB 1 2 2 | |
0004 RET1 2 2 | |
---- TRACE 45 IR | |
0001 > <span class="irt_tab">tab</span> TNEW #3 #0 | |
0002 > <span class="irt_tab">tab</span> SLOAD #1 T | |
0003 <span class="irt_p32">p32</span> FLOAD 0001 tab.array | |
0004 <span class="irt_p32">p32</span> AREF 0003 <span class="irt_int">+1 </span> | |
0005 <span class="irt_tab">tab</span> ASTORE 0004 0002 | |
0006 > <span class="irt_tab">tab</span> SLOAD #2 T | |
0007 <span class="irt_p32">p32</span> AREF 0003 <span class="irt_int">+2 </span> | |
0008 <span class="irt_tab">tab</span> ASTORE 0007 0006 | |
---- TRACE 45 mcode 147 | |
0bcabc91 mov dword [0x405d84a0], 0x2d | |
0bcabc9c mov edi, [0x405d83d8] | |
0bcabca3 cmp edi, [0x405d83dc] | |
0bcabcaa jb 0x0bcabcc3 | |
0bcabcac mov esi, 0x1 | |
0bcabcb1 mov edi, 0x405d83b8 | |
0bcabcb6 call 0x0041f3d0 ->lj_gc_step_jit | |
0bcabcbb test eax, eax | |
0bcabcbd jnz 0x0bca0010 ->0 | |
0bcabcc3 mov edi, [0x405d84ac] | |
0bcabcca mov esi, 0x3 | |
0bcabccf call 0x0041f7e0 ->lj_tab_new1 | |
0bcabcd4 mov edx, [0x405d84b0] | |
0bcabcdb cmp dword [rdx+0x4], -0x0c | |
0bcabcdf jnz 0x0bca0010 ->0 | |
0bcabce5 mov ebp, [rdx] | |
0bcabce7 mov dword [rax+0x2c], 0xfffffff4 | |
0bcabcee mov [rax+0x28], ebp | |
0bcabcf1 cmp dword [rdx+0xc], -0x0c | |
0bcabcf5 jnz 0x0bca0014 ->1 | |
0bcabcfb mov ebp, [rdx+0x8] | |
0bcabcfe mov dword [rax+0x34], 0xfffffff4 | |
0bcabd05 mov [rax+0x30], ebp | |
0bcabd08 mov dword [rdx+0x14], 0xfffffff4 | |
0bcabd0f mov [rdx+0x10], eax | |
0bcabd12 xor eax, eax | |
0bcabd14 mov ebx, 0x40b46ee0 | |
0bcabd19 mov r14d, 0x405d8f78 | |
0bcabd1f jmp 0x0041d9f8 | |
---- TRACE 45 stop -> return | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 46 start optimize.lua:276 | |
0001 ISGE 1 0 | |
0002 JMP 2 => 0006 | |
0006 TDUP 2 0 | |
0007 TSETS 0 2 1 ; "min_" | |
0008 TSETS 1 2 2 ; "max_" | |
0009 FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 46 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 46 start optimize.lua:420 | |
0001 GGET 3 0 ; "pairs" | |
0002 MOV 4 1 | |
0003 CALL 3 4 2 | |
0000 . FUNCC ; pairs | |
---- TRACE 46 abort optimize.lua:421 -- NYI: FastFunc pairs | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 46 start 36/4 optimize.lua:518 | |
0109 UGET 16 8 ; restrict | |
0110 MOV 17 2 | |
0111 MOV 18 7 | |
0112 MOV 19 13 | |
0113 CALL 16 1 4 | |
0000 . FUNCF 9 ; optimize.lua:414 | |
0001 . UGET 3 0 ; define | |
0002 . MOV 4 0 | |
0003 . MOV 5 1 | |
0004 . UGET 6 1 ; lookup | |
0005 . MOV 7 0 | |
0006 . MOV 8 1 | |
0007 . CALL 6 2 3 | |
0000 . . FUNCF 6 ; optimize.lua:398 | |
0001 . . GGET 2 0 ; "type" | |
0002 . . MOV 3 1 | |
0003 . . CALL 2 2 2 | |
0000 . . . FUNCC ; type | |
0004 . . ISNES 2 1 ; "number" | |
0005 . . JMP 2 => 0010 | |
0010 . . UGET 2 1 ; cfkey | |
0011 . . MOV 3 1 | |
0012 . . CALL 2 2 2 | |
0000 . . . JFUNCF 4 20 ; optimize.lua:54 | |
0001 . . . UGET 1 0 ; cache | |
0002 . . . TGETV 1 1 0 | |
0003 . . . ISNEP 1 0 | |
0004 . . . JMP 2 => 0011 | |
0011 . . . RET1 1 2 | |
0013 . . ISF 0 | |
0014 . . JMP 3 => 0028 | |
0015 . . JLOOP 3 27 | |
---- TRACE 46 IR | |
0001 <span class="irt_fun">fun</span> SLOAD #0 R | |
0002 > <span class="irt_fun">fun</span> EQ 0001 <span class="irt_fun">optimize.lua:488</span> | |
0003 > <span class="irt_tab">tab</span> SLOAD #3 T | |
0004 > <span class="irt_tab">tab</span> SLOAD #8 T | |
0005 > <span class="irt_tab">tab</span> SLOAD #14 T | |
0006 <span class="irt_tab">tab</span> FLOAD <span class="irt_fun">optimize.lua:398</span> func.env | |
0007 <span class="irt_p32">p32</span> HREF 0006 <span class="irt_str">"type"</span> | |
0008 > <span class="irt_p32">p32</span> EQ 0007 <span class="irt_p32">[0x405d8420]</span> | |
0009 <span class="irt_tab">tab</span> FLOAD 0006 tab.meta | |
0010 > <span class="irt_tab">tab</span> NE 0009 <span class="irt_tab">[NULL]</span> | |
0011 <span class="irt_int">int</span> FLOAD 0009 tab.hmask | |
0012 > <span class="irt_int">int</span> EQ 0011 <span class="irt_int">+1 </span> | |
0013 <span class="irt_p32">p32</span> FLOAD 0009 tab.node | |
0014 > <span class="irt_p32">p32</span> HREFK 0013 <span class="irt_str">"__index"</span> @1 | |
0015 > <span class="irt_tab">tab</span> HLOAD 0014 | |
0016 <span class="irt_int">int</span> FLOAD 0015 tab.hmask | |
0017 > <span class="irt_int">int</span> EQ 0016 <span class="irt_int">+63 </span> | |
0018 <span class="irt_p32">p32</span> FLOAD 0015 tab.node | |
0019 > <span class="irt_p32">p32</span> HREFK 0018 <span class="irt_str">"type"</span> @60 | |
0020 > <span class="irt_fun">fun</span> HLOAD 0019 | |
0021 > <span class="irt_fun">fun</span> EQ 0020 <span class="irt_fun">type</span> | |
0022 > <span class="irt_p32">p32</span> UREFC <span class="irt_fun">optimize.lua:398</span> #1 | |
0023 > <span class="irt_fun">fun</span> ULOAD 0022 | |
0024 > <span class="irt_fun">fun</span> EQ 0023 <span class="irt_fun">optimize.lua:54</span> | |
0025 > <span class="irt_p32">p32</span> UREFC <span class="irt_fun">optimize.lua:54</span> #0 | |
0026 > <span class="irt_tab">tab</span> ULOAD 0025 | |
0027 <span class="irt_p32">p32</span> HREF 0026 0004 | |
0028 > <span class="irt_str">str</span> HLOAD 0027 | |
---- TRACE 46 mcode 658 | |
0bcab9f8 mov eax, [0x405d84ac] | |
0bcab9ff mov eax, [rax+0x20] | |
0bcaba02 sub eax, [0x405d84b0] | |
0bcaba09 cmp eax, 0xf0 | |
0bcaba0f jb 0x0bca0020 ->4 | |
0bcaba15 mov dword [0x405d84a0], 0x2e | |
0bcaba20 mov edx, [0x405d84b0] | |
0bcaba27 cmp dword [rdx-0x8], 0x41555b98 | |
0bcaba2e jnz 0x0bca0010 ->0 | |
0bcaba34 cmp dword [rdx+0x14], -0x0c | |
0bcaba38 jnz 0x0bca0010 ->0 | |
0bcaba3e mov ebp, [rdx+0x10] | |
0bcaba41 cmp dword [rdx+0x3c], -0x0c | |
0bcaba45 jnz 0x0bca0010 ->0 | |
0bcaba4b mov ebx, [rdx+0x38] | |
0bcaba4e cmp dword [rdx+0x6c], -0x0c | |
0bcaba52 jnz 0x0bca0010 ->0 | |
0bcaba58 mov r15d, [rdx+0x68] | |
0bcaba5c mov r14d, [0x41555a00] | |
0bcaba64 mov r13d, [r14+0x1c] | |
0bcaba68 and r13d, 0x798a813c | |
0bcaba6f lea r13d, [r13+r13*2+0x0] | |
0bcaba74 shl r13d, 0x03 | |
0bcaba78 add r13d, [r14+0x14] | |
0bcaba7c cmp dword [r13+0xc], -0x05 | |
0bcaba81 jnz 0x0bcaba91 | |
0bcaba83 cmp dword [r13+0x8], 0x405daf18 | |
0bcaba8b jz 0x0bca0010 ->0 | |
0bcaba91 mov r13d, [r13+0x10] | |
0bcaba95 test r13d, r13d | |
0bcaba98 jnz 0x0bcaba7c | |
0bcaba9a mov r13d, 0x405d8420 | |
0bcabaa0 mov r14d, [r14+0x10] | |
0bcabaa4 test r14d, r14d | |
0bcabaa7 jz 0x0bca0010 ->0 | |
0bcabaad cmp dword [r14+0x1c], +0x01 | |
0bcabab2 jnz 0x0bca0010 ->0 | |
0bcabab8 mov r14d, [r14+0x14] | |
0bcababc mov rdi, 0xfffffffb405da430 | |
0bcabac6 cmp rdi, [r14+0x20] | |
0bcabaca jnz 0x0bca0010 ->0 | |
0bcabad0 cmp dword [r14+0x1c], -0x0c | |
0bcabad5 jnz 0x0bca0010 ->0 | |
0bcabadb mov r14d, [r14+0x18] | |
0bcabadf cmp dword [r14+0x1c], +0x3f | |
0bcabae4 jnz 0x0bca0010 ->0 | |
0bcabaea mov r14d, [r14+0x14] | |
0bcabaee mov rdi, 0xfffffffb405daf18 | |
0bcabaf8 cmp rdi, [r14+0x5a8] | |
0bcabaff jnz 0x0bca0010 ->0 | |
0bcabb05 cmp dword [r14+0x5a4], -0x09 | |
0bcabb0d jnz 0x0bca0010 ->0 | |
0bcabb13 cmp dword [r14+0x5a0], 0x405dae80 | |
0bcabb1e jnz 0x0bca0010 ->0 | |
0bcabb24 cmp dword [0x40b3fa3c], -0x09 | |
0bcabb2c jnz 0x0bca0010 ->0 | |
0bcabb32 cmp dword [0x40b3fa38], 0x40b3fa78 | |
0bcabb3d jnz 0x0bca0010 ->0 | |
0bcabb43 cmp dword [0x40b3faac], -0x0c | |
0bcabb4b jnz 0x0bca0010 ->0 | |
0bcabb51 mov r13d, [0x40b3faa8] | |
0bcabb59 lea r14d, [rbx-0x4c11db7] | |
0bcabb60 mov edi, ebx | |
0bcabb62 xor edi, r14d | |
0bcabb65 rol r14d, 0x0e | |
0bcabb69 sub edi, r14d | |
0bcabb6c rol r14d, 0x05 | |
0bcabb70 xor r14d, edi | |
0bcabb73 rol edi, 0x0d | |
0bcabb76 sub r14d, edi | |
0bcabb79 and r14d, [r13+0x1c] | |
0bcabb7d lea r14d, [r14+r14*2] | |
0bcabb81 shl r14d, 0x03 | |
0bcabb85 add r14d, [r13+0x14] | |
0bcabb89 cmp dword [r14+0xc], -0x0c | |
0bcabb8e jnz 0x0bcabb96 | |
0bcabb90 cmp ebx, [r14+0x8] | |
0bcabb94 jz 0x0bcabba5 | |
0bcabb96 mov r14d, [r14+0x10] | |
0bcabb9a test r14d, r14d | |
0bcabb9d jnz 0x0bcabb89 | |
0bcabb9f mov r14d, 0x405d8420 | |
0bcabba5 cmp dword [r14+0x4], -0x05 | |
0bcabbaa jnz 0x0bca0010 ->0 | |
0bcabbb0 mov r14d, [r14] | |
0bcabbb3 mov dword [rdx+0xd4], 0xfffffffb | |
0bcabbbd mov [rdx+0xd0], r14d | |
0bcabbc4 mov dword [rdx+0xcc], 0xfffffff4 | |
0bcabbce mov [rdx+0xc8], ebx | |
0bcabbd4 mov dword [rdx+0xc4], 0xfffffff4 | |
0bcabbde mov [rdx+0xc0], ebp | |
0bcabbe4 mov dword [rdx+0xbc], 0x40bd65d0 | |
0bcabbee mov dword [rdx+0xb8], 0x415559f8 | |
0bcabbf8 mov dword [rdx+0xb4], 0xfffffff4 | |
0bcabc02 mov [rdx+0xb0], ebx | |
0bcabc08 mov dword [rdx+0xac], 0xfffffff4 | |
0bcabc12 mov [rdx+0xa8], ebp | |
0bcabc18 mov dword [rdx+0xa4], 0xfffffff7 | |
0bcabc22 mov dword [rdx+0xa0], 0x41555a48 | |
0bcabc2c mov dword [rdx+0x9c], 0xfffffff4 | |
0bcabc36 mov [rdx+0x98], r15d | |
0bcabc3d mov dword [rdx+0x94], 0xfffffff4 | |
0bcabc47 mov [rdx+0x90], ebx | |
0bcabc4d mov dword [rdx+0x8c], 0xfffffff4 | |
0bcabc57 mov [rdx+0x88], ebp | |
0bcabc5d mov dword [rdx+0x84], 0x40b57c00 | |
0bcabc67 mov dword [rdx+0x80], 0x41555a70 | |
0bcabc71 mov dword [rdx-0x8], 0x41555b98 | |
0bcabc78 add edx, 0xc0 | |
0bcabc7e mov [0x405d84b0], edx | |
0bcabc85 jmp 0x0bcaca07 | |
---- TRACE 46 stop -> 27 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 47 start optimize.lua:398 | |
0001 GGET 2 0 ; "type" | |
0002 MOV 3 1 | |
0003 CALL 2 2 2 | |
0000 . FUNCC ; type | |
0004 ISNES 2 1 ; "number" | |
0005 JMP 2 => 0010 | |
0006 UGET 2 0 ; Range | |
0007 MOV 3 1 | |
0008 MOV 4 1 | |
0009 CALLT 2 3 | |
0000 FUNCF 4 ; optimize.lua:276 | |
0001 ISGE 1 0 | |
0002 JMP 2 => 0006 | |
0006 TDUP 2 0 | |
0007 TSETS 0 2 1 ; "min_" | |
0008 TSETS 1 2 2 ; "max_" | |
0009 FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 47 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 47 start optimize.lua:293 | |
0001 UGET 2 0 ; Range | |
0002 GGET 3 0 ; "math" | |
0003 TGETS 3 3 1 ; "max" | |
0004 MOV 5 0 | |
0005 TGETS 4 0 2 ; "min" | |
0006 CALL 4 2 2 | |
0000 . JFUNCF 2 28 ; optimize.lua:281 | |
0001 . TGETS 1 0 0 ; "min_" | |
0002 . RET1 1 2 | |
0007 MOV 6 1 | |
0008 TGETS 5 1 2 ; "min" | |
0009 CALL 5 0 2 | |
0000 . JFUNCF 2 28 ; optimize.lua:281 | |
0001 . TGETS 1 0 0 ; "min_" | |
0002 . RET1 1 2 | |
0010 CALLM 3 2 1 | |
0000 . FUNCC ; math.max | |
0011 GGET 4 0 ; "math" | |
0012 TGETS 4 4 2 ; "min" | |
0013 MOV 6 0 | |
0014 TGETS 5 0 1 ; "max" | |
0015 CALL 5 2 2 | |
0000 . FUNCF 2 ; optimize.lua:282 | |
0001 . TGETS 1 0 0 ; "max_" | |
0002 . RET1 1 2 | |
0016 MOV 7 1 | |
0017 TGETS 6 1 1 ; "max" | |
0018 CALL 6 0 2 | |
0000 . FUNCF 2 ; optimize.lua:282 | |
0001 . TGETS 1 0 0 ; "max_" | |
0002 . RET1 1 2 | |
0019 CALLM 4 0 1 | |
0000 . FUNCC ; math.min | |
0020 CALLMT 2 1 | |
0000 FUNCF 4 ; optimize.lua:276 | |
0001 ISGE 1 0 | |
0002 JMP 2 => 0006 | |
0006 TDUP 2 0 | |
0007 TSETS 0 2 1 ; "min_" | |
0008 TSETS 1 2 2 ; "max_" | |
0009 FNEW 3 4 ; optimize.lua:281 | |
---- TRACE 47 abort optimize.lua:281 -- NYI: bytecode 49 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 47 start optimize.lua:69 | |
0022 MOV 2 1 | |
---- TRACE 47 abort optimize.lua:70 -- leaving loop in root trace | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 47 start optimize.lua:619 | |
0001 TGETB 2 0 1 | |
0002 TGETB 3 0 1 | |
0003 GGET 4 0 ; "math" | |
0004 TGETS 4 4 1 ; "max" | |
0005 MOV 5 2 | |
0006 MOV 6 1 | |
0007 CALL 4 2 3 | |
0000 . FUNCC ; math.max | |
0008 GGET 5 0 ; "math" | |
0009 TGETS 5 5 1 ; "max" | |
0010 MOV 6 3 | |
0011 MOV 7 1 | |
0012 CALL 5 0 3 | |
0000 . FUNCC ; math.max | |
0013 RETM 4 1 | |
---- TRACE 47 IR | |
0001 > <span class="irt_tab">tab</span> SLOAD #1 T | |
0002 <span class="irt_int">int</span> FLOAD 0001 tab.asize | |
0003 > <span class="irt_int">int</span> ABC 0002 <span class="irt_int">+1 </span> | |
0004 <span class="irt_p32">p32</span> FLOAD 0001 tab.array | |
0005 <span class="irt_p32">p32</span> AREF 0004 <span class="irt_int">+1 </span> | |
0006 > <span class="irt_num">num</span> ALOAD 0005 | |
0007 <span class="irt_fun">fun</span> SLOAD #0 R | |
0008 <span class="irt_tab">tab</span> FLOAD 0007 func.env | |
0009 <span class="irt_p32">p32</span> HREF 0008 <span class="irt_str">"math"</span> | |
0010 > <span class="irt_p32">p32</span> EQ 0009 <span class="irt_p32">[0x405d8420]</span> | |
0011 <span class="irt_tab">tab</span> FLOAD 0008 tab.meta | |
0012 > <span class="irt_tab">tab</span> NE 0011 <span class="irt_tab">[NULL]</span> | |
0013 <span class="irt_int">int</span> FLOAD 0011 tab.hmask | |
0014 > <span class="irt_int">int</span> EQ 0013 <span class="irt_int">+1 </span> | |
0015 <span class="irt_p32">p32</span> FLOAD 0011 tab.node | |
0016 > <span class="irt_p32">p32</span> HREFK 0015 <span class="irt_str">"__index"</span> @1 | |
0017 > <span class="irt_tab">tab</span> HLOAD 0016 | |
0018 <span class="irt_int">int</span> FLOAD 0017 tab.hmask | |
0019 > <span class="irt_int">int</span> EQ 0018 <span class="irt_int">+63 </span> | |
0020 <span class="irt_p32">p32</span> FLOAD 0017 tab.node | |
0021 > <span class="irt_p32">p32</span> HREFK 0020 <span class="irt_str">"math"</span> @54 | |
0022 > <span class="irt_tab">tab</span> HLOAD 0021 | |
0023 <span class="irt_int">int</span> FLOAD 0022 tab.hmask | |
0024 > <span class="irt_int">int</span> EQ 0023 <span class="irt_int">+31 </span> | |
0025 <span class="irt_p32">p32</span> FLOAD 0022 tab.node | |
0026 > <span class="irt_p32">p32</span> HREFK 0025 <span class="irt_str">"max"</span> @11 | |
0027 > <span class="irt_fun">fun</span> HLOAD 0026 | |
0028 > <span class="irt_num">num</span> SLOAD #2 T | |
0029 > <span class="irt_fun">fun</span> EQ 0027 <span class="irt_fun">math.max</span> | |
0030 <span class="irt_num">num</span> MAX 0028 0006 | |
---- TRACE 47 mcode 335 | |
0bcab8a2 mov dword [0x405d84a0], 0x2f | |
0bcab8ad cmp dword [rdx+0x4], -0x0c | |
0bcab8b1 jnz 0x0bca0010 ->0 | |
0bcab8b7 mov ebp, [rdx] | |
0bcab8b9 cmp dword [rbp+0x18], +0x01 | |
0bcab8bd jbe 0x0bca0010 ->0 | |
0bcab8c3 mov ebp, [rbp+0x8] | |
0bcab8c6 cmp dword [rbp+0xc], 0xfffeffff | |
0bcab8cd jnb 0x0bca0010 ->0 | |
0bcab8d3 movsd xmm7, [rbp+0x8] | |
0bcab8d8 mov ebp, [rdx-0x8] | |
0bcab8db mov ebp, [rbp+0x8] | |
0bcab8de mov ebx, [rbp+0x1c] | |
0bcab8e1 and ebx, 0xf44381f6 | |
0bcab8e7 lea ebx, [rbx+rbx*2] | |
0bcab8ea shl ebx, 0x03 | |
0bcab8ed add ebx, [rbp+0x14] | |
0bcab8f0 cmp dword [rbx+0xc], -0x05 | |
0bcab8f4 jnz 0x0bcab903 | |
0bcab8f6 cmp dword [rbx+0x8], 0x405ddab0 | |
0bcab8fd jz 0x0bca0010 ->0 | |
0bcab903 mov ebx, [rbx+0x10] | |
0bcab906 test ebx, ebx | |
0bcab908 jnz 0x0bcab8f0 | |
0bcab90a mov ebx, 0x405d8420 | |
0bcab90f mov ebp, [rbp+0x10] | |
0bcab912 test ebp, ebp | |
0bcab914 jz 0x0bca0010 ->0 | |
0bcab91a cmp dword [rbp+0x1c], +0x01 | |
0bcab91e jnz 0x0bca0010 ->0 | |
0bcab924 mov ebp, [rbp+0x14] | |
0bcab927 mov rdi, 0xfffffffb405da430 | |
0bcab931 cmp rdi, [rbp+0x20] | |
0bcab935 jnz 0x0bca0010 ->0 | |
0bcab93b cmp dword [rbp+0x1c], -0x0c | |
0bcab93f jnz 0x0bca0010 ->0 | |
0bcab945 mov ebp, [rbp+0x18] | |
0bcab948 cmp dword [rbp+0x1c], +0x3f | |
0bcab94c jnz 0x0bca0010 ->0 | |
0bcab952 mov ebp, [rbp+0x14] | |
0bcab955 mov rdi, 0xfffffffb405ddab0 | |
0bcab95f cmp rdi, [rbp+0x518] | |
0bcab966 jnz 0x0bca0010 ->0 | |
0bcab96c cmp dword [rbp+0x514], -0x0c | |
0bcab973 jnz 0x0bca0010 ->0 | |
0bcab979 mov ebp, [rbp+0x510] | |
0bcab97f cmp dword [rbp+0x1c], +0x1f | |
0bcab983 jnz 0x0bca0010 ->0 | |
0bcab989 mov ebp, [rbp+0x14] | |
0bcab98c mov rdi, 0xfffffffb405de588 | |
0bcab996 cmp rdi, [rbp+0x110] | |
0bcab99d jnz 0x0bca0010 ->0 | |
0bcab9a3 cmp dword [rbp+0x10c], -0x09 | |
0bcab9aa jnz 0x0bca0010 ->0 | |
0bcab9b0 cmp dword [rdx+0xc], 0xfffeffff | |
0bcab9b7 jnb 0x0bca0010 ->0 | |
0bcab9bd cmp dword [rbp+0x108], 0x405de560 | |
0bcab9c7 jnz 0x0bca0010 ->0 | |
0bcab9cd maxsd xmm7, [rdx+0x8] | |
0bcab9d2 movsd [rdx+0x28], xmm7 | |
0bcab9d7 movsd [rdx+0x20], xmm7 | |
0bcab9dc mov eax, 0x2 | |
0bcab9e1 mov ebx, 0x405f729c | |
0bcab9e6 mov r14d, 0x405d8f78 | |
0bcab9ec jmp 0x0041d9f8 | |
---- TRACE 47 stop -> return | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 48 start 42/3 optimize.lua:661 | |
0029 UGET 6 0 ; reduce | |
0030 TGETB 7 4 2 | |
0031 MOV 8 1 | |
0032 CALL 6 2 3 | |
0000 . JFUNCF 11 42 ; optimize.lua:652 | |
0001 . TGETB 2 0 1 | |
0002 . TGETB 3 0 2 | |
0003 . TGETB 4 0 3 | |
0004 . ISGE 1 2 | |
0005 . JMP 5 => 0026 | |
0026 . TGETB 5 4 1 | |
0027 . ISNES 5 5 ; "if" | |
0028 . JMP 6 => 0065 | |
0065 . RET1 4 2 | |
0033 UGET 7 0 ; reduce | |
0034 TGETB 8 4 3 | |
0035 MOV 9 1 | |
0036 CALL 7 2 3 | |
0000 . JFUNCF 11 42 ; optimize.lua:652 | |
0001 . TGETB 2 0 1 | |
0002 . TGETB 3 0 2 | |
0003 . TGETB 4 0 3 | |
0004 . ISGE 1 2 | |
0005 . JMP 5 => 0026 | |
0026 . TGETB 5 4 1 | |
0027 . ISNES 5 5 ; "if" | |
0028 . JMP 6 => 0065 | |
0065 . RET1 4 2 | |
0037 UGET 8 0 ; reduce | |
0038 TGETB 9 4 4 | |
0039 MOV 10 1 | |
0040 CALL 8 2 3 | |
0000 . JFUNCF 11 42 ; optimize.lua:652 | |
0001 . TGETB 2 0 1 | |
0002 . TGETB 3 0 2 | |
0003 . TGETB 4 0 3 | |
0004 . ISGE 1 2 | |
0005 . JMP 5 => 0026 | |
0026 . TGETB 5 4 1 | |
0027 . ISNES 5 5 ; "if" | |
0028 . JMP 6 => 0065 | |
0065 . RET1 4 2 | |
0041 TGETB 9 6 1 | |
0042 ISNES 9 6 ; ">=" | |
0043 JMP 9 => 0058 | |
0058 TNEW 9 5 | |
0059 TSETB 5 9 1 | |
0060 TSETB 6 9 2 | |
0061 TSETB 7 9 3 | |
0062 TSETB 8 9 4 | |
0063 RET1 9 2 | |
0041 TGETB 9 6 1 | |
0042 ISNES 9 6 ; ">=" | |
0043 JMP 9 => 0058 | |
0058 TNEW 9 5 | |
0059 TSETB 5 9 1 | |
0060 TSETB 6 9 2 | |
0061 TSETB 7 9 3 | |
0062 TSETB 8 9 4 | |
0063 RET1 9 2 | |
---- TRACE 48 abort optimize.lua:665 -- down-recursion, restarting | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 48 start optimize.lua:665 | |
0063 RET1 9 2 | |
0037 UGET 8 0 ; reduce | |
0038 TGETB 9 4 4 | |
0039 MOV 10 1 | |
0040 CALL 8 2 3 | |
0000 . JFUNCF 11 42 ; optimize.lua:652 | |
0001 . TGETB 2 0 1 | |
0002 . TGETB 3 0 2 | |
0003 . TGETB 4 0 3 | |
0004 . ISGE 1 2 | |
0005 . JMP 5 => 0026 | |
0026 . TGETB 5 4 1 | |
0027 . ISNES 5 5 ; "if" | |
0028 . JMP 6 => 0065 | |
0065 . RET1 4 2 | |
0041 TGETB 9 6 1 | |
0042 ISNES 9 6 ; ">=" | |
0043 JMP 9 => 0058 | |
0058 TNEW 9 5 | |
0059 TSETB 5 9 1 | |
0060 TSETB 6 9 2 | |
0061 TSETB 7 9 3 | |
0062 TSETB 8 9 4 | |
0063 RET1 9 2 | |
0037 UGET 8 0 ; reduce | |
0038 TGETB 9 4 4 | |
0039 MOV 10 1 | |
0040 CALL 8 2 3 | |
0000 . JFUNCF 11 42 ; optimize.lua:652 | |
0001 . TGETB 2 0 1 | |
0002 . TGETB 3 0 2 | |
0003 . TGETB 4 0 3 | |
0004 . ISGE 1 2 | |
0005 . JMP 5 => 0026 | |
0026 . TGETB 5 4 1 | |
0027 . ISNES 5 5 ; "if" | |
0028 . JMP 6 => 0065 | |
0065 . RET1 4 2 | |
0041 TGETB 9 6 1 | |
0042 ISNES 9 6 ; ">=" | |
0043 JMP 9 => 0058 | |
0058 TNEW 9 5 | |
0059 TSETB 5 9 1 | |
0060 TSETB 6 9 2 | |
0061 TSETB 7 9 3 | |
0062 TSETB 8 9 4 | |
0063 RET1 9 2 | |
0037 UGET 8 0 ; reduce | |
0038 TGETB 9 4 4 | |
0039 MOV 10 1 | |
0040 CALL 8 2 3 | |
0000 . JFUNCF 11 42 ; optimize.lua:652 | |
0001 . TGETB 2 0 1 | |
0002 . TGETB 3 0 2 | |
0003 . TGETB 4 0 3 | |
0004 . ISGE 1 2 | |
0005 . JMP 5 => 0026 | |
0026 . TGETB 5 4 1 | |
0027 . ISNES 5 5 ; "if" | |
0028 . JMP 6 => 0065 | |
0065 . RET1 4 2 | |
0041 TGETB 9 6 1 | |
0042 ISNES 9 6 ; ">=" | |
0043 JMP 9 => 0058 | |
0058 TNEW 9 5 | |
0059 TSETB 5 9 1 | |
0060 TSETB 6 9 2 | |
0061 TSETB 7 9 3 | |
0062 TSETB 8 9 4 | |
0063 RET1 9 2 | |
---- TRACE 48 IR | |
0001 > <span class="irt_tab">tab</span> SLOAD #10 T | |
0002 > <span class="irt_p32">p32</span> RETF <span class="irt_pro">proto: 0x40b51be0</span> <span class="irt_p32">[0x40b51cb4]</span> | |
0003 <span class="irt_fun">fun</span> SLOAD #0 R | |
0004 > <span class="irt_fun">fun</span> EQ 0003 <span class="irt_fun">optimize.lua:652</span> | |
0005 > <span class="irt_tab">tab</span> SLOAD #5 T | |
0006 <span class="irt_int">int</span> FLOAD 0005 tab.asize | |
0007 > <span class="irt_int">int</span> ABC 0006 <span class="irt_int">+4 </span> | |
0008 <span class="irt_p32">p32</span> FLOAD 0005 tab.array | |
0009 <span class="irt_p32">p32</span> AREF 0008 <span class="irt_int">+4 </span> | |
0010 > <span class="irt_tab">tab</span> ALOAD 0009 | |
0011 > <span class="irt_num">num</span> SLOAD #2 T | |
0012 <span class="irt_int">int</span> FLOAD 0010 tab.asize | |
0013 > <span class="irt_int">int</span> ABC 0012 <span class="irt_int">+3 </span> | |
0014 <span class="irt_p32">p32</span> FLOAD 0010 tab.array | |
0015 <span class="irt_p32">p32</span> AREF 0014 <span class="irt_int">+1 </span> | |
0016 > <span class="irt_num">num</span> ALOAD 0015 | |
0017 <span class="irt_p32">p32</span> AREF 0014 <span class="irt_int">+2 </span> | |
0018 > <span class="irt_num">num</span> ALOAD 0017 | |
0019 <span class="irt_p32">p32</span> AREF 0014 <span class="irt_int">+3 </span> | |
0020 > <span class="irt_tab">tab</span> ALOAD 0019 | |
0021 > <span class="irt_num">num</span> ULE 0016 0011 | |
0022 <span class="irt_int">int</span> FLOAD 0020 tab.asize | |
0023 > <span class="irt_int">int</span> ABC 0022 <span class="irt_int">+1 </span> | |
0024 <span class="irt_p32">p32</span> FLOAD 0020 tab.array | |
0025 <span class="irt_p32">p32</span> AREF 0024 <span class="irt_int">+1 </span> | |
0026 > <span class="irt_str">str</span> ALOAD 0025 | |
0027 > <span class="irt_str">str</span> NE 0026 <span class="irt_str">"if"</span> | |
0028 > <span class="irt_tab">tab</span> SLOAD #7 T | |
0029 <span class="irt_int">int</span> FLOAD 0028 tab.asize | |
0030 > <span class="irt_int">int</span> ABC 0029 <span class="irt_int">+1 </span> | |
0031 <span class="irt_p32">p32</span> FLOAD 0028 tab.array | |
0032 <span class="irt_p32">p32</span> AREF 0031 <span class="irt_int">+1 </span> | |
0033 > <span class="irt_str">str</span> ALOAD 0032 | |
0034 > <span class="irt_str">str</span> NE 0033 <span class="irt_str">">="</span> | |
0035 > <span class="irt_tab">tab</span> TNEW #5 #0 | |
0036 > <span class="irt_str">str</span> SLOAD #6 T | |
0037 <span class="irt_p32">p32</span> FLOAD 0035 tab.array | |
0038 <span class="irt_p32">p32</span> AREF 0037 <span class="irt_int">+1 </span> | |
0039 <span class="irt_str">str</span> ASTORE 0038 0036 | |
0040 <span class="irt_p32">p32</span> AREF 0037 <span class="irt_int">+2 </span> | |
0041 <span class="irt_tab">tab</span> ASTORE 0040 0028 | |
0042 <span class="irt_p32">p32</span> AREF 0037 <span class="irt_int">+3 </span> | |
0043 <span class="irt_tab">tab</span> ASTORE 0042 0001 | |
0044 <span class="irt_p32">p32</span> AREF 0037 <span class="irt_int">+4 </span> | |
0045 <span class="irt_tab">tab</span> ASTORE 0044 0020 | |
0046 > <span class="irt_p32">p32</span> RETF <span class="irt_pro">proto: 0x40b51be0</span> <span class="irt_p32">[0x40b51cb4]</span> | |
0047 <span class="irt_fun">fun</span> SLOAD #0 R | |
0048 > <span class="irt_fun">fun</span> EQ 0047 <span class="irt_fun">optimize.lua:652</span> | |
0049 > <span class="irt_tab">tab</span> SLOAD #5 T | |
0050 <span class="irt_int">int</span> FLOAD 0049 tab.asize | |
0051 > <span class="irt_int">int</span> ABC 0050 <span class="irt_int">+4 </span> | |
0052 <span class="irt_p32">p32</span> FLOAD 0049 tab.array | |
0053 <span class="irt_p32">p32</span> AREF 0052 <span class="irt_int">+4 </span> | |
0054 > <span class="irt_tab">tab</span> ALOAD 0053 | |
0055 > <span class="irt_num">num</span> SLOAD #2 T | |
0056 <span class="irt_int">int</span> FLOAD 0054 tab.asize | |
0057 > <span class="irt_int">int</span> ABC 0056 <span class="irt_int">+3 </span> | |
0058 <span class="irt_p32">p32</span> FLOAD 0054 tab.array | |
0059 <span class="irt_p32">p32</span> AREF 0058 <span class="irt_int">+1 </span> | |
0060 > <span class="irt_num">num</span> ALOAD 0059 | |
0061 <span class="irt_p32">p32</span> AREF 0058 <span class="irt_int">+2 </span> | |
0062 > <span class="irt_num">num</span> ALOAD 0061 | |
0063 <span class="irt_p32">p32</span> AREF 0058 <span class="irt_int">+3 </span> | |
0064 > <span class="irt_tab">tab</span> ALOAD 0063 | |
0065 > <span class="irt_num">num</span> ULE 0060 0055 | |
0066 <span class="irt_int">int</span> FLOAD 0064 tab.asize | |
0067 > <span class="irt_int">int</span> ABC 0066 <span class="irt_int">+1 </span> | |
0068 <span class="irt_p32">p32</span> FLOAD 0064 tab.array | |
0069 <span class="irt_p32">p32</span> AREF 0068 <span class="irt_int">+1 </span> | |
0070 > <span class="irt_str">str</span> ALOAD 0069 | |
0071 > <span class="irt_str">str</span> NE 0070 <span class="irt_str">"if"</span> | |
0072 > <span class="irt_tab">tab</span> SLOAD #7 T | |
0073 <span class="irt_int">int</span> FLOAD 0072 tab.asize | |
0074 > <span class="irt_int">int</span> ABC 0073 <span class="irt_int">+1 </span> | |
0075 <span class="irt_p32">p32</span> FLOAD 0072 tab.array | |
0076 <span class="irt_p32">p32</span> AREF 0075 <span class="irt_int">+1 </span> | |
0077 > <span class="irt_str">str</span> ALOAD 0076 | |
0078 > <span class="irt_str">str</span> NE 0077 <span class="irt_str">">="</span> | |
0079 > <span class="irt_tab">tab</span> TNEW #5 #0 | |
0080 > <span class="irt_str">str</span> SLOAD #6 T | |
0081 <span class="irt_p32">p32</span> FLOAD 0079 tab.array | |
0082 <span class="irt_p32">p32</span> AREF 0081 <span class="irt_int">+1 </span> | |
0083 <span class="irt_str">str</span> ASTORE 0082 0080 | |
0084 <span class="irt_p32">p32</span> AREF 0081 <span class="irt_int">+2 </span> | |
0085 <span class="irt_tab">tab</span> ASTORE 0084 0072 | |
0086 <span class="irt_p32">p32</span> AREF 0081 <span class="irt_int">+3 </span> | |
0087 <span class="irt_tab">tab</span> ASTORE 0086 0035 | |
0088 <span class="irt_p32">p32</span> AREF 0081 <span class="irt_int">+4 </span> | |
0089 <span class="irt_tab">tab</span> ASTORE 0088 0064 | |
0090 > <span class="irt_p32">p32</span> RETF <span class="irt_pro">proto: 0x40b51be0</span> <span class="irt_p32">[0x40b51cb4]</span> | |
0091 <span class="irt_fun">fun</span> SLOAD #0 R | |
0092 > <span class="irt_fun">fun</span> EQ 0091 <span class="irt_fun">optimize.lua:652</span> | |
0093 > <span class="irt_tab">tab</span> SLOAD #5 T | |
0094 <span class="irt_int">int</span> FLOAD 0093 tab.asize | |
0095 > <span class="irt_int">int</span> ABC 0094 <span class="irt_int">+4 </span> | |
0096 <span class="irt_p32">p32</span> FLOAD 0093 tab.array | |
0097 <span class="irt_p32">p32</span> AREF 0096 <span class="irt_int">+4 </span> | |
0098 > <span class="irt_tab">tab</span> ALOAD 0097 | |
0099 > <span class="irt_num">num</span> SLOAD #2 T | |
0100 <span class="irt_int">int</span> FLOAD 0098 tab.asize | |
0101 > <span class="irt_int">int</span> ABC 0100 <span class="irt_int">+3 </span> | |
0102 <span class="irt_p32">p32</span> FLOAD 0098 tab.array | |
0103 <span class="irt_p32">p32</span> AREF 0102 <span class="irt_int">+1 </span> | |
0104 > <span class="irt_num">num</span> ALOAD 0103 | |
0105 <span class="irt_p32">p32</span> AREF 0102 <span class="irt_int">+2 </span> | |
0106 > <span class="irt_num">num</span> ALOAD 0105 | |
0107 <span class="irt_p32">p32</span> AREF 0102 <span class="irt_int">+3 </span> | |
0108 > <span class="irt_tab">tab</span> ALOAD 0107 | |
0109 > <span class="irt_num">num</span> ULE 0104 0099 | |
0110 <span class="irt_int">int</span> FLOAD 0108 tab.asize | |
0111 > <span class="irt_int">int</span> ABC 0110 <span class="irt_int">+1 </span> | |
0112 <span class="irt_p32">p32</span> FLOAD 0108 tab.array | |
0113 <span class="irt_p32">p32</span> AREF 0112 <span class="irt_int">+1 </span> | |
0114 > <span class="irt_str">str</span> ALOAD 0113 | |
0115 > <span class="irt_str">str</span> NE 0114 <span class="irt_str">"if"</span> | |
0116 > <span class="irt_tab">tab</span> SLOAD #7 T | |
0117 <span class="irt_int">int</span> FLOAD 0116 tab.asize | |
0118 > <span class="irt_int">int</span> ABC 0117 <span class="irt_int">+1 </span> | |
0119 <span class="irt_p32">p32</span> FLOAD 0116 tab.array | |
0120 <span class="irt_p32">p32</span> AREF 0119 <span class="irt_int">+1 </span> | |
0121 > <span class="irt_str">str</span> ALOAD 0120 | |
0122 > <span class="irt_str">str</span> NE 0121 <span class="irt_str">">="</span> | |
0123 > <span class="irt_tab">tab</span> TNEW #5 #0 | |
0124 > <span class="irt_str">str</span> SLOAD #6 T | |
0125 <span class="irt_p32">p32</span> FLOAD 0123 tab.array | |
0126 <span class="irt_p32">p32</span> AREF 0125 <span class="irt_int">+1 </span> | |
0127 <span class="irt_str">str</span> ASTORE 0126 0124 | |
0128 <span class="irt_p32">p32</span> AREF 0125 <span class="irt_int">+2 </span> | |
0129 <span class="irt_tab">tab</span> ASTORE 0128 0116 | |
0130 <span class="irt_p32">p32</span> AREF 0125 <span class="irt_int">+3 </span> | |
0131 <span class="irt_tab">tab</span> ASTORE 0130 0079 | |
0132 <span class="irt_p32">p32</span> AREF 0125 <span class="irt_int">+4 </span> | |
0133 <span class="irt_tab">tab</span> ASTORE 0132 0108 | |
---- TRACE 48 mcode 1150 | |
0bcab41d mov dword [0x405d84a0], 0x30 | |
0bcab428 mov edi, [0x405d83d8] | |
0bcab42f cmp edi, [0x405d83dc] | |
0bcab436 jb 0x0bcab44f | |
0bcab438 mov esi, 0x3 | |
0bcab43d mov edi, 0x405d83b8 | |
0bcab442 call 0x0041f3d0 ->lj_gc_step_jit | |
0bcab447 test eax, eax | |
0bcab449 jnz 0x0bca0010 ->0 | |
0bcab44f mov edi, [0x405d84ac] | |
0bcab456 mov edx, [0x405d84b0] | |
0bcab45d cmp dword [rdx+0x4c], -0x0c | |
0bcab461 jnz 0x0bca0010 ->0 | |
0bcab467 mov ebx, [rdx+0x48] | |
0bcab46a cmp dword [rdx-0x4], 0x40b51cb4 | |
0bcab471 jnz 0x0bca0014 ->1 | |
0bcab477 add edx, -0x40 | |
0bcab47a mov [0x405d84b0], edx | |
0bcab481 cmp dword [rdx-0x8], 0x4109c610 | |
0bcab488 jnz 0x0bca0018 ->2 | |
0bcab48e cmp dword [rdx+0x24], -0x0c | |
0bcab492 jnz 0x0bca0018 ->2 | |
0bcab498 mov ebp, [rdx+0x20] | |
0bcab49b cmp dword [rbp+0x18], +0x04 | |
0bcab49f jbe 0x0bca0018 ->2 | |
0bcab4a5 mov ebp, [rbp+0x8] | |
0bcab4a8 cmp dword [rbp+0x24], -0x0c | |
0bcab4ac jnz 0x0bca0018 ->2 | |
0bcab4b2 mov r15d, [rbp+0x20] | |
0bcab4b6 cmp dword [rdx+0xc], 0xfffeffff | |
0bcab4bd jnb 0x0bca0018 ->2 | |
0bcab4c3 movsd xmm7, [rdx+0x8] | |
0bcab4c8 cmp dword [r15+0x18], +0x03 | |
0bcab4cd jbe 0x0bca0018 ->2 | |
0bcab4d3 mov ebp, [r15+0x8] | |
0bcab4d7 cmp dword [rbp+0xc], 0xfffeffff | |
0bcab4de jnb 0x0bca0018 ->2 | |
0bcab4e4 movsd xmm6, [rbp+0x8] | |
0bcab4e9 cmp dword [rbp+0x14], 0xfffeffff | |
0bcab4f0 jnb 0x0bca0018 ->2 | |
0bcab4f6 movsd xmm5, [rbp+0x10] | |
0bcab4fb cmp dword [rbp+0x1c], -0x0c | |
0bcab4ff jnz 0x0bca0018 ->2 | |
0bcab505 mov ebp, [rbp+0x18] | |
0bcab508 ucomisd xmm6, xmm7 | |
0bcab50c ja 0x0bca001c ->3 | |
0bcab512 cmp dword [rbp+0x18], +0x01 | |
0bcab516 jbe 0x0bca0020 ->4 | |
0bcab51c mov r14d, [rbp+0x8] | |
0bcab520 cmp dword [r14+0xc], -0x05 | |
0bcab525 jnz 0x0bca0020 ->4 | |
0bcab52b mov r14d, [r14+0x8] | |
0bcab52f cmp r14d, 0x405da860 | |
0bcab536 jz 0x0bca0024 ->5 | |
0bcab53c cmp dword [rdx+0x34], -0x0c | |
0bcab540 jnz 0x0bca0028 ->6 | |
0bcab546 mov r15d, [rdx+0x30] | |
0bcab54a cmp dword [r15+0x18], +0x01 | |
0bcab54f jbe 0x0bca0028 ->6 | |
0bcab555 mov r14d, [r15+0x8] | |
0bcab559 cmp dword [r14+0xc], -0x05 | |
0bcab55e jnz 0x0bca0028 ->6 | |
0bcab564 cmp dword [r14+0x8], 0x40be1f48 | |
0bcab56c jz 0x0bca002c ->7 | |
0bcab572 mov esi, 0x5 | |
0bcab577 call 0x0041f7e0 ->lj_tab_new1 | |
0bcab57c mov [rsp+0x8], eax | |
0bcab580 mov edi, [0x405d84ac] | |
0bcab587 mov edx, [0x405d84b0] | |
0bcab58e cmp dword [rdx+0x2c], -0x05 | |
0bcab592 jnz 0x0bca0030 ->8 | |
0bcab598 mov r14d, [rdx+0x28] | |
0bcab59c mov dword [rax+0x2c], 0xfffffffb | |
0bcab5a3 mov [rax+0x28], r14d | |
0bcab5a7 mov dword [rax+0x34], 0xfffffff4 | |
0bcab5ae mov [rax+0x30], r15d | |
0bcab5b2 mov dword [rax+0x3c], 0xfffffff4 | |
0bcab5b9 mov [rax+0x38], ebx | |
0bcab5bc mov dword [rax+0x44], 0xfffffff4 | |
0bcab5c3 mov [rax+0x40], ebp | |
0bcab5c6 cmp dword [rdx-0x4], 0x40b51cb4 | |
0bcab5cd jnz 0x0bca0034 ->9 | |
0bcab5d3 add edx, -0x40 | |
0bcab5d6 mov [0x405d84b0], edx | |
0bcab5dd cmp dword [rdx-0x8], 0x4109c610 | |
0bcab5e4 jnz 0x0bca0038 ->10 | |
0bcab5ea cmp dword [rdx+0x24], -0x0c | |
0bcab5ee jnz 0x0bca0038 ->10 | |
0bcab5f4 mov ebp, [rdx+0x20] | |
0bcab5f7 cmp dword [rbp+0x18], +0x04 | |
0bcab5fb jbe 0x0bca0038 ->10 | |
0bcab601 mov ebp, [rbp+0x8] | |
0bcab604 cmp dword [rbp+0x24], -0x0c | |
0bcab608 jnz 0x0bca0038 ->10 | |
0bcab60e mov ebx, [rbp+0x20] | |
0bcab611 cmp dword [rdx+0xc], 0xfffeffff | |
0bcab618 jnb 0x0bca0038 ->10 | |
0bcab61e movsd xmm7, [rdx+0x8] | |
0bcab623 cmp dword [rbx+0x18], +0x03 | |
0bcab627 jbe 0x0bca0038 ->10 | |
0bcab62d mov ebp, [rbx+0x8] | |
0bcab630 cmp dword [rbp+0xc], 0xfffeffff | |
0bcab637 jnb 0x0bca0038 ->10 | |
0bcab63d movsd xmm6, [rbp+0x8] | |
0bcab642 cmp dword [rbp+0x14], 0xfffeffff | |
0bcab649 jnb 0x0bca0038 ->10 | |
0bcab64f movsd xmm5, [rbp+0x10] | |
0bcab654 cmp dword [rbp+0x1c], -0x0c | |
0bcab658 jnz 0x0bca0038 ->10 | |
0bcab65e mov ebp, [rbp+0x18] | |
0bcab661 ucomisd xmm6, xmm7 | |
0bcab665 ja 0x0bca003c ->11 | |
0bcab66b cmp dword [rbp+0x18], +0x01 | |
0bcab66f jbe 0x0bca0040 ->12 | |
0bcab675 mov r15d, [rbp+0x8] | |
0bcab679 cmp dword [r15+0xc], -0x05 | |
0bcab67e jnz 0x0bca0040 ->12 | |
0bcab684 mov r15d, [r15+0x8] | |
0bcab688 cmp r15d, 0x405da860 | |
0bcab68f jz 0x0bca0044 ->13 | |
0bcab695 cmp dword [rdx+0x34], -0x0c | |
0bcab699 jnz 0x0bca0048 ->14 | |
0bcab69f mov r15d, [rdx+0x30] | |
0bcab6a3 cmp dword [r15+0x18], +0x01 | |
0bcab6a8 jbe 0x0bca0048 ->14 | |
0bcab6ae mov ebx, [r15+0x8] | |
0bcab6b2 cmp dword [rbx+0xc], -0x05 | |
0bcab6b6 jnz 0x0bca0048 ->14 | |
0bcab6bc cmp dword [rbx+0x8], 0x40be1f48 | |
0bcab6c3 jz 0x0bca004c ->15 | |
0bcab6c9 mov esi, 0x5 | |
0bcab6ce call 0x0041f7e0 ->lj_tab_new1 | |
0bcab6d3 mov ebx, eax | |
0bcab6d5 mov edi, [0x405d84ac] | |
0bcab6dc mov edx, [0x405d84b0] | |
0bcab6e3 mov eax, [rsp+0x8] | |
0bcab6e7 cmp dword [rdx+0x2c], -0x05 | |
0bcab6eb jnz 0x0bca0050 ->16 | |
0bcab6f1 mov r14d, [rdx+0x28] | |
0bcab6f5 mov dword [rbx+0x2c], 0xfffffffb | |
0bcab6fc mov [rbx+0x28], r14d | |
0bcab700 mov dword [rbx+0x34], 0xfffffff4 | |
0bcab707 mov [rbx+0x30], r15d | |
0bcab70b mov dword [rbx+0x3c], 0xfffffff4 | |
0bcab712 mov [rbx+0x38], eax | |
0bcab715 mov dword [rbx+0x44], 0xfffffff4 | |
0bcab71c mov [rbx+0x40], ebp | |
0bcab71f cmp dword [rdx-0x4], 0x40b51cb4 | |
0bcab726 jnz 0x0bca0054 ->17 | |
0bcab72c add edx, -0x40 | |
0bcab72f mov [0x405d84b0], edx | |
0bcab736 cmp dword [rdx-0x8], 0x4109c610 | |
0bcab73d jnz 0x0bca0058 ->18 | |
0bcab743 cmp dword [rdx+0x24], -0x0c | |
0bcab747 jnz 0x0bca0058 ->18 | |
0bcab74d mov ebp, [rdx+0x20] | |
0bcab750 cmp dword [rbp+0x18], +0x04 | |
0bcab754 jbe 0x0bca0058 ->18 | |
0bcab75a mov ebp, [rbp+0x8] | |
0bcab75d cmp dword [rbp+0x24], -0x0c | |
0bcab761 jnz 0x0bca0058 ->18 | |
0bcab767 mov r15d, [rbp+0x20] | |
0bcab76b cmp dword [rdx+0xc], 0xfffeffff | |
0bcab772 jnb 0x0bca0058 ->18 | |
0bcab778 movsd xmm7, [rdx+0x8] | |
0bcab77d cmp dword [r15+0x18], +0x03 | |
0bcab782 jbe 0x0bca0058 ->18 | |
0bcab788 mov ebp, [r15+0x8] | |
0bcab78c cmp dword [rbp+0xc], 0xfffeffff | |
0bcab793 jnb 0x0bca0058 ->18 | |
0bcab799 movsd xmm6, [rbp+0x8] | |
0bcab79e cmp dword [rbp+0x14], 0xfffeffff | |
0bcab7a5 jnb 0x0bca0058 ->18 | |
0bcab7ab movsd xmm5, [rbp+0x10] | |
0bcab7b0 cmp dword [rbp+0x1c], -0x0c | |
0bcab7b4 jnz 0x0bca0058 ->18 | |
0bcab7ba mov ebp, [rbp+0x18] | |
0bcab7bd ucomisd xmm6, xmm7 | |
0bcab7c1 ja 0x0bca005c ->19 | |
0bcab7c7 cmp dword [rbp+0x18], +0x01 | |
0bcab7cb jbe 0x0bca0060 ->20 | |
0bcab7d1 mov r14d, [rbp+0x8] | |
0bcab7d5 cmp dword [r14+0xc], -0x05 | |
0bcab7da jnz 0x0bca0060 ->20 | |
0bcab7e0 mov r14d, [r14+0x8] | |
0bcab7e4 cmp r14d, 0x405da860 | |
0bcab7eb jz 0x0bca0064 ->21 | |
0bcab7f1 cmp dword [rdx+0x34], -0x0c | |
0bcab7f5 jnz 0x0bca0068 ->22 | |
0bcab7fb mov r15d, [rdx+0x30] | |
0bcab7ff cmp dword [r15+0x18], +0x01 | |
0bcab804 jbe 0x0bca0068 ->22 | |
0bcab80a mov r14d, [r15+0x8] | |
0bcab80e cmp dword [r14+0xc], -0x05 | |
0bcab813 jnz 0x0bca0068 ->22 | |
0bcab819 cmp dword [r14+0x8], 0x40be1f48 | |
0bcab821 jz 0x0bca006c ->23 | |
0bcab827 mov esi, 0x5 | |
0bcab82c call 0x0041f7e0 ->lj_tab_new1 | |
0bcab831 mov edx, [0x405d84b0] | |
0bcab838 cmp dword [rdx+0x2c], -0x05 | |
0bcab83c jnz 0x0bca0070 ->24 | |
0bcab842 mov r14d, [rdx+0x28] | |
0bcab846 mov dword [rax+0x2c], 0xfffffffb | |
0bcab84d mov [rax+0x28], r14d | |
0bcab851 mov dword [rax+0x34], 0xfffffff4 | |
0bcab858 mov [rax+0x30], r15d | |
0bcab85c mov dword [rax+0x3c], 0xfffffff4 | |
0bcab863 mov [rax+0x38], ebx | |
0bcab866 mov dword [rax+0x44], 0xfffffff4 | |
0bcab86d mov [rax+0x40], ebp | |
0bcab870 mov ecx, [0x405d84ac] | |
0bcab877 mov ecx, [rcx+0x20] | |
0bcab87a sub ecx, edx | |
0bcab87c cmp ecx, +0x58 | |
0bcab87f jb 0x0bca0074 ->25 | |
0bcab885 mov dword [rdx+0x4c], 0xfffffff4 | |
0bcab88c mov [rdx+0x48], eax | |
0bcab88f mov dword [rdx-0x8], 0x4109c610 | |
0bcab896 jmp 0x0bcab41d | |
---- TRACE 48 stop -> down-recursion | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 49 start 42/3 optimize.lua:661 | |
0029 UGET 6 0 ; reduce | |
0030 TGETB 7 4 2 | |
0031 MOV 8 1 | |
0032 CALL 6 2 3 | |
0000 . JFUNCF 11 42 ; optimize.lua:652 | |
0001 . TGETB 2 0 1 | |
0002 . TGETB 3 0 2 | |
0003 . TGETB 4 0 3 | |
0004 . ISGE 1 2 | |
0005 . JMP 5 => 0026 | |
0026 . TGETB 5 4 1 | |
0027 . ISNES 5 5 ; "if" | |
0028 . JMP 6 => 0065 | |
0065 . RET1 4 2 | |
0033 UGET 7 0 ; reduce | |
0034 TGETB 8 4 3 | |
0035 MOV 9 1 | |
0036 CALL 7 2 3 | |
0000 . JFUNCF 11 42 ; optimize.lua:652 | |
0001 . TGETB 2 0 1 | |
0002 . TGETB 3 0 2 | |
0003 . TGETB 4 0 3 | |
0004 . ISGE 1 2 | |
0005 . JMP 5 => 0026 | |
0026 . TGETB 5 4 1 | |
0027 . ISNES 5 5 ; "if" | |
0028 . JMP 6 => 0065 | |
0029 . UGET 6 0 ; reduce | |
0030 . TGETB 7 4 2 | |
0031 . MOV 8 1 | |
0032 . CALL 6 2 3 | |
0000 . . JFUNCF 11 42 ; optimize.lua:652 | |
0001 . . TGETB 2 0 1 | |
0002 . . TGETB 3 0 2 | |
0003 . . TGETB 4 0 3 | |
0004 . . ISGE 1 2 | |
0005 . . JMP 5 => 0026 | |
0026 . . TGETB 5 4 1 | |
0027 . . ISNES 5 5 ; "if" | |
0028 . . JMP 6 => 0065 | |
0065 . . RET1 4 2 | |
0033 . UGET 7 0 ; reduce | |
0034 . TGETB 8 4 3 | |
0035 . MOV 9 1 | |
0036 . CALL 7 2 3 | |
0000 . . JFUNCF 11 42 ; optimize.lua:652 | |
0001 . . TGETB 2 0 1 | |
0002 . . TGETB 3 0 2 | |
0003 . . TGETB 4 0 3 | |
0004 . . ISGE 1 2 | |
0005 . . JMP 5 => 0026 | |
0026 . . TGETB 5 4 1 | |
0027 . . ISNES 5 5 ; "if" | |
0028 . . JMP 6 => 0065 | |
0029 . . UGET 6 0 ; reduce | |
0030 . . TGETB 7 4 2 | |
0031 . . MOV 8 1 | |
0032 . . CALL 6 2 3 | |
0000 . . . JFUNCF 11 42 ; optimize.lua:652 | |
0001 . . . TGETB 2 0 1 | |
0002 . . . TGETB 3 0 2 | |
0003 . . . TGETB 4 0 3 | |
0004 . . . ISGE 1 2 | |
0005 . . . JMP 5 => 0026 | |
0026 . . . TGETB 5 4 1 | |
0027 . . . ISNES 5 5 ; "if" | |
0028 . . . JMP 6 => 0065 | |
0029 . . . UGET 6 0 ; reduce | |
0030 . . . TGETB 7 4 2 | |
0031 . . . MOV 8 1 | |
0032 . . . CALL 6 2 3 | |
0000 . . . . JFUNCF 11 42 ; optimize.lua:652 | |
---- TRACE 49 abort optimize.lua:652 -- call unroll limit reached | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 49 start optimize.lua:652 | |
0001 TGETB 2 0 1 | |
0002 TGETB 3 0 2 | |
0003 TGETB 4 0 3 | |
0004 ISGE 1 2 | |
0005 JMP 5 => 0026 | |
0026 TGETB 5 4 1 | |
0027 ISNES 5 5 ; "if" | |
0028 JMP 6 => 0065 | |
0065 RET1 4 2 | |
---- TRACE 49 IR | |
0001 > <span class="irt_tab">tab</span> SLOAD #1 T | |
0002 <span class="irt_int">int</span> FLOAD 0001 tab.asize | |
0003 > <span class="irt_int">int</span> ABC 0002 <span class="irt_int">+3 </span> | |
0004 <span class="irt_p32">p32</span> FLOAD 0001 tab.array | |
0005 <span class="irt_p32">p32</span> AREF 0004 <span class="irt_int">+1 </span> | |
0006 > <span class="irt_num">num</span> ALOAD 0005 | |
0007 <span class="irt_p32">p32</span> AREF 0004 <span class="irt_int">+2 </span> | |
0008 > <span class="irt_num">num</span> ALOAD 0007 | |
0009 <span class="irt_p32">p32</span> AREF 0004 <span class="irt_int">+3 </span> | |
0010 > <span class="irt_tab">tab</span> ALOAD 0009 | |
0011 > <span class="irt_num">num</span> SLOAD #2 T | |
0012 > <span class="irt_num">num</span> UGE 0011 0006 | |
0013 <span class="irt_int">int</span> FLOAD 0010 tab.asize | |
0014 > <span class="irt_int">int</span> ABC 0013 <span class="irt_int">+1 </span> | |
0015 <span class="irt_p32">p32</span> FLOAD 0010 tab.array | |
0016 <span class="irt_p32">p32</span> AREF 0015 <span class="irt_int">+1 </span> | |
0017 > <span class="irt_str">str</span> ALOAD 0016 | |
0018 > <span class="irt_str">str</span> NE 0017 <span class="irt_str">"if"</span> | |
---- TRACE 49 mcode 175 | |
0bcab367 mov dword [0x405d84a0], 0x31 | |
0bcab372 cmp dword [rdx+0x4], -0x0c | |
0bcab376 jnz 0x0bca0010 ->0 | |
0bcab37c mov ebp, [rdx] | |
0bcab37e cmp dword [rbp+0x18], +0x03 | |
0bcab382 jbe 0x0bca0010 ->0 | |
0bcab388 mov ebp, [rbp+0x8] | |
0bcab38b cmp dword [rbp+0xc], 0xfffeffff | |
0bcab392 jnb 0x0bca0010 ->0 | |
0bcab398 movsd xmm7, [rbp+0x8] | |
0bcab39d cmp dword [rbp+0x14], 0xfffeffff | |
0bcab3a4 jnb 0x0bca0010 ->0 | |
0bcab3aa movsd xmm6, [rbp+0x10] | |
0bcab3af cmp dword [rbp+0x1c], -0x0c | |
0bcab3b3 jnz 0x0bca0010 ->0 | |
0bcab3b9 mov ebp, [rbp+0x18] | |
0bcab3bc cmp dword [rdx+0xc], 0xfffeffff | |
0bcab3c3 jnb 0x0bca0010 ->0 | |
0bcab3c9 ucomisd xmm7, [rdx+0x8] | |
0bcab3ce ja 0x0bca0014 ->1 | |
0bcab3d4 cmp dword [rbp+0x18], +0x01 | |
0bcab3d8 jbe 0x0bca0018 ->2 | |
0bcab3de mov ebx, [rbp+0x8] | |
0bcab3e1 cmp dword [rbx+0xc], -0x05 | |
0bcab3e5 jnz 0x0bca0018 ->2 | |
0bcab3eb mov ebx, [rbx+0x8] | |
0bcab3ee cmp ebx, 0x405da860 | |
0bcab3f4 jz 0x0bca001c ->3 | |
0bcab3fa mov dword [rdx+0x24], 0xfffffff4 | |
0bcab401 mov [rdx+0x20], ebp | |
0bcab404 xor eax, eax | |
0bcab406 mov ebx, 0x40b51d24 | |
0bcab40b mov r14d, 0x405d8f78 | |
0bcab411 jmp 0x0041d9f8 | |
---- TRACE 49 stop -> return | |
</pre> | |
{ "if", | |
{ ">=", | |
"len", | |
34 }, | |
{ "if", | |
{ "=", | |
{ "[]", | |
12, | |
2 }, | |
8 }, | |
{ "if", | |
{ "if", | |
{ "=", | |
{ "[]", | |
23, | |
1 }, | |
6 }, | |
{ "true" }, | |
{ "if", | |
{ "=", | |
{ "[]", | |
23, | |
1 }, | |
17 }, | |
{ "true" }, | |
{ "=", | |
{ "[]", | |
23, | |
1 }, | |
132 } } }, | |
{ "if", | |
{ "=", | |
{ "&", | |
{ "[]", | |
20, | |
2 }, | |
65311 }, | |
0 }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "<<", | |
{ "&", | |
{ "[]", | |
14, | |
1 }, | |
15 }, | |
2 }, | |
16 }, | |
"len" }, | |
{ "if", | |
{ "<=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
{ "<<", | |
{ "&", | |
{ "[]", | |
14, | |
1 }, | |
15 }, | |
2 }, | |
14 }, | |
2 } }, | |
6000 }, | |
{ "true" }, | |
{ "if", | |
{ "<=", | |
{ "+", | |
{ "<<", | |
{ "&", | |
{ "[]", | |
14, | |
1 }, | |
15 }, | |
2 }, | |
18 }, | |
"len" }, | |
{ "<=", | |
{ "ntohs", | |
{ "[]", | |
{ "+", | |
{ "<<", | |
{ "&", | |
{ "[]", | |
14, | |
1 }, | |
15 }, | |
2 }, | |
16 }, | |
2 } }, | |
6000 }, | |
{ "fail" } } }, | |
{ "fail" } }, | |
{ "fail" } }, | |
{ "false" } }, | |
{ "if", | |
{ ">=", | |
"len", | |
56 }, | |
{ "if", | |
{ "=", | |
{ "[]", | |
12, | |
2 }, | |
56710 }, | |
{ "if", | |
{ "if", | |
{ "if", | |
{ "=", | |
{ "[]", | |
20, | |
1 }, | |
6 }, | |
{ "true" }, | |
{ "if", | |
{ "=", | |
{ "[]", | |
20, | |
1 }, | |
44 }, | |
{ "=", | |
{ "[]", | |
54, | |
1 }, | |
6 }, | |
{ "false" } } }, | |
{ "true" }, | |
{ "if", | |
{ "if", | |
{ "=", | |
{ "[]", | |
20, | |
1 }, | |
17 }, | |
{ "true" }, | |
{ "if", | |
{ "=", | |
{ "[]", | |
20, | |
1 }, | |
44 }, | |
{ "=", | |
{ "[]", | |
54, | |
1 }, | |
17 }, | |
{ "false" } } }, | |
{ "true" }, | |
{ "if", | |
{ "=", | |
{ "[]", | |
20, | |
1 }, | |
132 }, | |
{ "true" }, | |
{ "if", | |
{ "=", | |
{ "[]", | |
20, | |
1 }, | |
44 }, | |
{ "=", | |
{ "[]", | |
54, | |
1 }, | |
132 }, | |
{ "false" } } } } }, | |
{ "if", | |
{ "<=", | |
{ "ntohs", | |
{ "[]", | |
54, | |
2 } }, | |
6000 }, | |
{ "true" }, | |
{ "if", | |
{ ">=", | |
"len", | |
58 }, | |
{ "<=", | |
{ "ntohs", | |
{ "[]", | |
56, | |
2 } }, | |
6000 }, | |
{ "fail" } } }, | |
{ "false" } }, | |
{ "fail" } }, | |
{ "fail" } } }, | |
{ "fail" } } | |
<pre class="ljdump"> | |
---- TRACE 50 start codegen.lua:137 | |
0001 TGETB 1 0 1 | |
0002 ISNES 1 0 ; "false" | |
0003 JMP 1 => 0008 | |
0008 TGETB 1 0 1 | |
0009 ISNES 1 1 ; "true" | |
0010 JMP 1 => 0015 | |
0015 TGETB 1 0 1 | |
0016 ISNES 1 2 ; "fail" | |
0017 JMP 1 => 0022 | |
0018 KSTR 1 3 ; "REJECT" | |
0019 KPRI 2 1 | |
0020 RET 1 3 | |
---- TRACE 50 IR | |
0001 > <span class="irt_tab">tab</span> SLOAD #1 T | |
0002 <span class="irt_int">int</span> FLOAD 0001 tab.asize | |
0003 > <span class="irt_int">int</span> ABC 0002 <span class="irt_int">+1 </span> | |
0004 <span class="irt_p32">p32</span> FLOAD 0001 tab.array | |
0005 <span class="irt_p32">p32</span> AREF 0004 <span class="irt_int">+1 </span> | |
0006 > <span class="irt_str">str</span> ALOAD 0005 | |
0007 > <span class="irt_str">str</span> NE 0006 <span class="irt_str">"false"</span> | |
0008 > <span class="irt_str">str</span> NE 0006 <span class="irt_str">"true"</span> | |
0009 > <span class="irt_str">str</span> EQ 0006 <span class="irt_str">"fail"</span> | |
---- TRACE 50 mcode 124 | |
0bcab2e4 mov dword [0x405d84a0], 0x32 | |
0bcab2ef cmp dword [rdx+0x4], -0x0c | |
0bcab2f3 jnz 0x0bca0010 ->0 | |
0bcab2f9 mov ebp, [rdx] | |
0bcab2fb cmp dword [rbp+0x18], +0x01 | |
0bcab2ff jbe 0x0bca0010 ->0 | |
0bcab305 mov ebp, [rbp+0x8] | |
0bcab308 cmp dword [rbp+0xc], -0x05 | |
0bcab30c jnz 0x0bca0010 ->0 | |
0bcab312 mov ebp, [rbp+0x8] | |
0bcab315 cmp ebp, 0x405da7d8 | |
0bcab31b jz 0x0bca0014 ->1 | |
0bcab321 cmp ebp, 0x405da980 | |
0bcab327 jz 0x0bca0018 ->2 | |
0bcab32d cmp ebp, 0x40bddbf8 | |
0bcab333 jnz 0x0bca001c ->3 | |
0bcab339 mov dword [rdx+0x14], 0xfffffffe | |
0bcab340 mov dword [rdx+0xc], 0xfffffffb | |
0bcab347 mov dword [rdx+0x8], 0x40beef40 | |
0bcab34e xor eax, eax | |
0bcab350 mov ebx, 0x40b3e768 | |
0bcab355 mov r14d, 0x405d8f78 | |
0bcab35b jmp 0x0041d9f8 | |
---- TRACE 50 stop -> return | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 51 start 50/3 codegen.lua:141 | |
0022 UGET 1 2 ; builder | |
0023 TGETS 1 1 4 ; "label" | |
0024 CALL 1 2 1 | |
0000 . FUNCF 2 ; codegen.lua:45 | |
0001 . UGET 0 0 ; lcount | |
0002 . ADDVN 0 0 0 ; 1 | |
0003 . USETV 0 0 ; lcount | |
0004 . KSTR 0 0 ; "L" | |
0005 . UGET 1 0 ; lcount | |
0006 . CAT 0 0 1 | |
---- TRACE 51 abort codegen.lua:47 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 51 start 50/3 codegen.lua:141 | |
0022 UGET 1 2 ; builder | |
0023 TGETS 1 1 4 ; "label" | |
0024 CALL 1 2 1 | |
0000 . FUNCF 2 ; codegen.lua:45 | |
0001 . UGET 0 0 ; lcount | |
0002 . ADDVN 0 0 0 ; 1 | |
0003 . USETV 0 0 ; lcount | |
0004 . KSTR 0 0 ; "L" | |
0005 . UGET 1 0 ; lcount | |
0006 . CAT 0 0 1 | |
---- TRACE 51 abort codegen.lua:47 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 51 start 50/3 codegen.lua:141 | |
0022 UGET 1 2 ; builder | |
0023 TGETS 1 1 4 ; "label" | |
0024 CALL 1 2 1 | |
0000 . FUNCF 2 ; codegen.lua:45 | |
0001 . UGET 0 0 ; lcount | |
0002 . ADDVN 0 0 0 ; 1 | |
0003 . USETV 0 0 ; lcount | |
0004 . KSTR 0 0 ; "L" | |
0005 . UGET 1 0 ; lcount | |
0006 . CAT 0 0 1 | |
---- TRACE 51 abort codegen.lua:47 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 51 start 50/3 codegen.lua:141 | |
0022 UGET 1 2 ; builder | |
0023 TGETS 1 1 4 ; "label" | |
0024 CALL 1 2 1 | |
0000 . FUNCF 2 ; codegen.lua:45 | |
0001 . UGET 0 0 ; lcount | |
0002 . ADDVN 0 0 0 ; 1 | |
0003 . USETV 0 0 ; lcount | |
0004 . KSTR 0 0 ; "L" | |
0005 . UGET 1 0 ; lcount | |
0006 . CAT 0 0 1 | |
---- TRACE 51 abort codegen.lua:47 -- NYI: bytecode 36 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 51 start 50/3 codegen.lua:141 | |
---- TRACE 51 IR | |
---- TRACE 51 mcode 29 | |
0bcab2c0 mov dword [0x405d84a0], 0x33 | |
0bcab2cb xor eax, eax | |
0bcab2cd mov ebx, 0x40b3e770 | |
0bcab2d2 mov r14d, 0x405d8f78 | |
0bcab2d8 jmp 0x0041d9f8 | |
---- TRACE 51 stop -> interpreter | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 52 start codegen.lua:97 | |
0001 ISNES 1 0 ; "len" | |
0002 JMP 2 => 0005 | |
0005 GGET 2 2 ; "type" | |
0006 MOV 3 1 | |
0007 CALL 2 2 2 | |
0000 . FUNCC ; type | |
0008 ISNES 2 3 ; "number" | |
0009 JMP 2 => 0011 | |
0010 RET1 1 2 | |
---- TRACE 52 IR | |
0001 > <span class="irt_num">num</span> SLOAD #2 T | |
0002 <span class="irt_fun">fun</span> SLOAD #0 R | |
0003 <span class="irt_tab">tab</span> FLOAD 0002 func.env | |
0004 <span class="irt_p32">p32</span> HREF 0003 <span class="irt_str">"type"</span> | |
0005 > <span class="irt_p32">p32</span> EQ 0004 <span class="irt_p32">[0x405d8420]</span> | |
0006 <span class="irt_tab">tab</span> FLOAD 0003 tab.meta | |
0007 > <span class="irt_tab">tab</span> NE 0006 <span class="irt_tab">[NULL]</span> | |
0008 <span class="irt_int">int</span> FLOAD 0006 tab.hmask | |
0009 > <span class="irt_int">int</span> EQ 0008 <span class="irt_int">+1 </span> | |
0010 <span class="irt_p32">p32</span> FLOAD 0006 tab.node | |
0011 > <span class="irt_p32">p32</span> HREFK 0010 <span class="irt_str">"__index"</span> @1 | |
0012 > <span class="irt_tab">tab</span> HLOAD 0011 | |
0013 <span class="irt_int">int</span> FLOAD 0012 tab.hmask | |
0014 > <span class="irt_int">int</span> EQ 0013 <span class="irt_int">+63 </span> | |
0015 <span class="irt_p32">p32</span> FLOAD 0012 tab.node | |
0016 > <span class="irt_p32">p32</span> HREFK 0015 <span class="irt_str">"type"</span> @60 | |
0017 > <span class="irt_fun">fun</span> HLOAD 0016 | |
0018 > <span class="irt_fun">fun</span> EQ 0017 <span class="irt_fun">type</span> | |
---- TRACE 52 mcode 219 | |
0bcab1de mov dword [0x405d84a0], 0x34 | |
0bcab1e9 cmp dword [rdx+0xc], 0xfffeffff | |
0bcab1f0 jnb 0x0bca0010 ->0 | |
0bcab1f6 mov ebp, [rdx-0x8] | |
0bcab1f9 mov ebp, [rbp+0x8] | |
0bcab1fc mov ebx, [rbp+0x1c] | |
0bcab1ff and ebx, 0x798a813c | |
0bcab205 lea ebx, [rbx+rbx*2] | |
0bcab208 shl ebx, 0x03 | |
0bcab20b add ebx, [rbp+0x14] | |
0bcab20e cmp dword [rbx+0xc], -0x05 | |
0bcab212 jnz 0x0bcab221 | |
0bcab214 cmp dword [rbx+0x8], 0x405daf18 | |
0bcab21b jz 0x0bca0014 ->1 | |
0bcab221 mov ebx, [rbx+0x10] | |
0bcab224 test ebx, ebx | |
0bcab226 jnz 0x0bcab20e | |
0bcab228 mov ebx, 0x405d8420 | |
0bcab22d mov ebp, [rbp+0x10] | |
0bcab230 test ebp, ebp | |
0bcab232 jz 0x0bca0014 ->1 | |
0bcab238 cmp dword [rbp+0x1c], +0x01 | |
0bcab23c jnz 0x0bca0014 ->1 | |
0bcab242 mov ebp, [rbp+0x14] | |
0bcab245 mov rdi, 0xfffffffb405da430 | |
0bcab24f cmp rdi, [rbp+0x20] | |
0bcab253 jnz 0x0bca0014 ->1 | |
0bcab259 cmp dword [rbp+0x1c], -0x0c | |
0bcab25d jnz 0x0bca0014 ->1 | |
0bcab263 mov ebp, [rbp+0x18] | |
0bcab266 cmp dword [rbp+0x1c], +0x3f | |
0bcab26a jnz 0x0bca0014 ->1 | |
0bcab270 mov ebp, [rbp+0x14] | |
0bcab273 mov rdi, 0xfffffffb405daf18 | |
0bcab27d cmp rdi, [rbp+0x5a8] | |
0bcab284 jnz 0x0bca0014 ->1 | |
0bcab28a cmp dword [rbp+0x5a4], -0x09 | |
0bcab291 jnz 0x0bca0014 ->1 | |
0bcab297 cmp dword [rbp+0x5a0], 0x405dae80 | |
0bcab2a1 jnz 0x0bca0014 ->1 | |
0bcab2a7 xor eax, eax | |
0bcab2a9 mov ebx, 0x403b18f0 | |
0bcab2ae mov r14d, 0x405d8f78 | |
0bcab2b4 jmp 0x0041d9f8 | |
---- TRACE 52 stop -> return | |
</pre> | |
return function(P,length) | |
if not (length >= 34) then return false end | |
do | |
local v1 = ffi.cast("uint16_t*", P+12)[0] | |
if not (v1 == 8) then goto L3 end | |
do | |
local v2 = P[23] | |
if v2 == 6 then goto L4 end | |
do | |
if v2 == 17 then goto L4 end | |
do | |
if not (v2 == 132) then return false end | |
end | |
end | |
::L4:: | |
do | |
local v3 = ffi.cast("uint16_t*", P+20)[0] | |
local v4 = bit.band(v3,65311) | |
if not (v4 == 0) then return false end | |
do | |
local v5 = P[14] | |
local v6 = bit.band(v5,15) | |
local v7 = bit.lshift(v6,2) | |
local v8 = v7+16 | |
if not (v8 <= length) then return false end | |
do | |
local v9 = v7+14 | |
local v10 = ffi.cast("uint16_t*", P+v9)[0] | |
local v11 = bit.rshift(bit.bswap(v10), 16) | |
if v11 <= 6000 then return true end | |
do | |
local v12 = v7+18 | |
if not (v12 <= length) then return false end | |
do | |
local v13 = ffi.cast("uint16_t*", P+v8)[0] | |
local v14 = bit.rshift(bit.bswap(v13), 16) | |
do return v14 <= 6000 end | |
end | |
end | |
end | |
end | |
end | |
end | |
::L3:: | |
do | |
if not (length >= 56) then return false end | |
do | |
if not (v1 == 56710) then return false end | |
do | |
local v15 = P[20] | |
if v15 == 6 then goto L13 end | |
do | |
if not (v15 == 44) then goto L14 end | |
do | |
local v16 = P[54] | |
if v16 == 6 then goto L13 end | |
end | |
end | |
::L14:: | |
do | |
if v15 == 17 then goto L13 end | |
do | |
if not (v15 == 44) then goto L17 end | |
do | |
local v17 = P[54] | |
if v17 == 17 then goto L13 end | |
end | |
end | |
::L17:: | |
do | |
if v15 == 132 then goto L13 end | |
do | |
if not (v15 == 44) then return false end | |
do | |
local v18 = P[54] | |
if not (v18 == 132) then return false end | |
end | |
end | |
end | |
end | |
::L13:: | |
do | |
local v19 = ffi.cast("uint16_t*", P+54)[0] | |
local v20 = bit.rshift(bit.bswap(v19), 16) | |
if v20 <= 6000 then return true end | |
do | |
if not (length >= 58) then return false end | |
do | |
local v21 = ffi.cast("uint16_t*", P+56)[0] | |
local v22 = bit.rshift(bit.bswap(v21), 16) | |
do return v22 <= 6000 end | |
end | |
end | |
end | |
end | |
end | |
end | |
end | |
end | |
<pre class="ljdump"> | |
---- TRACE 53 start pflua-match:12 | |
0006 UGET 5 0 ; ffi | |
0007 TGETS 5 5 0 ; "cast" | |
0008 KSTR 6 1 ; "struct pcap_record *" | |
0009 MOV 7 0 | |
0010 CALL 5 2 3 | |
0000 . FUNCC ; ffi.cast | |
0011 UGET 6 0 ; ffi | |
0012 TGETS 6 6 0 ; "cast" | |
0013 KSTR 7 2 ; "unsigned char *" | |
0014 ADDVN 8 5 0 ; 1 | |
0000 . . FUNCC ; ffi.meta.__add | |
0015 CALL 6 2 3 | |
0000 . FUNCC ; ffi.cast | |
0016 TGETS 7 5 3 ; "incl_len" | |
0000 . . FUNCC ; ffi.meta.__index | |
0017 ADDVV 7 6 7 | |
0000 . . FUNCC ; ffi.meta.__add | |
0018 MOV 8 2 | |
0019 MOV 9 6 | |
0020 TGETS 10 5 3 ; "incl_len" | |
0000 . . FUNCC ; ffi.meta.__index | |
0021 CALL 8 2 3 | |
0000 . FUNCF 18 ; "portrange 0-6000":1 | |
0001 . KSHORT 2 34 | |
0002 . ISLE 2 1 | |
0003 . JMP 2 => 0006 | |
0006 . GGET 2 0 ; "ffi" | |
0007 . TGETS 2 2 1 ; "cast" | |
0008 . KSTR 3 2 ; "uint16_t*" | |
0009 . ADDVN 4 0 0 ; 12 | |
0000 . . . FUNCC ; ffi.meta.__add | |
0010 . CALL 2 2 3 | |
0000 . . FUNCC ; ffi.cast | |
0011 . TGETB 2 2 0 | |
0000 . . . FUNCC ; ffi.meta.__index | |
0012 . ISEQN 2 1 ; 8 | |
0013 . JMP 3 => 0015 | |
0015 . TGETB 3 0 23 | |
0000 . . . FUNCC ; ffi.meta.__index | |
0016 . ISNEN 3 2 ; 6 | |
0017 . JMP 4 => 0019 | |
0018 . JMP 4 => 0026 | |
0026 . GGET 4 0 ; "ffi" | |
0027 . TGETS 4 4 1 ; "cast" | |
0028 . KSTR 5 2 ; "uint16_t*" | |
0029 . ADDVN 6 0 5 ; 20 | |
0000 . . . FUNCC ; ffi.meta.__add | |
0030 . CALL 4 2 3 | |
0000 . . FUNCC ; ffi.cast | |
0031 . TGETB 4 4 0 | |
0000 . . . FUNCC ; ffi.meta.__index | |
0032 . GGET 5 3 ; "bit" | |
0033 . TGETS 5 5 4 ; "band" | |
0034 . MOV 6 4 | |
0035 . KNUM 7 6 ; 65311 | |
0036 . CALL 5 2 3 | |
0000 . . FUNCC ; bit.band | |
0037 . ISEQN 5 7 ; 0 | |
0038 . JMP 6 => 0041 | |
0041 . TGETB 6 0 14 | |
0000 . . . FUNCC ; ffi.meta.__index | |
0042 . GGET 7 3 ; "bit" | |
0043 . TGETS 7 7 4 ; "band" | |
0044 . MOV 8 6 | |
0045 . KSHORT 9 15 | |
0046 . CALL 7 2 3 | |
0000 . . FUNCC ; bit.band | |
0047 . GGET 8 3 ; "bit" | |
0048 . TGETS 8 8 5 ; "lshift" | |
0049 . MOV 9 7 | |
0050 . KSHORT 10 2 | |
0051 . CALL 8 2 3 | |
0000 . . FUNCC ; bit.lshift | |
0052 . ADDVN 9 8 8 ; 16 | |
0053 . ISLE 9 1 | |
0054 . JMP 10 => 0057 | |
0057 . ADDVN 10 8 9 ; 14 | |
0058 . GGET 11 0 ; "ffi" | |
0059 . TGETS 11 11 1 ; "cast" | |
0060 . KSTR 12 2 ; "uint16_t*" | |
0061 . ADDVV 13 0 10 | |
0000 . . . FUNCC ; ffi.meta.__add | |
0062 . CALL 11 2 3 | |
0000 . . FUNCC ; ffi.cast | |
0063 . TGETB 11 11 0 | |
0000 . . . FUNCC ; ffi.meta.__index | |
0064 . GGET 12 3 ; "bit" | |
0065 . TGETS 12 12 6 ; "rshift" | |
0066 . GGET 13 3 ; "bit" | |
0067 . TGETS 13 13 7 ; "bswap" | |
0068 . MOV 14 11 | |
0069 . CALL 13 2 2 | |
0000 . . FUNCC ; bit.bswap | |
0070 . KSHORT 14 16 | |
0071 . CALL 12 2 3 | |
0000 . . FUNCC ; bit.rshift | |
0072 . KSHORT 13 6000 | |
0073 . ISGT 12 13 | |
0074 . JMP 13 => 0077 | |
0075 . KPRI 13 2 | |
0076 . RET1 13 2 | |
0022 ISF 8 | |
0023 JMP 9 => 0025 | |
0024 ADDVN 4 4 0 ; 1 | |
0025 ADDVN 3 3 0 ; 1 | |
0026 MOV 0 7 | |
0027 JMP 5 => 0003 | |
0003 ISGE 0 1 | |
0004 JMP 5 => 0028 | |
0000 . . FUNCC ; ffi.meta.__lt | |
0005 LOOP 5 => 0028 | |
---- TRACE 53 IR | |
0001 <span class="irt_fun">fun</span> SLOAD #0 R | |
0002 > <span class="irt_p32">p32</span> UREFO 0001 #0 | |
0003 > <span class="irt_tab">tab</span> ULOAD 0002 | |
0004 <span class="irt_int">int</span> FLOAD 0003 tab.hmask | |
0005 > <span class="irt_int">int</span> EQ 0004 <span class="irt_int">+31 </span> | |
0006 <span class="irt_p32">p32</span> FLOAD 0003 tab.node | |
0007 > <span class="irt_p32">p32</span> HREFK 0006 <span class="irt_str">"cast"</span> @6 | |
0008 > <span class="irt_fun">fun</span> HLOAD 0007 | |
0009 > <span class="irt_cdt">cdt</span> SLOAD #1 T | |
0010 > <span class="irt_fun">fun</span> EQ 0008 <span class="irt_fun">ffi.cast</span> | |
0011 <span class="irt_u16">u16</span> FLOAD 0009 cdata.ctypeid | |
0012 > <span class="irt_int">int</span> EQ 0011 <span class="irt_int">+181</span> | |
0013 <span class="irt_p64">p64</span> FLOAD 0009 cdata.ptr | |
0014 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+183</span> 0013 | |
0015 <span class="irt_p64">p64</span> ADD 0013 <span class="irt_i64">+16 </span> | |
0017 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0015 | |
0018 <span class="irt_p64">p64</span> ADD 0013 <span class="irt_i64">+8 </span> | |
0019 <span class="irt_u32">u32</span> XLOAD 0018 | |
0020 <span class="irt_num">num</span> CONV 0019 <span class="irt_num">num</span>.<span class="irt_u32">u32</span> | |
0021 + <span class="irt_p64">p64</span> ADD 0019 0015 | |
0022 }+ <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0021 | |
0023 > <span class="irt_fun">fun</span> SLOAD #3 T | |
0024 > <span class="irt_fun">fun</span> EQ 0023 <span class="irt_fun">"portrange 0-6000":1</span> | |
0025 > <span class="irt_num">num</span> GE 0020 <span class="irt_num">+34 </span> | |
0026 <span class="irt_tab">tab</span> FLOAD <span class="irt_fun">"portrange 0-6000":1</span> func.env | |
0027 <span class="irt_int">int</span> FLOAD 0026 tab.hmask | |
0028 > <span class="irt_int">int</span> EQ 0027 <span class="irt_int">+63 </span> | |
0029 <span class="irt_p32">p32</span> FLOAD 0026 tab.node | |
0030 > <span class="irt_p32">p32</span> HREFK 0029 <span class="irt_str">"ffi"</span> @33 | |
0031 > <span class="irt_tab">tab</span> HLOAD 0030 | |
0032 <span class="irt_int">int</span> FLOAD 0031 tab.hmask | |
0033 > <span class="irt_int">int</span> EQ 0032 <span class="irt_int">+31 </span> | |
0034 <span class="irt_p32">p32</span> FLOAD 0031 tab.node | |
0035 > <span class="irt_p32">p32</span> HREFK 0034 <span class="irt_str">"cast"</span> @6 | |
0036 > <span class="irt_fun">fun</span> HLOAD 0035 | |
0037 <span class="irt_p64">p64</span> ADD 0013 <span class="irt_i64">+28 </span> | |
0039 > <span class="irt_fun">fun</span> EQ 0036 <span class="irt_fun">ffi.cast</span> | |
0041 <span class="irt_u16">u16</span> XLOAD 0037 | |
0042 > <span class="irt_int">int</span> EQ 0041 <span class="irt_int">+8 </span> | |
0044 <span class="irt_p64">p64</span> ADD 0013 <span class="irt_i64">+39 </span> | |
0045 <span class="irt_u8 ">u8 </span> XLOAD 0044 | |
0046 > <span class="irt_int">int</span> EQ 0045 <span class="irt_int">+6 </span> | |
0047 <span class="irt_p64">p64</span> ADD 0013 <span class="irt_i64">+36 </span> | |
0050 <span class="irt_u16">u16</span> XLOAD 0047 | |
0051 > <span class="irt_p32">p32</span> HREFK 0029 <span class="irt_str">"bit"</span> @38 | |
0052 > <span class="irt_tab">tab</span> HLOAD 0051 | |
0053 <span class="irt_int">int</span> FLOAD 0052 tab.hmask | |
0054 > <span class="irt_int">int</span> EQ 0053 <span class="irt_int">+15 </span> | |
0055 <span class="irt_p32">p32</span> FLOAD 0052 tab.node | |
0056 > <span class="irt_p32">p32</span> HREFK 0055 <span class="irt_str">"band"</span> @15 | |
0057 > <span class="irt_fun">fun</span> HLOAD 0056 | |
0058 > <span class="irt_fun">fun</span> EQ 0057 <span class="irt_fun">bit.band</span> | |
0059 <span class="irt_int">int</span> BAND 0050 <span class="irt_int">+65311</span> | |
0060 > <span class="irt_int">int</span> EQ 0059 <span class="irt_int">+0 </span> | |
0062 <span class="irt_p64">p64</span> ADD 0013 <span class="irt_i64">+30 </span> | |
0063 <span class="irt_u8 ">u8 </span> XLOAD 0062 | |
0064 <span class="irt_int">int</span> BAND 0063 <span class="irt_int">+15 </span> | |
0065 > <span class="irt_p32">p32</span> HREFK 0055 <span class="irt_str">"lshift"</span> @13 | |
0066 > <span class="irt_fun">fun</span> HLOAD 0065 | |
0067 > <span class="irt_fun">fun</span> EQ 0066 <span class="irt_fun">bit.lshift</span> | |
0068 <span class="irt_int">int</span> BSHL 0063 <span class="irt_int">+2 </span> | |
0069 <span class="irt_int">int</span> BAND 0068 <span class="irt_int">+60 </span> | |
0070 > <span class="irt_int">int</span> ADDOV 0069 <span class="irt_int">+16 </span> | |
0071 <span class="irt_num">num</span> CONV 0070 <span class="irt_num">num</span>.<span class="irt_int">int</span> | |
0072 > <span class="irt_num">num</span> LE 0071 0020 | |
0073 > <span class="irt_int">int</span> ADDOV 0069 <span class="irt_int">+14 </span> | |
0074 <span class="irt_i64">i64</span> CONV 0073 <span class="irt_i64">i64</span>.<span class="irt_int">int</span> sext | |
0075 <span class="irt_p64">p64</span> ADD 0074 0015 | |
0078 <span class="irt_u16">u16</span> XLOAD 0075 | |
0079 > <span class="irt_p32">p32</span> HREFK 0055 <span class="irt_str">"rshift"</span> @5 | |
0080 > <span class="irt_fun">fun</span> HLOAD 0079 | |
0081 > <span class="irt_p32">p32</span> HREFK 0055 <span class="irt_str">"bswap"</span> @7 | |
0082 > <span class="irt_fun">fun</span> HLOAD 0081 | |
0083 > <span class="irt_fun">fun</span> EQ 0082 <span class="irt_fun">bit.bswap</span> | |
0084 <span class="irt_int">int</span> BSWAP 0078 | |
0085 > <span class="irt_fun">fun</span> EQ 0080 <span class="irt_fun">bit.rshift</span> | |
0086 <span class="irt_int">int</span> BSHR 0084 <span class="irt_int">+16 </span> | |
0087 > <span class="irt_int">int</span> LE 0086 <span class="irt_int">+6000</span> | |
0088 > <span class="irt_num">num</span> SLOAD #5 T | |
0089 + <span class="irt_num">num</span> ADD 0088 <span class="irt_num">+1 </span> | |
0090 > <span class="irt_num">num</span> SLOAD #4 T | |
0091 + <span class="irt_num">num</span> ADD 0090 <span class="irt_num">+1 </span> | |
0092 > <span class="irt_cdt">cdt</span> SLOAD #2 T | |
0093 <span class="irt_u16">u16</span> FLOAD 0092 cdata.ctypeid | |
0094 > <span class="irt_int">int</span> EQ 0093 <span class="irt_int">+181</span> | |
0095 <span class="irt_p64">p64</span> FLOAD 0092 cdata.ptr | |
0096 > <span class="irt_p64">p64</span> UGT 0095 0021 | |
0097 ------ LOOP ------------ | |
0098 > <span class="irt_p32">p32</span> UREFO 0001 #0 | |
0099 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+183</span> 0021 | |
0100 <span class="irt_p64">p64</span> ADD 0021 <span class="irt_i64">+16 </span> | |
0101 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0100 | |
0102 <span class="irt_p64">p64</span> ADD 0021 <span class="irt_i64">+8 </span> | |
0103 <span class="irt_u32">u32</span> XLOAD 0102 | |
0104 <span class="irt_num">num</span> CONV 0103 <span class="irt_num">num</span>.<span class="irt_u32">u32</span> | |
0105 + <span class="irt_p64">p64</span> ADD 0103 0100 | |
0106 }+ <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0105 | |
0107 > <span class="irt_num">num</span> GE 0104 <span class="irt_num">+34 </span> | |
0108 <span class="irt_p64">p64</span> ADD 0021 <span class="irt_i64">+28 </span> | |
0109 <span class="irt_u16">u16</span> XLOAD 0108 | |
0110 > <span class="irt_int">int</span> EQ 0109 <span class="irt_int">+8 </span> | |
0111 <span class="irt_p64">p64</span> ADD 0021 <span class="irt_i64">+39 </span> | |
0112 <span class="irt_u8 ">u8 </span> XLOAD 0111 | |
0113 > <span class="irt_int">int</span> EQ 0112 <span class="irt_int">+6 </span> | |
0114 <span class="irt_p64">p64</span> ADD 0021 <span class="irt_i64">+36 </span> | |
0115 <span class="irt_u16">u16</span> XLOAD 0114 | |
0116 <span class="irt_int">int</span> BAND 0115 <span class="irt_int">+65311</span> | |
0117 > <span class="irt_int">int</span> EQ 0116 <span class="irt_int">+0 </span> | |
0118 <span class="irt_p64">p64</span> ADD 0021 <span class="irt_i64">+30 </span> | |
0119 <span class="irt_u8 ">u8 </span> XLOAD 0118 | |
0120 <span class="irt_int">int</span> BAND 0119 <span class="irt_int">+15 </span> | |
0121 <span class="irt_int">int</span> BSHL 0119 <span class="irt_int">+2 </span> | |
0122 <span class="irt_int">int</span> BAND 0121 <span class="irt_int">+60 </span> | |
0123 > <span class="irt_int">int</span> ADDOV 0122 <span class="irt_int">+16 </span> | |
0124 <span class="irt_num">num</span> CONV 0123 <span class="irt_num">num</span>.<span class="irt_int">int</span> | |
0125 > <span class="irt_num">num</span> LE 0124 0104 | |
0126 > <span class="irt_int">int</span> ADDOV 0122 <span class="irt_int">+14 </span> | |
0127 <span class="irt_i64">i64</span> CONV 0126 <span class="irt_i64">i64</span>.<span class="irt_int">int</span> sext | |
0128 <span class="irt_p64">p64</span> ADD 0127 0100 | |
0129 <span class="irt_u16">u16</span> XLOAD 0128 | |
0130 <span class="irt_int">int</span> BSWAP 0129 | |
0131 <span class="irt_int">int</span> BSHR 0130 <span class="irt_int">+16 </span> | |
0132 > <span class="irt_int">int</span> LE 0131 <span class="irt_int">+6000</span> | |
0133 + <span class="irt_num">num</span> ADD 0089 <span class="irt_num">+1 </span> | |
0134 + <span class="irt_num">num</span> ADD 0091 <span class="irt_num">+1 </span> | |
0135 > <span class="irt_p64">p64</span> ULT 0105 0095 | |
0136 } <span class="irt_cdt">cdt</span> PHI 0022 0106 | |
0137 <span class="irt_p64">p64</span> PHI 0021 0105 | |
0138 <span class="irt_num">num</span> PHI 0089 0133 | |
0139 <span class="irt_num">num</span> PHI 0091 0134 | |
---- TRACE 53 mcode 1024 | |
0bcaadde mov dword [0x405d84a0], 0x35 | |
0bcaade9 mov eax, edx | |
0bcaadeb movsd xmm1, [0x401f5d40] | |
0bcaadf4 movsd xmm0, [0x401f5ce0] | |
0bcaadfd mov ecx, [rax-0x8] | |
0bcaae00 mov edi, [rcx+0x14] | |
0bcaae03 mov ecx, [rdi+0x10] | |
0bcaae06 cmp dword [rcx+0x4], -0x0c | |
0bcaae0a jnz 0x0bca0010 ->0 | |
0bcaae10 mov ecx, [rcx] | |
0bcaae12 cmp dword [rcx+0x1c], +0x1f | |
0bcaae16 jnz 0x0bca0010 ->0 | |
0bcaae1c mov edx, [rcx+0x14] | |
0bcaae1f mov rdi, 0xfffffffb405f6810 | |
0bcaae29 cmp rdi, [rdx+0x98] | |
0bcaae30 jnz 0x0bca0010 ->0 | |
0bcaae36 cmp dword [rdx+0x94], -0x09 | |
0bcaae3d jnz 0x0bca0010 ->0 | |
0bcaae43 cmp dword [rax+0x4], -0x0b | |
0bcaae47 jnz 0x0bca0010 ->0 | |
0bcaae4d mov ecx, [rax] | |
0bcaae4f cmp dword [rdx+0x90], 0x405ed8a8 | |
0bcaae59 jnz 0x0bca0010 ->0 | |
0bcaae5f movzx edx, word [rcx+0x6] | |
0bcaae63 cmp edx, 0xb5 | |
0bcaae69 jnz 0x0bca0010 ->0 | |
0bcaae6f mov r9, [rcx+0x8] | |
0bcaae73 mov [rsp+0x8], r9 | |
0bcaae78 mov rdx, r9 | |
0bcaae7b add rdx, +0x10 | |
0bcaae7f mov ebp, [r9+0x8] | |
0bcaae83 xorps xmm2, xmm2 | |
0bcaae86 cvtsi2sd xmm2, rbp | |
0bcaae8b add rbp, rdx | |
0bcaae8e cmp dword [rax+0x14], -0x09 | |
0bcaae92 jnz 0x0bca0010 ->0 | |
0bcaae98 cmp dword [rax+0x10], 0x409d0948 | |
0bcaae9f jnz 0x0bca0010 ->0 | |
0bcaaea5 ucomisd xmm2, xmm1 | |
0bcaaea9 jb 0x0bca0014 ->1 | |
0bcaaeaf mov ecx, [0x409d0950] | |
0bcaaeb6 cmp dword [rcx+0x1c], +0x3f | |
0bcaaeba jnz 0x0bca0018 ->2 | |
0bcaaec0 mov ecx, [rcx+0x14] | |
0bcaaec3 mov rdi, 0xfffffffb405dfc60 | |
0bcaaecd cmp rdi, [rcx+0x320] | |
0bcaaed4 jnz 0x0bca0018 ->2 | |
0bcaaeda cmp dword [rcx+0x31c], -0x0c | |
0bcaaee1 jnz 0x0bca0018 ->2 | |
0bcaaee7 mov ebx, [rcx+0x318] | |
0bcaaeed cmp dword [rbx+0x1c], +0x1f | |
0bcaaef1 jnz 0x0bca0018 ->2 | |
0bcaaef7 mov ebx, [rbx+0x14] | |
0bcaaefa mov rdi, 0xfffffffb405f6810 | |
0bcaaf04 cmp rdi, [rbx+0x98] | |
0bcaaf0b jnz 0x0bca0018 ->2 | |
0bcaaf11 cmp dword [rbx+0x94], -0x09 | |
0bcaaf18 jnz 0x0bca0018 ->2 | |
0bcaaf1e cmp dword [rbx+0x90], 0x405ed8a8 | |
0bcaaf28 jnz 0x0bca0018 ->2 | |
0bcaaf2e movzx ebx, word [r9+0x1c] | |
0bcaaf33 cmp ebx, +0x08 | |
0bcaaf36 jnz 0x0bca001c ->3 | |
0bcaaf3c movzx esi, byte [r9+0x27] | |
0bcaaf41 cmp esi, +0x06 | |
0bcaaf44 jnz 0x0bca0020 ->4 | |
0bcaaf4a movzx edi, word [r9+0x24] | |
0bcaaf4f mov r15, 0xfffffffb405decf0 | |
0bcaaf59 cmp r15, [rcx+0x398] | |
0bcaaf60 jnz 0x0bca0024 ->5 | |
0bcaaf66 cmp dword [rcx+0x394], -0x0c | |
0bcaaf6d jnz 0x0bca0024 ->5 | |
0bcaaf73 mov ecx, [rcx+0x390] | |
0bcaaf79 cmp dword [rcx+0x1c], +0x0f | |
0bcaaf7d jnz 0x0bca0024 ->5 | |
0bcaaf83 mov ecx, [rcx+0x14] | |
0bcaaf86 mov r15, 0xfffffffb405df128 | |
0bcaaf90 cmp r15, [rcx+0x170] | |
0bcaaf97 jnz 0x0bca0024 ->5 | |
0bcaaf9d cmp dword [rcx+0x16c], -0x09 | |
0bcaafa4 jnz 0x0bca0024 ->5 | |
0bcaafaa cmp dword [rcx+0x168], 0x405df100 | |
0bcaafb4 jnz 0x0bca0024 ->5 | |
0bcaafba mov r8d, edi | |
0bcaafbd and r8d, 0xff1f | |
0bcaafc4 jnz 0x0bca0028 ->6 | |
0bcaafca movzx r9d, byte [r9+0x1e] | |
0bcaafcf mov r10d, r9d | |
0bcaafd2 and r10d, +0x0f | |
0bcaafd6 mov r15, 0xfffffffb405defc0 | |
0bcaafe0 cmp r15, [rcx+0x140] | |
0bcaafe7 jnz 0x0bca002c ->7 | |
0bcaafed cmp dword [rcx+0x13c], -0x09 | |
0bcaaff4 jnz 0x0bca002c ->7 | |
0bcaaffa cmp dword [rcx+0x138], 0x405def98 | |
0bcab004 jnz 0x0bca002c ->7 | |
0bcab00a mov r11d, r9d | |
0bcab00d shl r11d, 0x02 | |
0bcab011 and r11d, +0x3c | |
0bcab015 mov r12d, r11d | |
0bcab018 add r12d, +0x10 | |
0bcab01c jo 0x0bca002c ->7 | |
0bcab022 xorps xmm3, xmm3 | |
0bcab025 cvtsi2sd xmm3, r12d | |
0bcab02a ucomisd xmm2, xmm3 | |
0bcab02e jb 0x0bca0030 ->8 | |
0bcab034 mov r13d, r11d | |
0bcab037 add r13d, +0x0e | |
0bcab03b jo 0x0bca0034 ->9 | |
0bcab041 movsxd r14, r13d | |
0bcab044 movzx r14d, word [r14+rdx] | |
0bcab049 mov r15, 0xfffffffb405df008 | |
0bcab053 cmp r15, [rcx+0x80] | |
0bcab05a jnz 0x0bca0034 ->9 | |
0bcab060 cmp dword [rcx+0x7c], -0x09 | |
0bcab064 jnz 0x0bca0034 ->9 | |
0bcab06a mov r15, 0xfffffffb405def78 | |
0bcab074 cmp r15, [rcx+0xb0] | |
0bcab07b jnz 0x0bca0034 ->9 | |
0bcab081 cmp dword [rcx+0xac], -0x09 | |
0bcab088 jnz 0x0bca0034 ->9 | |
0bcab08e cmp dword [rcx+0xa8], 0x405def50 | |
0bcab098 jnz 0x0bca0034 ->9 | |
0bcab09e mov r15d, r14d | |
0bcab0a1 bswap r15d | |
0bcab0a4 cmp dword [rcx+0x78], 0x405defe0 | |
0bcab0ab jnz 0x0bca0034 ->9 | |
0bcab0b1 shr r15d, 0x10 | |
0bcab0b5 cmp r15d, 0x1770 | |
0bcab0bc jg 0x0bca0038 ->10 | |
0bcab0c2 cmp dword [rax+0x24], 0xfffeffff | |
0bcab0c9 jnb 0x0bca003c ->11 | |
0bcab0cf movsd xmm6, [rax+0x20] | |
0bcab0d4 addsd xmm6, xmm0 | |
0bcab0d8 cmp dword [rax+0x1c], 0xfffeffff | |
0bcab0df jnb 0x0bca003c ->11 | |
0bcab0e5 movsd xmm7, [rax+0x18] | |
0bcab0ea addsd xmm7, xmm0 | |
0bcab0ee cmp dword [rax+0xc], -0x0b | |
0bcab0f2 jnz 0x0bca003c ->11 | |
0bcab0f8 mov eax, [rax+0x8] | |
0bcab0fb movzx ecx, word [rax+0x6] | |
0bcab0ff cmp ecx, 0xb5 | |
0bcab105 jnz 0x0bca0040 ->12 | |
0bcab10b mov rax, [rax+0x8] | |
0bcab10f cmp rbp, rax | |
0bcab112 jnb 0x0bca0040 ->12 | |
->LOOP: | |
0bcab118 mov rbx, rbp | |
0bcab11b mov r15, rbx | |
0bcab11e add r15, +0x10 | |
0bcab122 mov ebp, [rbx+0x8] | |
0bcab125 xorps xmm5, xmm5 | |
0bcab128 cvtsi2sd xmm5, rbp | |
0bcab12d add rbp, r15 | |
0bcab130 ucomisd xmm5, xmm1 | |
0bcab134 jb 0x0bca0048 ->14 | |
0bcab13a movzx r14d, word [rbx+0x1c] | |
0bcab13f cmp r14d, +0x08 | |
0bcab143 jnz 0x0bca004c ->15 | |
0bcab149 movzx r13d, byte [rbx+0x27] | |
0bcab14e cmp r13d, +0x06 | |
0bcab152 jnz 0x0bca0050 ->16 | |
0bcab158 movzx r12d, word [rbx+0x24] | |
0bcab15d mov edi, r12d | |
0bcab160 and edi, 0xff1f | |
0bcab166 jnz 0x0bca0054 ->17 | |
0bcab16c movzx esi, byte [rbx+0x1e] | |
0bcab170 mov edx, esi | |
0bcab172 and edx, +0x0f | |
0bcab175 mov ecx, esi | |
0bcab177 shl ecx, 0x02 | |
0bcab17a and ecx, +0x3c | |
0bcab17d mov r11d, ecx | |
0bcab180 add r11d, +0x10 | |
0bcab184 jo 0x0bca0058 ->18 | |
0bcab18a xorps xmm4, xmm4 | |
0bcab18d cvtsi2sd xmm4, r11d | |
0bcab192 ucomisd xmm5, xmm4 | |
0bcab196 jb 0x0bca005c ->19 | |
0bcab19c mov r10d, ecx | |
0bcab19f add r10d, +0x0e | |
0bcab1a3 jo 0x0bca0060 ->20 | |
0bcab1a9 movsxd r9, r10d | |
0bcab1ac movzx r9d, word [r9+r15] | |
0bcab1b1 mov r8d, r9d | |
0bcab1b4 bswap r8d | |
0bcab1b7 shr r8d, 0x10 | |
0bcab1bb cmp r8d, 0x1770 | |
0bcab1c2 jg 0x0bca0064 ->21 | |
0bcab1c8 addsd xmm6, xmm0 | |
0bcab1cc addsd xmm7, xmm0 | |
0bcab1d0 cmp rbp, rax | |
0bcab1d3 jb 0x0bcab118 ->LOOP | |
0bcab1d9 jmp 0x0bca0068 ->22 | |
---- TRACE 53 stop -> loop | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 54 start 53/21 "portrange 0-6000":32 | |
0077 . ADDVN 13 8 10 ; 18 | |
0078 . ISLE 13 1 | |
0079 . JMP 14 => 0082 | |
0082 . GGET 14 0 ; "ffi" | |
0083 . TGETS 14 14 1 ; "cast" | |
0084 . KSTR 15 2 ; "uint16_t*" | |
0085 . ADDVV 16 0 9 | |
0000 . . . FUNCC ; ffi.meta.__add | |
0086 . CALL 14 2 3 | |
0000 . . FUNCC ; ffi.cast | |
0087 . TGETB 14 14 0 | |
0000 . . . FUNCC ; ffi.meta.__index | |
0088 . GGET 15 3 ; "bit" | |
0089 . TGETS 15 15 6 ; "rshift" | |
0090 . GGET 16 3 ; "bit" | |
0091 . TGETS 16 16 7 ; "bswap" | |
0092 . MOV 17 14 | |
0093 . CALL 16 2 2 | |
0000 . . FUNCC ; bit.bswap | |
0094 . KSHORT 17 16 | |
0095 . CALL 15 2 3 | |
0000 . . FUNCC ; bit.rshift | |
0096 . KSHORT 16 6000 | |
0097 . ISLE 15 16 | |
0098 . JMP 16 => 0101 | |
0101 . KPRI 16 2 | |
0102 . RET1 16 2 | |
0022 ISF 8 | |
0023 JMP 9 => 0025 | |
0024 ADDVN 4 4 0 ; 1 | |
0025 ADDVN 3 3 0 ; 1 | |
0026 MOV 0 7 | |
0027 JMP 5 => 0003 | |
0003 ISGE 0 1 | |
0004 JMP 5 => 0028 | |
0000 . . FUNCC ; ffi.meta.__lt | |
0005 JLOOP 5 53 | |
---- TRACE 54 IR | |
0001 <span class="irt_num">num</span> SLOAD #4 PI | |
0002 <span class="irt_num">num</span> SLOAD #5 PI | |
0003 <span class="irt_num">num</span> SLOAD #11 PI | |
0004 <span class="irt_u16">u16</span> SLOAD #12 PI | |
0005 <span class="irt_u8 ">u8 </span> SLOAD #13 PI | |
0006 <span class="irt_u16">u16</span> SLOAD #14 PI | |
0007 <span class="irt_int">int</span> SLOAD #15 PI | |
0008 <span class="irt_u8 ">u8 </span> SLOAD #16 PI | |
0009 <span class="irt_int">int</span> SLOAD #17 PI | |
0010 <span class="irt_int">int</span> SLOAD #18 PI | |
0011 <span class="irt_int">int</span> SLOAD #19 PI | |
0012 <span class="irt_int">int</span> SLOAD #20 PI | |
0013 <span class="irt_u16">u16</span> SLOAD #21 PI | |
0014 <span class="irt_int">int</span> SLOAD #22 PI | |
0015 <span class="irt_p64">p64</span> PVAL #21 | |
0016 <span class="irt_p64">p64</span> PVAL #100 | |
0017 <span class="irt_p64">p64</span> PVAL #105 | |
0018 + <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0015 | |
0019 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+183</span> 0015 | |
0020 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0016 | |
0021 + <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0017 | |
0022 > <span class="irt_nil">nil</span> GCSTEP | |
0023 > <span class="irt_int">int</span> ADDOV 0010 <span class="irt_int">+18 </span> | |
0024 <span class="irt_num">num</span> CONV 0023 <span class="irt_num">num</span>.<span class="irt_int">int</span> | |
0025 > <span class="irt_num">num</span> LE 0024 0003 | |
0026 <span class="irt_tab">tab</span> FLOAD <span class="irt_fun">"portrange 0-6000":1</span> func.env | |
0027 <span class="irt_int">int</span> FLOAD 0026 tab.hmask | |
0028 > <span class="irt_int">int</span> EQ 0027 <span class="irt_int">+63 </span> | |
0029 <span class="irt_p32">p32</span> FLOAD 0026 tab.node | |
0030 > <span class="irt_p32">p32</span> HREFK 0029 <span class="irt_str">"ffi"</span> @33 | |
0031 > <span class="irt_tab">tab</span> HLOAD 0030 | |
0032 <span class="irt_int">int</span> FLOAD 0031 tab.hmask | |
0033 > <span class="irt_int">int</span> EQ 0032 <span class="irt_int">+31 </span> | |
0034 <span class="irt_p32">p32</span> FLOAD 0031 tab.node | |
0035 > <span class="irt_p32">p32</span> HREFK 0034 <span class="irt_str">"cast"</span> @6 | |
0036 > <span class="irt_fun">fun</span> HLOAD 0035 | |
0037 <span class="irt_i64">i64</span> CONV 0011 <span class="irt_i64">i64</span>.<span class="irt_int">int</span> sext | |
0038 <span class="irt_p64">p64</span> ADD 0037 0016 | |
0039 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0038 | |
0040 > <span class="irt_fun">fun</span> EQ 0036 <span class="irt_fun">ffi.cast</span> | |
0041 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+184</span> 0038 | |
0042 <span class="irt_u16">u16</span> XLOAD 0038 | |
0043 > <span class="irt_p32">p32</span> HREFK 0029 <span class="irt_str">"bit"</span> @38 | |
0044 > <span class="irt_tab">tab</span> HLOAD 0043 | |
0045 <span class="irt_int">int</span> FLOAD 0044 tab.hmask | |
0046 > <span class="irt_int">int</span> EQ 0045 <span class="irt_int">+15 </span> | |
0047 <span class="irt_p32">p32</span> FLOAD 0044 tab.node | |
0048 > <span class="irt_p32">p32</span> HREFK 0047 <span class="irt_str">"rshift"</span> @5 | |
0049 > <span class="irt_fun">fun</span> HLOAD 0048 | |
0050 > <span class="irt_p32">p32</span> HREFK 0047 <span class="irt_str">"bswap"</span> @7 | |
0051 > <span class="irt_fun">fun</span> HLOAD 0050 | |
0052 > <span class="irt_fun">fun</span> EQ 0051 <span class="irt_fun">bit.bswap</span> | |
0053 <span class="irt_int">int</span> BSWAP 0042 | |
0054 > <span class="irt_fun">fun</span> EQ 0049 <span class="irt_fun">bit.rshift</span> | |
0055 <span class="irt_int">int</span> BSHR 0053 <span class="irt_int">+16 </span> | |
0056 > <span class="irt_int">int</span> LE 0055 <span class="irt_int">+6000</span> | |
0057 <span class="irt_num">num</span> ADD 0002 <span class="irt_num">+1 </span> | |
0058 <span class="irt_num">num</span> ADD 0001 <span class="irt_num">+1 </span> | |
0059 > <span class="irt_cdt">cdt</span> SLOAD #2 T | |
0060 <span class="irt_u16">u16</span> FLOAD 0059 cdata.ctypeid | |
0061 > <span class="irt_int">int</span> EQ 0060 <span class="irt_int">+181</span> | |
0062 <span class="irt_p64">p64</span> FLOAD 0059 cdata.ptr | |
0063 > <span class="irt_p64">p64</span> UGT 0062 0017 | |
---- TRACE 54 mcode 729 | |
0bcaab02 mov eax, r13d | |
0bcaab05 mov r13, r15 | |
0bcaab08 mov r15d, r14d | |
0bcaab0b mov r14, rbx | |
0bcaab0e mov ebx, eax | |
0bcaab10 add rsp, -0x50 | |
0bcaab14 mov dword [0x405d84a0], 0x36 | |
0bcaab1f movsd [rsp+0x30], xmm7 | |
0bcaab25 movsd [rsp+0x28], xmm6 | |
0bcaab2b movsd [rsp+0x38], xmm5 | |
0bcaab31 mov [rsp+0x18], r15d | |
0bcaab36 mov [rsp+0x1c], ebx | |
0bcaab3a mov [rsp+0x20], r12d | |
0bcaab3f mov [rsp+0x48], edi | |
0bcaab43 mov [rsp+0x40], esi | |
0bcaab47 mov [rsp+0x44], edx | |
0bcaab4b mov [rsp+0x58], ecx | |
0bcaab4f mov [rsp+0x54], r11d | |
0bcaab54 mov [rsp+0x50], r10d | |
0bcaab59 mov [rsp+0x4c], r9d | |
0bcaab5e mov [rsp+0x8], r8d | |
0bcaab63 mov edi, [0x405d84ac] | |
0bcaab6a mov esi, 0x10 | |
0bcaab6f call 0x0041f4e0 ->lj_mem_newgco | |
0bcaab74 movzx ecx, byte [0x405d83e0] | |
0bcaab7c and ecx, +0x03 | |
0bcaab7f or ecx, 0x00b50a00 | |
0bcaab85 mov [rax+0x4], ecx | |
0bcaab88 mov [rax+0x8], r14 | |
0bcaab8c mov r15d, eax | |
0bcaab8f mov edi, [0x405d84ac] | |
0bcaab96 mov esi, 0x10 | |
0bcaab9b call 0x0041f4e0 ->lj_mem_newgco | |
0bcaaba0 movzx ecx, byte [0x405d83e0] | |
0bcaaba8 and ecx, +0x03 | |
0bcaabab or ecx, 0x00b50a00 | |
0bcaabb1 mov [rax+0x4], ecx | |
0bcaabb4 mov [rax+0x8], rbp | |
0bcaabb8 mov [rsp+0x24], eax | |
0bcaabbc mov edi, [0x405d83d8] | |
0bcaabc3 cmp edi, [0x405d83dc] | |
0bcaabca jb 0x0bcaabe3 | |
0bcaabcc mov esi, 0x2 | |
0bcaabd1 mov edi, 0x405d83b8 | |
0bcaabd6 call 0x0041f3d0 ->lj_gc_step_jit | |
0bcaabdb test eax, eax | |
0bcaabdd jnz 0x0bca0010 ->0 | |
0bcaabe3 mov r11d, [rsp+0x58] | |
0bcaabe8 mov r10d, [rsp+0x54] | |
0bcaabed mov eax, [rsp+0x24] | |
0bcaabf1 movsd xmm7, [rsp+0x38] | |
0bcaabf7 movsd xmm5, [rsp+0x30] | |
0bcaabfd movsd xmm4, [rsp+0x28] | |
0bcaac03 movsd xmm3, [0x401f5ce0] | |
0bcaac0c mov ebx, r11d | |
0bcaac0f add ebx, +0x12 | |
0bcaac12 jo 0x0bca0010 ->0 | |
0bcaac18 mov [rsp+0xc], ebx | |
0bcaac1c xorps xmm6, xmm6 | |
0bcaac1f cvtsi2sd xmm6, ebx | |
0bcaac23 ucomisd xmm7, xmm6 | |
0bcaac27 jb 0x0bca0014 ->1 | |
0bcaac2d mov ebx, [0x409d0950] | |
0bcaac34 cmp dword [rbx+0x1c], +0x3f | |
0bcaac38 jnz 0x0bca0018 ->2 | |
0bcaac3e mov r12d, [rbx+0x14] | |
0bcaac42 mov rdi, 0xfffffffb405dfc60 | |
0bcaac4c cmp rdi, [r12+0x320] | |
0bcaac54 jnz 0x0bca0018 ->2 | |
0bcaac5a cmp dword [r12+0x31c], -0x0c | |
0bcaac63 jnz 0x0bca0018 ->2 | |
0bcaac69 mov ebx, [r12+0x318] | |
0bcaac71 cmp dword [rbx+0x1c], +0x1f | |
0bcaac75 jnz 0x0bca0018 ->2 | |
0bcaac7b mov edi, [rbx+0x14] | |
0bcaac7e mov rbx, 0xfffffffb405f6810 | |
0bcaac88 cmp rbx, [rdi+0x98] | |
0bcaac8f jnz 0x0bca0018 ->2 | |
0bcaac95 cmp dword [rdi+0x94], -0x09 | |
0bcaac9c jnz 0x0bca0018 ->2 | |
0bcaaca2 movsxd rbx, r10d | |
0bcaaca5 cmp dword [rdi+0x90], 0x405ed8a8 | |
0bcaacaf jnz 0x0bca0018 ->2 | |
0bcaacb5 movzx ebx, word [rbx+r13] | |
0bcaacba mov [rsp+0x10], ebx | |
0bcaacbe mov rdi, 0xfffffffb405decf0 | |
0bcaacc8 cmp rdi, [r12+0x398] | |
0bcaacd0 jnz 0x0bca0018 ->2 | |
0bcaacd6 cmp dword [r12+0x394], -0x0c | |
0bcaacdf jnz 0x0bca0018 ->2 | |
0bcaace5 mov r12d, [r12+0x390] | |
0bcaaced cmp dword [r12+0x1c], +0x0f | |
0bcaacf3 jnz 0x0bca0018 ->2 | |
0bcaacf9 mov r12d, [r12+0x14] | |
0bcaacfe mov rdi, 0xfffffffb405df008 | |
0bcaad08 cmp rdi, [r12+0x80] | |
0bcaad10 jnz 0x0bca0018 ->2 | |
0bcaad16 cmp dword [r12+0x7c], -0x09 | |
0bcaad1c jnz 0x0bca0018 ->2 | |
0bcaad22 mov rdi, 0xfffffffb405def78 | |
0bcaad2c cmp rdi, [r12+0xb0] | |
0bcaad34 jnz 0x0bca0018 ->2 | |
0bcaad3a cmp dword [r12+0xac], -0x09 | |
0bcaad43 jnz 0x0bca0018 ->2 | |
0bcaad49 cmp dword [r12+0xa8], 0x405def50 | |
0bcaad55 jnz 0x0bca0018 ->2 | |
0bcaad5b bswap ebx | |
0bcaad5d cmp dword [r12+0x78], 0x405defe0 | |
0bcaad66 jnz 0x0bca0018 ->2 | |
0bcaad6c shr ebx, 0x10 | |
0bcaad6f mov [rsp+0x14], ebx | |
0bcaad73 cmp dword [rsp+0x14], 0x1770 | |
0bcaad7b jg 0x0bca001c ->3 | |
0bcaad81 mov edx, [0x405d84b0] | |
0bcaad88 movaps xmm6, xmm4 | |
0bcaad8b addsd xmm6, xmm3 | |
0bcaad8f movaps xmm7, xmm5 | |
0bcaad92 addsd xmm7, xmm3 | |
0bcaad96 cmp dword [rdx+0xc], -0x0b | |
0bcaad9a jnz 0x0bca0020 ->4 | |
0bcaada0 mov ebx, [rdx+0x8] | |
0bcaada3 movzx r15d, word [rbx+0x6] | |
0bcaada8 cmp r15d, 0xb5 | |
0bcaadaf jnz 0x0bca0024 ->5 | |
0bcaadb5 cmp rbp, [rbx+0x8] | |
0bcaadb9 jnb 0x0bca0024 ->5 | |
0bcaadbf movsd [rdx+0x20], xmm6 | |
0bcaadc4 movsd [rdx+0x18], xmm7 | |
0bcaadc9 mov dword [rdx+0x4], 0xfffffff5 | |
0bcaadd0 mov [rdx], eax | |
0bcaadd2 add rsp, +0x50 | |
0bcaadd6 jmp 0x0bcaadde | |
---- TRACE 54 stop -> 53 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 55 start 53/10 "portrange 0-6000":32 | |
0077 . ADDVN 13 8 10 ; 18 | |
0078 . ISLE 13 1 | |
0079 . JMP 14 => 0082 | |
0082 . GGET 14 0 ; "ffi" | |
0083 . TGETS 14 14 1 ; "cast" | |
0084 . KSTR 15 2 ; "uint16_t*" | |
0085 . ADDVV 16 0 9 | |
0000 . . . FUNCC ; ffi.meta.__add | |
0086 . CALL 14 2 3 | |
0000 . . FUNCC ; ffi.cast | |
0087 . TGETB 14 14 0 | |
0000 . . . FUNCC ; ffi.meta.__index | |
0088 . GGET 15 3 ; "bit" | |
0089 . TGETS 15 15 6 ; "rshift" | |
0090 . GGET 16 3 ; "bit" | |
0091 . TGETS 16 16 7 ; "bswap" | |
0092 . MOV 17 14 | |
0093 . CALL 16 2 2 | |
0000 . . FUNCC ; bit.bswap | |
0094 . KSHORT 17 16 | |
0095 . CALL 15 2 3 | |
0000 . . FUNCC ; bit.rshift | |
0096 . KSHORT 16 6000 | |
0097 . ISLE 15 16 | |
0098 . JMP 16 => 0101 | |
0101 . KPRI 16 2 | |
0102 . RET1 16 2 | |
0022 ISF 8 | |
0023 JMP 9 => 0025 | |
0024 ADDVN 4 4 0 ; 1 | |
0025 ADDVN 3 3 0 ; 1 | |
0026 MOV 0 7 | |
0027 JMP 5 => 0003 | |
0003 ISGE 0 1 | |
0004 JMP 5 => 0028 | |
0000 . . FUNCC ; ffi.meta.__lt | |
0005 JLOOP 5 53 | |
---- TRACE 55 IR | |
0001 <span class="irt_num">num</span> SLOAD #11 PI | |
0002 <span class="irt_u16">u16</span> SLOAD #12 PI | |
0003 <span class="irt_u8 ">u8 </span> SLOAD #13 PI | |
0004 <span class="irt_u16">u16</span> SLOAD #14 PI | |
0005 <span class="irt_int">int</span> SLOAD #15 PI | |
0006 <span class="irt_u8 ">u8 </span> SLOAD #16 PI | |
0007 <span class="irt_int">int</span> SLOAD #17 PI | |
0008 <span class="irt_int">int</span> SLOAD #18 PI | |
0009 <span class="irt_int">int</span> SLOAD #19 PI | |
0010 <span class="irt_int">int</span> SLOAD #20 PI | |
0011 <span class="irt_u16">u16</span> SLOAD #21 PI | |
0012 <span class="irt_int">int</span> SLOAD #22 PI | |
0013 <span class="irt_p64">p64</span> PVAL #13 | |
0014 <span class="irt_p64">p64</span> PVAL #15 | |
0015 <span class="irt_p64">p64</span> PVAL #21 | |
0016 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+183</span> 0013 | |
0017 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0014 | |
0018 + <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0015 | |
0019 > <span class="irt_nil">nil</span> GCSTEP | |
0020 > <span class="irt_int">int</span> ADDOV 0008 <span class="irt_int">+18 </span> | |
0021 <span class="irt_num">num</span> CONV 0020 <span class="irt_num">num</span>.<span class="irt_int">int</span> | |
0022 > <span class="irt_num">num</span> LE 0021 0001 | |
0023 <span class="irt_tab">tab</span> FLOAD <span class="irt_fun">"portrange 0-6000":1</span> func.env | |
0024 <span class="irt_int">int</span> FLOAD 0023 tab.hmask | |
0025 > <span class="irt_int">int</span> EQ 0024 <span class="irt_int">+63 </span> | |
0026 <span class="irt_p32">p32</span> FLOAD 0023 tab.node | |
0027 > <span class="irt_p32">p32</span> HREFK 0026 <span class="irt_str">"ffi"</span> @33 | |
0028 > <span class="irt_tab">tab</span> HLOAD 0027 | |
0029 <span class="irt_int">int</span> FLOAD 0028 tab.hmask | |
0030 > <span class="irt_int">int</span> EQ 0029 <span class="irt_int">+31 </span> | |
0031 <span class="irt_p32">p32</span> FLOAD 0028 tab.node | |
0032 > <span class="irt_p32">p32</span> HREFK 0031 <span class="irt_str">"cast"</span> @6 | |
0033 > <span class="irt_fun">fun</span> HLOAD 0032 | |
0034 <span class="irt_i64">i64</span> CONV 0009 <span class="irt_i64">i64</span>.<span class="irt_int">int</span> sext | |
0035 <span class="irt_p64">p64</span> ADD 0034 0014 | |
0036 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0035 | |
0037 > <span class="irt_fun">fun</span> EQ 0033 <span class="irt_fun">ffi.cast</span> | |
0038 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+184</span> 0035 | |
0039 <span class="irt_u16">u16</span> XLOAD 0035 | |
0040 > <span class="irt_p32">p32</span> HREFK 0026 <span class="irt_str">"bit"</span> @38 | |
0041 > <span class="irt_tab">tab</span> HLOAD 0040 | |
0042 <span class="irt_int">int</span> FLOAD 0041 tab.hmask | |
0043 > <span class="irt_int">int</span> EQ 0042 <span class="irt_int">+15 </span> | |
0044 <span class="irt_p32">p32</span> FLOAD 0041 tab.node | |
0045 > <span class="irt_p32">p32</span> HREFK 0044 <span class="irt_str">"rshift"</span> @5 | |
0046 > <span class="irt_fun">fun</span> HLOAD 0045 | |
0047 > <span class="irt_p32">p32</span> HREFK 0044 <span class="irt_str">"bswap"</span> @7 | |
0048 > <span class="irt_fun">fun</span> HLOAD 0047 | |
0049 > <span class="irt_fun">fun</span> EQ 0048 <span class="irt_fun">bit.bswap</span> | |
0050 <span class="irt_int">int</span> BSWAP 0039 | |
0051 > <span class="irt_fun">fun</span> EQ 0046 <span class="irt_fun">bit.rshift</span> | |
0052 <span class="irt_int">int</span> BSHR 0050 <span class="irt_int">+16 </span> | |
0053 > <span class="irt_int">int</span> LE 0052 <span class="irt_int">+6000</span> | |
0054 > <span class="irt_num">num</span> SLOAD #5 T | |
0055 <span class="irt_num">num</span> ADD 0054 <span class="irt_num">+1 </span> | |
0056 > <span class="irt_num">num</span> SLOAD #4 T | |
0057 <span class="irt_num">num</span> ADD 0056 <span class="irt_num">+1 </span> | |
0058 > <span class="irt_cdt">cdt</span> SLOAD #2 T | |
0059 <span class="irt_u16">u16</span> FLOAD 0058 cdata.ctypeid | |
0060 > <span class="irt_int">int</span> EQ 0059 <span class="irt_int">+181</span> | |
0061 <span class="irt_p64">p64</span> FLOAD 0058 cdata.ptr | |
0062 > <span class="irt_p64">p64</span> UGT 0061 0015 | |
---- TRACE 55 mcode 659 | |
0bcaa86c mov ecx, ebx | |
0bcaa86e mov ebx, r15d | |
0bcaa871 mov r15, [rsp+0x8] | |
0bcaa876 add rsp, -0x40 | |
0bcaa87a mov dword [0x405d84a0], 0x37 | |
0bcaa885 movsd [rsp+0x20], xmm2 | |
0bcaa88b mov [rsp+0x14], ecx | |
0bcaa88f mov [rsp+0x18], esi | |
0bcaa893 mov [rsp+0x1c], edi | |
0bcaa897 mov [rsp+0x38], r8d | |
0bcaa89c mov [rsp+0x3c], r9d | |
0bcaa8a1 mov [rsp+0x40], r10d | |
0bcaa8a6 mov [rsp+0x44], r11d | |
0bcaa8ab mov [rsp+0x2c], ebx | |
0bcaa8af mov [rsp+0x30], rdx | |
0bcaa8b4 mov edi, [0x405d84ac] | |
0bcaa8bb mov esi, 0x10 | |
0bcaa8c0 call 0x0041f4e0 ->lj_mem_newgco | |
0bcaa8c5 movzx ecx, byte [0x405d83e0] | |
0bcaa8cd and ecx, +0x03 | |
0bcaa8d0 or ecx, 0x00b50a00 | |
0bcaa8d6 mov [rax+0x4], ecx | |
0bcaa8d9 mov [rax+0x8], rbp | |
0bcaa8dd mov [rsp+0x28], eax | |
0bcaa8e1 mov edi, [0x405d83d8] | |
0bcaa8e8 cmp edi, [0x405d83dc] | |
0bcaa8ef jb 0x0bcaa908 | |
0bcaa8f1 mov esi, 0x1 | |
0bcaa8f6 mov edi, 0x405d83b8 | |
0bcaa8fb call 0x0041f3d0 ->lj_gc_step_jit | |
0bcaa900 test eax, eax | |
0bcaa902 jnz 0x0bca0010 ->0 | |
0bcaa908 mov r11d, [rsp+0x44] | |
0bcaa90d mov rdx, [rsp+0x30] | |
0bcaa912 mov eax, [rsp+0x28] | |
0bcaa916 movsd xmm5, [0x401f5ce0] | |
0bcaa91f movsd xmm2, [rsp+0x20] | |
0bcaa925 mov ebx, r11d | |
0bcaa928 add ebx, +0x12 | |
0bcaa92b jo 0x0bca0010 ->0 | |
0bcaa931 mov [rsp+0x8], ebx | |
0bcaa935 xorps xmm7, xmm7 | |
0bcaa938 cvtsi2sd xmm7, ebx | |
0bcaa93c ucomisd xmm2, xmm7 | |
0bcaa940 jb 0x0bca0014 ->1 | |
0bcaa946 mov ebx, [0x409d0950] | |
0bcaa94d cmp dword [rbx+0x1c], +0x3f | |
0bcaa951 jnz 0x0bca0018 ->2 | |
0bcaa957 mov edi, [rbx+0x14] | |
0bcaa95a mov rsi, 0xfffffffb405dfc60 | |
0bcaa964 cmp rsi, [rdi+0x320] | |
0bcaa96b jnz 0x0bca0018 ->2 | |
0bcaa971 cmp dword [rdi+0x31c], -0x0c | |
0bcaa978 jnz 0x0bca0018 ->2 | |
0bcaa97e mov ebx, [rdi+0x318] | |
0bcaa984 cmp dword [rbx+0x1c], +0x1f | |
0bcaa988 jnz 0x0bca0018 ->2 | |
0bcaa98e mov esi, [rbx+0x14] | |
0bcaa991 mov rbx, 0xfffffffb405f6810 | |
0bcaa99b cmp rbx, [rsi+0x98] | |
0bcaa9a2 jnz 0x0bca0018 ->2 | |
0bcaa9a8 cmp dword [rsi+0x94], -0x09 | |
0bcaa9af jnz 0x0bca0018 ->2 | |
0bcaa9b5 movsxd rbx, r12d | |
0bcaa9b8 cmp dword [rsi+0x90], 0x405ed8a8 | |
0bcaa9c2 jnz 0x0bca0018 ->2 | |
0bcaa9c8 movzx ebx, word [rbx+rdx] | |
0bcaa9cc mov [rsp+0xc], ebx | |
0bcaa9d0 mov rsi, 0xfffffffb405decf0 | |
0bcaa9da cmp rsi, [rdi+0x398] | |
0bcaa9e1 jnz 0x0bca0018 ->2 | |
0bcaa9e7 cmp dword [rdi+0x394], -0x0c | |
0bcaa9ee jnz 0x0bca0018 ->2 | |
0bcaa9f4 mov edi, [rdi+0x390] | |
0bcaa9fa cmp dword [rdi+0x1c], +0x0f | |
0bcaa9fe jnz 0x0bca0018 ->2 | |
0bcaaa04 mov esi, [rdi+0x14] | |
0bcaaa07 mov rdi, 0xfffffffb405df008 | |
0bcaaa11 cmp rdi, [rsi+0x80] | |
0bcaaa18 jnz 0x0bca0018 ->2 | |
0bcaaa1e cmp dword [rsi+0x7c], -0x09 | |
0bcaaa22 jnz 0x0bca0018 ->2 | |
0bcaaa28 mov rdi, 0xfffffffb405def78 | |
0bcaaa32 cmp rdi, [rsi+0xb0] | |
0bcaaa39 jnz 0x0bca0018 ->2 | |
0bcaaa3f cmp dword [rsi+0xac], -0x09 | |
0bcaaa46 jnz 0x0bca0018 ->2 | |
0bcaaa4c cmp dword [rsi+0xa8], 0x405def50 | |
0bcaaa56 jnz 0x0bca0018 ->2 | |
0bcaaa5c bswap ebx | |
0bcaaa5e cmp dword [rsi+0x78], 0x405defe0 | |
0bcaaa65 jnz 0x0bca0018 ->2 | |
0bcaaa6b shr ebx, 0x10 | |
0bcaaa6e mov [rsp+0x10], ebx | |
0bcaaa72 cmp dword [rsp+0x10], 0x1770 | |
0bcaaa7a jg 0x0bca001c ->3 | |
0bcaaa80 mov ebx, [0x405d84b0] | |
0bcaaa87 cmp dword [rbx+0x24], 0xfffeffff | |
0bcaaa8e jnb 0x0bca0020 ->4 | |
0bcaaa94 movsd xmm6, [rbx+0x20] | |
0bcaaa99 addsd xmm6, xmm5 | |
0bcaaa9d cmp dword [rbx+0x1c], 0xfffeffff | |
0bcaaaa4 jnb 0x0bca0020 ->4 | |
0bcaaaaa movsd xmm7, [rbx+0x18] | |
0bcaaaaf addsd xmm7, xmm5 | |
0bcaaab3 cmp dword [rbx+0xc], -0x0b | |
0bcaaab7 jnz 0x0bca0020 ->4 | |
0bcaaabd mov ebx, [rbx+0x8] | |
0bcaaac0 mov edx, [0x405d84b0] | |
0bcaaac7 movzx r15d, word [rbx+0x6] | |
0bcaaacc cmp r15d, 0xb5 | |
0bcaaad3 jnz 0x0bca0024 ->5 | |
0bcaaad9 cmp rbp, [rbx+0x8] | |
0bcaaadd jnb 0x0bca0024 ->5 | |
0bcaaae3 movsd [rdx+0x20], xmm6 | |
0bcaaae8 movsd [rdx+0x18], xmm7 | |
0bcaaaed mov dword [rdx+0x4], 0xfffffff5 | |
0bcaaaf4 mov [rdx], eax | |
0bcaaaf6 add rsp, +0x40 | |
0bcaaafa jmp 0x0bcaadde | |
---- TRACE 55 stop -> 53 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 56 start 53/4 "portrange 0-6000":10 | |
0019 . ISNEN 3 3 ; 17 | |
0020 . JMP 4 => 0022 | |
0021 . JMP 4 => 0026 | |
0026 . GGET 4 0 ; "ffi" | |
0027 . TGETS 4 4 1 ; "cast" | |
0028 . KSTR 5 2 ; "uint16_t*" | |
0029 . ADDVN 6 0 5 ; 20 | |
0000 . . . FUNCC ; ffi.meta.__add | |
0030 . CALL 4 2 3 | |
0000 . . FUNCC ; ffi.cast | |
0031 . TGETB 4 4 0 | |
0000 . . . FUNCC ; ffi.meta.__index | |
0032 . GGET 5 3 ; "bit" | |
0033 . TGETS 5 5 4 ; "band" | |
0034 . MOV 6 4 | |
0035 . KNUM 7 6 ; 65311 | |
0036 . CALL 5 2 3 | |
0000 . . FUNCC ; bit.band | |
0037 . ISEQN 5 7 ; 0 | |
0038 . JMP 6 => 0041 | |
0041 . TGETB 6 0 14 | |
0000 . . . FUNCC ; ffi.meta.__index | |
0042 . GGET 7 3 ; "bit" | |
0043 . TGETS 7 7 4 ; "band" | |
0044 . MOV 8 6 | |
0045 . KSHORT 9 15 | |
0046 . CALL 7 2 3 | |
0000 . . FUNCC ; bit.band | |
0047 . GGET 8 3 ; "bit" | |
0048 . TGETS 8 8 5 ; "lshift" | |
0049 . MOV 9 7 | |
0050 . KSHORT 10 2 | |
0051 . CALL 8 2 3 | |
0000 . . FUNCC ; bit.lshift | |
0052 . ADDVN 9 8 8 ; 16 | |
0053 . ISLE 9 1 | |
0054 . JMP 10 => 0057 | |
0057 . ADDVN 10 8 9 ; 14 | |
0058 . GGET 11 0 ; "ffi" | |
0059 . TGETS 11 11 1 ; "cast" | |
0060 . KSTR 12 2 ; "uint16_t*" | |
0061 . ADDVV 13 0 10 | |
0000 . . . FUNCC ; ffi.meta.__add | |
0062 . CALL 11 2 3 | |
0000 . . FUNCC ; ffi.cast | |
0063 . TGETB 11 11 0 | |
0000 . . . FUNCC ; ffi.meta.__index | |
0064 . GGET 12 3 ; "bit" | |
0065 . TGETS 12 12 6 ; "rshift" | |
0066 . GGET 13 3 ; "bit" | |
0067 . TGETS 13 13 7 ; "bswap" | |
0068 . MOV 14 11 | |
0069 . CALL 13 2 2 | |
0000 . . FUNCC ; bit.bswap | |
0070 . KSHORT 14 16 | |
0071 . CALL 12 2 3 | |
0000 . . FUNCC ; bit.rshift | |
0072 . KSHORT 13 6000 | |
0073 . ISGT 12 13 | |
0074 . JMP 13 => 0077 | |
0075 . KPRI 13 2 | |
0076 . RET1 13 2 | |
0022 ISF 8 | |
0023 JMP 9 => 0025 | |
0024 ADDVN 4 4 0 ; 1 | |
0025 ADDVN 3 3 0 ; 1 | |
0026 MOV 0 7 | |
0027 JMP 5 => 0003 | |
0003 ISGE 0 1 | |
0004 JMP 5 => 0028 | |
0000 . . FUNCC ; ffi.meta.__lt | |
0005 JLOOP 5 53 | |
---- TRACE 56 IR | |
0001 <span class="irt_num">num</span> SLOAD #11 PI | |
0002 <span class="irt_u16">u16</span> SLOAD #12 PI | |
0003 <span class="irt_u8 ">u8 </span> SLOAD #13 PI | |
0004 <span class="irt_p64">p64</span> PVAL #13 | |
0005 <span class="irt_p64">p64</span> PVAL #15 | |
0006 <span class="irt_p64">p64</span> PVAL #21 | |
0007 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+183</span> 0004 | |
0008 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0005 | |
0009 + <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0006 | |
0010 > <span class="irt_nil">nil</span> GCSTEP | |
0011 > <span class="irt_int">int</span> EQ 0003 <span class="irt_int">+17 </span> | |
0012 <span class="irt_tab">tab</span> FLOAD <span class="irt_fun">"portrange 0-6000":1</span> func.env | |
0013 <span class="irt_int">int</span> FLOAD 0012 tab.hmask | |
0014 > <span class="irt_int">int</span> EQ 0013 <span class="irt_int">+63 </span> | |
0015 <span class="irt_p32">p32</span> FLOAD 0012 tab.node | |
0016 > <span class="irt_p32">p32</span> HREFK 0015 <span class="irt_str">"ffi"</span> @33 | |
0017 > <span class="irt_tab">tab</span> HLOAD 0016 | |
0018 <span class="irt_int">int</span> FLOAD 0017 tab.hmask | |
0019 > <span class="irt_int">int</span> EQ 0018 <span class="irt_int">+31 </span> | |
0020 <span class="irt_p32">p32</span> FLOAD 0017 tab.node | |
0021 > <span class="irt_p32">p32</span> HREFK 0020 <span class="irt_str">"cast"</span> @6 | |
0022 > <span class="irt_fun">fun</span> HLOAD 0021 | |
0023 <span class="irt_p64">p64</span> ADD 0005 <span class="irt_i64">+20 </span> | |
0024 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0023 | |
0025 > <span class="irt_fun">fun</span> EQ 0022 <span class="irt_fun">ffi.cast</span> | |
0026 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+184</span> 0023 | |
0027 <span class="irt_u16">u16</span> XLOAD 0023 | |
0028 > <span class="irt_p32">p32</span> HREFK 0015 <span class="irt_str">"bit"</span> @38 | |
0029 > <span class="irt_tab">tab</span> HLOAD 0028 | |
0030 <span class="irt_int">int</span> FLOAD 0029 tab.hmask | |
0031 > <span class="irt_int">int</span> EQ 0030 <span class="irt_int">+15 </span> | |
0032 <span class="irt_p32">p32</span> FLOAD 0029 tab.node | |
0033 > <span class="irt_p32">p32</span> HREFK 0032 <span class="irt_str">"band"</span> @15 | |
0034 > <span class="irt_fun">fun</span> HLOAD 0033 | |
0035 > <span class="irt_fun">fun</span> EQ 0034 <span class="irt_fun">bit.band</span> | |
0036 <span class="irt_int">int</span> BAND 0027 <span class="irt_int">+65311</span> | |
0037 > <span class="irt_int">int</span> EQ 0036 <span class="irt_int">+0 </span> | |
0038 <span class="irt_p64">p64</span> ADD 0005 <span class="irt_i64">+14 </span> | |
0039 <span class="irt_u8 ">u8 </span> XLOAD 0038 | |
0040 <span class="irt_int">int</span> BAND 0039 <span class="irt_int">+15 </span> | |
0041 > <span class="irt_p32">p32</span> HREFK 0032 <span class="irt_str">"lshift"</span> @13 | |
0042 > <span class="irt_fun">fun</span> HLOAD 0041 | |
0043 > <span class="irt_fun">fun</span> EQ 0042 <span class="irt_fun">bit.lshift</span> | |
0044 <span class="irt_int">int</span> BSHL 0039 <span class="irt_int">+2 </span> | |
0045 <span class="irt_int">int</span> BAND 0044 <span class="irt_int">+60 </span> | |
0046 > <span class="irt_int">int</span> ADDOV 0045 <span class="irt_int">+16 </span> | |
0047 <span class="irt_num">num</span> CONV 0046 <span class="irt_num">num</span>.<span class="irt_int">int</span> | |
0048 > <span class="irt_num">num</span> LE 0047 0001 | |
0049 > <span class="irt_int">int</span> ADDOV 0045 <span class="irt_int">+14 </span> | |
0050 <span class="irt_i64">i64</span> CONV 0049 <span class="irt_i64">i64</span>.<span class="irt_int">int</span> sext | |
0051 <span class="irt_p64">p64</span> ADD 0050 0005 | |
0052 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0051 | |
0053 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+184</span> 0051 | |
0054 <span class="irt_u16">u16</span> XLOAD 0051 | |
0055 > <span class="irt_p32">p32</span> HREFK 0032 <span class="irt_str">"rshift"</span> @5 | |
0056 > <span class="irt_fun">fun</span> HLOAD 0055 | |
0057 > <span class="irt_p32">p32</span> HREFK 0032 <span class="irt_str">"bswap"</span> @7 | |
0058 > <span class="irt_fun">fun</span> HLOAD 0057 | |
0059 > <span class="irt_fun">fun</span> EQ 0058 <span class="irt_fun">bit.bswap</span> | |
0060 <span class="irt_int">int</span> BSWAP 0054 | |
0061 > <span class="irt_fun">fun</span> EQ 0056 <span class="irt_fun">bit.rshift</span> | |
0062 <span class="irt_int">int</span> BSHR 0060 <span class="irt_int">+16 </span> | |
0063 > <span class="irt_int">int</span> LE 0062 <span class="irt_int">+6000</span> | |
0064 > <span class="irt_num">num</span> SLOAD #5 T | |
0065 <span class="irt_num">num</span> ADD 0064 <span class="irt_num">+1 </span> | |
0066 > <span class="irt_num">num</span> SLOAD #4 T | |
0067 <span class="irt_num">num</span> ADD 0066 <span class="irt_num">+1 </span> | |
0068 > <span class="irt_cdt">cdt</span> SLOAD #2 T | |
0069 <span class="irt_u16">u16</span> FLOAD 0068 cdata.ctypeid | |
0070 > <span class="irt_int">int</span> EQ 0069 <span class="irt_int">+181</span> | |
0071 <span class="irt_p64">p64</span> FLOAD 0068 cdata.ptr | |
0072 > <span class="irt_p64">p64</span> UGT 0071 0006 | |
---- TRACE 56 mcode 792 | |
0bcaa551 mov r15, [rsp+0x8] | |
0bcaa556 add rsp, -0x20 | |
0bcaa55a mov dword [0x405d84a0], 0x38 | |
0bcaa565 movsd [rsp+0x10], xmm2 | |
0bcaa56b mov [rsp+0x8], ebx | |
0bcaa56f mov [rsp+0x20], esi | |
0bcaa573 mov [rsp+0x18], rdx | |
0bcaa578 mov edi, [0x405d84ac] | |
0bcaa57f mov esi, 0x10 | |
0bcaa584 call 0x0041f4e0 ->lj_mem_newgco | |
0bcaa589 movzx ecx, byte [0x405d83e0] | |
0bcaa591 and ecx, +0x03 | |
0bcaa594 or ecx, 0x00b50a00 | |
0bcaa59a mov [rax+0x4], ecx | |
0bcaa59d mov [rax+0x8], rbp | |
0bcaa5a1 mov [rsp+0xc], eax | |
0bcaa5a5 mov edi, [0x405d83d8] | |
0bcaa5ac cmp edi, [0x405d83dc] | |
0bcaa5b3 jb 0x0bcaa5cc | |
0bcaa5b5 mov esi, 0x1 | |
0bcaa5ba mov edi, 0x405d83b8 | |
0bcaa5bf call 0x0041f3d0 ->lj_gc_step_jit | |
0bcaa5c4 test eax, eax | |
0bcaa5c6 jnz 0x0bca0010 ->0 | |
0bcaa5cc mov esi, [rsp+0x20] | |
0bcaa5d0 mov rdx, [rsp+0x18] | |
0bcaa5d5 mov eax, [rsp+0xc] | |
0bcaa5d9 movsd xmm5, [0x401f5ce0] | |
0bcaa5e2 movsd xmm2, [rsp+0x10] | |
0bcaa5e8 cmp esi, +0x11 | |
0bcaa5eb jnz 0x0bca0014 ->1 | |
0bcaa5f1 mov ebx, [0x409d0950] | |
0bcaa5f8 cmp dword [rbx+0x1c], +0x3f | |
0bcaa5fc jnz 0x0bca0018 ->2 | |
0bcaa602 mov ebx, [rbx+0x14] | |
0bcaa605 mov rdi, 0xfffffffb405dfc60 | |
0bcaa60f cmp rdi, [rbx+0x320] | |
0bcaa616 jnz 0x0bca0018 ->2 | |
0bcaa61c cmp dword [rbx+0x31c], -0x0c | |
0bcaa623 jnz 0x0bca0018 ->2 | |
0bcaa629 mov r14d, [rbx+0x318] | |
0bcaa630 cmp dword [r14+0x1c], +0x1f | |
0bcaa635 jnz 0x0bca0018 ->2 | |
0bcaa63b mov r14d, [r14+0x14] | |
0bcaa63f mov rdi, 0xfffffffb405f6810 | |
0bcaa649 cmp rdi, [r14+0x98] | |
0bcaa650 jnz 0x0bca0018 ->2 | |
0bcaa656 cmp dword [r14+0x94], -0x09 | |
0bcaa65e jnz 0x0bca0018 ->2 | |
0bcaa664 cmp dword [r14+0x90], 0x405ed8a8 | |
0bcaa66f jnz 0x0bca0018 ->2 | |
0bcaa675 movzx r14d, word [rdx+0x14] | |
0bcaa67a mov rdi, 0xfffffffb405decf0 | |
0bcaa684 cmp rdi, [rbx+0x398] | |
0bcaa68b jnz 0x0bca0018 ->2 | |
0bcaa691 cmp dword [rbx+0x394], -0x0c | |
0bcaa698 jnz 0x0bca0018 ->2 | |
0bcaa69e mov ebx, [rbx+0x390] | |
0bcaa6a4 cmp dword [rbx+0x1c], +0x0f | |
0bcaa6a8 jnz 0x0bca0018 ->2 | |
0bcaa6ae mov ebx, [rbx+0x14] | |
0bcaa6b1 mov rdi, 0xfffffffb405df128 | |
0bcaa6bb cmp rdi, [rbx+0x170] | |
0bcaa6c2 jnz 0x0bca0018 ->2 | |
0bcaa6c8 cmp dword [rbx+0x16c], -0x09 | |
0bcaa6cf jnz 0x0bca0018 ->2 | |
0bcaa6d5 cmp dword [rbx+0x168], 0x405df100 | |
0bcaa6df jnz 0x0bca0018 ->2 | |
0bcaa6e5 mov r13d, r14d | |
0bcaa6e8 and r13d, 0xff1f | |
0bcaa6ef jnz 0x0bca001c ->3 | |
0bcaa6f5 movzx r12d, byte [rdx+0xe] | |
0bcaa6fa mov edi, r12d | |
0bcaa6fd and edi, +0x0f | |
0bcaa700 mov rcx, 0xfffffffb405defc0 | |
0bcaa70a cmp rcx, [rbx+0x140] | |
0bcaa711 jnz 0x0bca0020 ->4 | |
0bcaa717 cmp dword [rbx+0x13c], -0x09 | |
0bcaa71e jnz 0x0bca0020 ->4 | |
0bcaa724 cmp dword [rbx+0x138], 0x405def98 | |
0bcaa72e jnz 0x0bca0020 ->4 | |
0bcaa734 mov ecx, r12d | |
0bcaa737 shl ecx, 0x02 | |
0bcaa73a and ecx, +0x3c | |
0bcaa73d mov r11d, ecx | |
0bcaa740 add r11d, +0x10 | |
0bcaa744 jo 0x0bca0020 ->4 | |
0bcaa74a xorps xmm7, xmm7 | |
0bcaa74d cvtsi2sd xmm7, r11d | |
0bcaa752 ucomisd xmm2, xmm7 | |
0bcaa756 jb 0x0bca0024 ->5 | |
0bcaa75c mov r10d, ecx | |
0bcaa75f add r10d, +0x0e | |
0bcaa763 jo 0x0bca0028 ->6 | |
0bcaa769 movsxd r9, r10d | |
0bcaa76c movzx r9d, word [r9+rdx] | |
0bcaa771 mov r8, 0xfffffffb405df008 | |
0bcaa77b cmp r8, [rbx+0x80] | |
0bcaa782 jnz 0x0bca0028 ->6 | |
0bcaa788 cmp dword [rbx+0x7c], -0x09 | |
0bcaa78c jnz 0x0bca0028 ->6 | |
0bcaa792 mov r8, 0xfffffffb405def78 | |
0bcaa79c cmp r8, [rbx+0xb0] | |
0bcaa7a3 jnz 0x0bca0028 ->6 | |
0bcaa7a9 cmp dword [rbx+0xac], -0x09 | |
0bcaa7b0 jnz 0x0bca0028 ->6 | |
0bcaa7b6 cmp dword [rbx+0xa8], 0x405def50 | |
0bcaa7c0 jnz 0x0bca0028 ->6 | |
0bcaa7c6 mov r8d, r9d | |
0bcaa7c9 bswap r8d | |
0bcaa7cc cmp dword [rbx+0x78], 0x405defe0 | |
0bcaa7d3 jnz 0x0bca0028 ->6 | |
0bcaa7d9 shr r8d, 0x10 | |
0bcaa7dd cmp r8d, 0x1770 | |
0bcaa7e4 jg 0x0bca002c ->7 | |
0bcaa7ea mov ebx, [0x405d84b0] | |
0bcaa7f1 cmp dword [rbx+0x24], 0xfffeffff | |
0bcaa7f8 jnb 0x0bca0030 ->8 | |
0bcaa7fe movsd xmm6, [rbx+0x20] | |
0bcaa803 addsd xmm6, xmm5 | |
0bcaa807 cmp dword [rbx+0x1c], 0xfffeffff | |
0bcaa80e jnb 0x0bca0030 ->8 | |
0bcaa814 movsd xmm7, [rbx+0x18] | |
0bcaa819 addsd xmm7, xmm5 | |
0bcaa81d cmp dword [rbx+0xc], -0x0b | |
0bcaa821 jnz 0x0bca0030 ->8 | |
0bcaa827 mov ebx, [rbx+0x8] | |
0bcaa82a mov edx, [0x405d84b0] | |
0bcaa831 movzx r15d, word [rbx+0x6] | |
0bcaa836 cmp r15d, 0xb5 | |
0bcaa83d jnz 0x0bca0034 ->9 | |
0bcaa843 cmp rbp, [rbx+0x8] | |
0bcaa847 jnb 0x0bca0034 ->9 | |
0bcaa84d movsd [rdx+0x20], xmm6 | |
0bcaa852 movsd [rdx+0x18], xmm7 | |
0bcaa857 mov dword [rdx+0x4], 0xfffffff5 | |
0bcaa85e mov [rdx], eax | |
0bcaa860 add rsp, +0x20 | |
0bcaa864 jmp 0x0bcaadde | |
---- TRACE 56 stop -> 53 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 57 start 53/1 "portrange 0-6000":2 | |
0004 . KPRI 2 1 | |
0005 . RET1 2 2 | |
0022 ISF 8 | |
0023 JMP 9 => 0025 | |
0025 ADDVN 3 3 0 ; 1 | |
0026 MOV 0 7 | |
0027 JMP 5 => 0003 | |
0003 ISGE 0 1 | |
0004 JMP 5 => 0028 | |
0000 . . FUNCC ; ffi.meta.__lt | |
0005 JLOOP 5 53 | |
---- TRACE 57 IR | |
0001 <span class="irt_p64">p64</span> PVAL #13 | |
0002 <span class="irt_p64">p64</span> PVAL #15 | |
0003 <span class="irt_p64">p64</span> PVAL #21 | |
0004 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+183</span> 0001 | |
0005 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0002 | |
0006 + <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0003 | |
0007 > <span class="irt_nil">nil</span> GCSTEP | |
0008 > <span class="irt_num">num</span> SLOAD #4 T | |
0009 <span class="irt_num">num</span> ADD 0008 <span class="irt_num">+1 </span> | |
0010 > <span class="irt_cdt">cdt</span> SLOAD #2 T | |
0011 <span class="irt_u16">u16</span> FLOAD 0010 cdata.ctypeid | |
0012 > <span class="irt_int">int</span> EQ 0011 <span class="irt_int">+181</span> | |
0013 <span class="irt_p64">p64</span> FLOAD 0010 cdata.ptr | |
0014 > <span class="irt_p64">p64</span> UGT 0013 0003 | |
---- TRACE 57 mcode 222 | |
0bcaa470 mov r15, [rsp+0x8] | |
0bcaa475 add rsp, -0x10 | |
0bcaa479 mov dword [0x405d84a0], 0x39 | |
0bcaa484 mov [rsp+0x10], rdx | |
0bcaa489 mov ebx, [0x405d84b0] | |
0bcaa490 mov edi, [0x405d84ac] | |
0bcaa497 mov esi, 0x10 | |
0bcaa49c call 0x0041f4e0 ->lj_mem_newgco | |
0bcaa4a1 movzx ecx, byte [0x405d83e0] | |
0bcaa4a9 and ecx, +0x03 | |
0bcaa4ac or ecx, 0x00b50a00 | |
0bcaa4b2 mov [rax+0x4], ecx | |
0bcaa4b5 mov [rax+0x8], rbp | |
0bcaa4b9 mov [rsp+0x8], eax | |
0bcaa4bd mov edi, [0x405d83d8] | |
0bcaa4c4 cmp edi, [0x405d83dc] | |
0bcaa4cb jb 0x0bcaa4e4 | |
0bcaa4cd mov esi, 0x1 | |
0bcaa4d2 mov edi, 0x405d83b8 | |
0bcaa4d7 call 0x0041f3d0 ->lj_gc_step_jit | |
0bcaa4dc test eax, eax | |
0bcaa4de jnz 0x0bca0010 ->0 | |
0bcaa4e4 mov eax, [rsp+0x8] | |
0bcaa4e8 movsd xmm6, [0x401f5ce0] | |
0bcaa4f1 cmp dword [rbx+0x1c], 0xfffeffff | |
0bcaa4f8 jnb 0x0bca0010 ->0 | |
0bcaa4fe movsd xmm7, [rbx+0x18] | |
0bcaa503 addsd xmm7, xmm6 | |
0bcaa507 cmp dword [rbx+0xc], -0x0b | |
0bcaa50b jnz 0x0bca0010 ->0 | |
0bcaa511 mov ebx, [rbx+0x8] | |
0bcaa514 mov edx, [0x405d84b0] | |
0bcaa51b movzx r15d, word [rbx+0x6] | |
0bcaa520 cmp r15d, 0xb5 | |
0bcaa527 jnz 0x0bca0014 ->1 | |
0bcaa52d cmp rbp, [rbx+0x8] | |
0bcaa531 jnb 0x0bca0014 ->1 | |
0bcaa537 movsd [rdx+0x18], xmm7 | |
0bcaa53c mov dword [rdx+0x4], 0xfffffff5 | |
0bcaa543 mov [rdx], eax | |
0bcaa545 add rsp, +0x10 | |
0bcaa549 jmp 0x0bcaadde | |
---- TRACE 57 stop -> 53 | |
</pre> | |
<pre class="ljdump"> | |
---- TRACE 58 start 53/14 "portrange 0-6000":2 | |
0004 . KPRI 2 1 | |
0005 . RET1 2 2 | |
0022 ISF 8 | |
0023 JMP 9 => 0025 | |
0025 ADDVN 3 3 0 ; 1 | |
0026 MOV 0 7 | |
0027 JMP 5 => 0003 | |
0003 ISGE 0 1 | |
0004 JMP 5 => 0028 | |
0000 . . FUNCC ; ffi.meta.__lt | |
0005 JLOOP 5 53 | |
---- TRACE 58 IR | |
0001 <span class="irt_num">num</span> SLOAD #4 PI | |
0002 <span class="irt_num">num</span> SLOAD #5 PI | |
0003 <span class="irt_p64">p64</span> PVAL #21 | |
0004 <span class="irt_p64">p64</span> PVAL #100 | |
0005 <span class="irt_p64">p64</span> PVAL #105 | |
0006 + <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0003 | |
0007 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+183</span> 0003 | |
0008 } <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0004 | |
0009 + <span class="irt_cdt">cdt</span> CNEWI <span class="irt_int">+181</span> 0005 | |
0010 > <span class="irt_nil">nil</span> GCSTEP | |
0011 <span class="irt_num">num</span> ADD 0001 <span class="irt_num">+1 </span> | |
0012 > <span class="irt_cdt">cdt</span> SLOAD #2 T | |
0013 <span class="irt_u16">u16</span> FLOAD 0012 cdata.ctypeid | |
0014 > <span class="irt_int">int</span> EQ 0013 <span class="irt_int">+181</span> | |
0015 <span class="irt_p64">p64</span> FLOAD 0012 cdata.ptr | |
0016 > <span class="irt_p64">p64</span> UGT 0015 0005 | |
---- TRACE 58 mcode 269 | |
0bcaa360 mov r13, r15 | |
0bcaa363 mov r14, rbx | |
0bcaa366 add rsp, -0x10 | |
0bcaa36a mov dword [0x405d84a0], 0x3a | |
0bcaa375 movsd [rsp+0x8], xmm7 | |
0bcaa37b movsd [rsp+0x10], xmm6 | |
0bcaa381 mov edi, [0x405d84ac] | |
0bcaa388 mov esi, 0x10 | |
0bcaa38d call 0x0041f4e0 ->lj_mem_newgco | |
0bcaa392 movzx ecx, byte [0x405d83e0] | |
0bcaa39a and ecx, +0x03 | |
0bcaa39d or ecx, 0x00b50a00 | |
0bcaa3a3 mov [rax+0x4], ecx | |
0bcaa3a6 mov [rax+0x8], r14 | |
0bcaa3aa mov r15d, eax | |
0bcaa3ad mov edi, [0x405d84ac] | |
0bcaa3b4 mov esi, 0x10 | |
0bcaa3b9 call 0x0041f4e0 ->lj_mem_newgco | |
0bcaa3be movzx ecx, byte [0x405d83e0] | |
0bcaa3c6 and ecx, +0x03 | |
0bcaa3c9 or ecx, 0x00b50a00 | |
0bcaa3cf mov [rax+0x4], ecx | |
0bcaa3d2 mov [rax+0x8], rbp | |
0bcaa3d6 mov [rsp+0x18], eax | |
0bcaa3da mov edi, [0x405d83d8] | |
0bcaa3e1 cmp edi, [0x405d83dc] | |
0bcaa3e8 jb 0x0bcaa401 | |
0bcaa3ea mov esi, 0x2 | |
0bcaa3ef mov edi, 0x405d83b8 | |
0bcaa3f4 call 0x0041f3d0 ->lj_gc_step_jit | |
0bcaa3f9 test eax, eax | |
0bcaa3fb jnz 0x0bca0010 ->0 | |
0bcaa401 mov edx, [0x405d84b0] | |
0bcaa408 mov eax, [rsp+0x18] | |
0bcaa40c movsd xmm6, [rsp+0x10] | |
0bcaa412 movsd xmm5, [rsp+0x8] | |
0bcaa418 movsd xmm4, [0x401f5ce0] | |
0bcaa421 movaps xmm7, xmm5 | |
0bcaa424 addsd xmm7, xmm4 | |
0bcaa428 cmp dword [rdx+0xc], -0x0b | |
0bcaa42c jnz 0x0bca0010 ->0 | |
0bcaa432 mov ebx, [rdx+0x8] | |
0bcaa435 movzx r15d, word [rbx+0x6] | |
0bcaa43a cmp r15d, 0xb5 | |
0bcaa441 jnz 0x0bca0014 ->1 | |
0bcaa447 cmp rbp, [rbx+0x8] | |
0bcaa44b jnb 0x0bca0014 ->1 | |
0bcaa451 movsd [rdx+0x20], xmm6 | |
0bcaa456 movsd [rdx+0x18], xmm7 | |
0bcaa45b mov dword [rdx+0x4], 0xfffffff5 | |
0bcaa462 mov [rdx], eax | |
0bcaa464 add rsp, +0x10 | |
0bcaa468 jmp 0x0bcaadde | |
---- TRACE 58 stop -> 53 | |
</pre> | |
Matched 19574/19589 packets from /home/wingo/src/pflua-bench/savefiles/wingolog.org.pcap (9.119646 MPPS). |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment