Skip to content

Instantly share code, notes, and snippets.

@p0pr0ck5
Created August 8, 2018 17:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save p0pr0ck5/9d79bea358db21ff577cf3536f3a761e to your computer and use it in GitHub Desktop.
Save p0pr0ck5/9d79bea358db21ff577cf3536f3a761e to your computer and use it in GitHub Desktop.
$ tail -f /tmp/jit.dump
---- TRACE 1 start access_by_lua(nginx.conf:60):2
0005 GGET 4 0 ; "ngx" (access_by_lua(nginx.conf:60):3)
0006 TGETS 4 4 1 ; "get_phase" (access_by_lua(nginx.conf:60):3)
0007 CALL 4 2 1 (access_by_lua(nginx.conf:60):3)
0000 . FUNCC ; C:55d170597150
---- TRACE 1 IR
0001 int SLOAD #1 CI
0002 fun SLOAD #0 R
0003 tab FLOAD 0002 func.env
0004 p32 HREF 0003 "ngx"
0005 > p32 EQ 0004 [0x40719458]
0006 tab FLOAD 0003 tab.meta
0007 > tab NE 0006 NULL
0008 int FLOAD 0006 tab.hmask
0009 > int EQ 0008 +1
0010 p32 FLOAD 0006 tab.node
0011 > p32 HREFK 0010 "__index" @0
0012 > tab HLOAD 0011
0013 int FLOAD 0012 tab.hmask
0014 > int EQ 0013 +63
0015 p32 FLOAD 0012 tab.node
0016 > p32 HREFK 0015 "ngx" @46
0017 > tab HLOAD 0016
0018 int FLOAD 0017 tab.hmask
0019 > int EQ 0018 +127
0020 p32 FLOAD 0017 tab.node
0021 > p32 HREFK 0020 "get_phase" @93
0022 > fun HLOAD 0021
0023 > fun EQ 0022 C:55d170597150
0024 num CONV 0001 num.int
---- TRACE 1 mcode 344
7f615a6cfea1 mov dword [0x40719410], 0x1
7f615a6cfeac cvttsd2si ebp, [rdx]
7f615a6cfeb0 mov ebx, [rdx-0x8]
7f615a6cfeb3 mov ebx, [rbx+0x8]
7f615a6cfeb6 mov edi, [rbx+0x1c]
7f615a6cfeb9 and edi, 0x8c4ae72f
7f615a6cfebf lea edi, [rdi+rdi*2]
7f615a6cfec2 shl edi, 0x03
7f615a6cfec5 add edi, [rbx+0x14]
7f615a6cfec8 cmp dword [rdi+0xc], -0x05
7f615a6cfecc jnz 0x7f615a6cfedb
7f615a6cfece cmp dword [rdi+0x8], 0x40726530
7f615a6cfed5 jz 0x7f615a6c0010 ->0
7f615a6cfedb mov edi, [rdi+0x10]
7f615a6cfede test edi, edi
7f615a6cfee0 jnz 0x7f615a6cfec8
7f615a6cfee2 mov ebx, [rbx+0x10]
7f615a6cfee5 test ebx, ebx
7f615a6cfee7 jz 0x7f615a6c0010 ->0
7f615a6cfeed cmp dword [rbx+0x1c], +0x01
7f615a6cfef1 jnz 0x7f615a6c0010 ->0
7f615a6cfef7 mov ebx, [rbx+0x14]
7f615a6cfefa mov rdi, 0xfffffffb4071b4a0
7f615a6cff04 cmp rdi, [rbx+0x8]
7f615a6cff08 jnz 0x7f615a6c0010 ->0
7f615a6cff0e cmp dword [rbx+0x4], -0x0c
7f615a6cff12 jnz 0x7f615a6c0010 ->0
7f615a6cff18 mov ebx, [rbx]
7f615a6cff1a cmp dword [rbx+0x1c], +0x3f
7f615a6cff1e jnz 0x7f615a6c0010 ->0
7f615a6cff24 mov ebx, [rbx+0x14]
7f615a6cff27 mov rdi, 0xfffffffb40726530
7f615a6cff31 cmp rdi, [rbx+0x458]
7f615a6cff38 jnz 0x7f615a6c0010 ->0
7f615a6cff3e cmp dword [rbx+0x454], -0x0c
7f615a6cff45 jnz 0x7f615a6c0010 ->0
7f615a6cff4b mov ebx, [rbx+0x450]
7f615a6cff51 cmp dword [rbx+0x1c], +0x7f
7f615a6cff55 jnz 0x7f615a6c0010 ->0
7f615a6cff5b mov ebx, [rbx+0x14]
7f615a6cff5e mov rdi, 0xfffffffb40724f08
7f615a6cff68 cmp rdi, [rbx+0x8c0]
7f615a6cff6f jnz 0x7f615a6c0010 ->0
7f615a6cff75 cmp dword [rbx+0x8bc], -0x09
7f615a6cff7c jnz 0x7f615a6c0010 ->0
7f615a6cff82 cmp dword [rbx+0x8b8], 0x40724ee0
7f615a6cff8c jnz 0x7f615a6c0010 ->0
7f615a6cff92 xorps xmm7, xmm7
7f615a6cff95 cvtsi2sd xmm7, ebp
7f615a6cff99 mov eax, [0x407194b0]
7f615a6cffa0 mov eax, [rax+0x20]
7f615a6cffa3 sub eax, edx
7f615a6cffa5 cmp eax, +0x40
7f615a6cffa8 jb 0x7f615a6c0014 ->1
7f615a6cffae mov dword [rdx+0x34], 0x3a
7f615a6cffb5 mov dword [rdx+0x30], 0x40724ee0
7f615a6cffbc mov dword [rdx+0x2c], 0x4174fce8
7f615a6cffc3 mov dword [rdx+0x28], 0x3348
7f615a6cffca mov dword [rdx+0x24], 0xfffffff6
7f615a6cffd1 mov dword [rdx+0x20], 0x40727cd0
7f615a6cffd8 movsd [rdx+0x18], xmm7
7f615a6cffdd movsd [rdx], xmm7
7f615a6cffe1 add edx, +0x38
7f615a6cffe4 mov eax, 0x1
7f615a6cffe9 mov ebx, 0x407194ac
7f615a6cffee mov r14d, 0x40719fe0
7f615a6cfff4 jmp 0x7f61305ecd72
---- TRACE 1 stop -> stitch
---- TRACE 2 start 1/stitch access_by_lua(nginx.conf:60):3
0008 GSET 4 2 ; "phase" (access_by_lua(nginx.conf:60):3)
0009 JFORL 0 1 (access_by_lua(nginx.conf:60):2)
---- TRACE 2 IR
0001 > str SLOAD #5 T
0002 fun SLOAD #0 R
0003 tab FLOAD 0002 func.env
0004 int FLOAD 0003 tab.hmask
0005 > int EQ 0004 +3
0006 p32 FLOAD 0003 tab.node
0007 > p32 HREFK 0006 "phase" @0
0008 > str HLOAD 0007
0009 str HSTORE 0007 0001
0010 nil TBAR 0003
0011 num SLOAD #1 I
0012 num ADD 0011 +1
0013 > num LE 0012 +1000000
---- TRACE 2 mcode 163
7f615a6cfdf7 mov dword [0x40719410], 0x2
7f615a6cfe02 movsd xmm6, [0x41ca6590]
7f615a6cfe0b movsd xmm5, [0x41ca6580]
7f615a6cfe14 cmp dword [rdx+0x24], -0x05
7f615a6cfe18 jnz 0x7f615a6c0010 ->0
7f615a6cfe1e mov ebx, [rdx+0x20]
7f615a6cfe21 mov ebp, [rdx-0x8]
7f615a6cfe24 mov ebp, [rbp+0x8]
7f615a6cfe27 cmp dword [rbp+0x1c], +0x03
7f615a6cfe2b jnz 0x7f615a6c0010 ->0
7f615a6cfe31 mov r15d, [rbp+0x14]
7f615a6cfe35 mov rdi, 0xfffffffb41751040
7f615a6cfe3f cmp rdi, [r15+0x8]
7f615a6cfe43 jnz 0x7f615a6c0010 ->0
7f615a6cfe49 cmp dword [r15+0x4], -0x05
7f615a6cfe4e jnz 0x7f615a6c0010 ->0
7f615a6cfe54 mov dword [r15+0x4], 0xfffffffb
7f615a6cfe5c mov [r15], ebx
7f615a6cfe5f test byte [rbp+0x4], 0x4
7f615a6cfe63 jz 0x7f615a6cfe7a
7f615a6cfe65 and byte [rbp+0x4], 0xfb
7f615a6cfe69 mov edi, [0x407193f4]
7f615a6cfe70 mov [0x407193f4], ebp
7f615a6cfe77 mov [rbp+0xc], edi
7f615a6cfe7a movsd xmm7, [rdx]
7f615a6cfe7e addsd xmm7, xmm5
7f615a6cfe82 ucomisd xmm6, xmm7
7f615a6cfe86 jb 0x7f615a6c0014 ->1
7f615a6cfe8c movsd [rdx+0x18], xmm7
7f615a6cfe91 movsd [rdx], xmm7
7f615a6cfe95 jmp 0x7f615a6cfea1
---- TRACE 2 stop -> 1
---- TRACE 3 start 2/1 access_by_lua(nginx.conf:60):6
0010 RET0 0 1 (access_by_lua(nginx.conf:60):6)
---- TRACE 3 IR
---- TRACE 3 mcode 29
7f615a6cfdd3 mov dword [0x40719410], 0x3
7f615a6cfdde xor eax, eax
7f615a6cfde0 mov ebx, 0x4174fcf0
7f615a6cfde5 mov r14d, 0x40719fe0
7f615a6cfdeb jmp 0x7f61305ecd72
---- TRACE 3 stop -> return
---- TRACE 4 start 2/0 access_by_lua(nginx.conf:60):3
0008 GSET 4 2 ; "phase" (access_by_lua(nginx.conf:60):3)
0009 JFORL 0 1 (access_by_lua(nginx.conf:60):2)
---- TRACE 4 IR
0001 > str SLOAD #5 T
0002 fun SLOAD #0 R
0003 tab FLOAD 0002 func.env
0004 p32 HREF 0003 "phase"
0005 > p32 EQ 0004 [0x40719458]
0006 tab FLOAD 0003 tab.meta
0007 > tab NE 0006 NULL
0008 p32 HREF 0006 "__newindex"
0009 > p32 EQ 0008 [0x40719458]
0010 p32 NEWREF 0003 "phase"
0011 str HSTORE 0010 0001
0012 nil TBAR 0003
0013 num SLOAD #1 I
0014 num ADD 0013 +1
0015 > num LE 0014 +1000000
---- TRACE 4 mcode 258
7f615a6cfcca mov dword [0x40719410], 0x4
7f615a6cfcd5 mov edi, [0x407194b0]
7f615a6cfcdc cmp dword [rdx+0x24], -0x05
7f615a6cfce0 jnz 0x7f615a6c0010 ->0
7f615a6cfce6 mov ebx, [rdx+0x20]
7f615a6cfce9 mov ebp, [rdx-0x8]
7f615a6cfcec mov ebp, [rbp+0x8]
7f615a6cfcef mov esi, [rbp+0x1c]
7f615a6cfcf2 and esi, 0xf034371c
7f615a6cfcf8 lea esi, [rsi+rsi*2]
7f615a6cfcfb shl esi, 0x03
7f615a6cfcfe add esi, [rbp+0x14]
7f615a6cfd01 cmp dword [rsi+0xc], -0x05
7f615a6cfd05 jnz 0x7f615a6cfd14
7f615a6cfd07 cmp dword [rsi+0x8], 0x41751040
7f615a6cfd0e jz 0x7f615a6c0010 ->0
7f615a6cfd14 mov esi, [rsi+0x10]
7f615a6cfd17 test esi, esi
7f615a6cfd19 jnz 0x7f615a6cfd01
7f615a6cfd1b mov r15d, [rbp+0x10]
7f615a6cfd1f test r15d, r15d
7f615a6cfd22 jz 0x7f615a6c0010 ->0
7f615a6cfd28 mov esi, [r15+0x1c]
7f615a6cfd2c and esi, 0xcd80d9d9
7f615a6cfd32 lea esi, [rsi+rsi*2]
7f615a6cfd35 shl esi, 0x03
7f615a6cfd38 add esi, [r15+0x14]
7f615a6cfd3c cmp dword [rsi+0xc], -0x05
7f615a6cfd40 jnz 0x7f615a6cfd4f
7f615a6cfd42 cmp dword [rsi+0x8], 0x4071b4c0
7f615a6cfd49 jz 0x7f615a6c0010 ->0
7f615a6cfd4f mov esi, [rsi+0x10]
7f615a6cfd52 test esi, esi
7f615a6cfd54 jnz 0x7f615a6cfd3c
7f615a6cfd56 mov edx, 0x40719448
7f615a6cfd5b mov dword [rdx+0x4], 0xfffffffb
7f615a6cfd62 mov dword [rdx], 0x41751040
7f615a6cfd68 mov esi, ebp
7f615a6cfd6a call 0x7f61305f1990 ->lj_tab_newkey
7f615a6cfd6f mov edx, [0x407194b4]
7f615a6cfd76 movsd xmm6, [0x41cac850]
7f615a6cfd7f movsd xmm5, [0x41cac840]
7f615a6cfd88 mov dword [rax+0x4], 0xfffffffb
7f615a6cfd8f mov [rax], ebx
7f615a6cfd91 test byte [rbp+0x4], 0x4
7f615a6cfd95 jz 0x7f615a6cfdac
7f615a6cfd97 and byte [rbp+0x4], 0xfb
7f615a6cfd9b mov edi, [0x407193f4]
7f615a6cfda2 mov [0x407193f4], ebp
7f615a6cfda9 mov [rbp+0xc], edi
7f615a6cfdac movsd xmm7, [rdx]
7f615a6cfdb0 addsd xmm7, xmm5
7f615a6cfdb4 ucomisd xmm6, xmm7
7f615a6cfdb8 jb 0x7f615a6c0014 ->1
7f615a6cfdbe movsd [rdx+0x18], xmm7
7f615a6cfdc3 movsd [rdx], xmm7
7f615a6cfdc7 jmp 0x7f615a6cfea1
---- TRACE 4 stop -> 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment