mirror of
https://github.com/ii64/sonic.git
synced 2026-06-22 17:36:48 +08:00
fix: check number ending in skip number (#179)
* fix: check number ending in skip number * build: clang12 Co-authored-by: liuqiang <liuqiang.06@bytedance.com> Co-authored-by: duanyi.aster <duanyi.aster@bytedance.com>
This commit is contained in:
parent
3dde76677e
commit
bf4e9e1982
8 changed files with 732 additions and 622 deletions
|
|
@ -291,7 +291,7 @@ LBB2_5:
|
||||||
LONG $0x4fdc6941; WORD $0x1293; BYTE $0x00 // imull $1217359, %r12d, %ebx
|
LONG $0x4fdc6941; WORD $0x1293; BYTE $0x00 // imull $1217359, %r12d, %ebx
|
||||||
MOVQ R12, AX
|
MOVQ R12, AX
|
||||||
SHLQ $4, AX
|
SHLQ $4, AX
|
||||||
LONG $0x250d8d48; WORD $0x0075; BYTE $0x00 // leaq $29989(%rip), %rcx /* _DOUBLE_POW5_INV_SPLIT(%rip) */
|
LONG $0x940d8d48; WORD $0x0075; BYTE $0x00 // leaq $30100(%rip), %rcx /* _DOUBLE_POW5_INV_SPLIT(%rip) */
|
||||||
MOVQ R8, DI
|
MOVQ R8, DI
|
||||||
ORQ $2, DI
|
ORQ $2, DI
|
||||||
MOVQ 0(AX)(CX*1), R10
|
MOVQ 0(AX)(CX*1), R10
|
||||||
|
|
@ -378,7 +378,7 @@ LBB2_12:
|
||||||
SHRL $19, BX
|
SHRL $19, BX
|
||||||
MOVLQSX AX, SI
|
MOVLQSX AX, SI
|
||||||
SHLQ $4, SI
|
SHLQ $4, SI
|
||||||
LONG $0x50158d4c; WORD $0x0089; BYTE $0x00 // leaq $35152(%rip), %r10 /* _DOUBLE_POW5_SPLIT(%rip) */
|
LONG $0xbf158d4c; WORD $0x0089; BYTE $0x00 // leaq $35263(%rip), %r10 /* _DOUBLE_POW5_SPLIT(%rip) */
|
||||||
MOVQ R8, DI
|
MOVQ R8, DI
|
||||||
ORQ $2, DI
|
ORQ $2, DI
|
||||||
MOVQ 0(SI)(R10*1), R14
|
MOVQ 0(SI)(R10*1), R14
|
||||||
|
|
@ -791,7 +791,7 @@ LBB2_61:
|
||||||
LEAQ 1(R13), BX
|
LEAQ 1(R13), BX
|
||||||
MOVQ BX, SI
|
MOVQ BX, SI
|
||||||
MOVL R15, DX
|
MOVL R15, DX
|
||||||
LONG $0x003ec3e8; BYTE $0x00 // callq _print_mantissa
|
LONG $0x003f32e8; BYTE $0x00 // callq _print_mantissa
|
||||||
MOVB 1(R13), AX
|
MOVB 1(R13), AX
|
||||||
MOVB AX, 0(R13)
|
MOVB AX, 0(R13)
|
||||||
MOVL $1, AX
|
MOVL $1, AX
|
||||||
|
|
@ -820,7 +820,7 @@ LBB2_66:
|
||||||
LEAL 0(CX)(CX*1), AX
|
LEAL 0(CX)(CX*1), AX
|
||||||
LEAL 0(AX)(AX*4), AX
|
LEAL 0(AX)(AX*4), AX
|
||||||
SUBL AX, R14
|
SUBL AX, R14
|
||||||
LONG $0x22058d48; WORD $0x0098; BYTE $0x00 // leaq $38946(%rip), %rax /* _Digits(%rip) */
|
LONG $0x91058d48; WORD $0x0098; BYTE $0x00 // leaq $39057(%rip), %rax /* _Digits(%rip) */
|
||||||
MOVWLZX 0(AX)(CX*2), AX
|
MOVWLZX 0(AX)(CX*2), AX
|
||||||
MOVL BX, CX
|
MOVL BX, CX
|
||||||
MOVW AX, 0(R13)(CX*1)
|
MOVW AX, 0(R13)(CX*1)
|
||||||
|
|
@ -856,7 +856,7 @@ LBB2_70:
|
||||||
CMPL R14, $10
|
CMPL R14, $10
|
||||||
JL LBB2_85
|
JL LBB2_85
|
||||||
MOVLQSX R14, AX
|
MOVLQSX R14, AX
|
||||||
LONG $0xb40d8d48; WORD $0x0097; BYTE $0x00 // leaq $38836(%rip), %rcx /* _Digits(%rip) */
|
LONG $0x230d8d48; WORD $0x0098; BYTE $0x00 // leaq $38947(%rip), %rcx /* _Digits(%rip) */
|
||||||
MOVWLZX 0(CX)(AX*2), AX
|
MOVWLZX 0(CX)(AX*2), AX
|
||||||
MOVL BX, CX
|
MOVL BX, CX
|
||||||
MOVW AX, 0(R13)(CX*1)
|
MOVW AX, 0(R13)(CX*1)
|
||||||
|
|
@ -875,7 +875,7 @@ LBB2_74:
|
||||||
MOVL BX, SI
|
MOVL BX, SI
|
||||||
ADDQ -64(BP), SI
|
ADDQ -64(BP), SI
|
||||||
MOVL R15, DX
|
MOVL R15, DX
|
||||||
LONG $0x003dbfe8; BYTE $0x00 // callq _print_mantissa
|
LONG $0x003e2ee8; BYTE $0x00 // callq _print_mantissa
|
||||||
TESTL R13, R13
|
TESTL R13, R13
|
||||||
JE LBB2_78
|
JE LBB2_78
|
||||||
LEAL 0(R13)(BX*1), AX
|
LEAL 0(R13)(BX*1), AX
|
||||||
|
|
@ -1079,7 +1079,7 @@ LBB2_105:
|
||||||
MOVQ R13, SI
|
MOVQ R13, SI
|
||||||
MOVL R15, DX
|
MOVL R15, DX
|
||||||
WORD $0xf8c5; BYTE $0x77 // vzeroupper
|
WORD $0xf8c5; BYTE $0x77 // vzeroupper
|
||||||
LONG $0x003aade8; BYTE $0x00 // callq _print_mantissa
|
LONG $0x003b1ce8; BYTE $0x00 // callq _print_mantissa
|
||||||
ADDL BX, R15
|
ADDL BX, R15
|
||||||
MOVL R15, BX
|
MOVL R15, BX
|
||||||
|
|
||||||
|
|
@ -1172,7 +1172,7 @@ _u64toa:
|
||||||
ADDQ AX, AX
|
ADDQ AX, AX
|
||||||
CMPL SI, $1000
|
CMPL SI, $1000
|
||||||
JB LBB4_3
|
JB LBB4_3
|
||||||
LONG $0x760d8d48; WORD $0x0093; BYTE $0x00 // leaq $37750(%rip), %rcx /* _Digits(%rip) */
|
LONG $0xe50d8d48; WORD $0x0093; BYTE $0x00 // leaq $37861(%rip), %rcx /* _Digits(%rip) */
|
||||||
MOVB 0(DX)(CX*1), CX
|
MOVB 0(DX)(CX*1), CX
|
||||||
MOVB CX, 0(DI)
|
MOVB CX, 0(DI)
|
||||||
MOVL $1, CX
|
MOVL $1, CX
|
||||||
|
|
@ -1186,14 +1186,14 @@ LBB4_3:
|
||||||
LBB4_4:
|
LBB4_4:
|
||||||
MOVWLZX DX, DX
|
MOVWLZX DX, DX
|
||||||
ORQ $1, DX
|
ORQ $1, DX
|
||||||
LONG $0x55358d48; WORD $0x0093; BYTE $0x00 // leaq $37717(%rip), %rsi /* _Digits(%rip) */
|
LONG $0xc4358d48; WORD $0x0093; BYTE $0x00 // leaq $37828(%rip), %rsi /* _Digits(%rip) */
|
||||||
MOVB 0(DX)(SI*1), DX
|
MOVB 0(DX)(SI*1), DX
|
||||||
MOVL CX, SI
|
MOVL CX, SI
|
||||||
INCL CX
|
INCL CX
|
||||||
MOVB DX, 0(DI)(SI*1)
|
MOVB DX, 0(DI)(SI*1)
|
||||||
|
|
||||||
LBB4_6:
|
LBB4_6:
|
||||||
LONG $0x44158d48; WORD $0x0093; BYTE $0x00 // leaq $37700(%rip), %rdx /* _Digits(%rip) */
|
LONG $0xb3158d48; WORD $0x0093; BYTE $0x00 // leaq $37811(%rip), %rdx /* _Digits(%rip) */
|
||||||
MOVB 0(AX)(DX*1), DX
|
MOVB 0(AX)(DX*1), DX
|
||||||
MOVL CX, SI
|
MOVL CX, SI
|
||||||
INCL CX
|
INCL CX
|
||||||
|
|
@ -1202,7 +1202,7 @@ LBB4_6:
|
||||||
LBB4_7:
|
LBB4_7:
|
||||||
MOVWLZX AX, AX
|
MOVWLZX AX, AX
|
||||||
ORQ $1, AX
|
ORQ $1, AX
|
||||||
LONG $0x2c158d48; WORD $0x0093; BYTE $0x00 // leaq $37676(%rip), %rdx /* _Digits(%rip) */
|
LONG $0x9b158d48; WORD $0x0093; BYTE $0x00 // leaq $37787(%rip), %rdx /* _Digits(%rip) */
|
||||||
MOVB 0(AX)(DX*1), AX
|
MOVB 0(AX)(DX*1), AX
|
||||||
MOVL CX, DX
|
MOVL CX, DX
|
||||||
INCL CX
|
INCL CX
|
||||||
|
|
@ -1249,7 +1249,7 @@ LBB4_8:
|
||||||
ADDQ R11, R11
|
ADDQ R11, R11
|
||||||
CMPL SI, $10000000
|
CMPL SI, $10000000
|
||||||
JB LBB4_11
|
JB LBB4_11
|
||||||
LONG $0x95058d48; WORD $0x0092; BYTE $0x00 // leaq $37525(%rip), %rax /* _Digits(%rip) */
|
LONG $0x04058d48; WORD $0x0093; BYTE $0x00 // leaq $37636(%rip), %rax /* _Digits(%rip) */
|
||||||
MOVB 0(R10)(AX*1), AX
|
MOVB 0(R10)(AX*1), AX
|
||||||
MOVB AX, 0(DI)
|
MOVB AX, 0(DI)
|
||||||
MOVL $1, CX
|
MOVL $1, CX
|
||||||
|
|
@ -1263,14 +1263,14 @@ LBB4_11:
|
||||||
LBB4_12:
|
LBB4_12:
|
||||||
MOVL R10, AX
|
MOVL R10, AX
|
||||||
ORQ $1, AX
|
ORQ $1, AX
|
||||||
LONG $0x70358d48; WORD $0x0092; BYTE $0x00 // leaq $37488(%rip), %rsi /* _Digits(%rip) */
|
LONG $0xdf358d48; WORD $0x0092; BYTE $0x00 // leaq $37599(%rip), %rsi /* _Digits(%rip) */
|
||||||
MOVB 0(AX)(SI*1), AX
|
MOVB 0(AX)(SI*1), AX
|
||||||
MOVL CX, SI
|
MOVL CX, SI
|
||||||
INCL CX
|
INCL CX
|
||||||
MOVB AX, 0(DI)(SI*1)
|
MOVB AX, 0(DI)(SI*1)
|
||||||
|
|
||||||
LBB4_14:
|
LBB4_14:
|
||||||
LONG $0x5f058d48; WORD $0x0092; BYTE $0x00 // leaq $37471(%rip), %rax /* _Digits(%rip) */
|
LONG $0xce058d48; WORD $0x0092; BYTE $0x00 // leaq $37582(%rip), %rax /* _Digits(%rip) */
|
||||||
MOVB 0(R9)(AX*1), AX
|
MOVB 0(R9)(AX*1), AX
|
||||||
MOVL CX, SI
|
MOVL CX, SI
|
||||||
INCL CX
|
INCL CX
|
||||||
|
|
@ -1279,7 +1279,7 @@ LBB4_14:
|
||||||
LBB4_15:
|
LBB4_15:
|
||||||
MOVWLZX R9, AX
|
MOVWLZX R9, AX
|
||||||
ORQ $1, AX
|
ORQ $1, AX
|
||||||
LONG $0x45358d48; WORD $0x0092; BYTE $0x00 // leaq $37445(%rip), %rsi /* _Digits(%rip) */
|
LONG $0xb4358d48; WORD $0x0092; BYTE $0x00 // leaq $37556(%rip), %rsi /* _Digits(%rip) */
|
||||||
MOVB 0(AX)(SI*1), AX
|
MOVB 0(AX)(SI*1), AX
|
||||||
MOVL CX, DX
|
MOVL CX, DX
|
||||||
MOVB AX, 0(DX)(DI*1)
|
MOVB AX, 0(DX)(DI*1)
|
||||||
|
|
@ -1361,7 +1361,7 @@ LBB4_16:
|
||||||
MOVL $16, CX
|
MOVL $16, CX
|
||||||
SUBL AX, CX
|
SUBL AX, CX
|
||||||
SHLQ $4, AX
|
SHLQ $4, AX
|
||||||
LONG $0xba158d48; WORD $0x0091; BYTE $0x00 // leaq $37306(%rip), %rdx /* _VecShiftShuffles(%rip) */
|
LONG $0x29158d48; WORD $0x0092; BYTE $0x00 // leaq $37417(%rip), %rdx /* _VecShiftShuffles(%rip) */
|
||||||
LONG $0x0071e2c4; WORD $0x1004 // vpshufb (%rax,%rdx), %xmm1, %xmm0
|
LONG $0x0071e2c4; WORD $0x1004 // vpshufb (%rax,%rdx), %xmm1, %xmm0
|
||||||
LONG $0x077ffac5 // vmovdqu %xmm0, (%rdi)
|
LONG $0x077ffac5 // vmovdqu %xmm0, (%rdi)
|
||||||
MOVL CX, AX
|
MOVL CX, AX
|
||||||
|
|
@ -1387,7 +1387,7 @@ LBB4_20:
|
||||||
CMPL DX, $99
|
CMPL DX, $99
|
||||||
JA LBB4_22
|
JA LBB4_22
|
||||||
MOVL DX, AX
|
MOVL DX, AX
|
||||||
LONG $0x9d0d8d48; WORD $0x0090; BYTE $0x00 // leaq $37021(%rip), %rcx /* _Digits(%rip) */
|
LONG $0x0c0d8d48; WORD $0x0091; BYTE $0x00 // leaq $37132(%rip), %rcx /* _Digits(%rip) */
|
||||||
MOVB 0(CX)(AX*2), DX
|
MOVB 0(CX)(AX*2), DX
|
||||||
MOVB 1(CX)(AX*2), AX
|
MOVB 1(CX)(AX*2), AX
|
||||||
MOVB DX, 0(DI)
|
MOVB DX, 0(DI)
|
||||||
|
|
@ -1412,7 +1412,7 @@ LBB4_22:
|
||||||
WORD $0xc96b; BYTE $0x64 // imull $100, %ecx, %ecx
|
WORD $0xc96b; BYTE $0x64 // imull $100, %ecx, %ecx
|
||||||
SUBL CX, AX
|
SUBL CX, AX
|
||||||
MOVWLZX AX, AX
|
MOVWLZX AX, AX
|
||||||
LONG $0x4c0d8d48; WORD $0x0090; BYTE $0x00 // leaq $36940(%rip), %rcx /* _Digits(%rip) */
|
LONG $0xbb0d8d48; WORD $0x0090; BYTE $0x00 // leaq $37051(%rip), %rcx /* _Digits(%rip) */
|
||||||
MOVB 0(CX)(AX*2), DX
|
MOVB 0(CX)(AX*2), DX
|
||||||
MOVB 1(CX)(AX*2), AX
|
MOVB 1(CX)(AX*2), AX
|
||||||
MOVB DX, 1(DI)
|
MOVB DX, 1(DI)
|
||||||
|
|
@ -1424,7 +1424,7 @@ LBB4_24:
|
||||||
WORD $0xc86b; BYTE $0x64 // imull $100, %eax, %ecx
|
WORD $0xc86b; BYTE $0x64 // imull $100, %eax, %ecx
|
||||||
SUBL CX, DX
|
SUBL CX, DX
|
||||||
MOVWLZX AX, AX
|
MOVWLZX AX, AX
|
||||||
LONG $0x29058d4c; WORD $0x0090; BYTE $0x00 // leaq $36905(%rip), %r8 /* _Digits(%rip) */
|
LONG $0x98058d4c; WORD $0x0090; BYTE $0x00 // leaq $37016(%rip), %r8 /* _Digits(%rip) */
|
||||||
MOVB 0(R8)(AX*2), CX
|
MOVB 0(R8)(AX*2), CX
|
||||||
MOVB 1(R8)(AX*2), AX
|
MOVB 1(R8)(AX*2), AX
|
||||||
MOVB CX, 0(DI)
|
MOVB CX, 0(DI)
|
||||||
|
|
@ -1509,8 +1509,8 @@ _quote:
|
||||||
SUBQ $32, SP
|
SUBQ $32, SP
|
||||||
MOVQ DX, R10
|
MOVQ DX, R10
|
||||||
TESTB $1, R8
|
TESTB $1, R8
|
||||||
LONG $0x2b058d48; WORD $0x0090; BYTE $0x00 // leaq $36907(%rip), %rax /* __SingleQuoteTab(%rip) */
|
LONG $0x9a058d48; WORD $0x0090; BYTE $0x00 // leaq $37018(%rip), %rax /* __SingleQuoteTab(%rip) */
|
||||||
LONG $0x24158d48; WORD $0x00a0; BYTE $0x00 // leaq $40996(%rip), %rdx /* __DoubleQuoteTab(%rip) */
|
LONG $0x93158d48; WORD $0x00a0; BYTE $0x00 // leaq $41107(%rip), %rdx /* __DoubleQuoteTab(%rip) */
|
||||||
LONG $0xd0440f48 // cmoveq %rax, %rdx
|
LONG $0xd0440f48 // cmoveq %rax, %rdx
|
||||||
MOVQ R10, R8
|
MOVQ R10, R8
|
||||||
MOVQ DI, AX
|
MOVQ DI, AX
|
||||||
|
|
@ -1600,7 +1600,7 @@ LBB5_10:
|
||||||
TESTQ R10, R10
|
TESTQ R10, R10
|
||||||
MOVQ -48(BP), CX
|
MOVQ -48(BP), CX
|
||||||
MOVQ -56(BP), DI
|
MOVQ -56(BP), DI
|
||||||
LONG $0xd92d8d4c; WORD $0x008e; BYTE $0x00 // leaq $36569(%rip), %r13 /* __SingleQuoteTab(%rip) */
|
LONG $0x482d8d4c; WORD $0x008f; BYTE $0x00 // leaq $36680(%rip), %r13 /* __SingleQuoteTab(%rip) */
|
||||||
JLE LBB5_39
|
JLE LBB5_39
|
||||||
|
|
||||||
LBB5_35:
|
LBB5_35:
|
||||||
|
|
@ -1867,7 +1867,7 @@ _unquote:
|
||||||
MOVQ R8, -72(BP)
|
MOVQ R8, -72(BP)
|
||||||
MOVL R8, R10
|
MOVL R8, R10
|
||||||
ANDL $1, R10
|
ANDL $1, R10
|
||||||
LONG $0xfa058d4c; WORD $0x00ab; BYTE $0x00 // leaq $44026(%rip), %r8 /* __UnquoteTab(%rip) */
|
LONG $0x69058d4c; WORD $0x00ac; BYTE $0x00 // leaq $44137(%rip), %r8 /* __UnquoteTab(%rip) */
|
||||||
QUAD $0xffffffb2056ffac5 // vmovdqu $-78(%rip), %xmm0 /* LCPI6_0(%rip) */
|
QUAD $0xffffffb2056ffac5 // vmovdqu $-78(%rip), %xmm0 /* LCPI6_0(%rip) */
|
||||||
MOVQ DI, R9
|
MOVQ DI, R9
|
||||||
MOVQ SI, R13
|
MOVQ SI, R13
|
||||||
|
|
@ -2550,7 +2550,7 @@ _html_escape:
|
||||||
QUAD $0xffffff92156ffac5 // vmovdqu $-110(%rip), %xmm2 /* LCPI7_2(%rip) */
|
QUAD $0xffffff92156ffac5 // vmovdqu $-110(%rip), %xmm2 /* LCPI7_2(%rip) */
|
||||||
QUAD $0xffffff9a1d6ffac5 // vmovdqu $-102(%rip), %xmm3 /* LCPI7_3(%rip) */
|
QUAD $0xffffff9a1d6ffac5 // vmovdqu $-102(%rip), %xmm3 /* LCPI7_3(%rip) */
|
||||||
MOVQ $5764607797912141824, R14
|
MOVQ $5764607797912141824, R14
|
||||||
LONG $0x5e3d8d4c; WORD $0x00a4; BYTE $0x00 // leaq $42078(%rip), %r15 /* __HtmlQuoteTab(%rip) */
|
LONG $0xcd3d8d4c; WORD $0x00a4; BYTE $0x00 // leaq $42189(%rip), %r15 /* __HtmlQuoteTab(%rip) */
|
||||||
MOVQ $12884901889, DI
|
MOVQ $12884901889, DI
|
||||||
MOVQ -64(BP), AX
|
MOVQ -64(BP), AX
|
||||||
MOVQ -48(BP), R10
|
MOVQ -48(BP), R10
|
||||||
|
|
@ -2885,7 +2885,7 @@ LBB8_5:
|
||||||
SHLQ CX, DI
|
SHLQ CX, DI
|
||||||
MOVL AX, CX
|
MOVL AX, CX
|
||||||
SHLQ $4, CX
|
SHLQ $4, CX
|
||||||
LONG $0xe93d8d4c; WORD $0x0028; BYTE $0x00 // leaq $10473(%rip), %r15 /* _POW10_M128_TAB(%rip) */
|
LONG $0x583d8d4c; WORD $0x0029; BYTE $0x00 // leaq $10584(%rip), %r15 /* _POW10_M128_TAB(%rip) */
|
||||||
MOVQ DI, AX
|
MOVQ DI, AX
|
||||||
MULQ 8(CX)(R15*1)
|
MULQ 8(CX)(R15*1)
|
||||||
MOVQ AX, R11
|
MOVQ AX, R11
|
||||||
|
|
@ -3008,7 +3008,7 @@ LBB9_7:
|
||||||
NEGL BX
|
NEGL BX
|
||||||
MOVQ R12, DI
|
MOVQ R12, DI
|
||||||
MOVL BX, SI
|
MOVL BX, SI
|
||||||
LONG $0x002634e8; BYTE $0x00 // callq _right_shift
|
LONG $0x0026a3e8; BYTE $0x00 // callq _right_shift
|
||||||
|
|
||||||
LBB9_8:
|
LBB9_8:
|
||||||
ADDL R14, R15
|
ADDL R14, R15
|
||||||
|
|
@ -3021,7 +3021,7 @@ LBB9_9:
|
||||||
CMPL AX, $8
|
CMPL AX, $8
|
||||||
JG LBB9_11
|
JG LBB9_11
|
||||||
MOVL AX, AX
|
MOVL AX, AX
|
||||||
LONG $0xe50d8d48; WORD $0x0052; BYTE $0x00 // leaq $21221(%rip), %rcx /* _POW_TAB(%rip) */
|
LONG $0x540d8d48; WORD $0x0053; BYTE $0x00 // leaq $21332(%rip), %rcx /* _POW_TAB(%rip) */
|
||||||
MOVL 0(CX)(AX*4), R14
|
MOVL 0(CX)(AX*4), R14
|
||||||
|
|
||||||
LBB9_11:
|
LBB9_11:
|
||||||
|
|
@ -3039,7 +3039,7 @@ LBB9_11:
|
||||||
LBB9_15:
|
LBB9_15:
|
||||||
MOVQ R12, DI
|
MOVQ R12, DI
|
||||||
MOVL $60, SI
|
MOVL $60, SI
|
||||||
LONG $0x0025e2e8; BYTE $0x00 // callq _right_shift
|
LONG $0x002651e8; BYTE $0x00 // callq _right_shift
|
||||||
LEAL 60(BX), AX
|
LEAL 60(BX), AX
|
||||||
CMPL BX, $-120
|
CMPL BX, $-120
|
||||||
MOVL AX, BX
|
MOVL AX, BX
|
||||||
|
|
@ -3053,7 +3053,7 @@ LBB9_16:
|
||||||
LBB9_17:
|
LBB9_17:
|
||||||
MOVQ R12, DI
|
MOVQ R12, DI
|
||||||
MOVL $60, SI
|
MOVL $60, SI
|
||||||
LONG $0x002454e8; BYTE $0x00 // callq _left_shift
|
LONG $0x0024c3e8; BYTE $0x00 // callq _left_shift
|
||||||
LEAL -60(BX), SI
|
LEAL -60(BX), SI
|
||||||
CMPL BX, $120
|
CMPL BX, $120
|
||||||
MOVL SI, BX
|
MOVL SI, BX
|
||||||
|
|
@ -3065,12 +3065,12 @@ LBB9_18:
|
||||||
|
|
||||||
LBB9_19:
|
LBB9_19:
|
||||||
MOVQ R12, DI
|
MOVQ R12, DI
|
||||||
LONG $0x00243ee8; BYTE $0x00 // callq _left_shift
|
LONG $0x0024ade8; BYTE $0x00 // callq _left_shift
|
||||||
JMP LBB9_8
|
JMP LBB9_8
|
||||||
|
|
||||||
LBB9_20:
|
LBB9_20:
|
||||||
MOVQ R12, DI
|
MOVQ R12, DI
|
||||||
LONG $0x002431e8; BYTE $0x00 // callq _left_shift
|
LONG $0x0024a0e8; BYTE $0x00 // callq _left_shift
|
||||||
|
|
||||||
LBB9_21:
|
LBB9_21:
|
||||||
SUBL R14, R15
|
SUBL R14, R15
|
||||||
|
|
@ -3093,7 +3093,7 @@ LBB9_25:
|
||||||
LBB9_26:
|
LBB9_26:
|
||||||
NEGL AX
|
NEGL AX
|
||||||
WORD $0x9848 // cltq
|
WORD $0x9848 // cltq
|
||||||
LONG $0x3f0d8d48; WORD $0x0052; BYTE $0x00 // leaq $21055(%rip), %rcx /* _POW_TAB(%rip) */
|
LONG $0xae0d8d48; WORD $0x0052; BYTE $0x00 // leaq $21166(%rip), %rcx /* _POW_TAB(%rip) */
|
||||||
MOVL 0(CX)(AX*4), R14
|
MOVL 0(CX)(AX*4), R14
|
||||||
|
|
||||||
LBB9_27:
|
LBB9_27:
|
||||||
|
|
@ -3111,7 +3111,7 @@ LBB9_27:
|
||||||
LBB9_32:
|
LBB9_32:
|
||||||
MOVQ R12, DI
|
MOVQ R12, DI
|
||||||
MOVL $60, SI
|
MOVL $60, SI
|
||||||
LONG $0x0023cce8; BYTE $0x00 // callq _left_shift
|
LONG $0x00243be8; BYTE $0x00 // callq _left_shift
|
||||||
LEAL -60(BX), SI
|
LEAL -60(BX), SI
|
||||||
CMPL BX, $120
|
CMPL BX, $120
|
||||||
MOVL SI, BX
|
MOVL SI, BX
|
||||||
|
|
@ -3126,7 +3126,7 @@ LBB9_33:
|
||||||
LBB9_34:
|
LBB9_34:
|
||||||
MOVQ R12, DI
|
MOVQ R12, DI
|
||||||
MOVL $60, SI
|
MOVL $60, SI
|
||||||
LONG $0x002519e8; BYTE $0x00 // callq _right_shift
|
LONG $0x002588e8; BYTE $0x00 // callq _right_shift
|
||||||
LEAL 60(BX), AX
|
LEAL 60(BX), AX
|
||||||
CMPL BX, $-120
|
CMPL BX, $-120
|
||||||
MOVL AX, BX
|
MOVL AX, BX
|
||||||
|
|
@ -3136,7 +3136,7 @@ LBB9_35:
|
||||||
NEGL BX
|
NEGL BX
|
||||||
MOVQ R12, DI
|
MOVQ R12, DI
|
||||||
MOVL BX, SI
|
MOVL BX, SI
|
||||||
LONG $0x002503e8; BYTE $0x00 // callq _right_shift
|
LONG $0x002572e8; BYTE $0x00 // callq _right_shift
|
||||||
JMP LBB9_21
|
JMP LBB9_21
|
||||||
|
|
||||||
LBB9_36:
|
LBB9_36:
|
||||||
|
|
@ -3152,7 +3152,7 @@ LBB9_36:
|
||||||
LBB9_40:
|
LBB9_40:
|
||||||
MOVQ R12, DI
|
MOVQ R12, DI
|
||||||
MOVL $60, SI
|
MOVL $60, SI
|
||||||
LONG $0x0024cce8; BYTE $0x00 // callq _right_shift
|
LONG $0x00253be8; BYTE $0x00 // callq _right_shift
|
||||||
ADDL $60, R15
|
ADDL $60, R15
|
||||||
CMPL R15, $-120
|
CMPL R15, $-120
|
||||||
JL LBB9_40
|
JL LBB9_40
|
||||||
|
|
@ -3178,7 +3178,7 @@ LBB9_46:
|
||||||
NEGL R15
|
NEGL R15
|
||||||
MOVQ R12, DI
|
MOVQ R12, DI
|
||||||
MOVL R15, SI
|
MOVL R15, SI
|
||||||
LONG $0x002486e8; BYTE $0x00 // callq _right_shift
|
LONG $0x0024f5e8; BYTE $0x00 // callq _right_shift
|
||||||
MOVL $-1022, R14
|
MOVL $-1022, R14
|
||||||
|
|
||||||
LBB9_47:
|
LBB9_47:
|
||||||
|
|
@ -3186,7 +3186,7 @@ LBB9_47:
|
||||||
JE LBB9_49
|
JE LBB9_49
|
||||||
MOVQ R12, DI
|
MOVQ R12, DI
|
||||||
MOVL $53, SI
|
MOVL $53, SI
|
||||||
LONG $0x0022fce8; BYTE $0x00 // callq _left_shift
|
LONG $0x00236be8; BYTE $0x00 // callq _left_shift
|
||||||
|
|
||||||
LBB9_49:
|
LBB9_49:
|
||||||
MOVLQSX 20(R12), R8
|
MOVLQSX 20(R12), R8
|
||||||
|
|
@ -4787,7 +4787,7 @@ LBB15_71:
|
||||||
CMPL DI, $23
|
CMPL DI, $23
|
||||||
JL LBB15_81
|
JL LBB15_81
|
||||||
MOVLQSX DI, AX
|
MOVLQSX DI, AX
|
||||||
LONG $0x5a0d8d48; WORD $0x00b4; BYTE $0x00 // leaq $46170(%rip), %rcx /* _P10_TAB(%rip) */
|
LONG $0xc90d8d48; WORD $0x00b4; BYTE $0x00 // leaq $46281(%rip), %rcx /* _P10_TAB(%rip) */
|
||||||
QUAD $0xffff50c18459fbc5; BYTE $0xff // vmulsd $-176(%rcx,%rax,8), %xmm0, %xmm0
|
QUAD $0xffff50c18459fbc5; BYTE $0xff // vmulsd $-176(%rcx,%rax,8), %xmm0, %xmm0
|
||||||
LONG $0x4511fbc5; BYTE $0xd0 // vmovsd %xmm0, $-48(%rbp)
|
LONG $0x4511fbc5; BYTE $0xd0 // vmovsd %xmm0, $-48(%rbp)
|
||||||
MOVL $22, AX
|
MOVL $22, AX
|
||||||
|
|
@ -4805,7 +4805,7 @@ LBB15_77:
|
||||||
JB LBB15_60
|
JB LBB15_60
|
||||||
NEGL DI
|
NEGL DI
|
||||||
MOVLQSX DI, AX
|
MOVLQSX DI, AX
|
||||||
LONG $0x180d8d48; WORD $0x00b4; BYTE $0x00 // leaq $46104(%rip), %rcx /* _P10_TAB(%rip) */
|
LONG $0x870d8d48; WORD $0x00b4; BYTE $0x00 // leaq $46215(%rip), %rcx /* _P10_TAB(%rip) */
|
||||||
LONG $0x045efbc5; BYTE $0xc1 // vdivsd (%rcx,%rax,8), %xmm0, %xmm0
|
LONG $0x045efbc5; BYTE $0xc1 // vdivsd (%rcx,%rax,8), %xmm0, %xmm0
|
||||||
JMP LBB15_65
|
JMP LBB15_65
|
||||||
|
|
||||||
|
|
@ -4837,7 +4837,7 @@ LBB15_82:
|
||||||
LONG $0xc82ef9c5 // vucomisd %xmm0, %xmm1
|
LONG $0xc82ef9c5 // vucomisd %xmm0, %xmm1
|
||||||
JA LBB15_60
|
JA LBB15_60
|
||||||
MOVL AX, AX
|
MOVL AX, AX
|
||||||
LONG $0x9f0d8d48; WORD $0x00b3; BYTE $0x00 // leaq $45983(%rip), %rcx /* _P10_TAB(%rip) */
|
LONG $0x0e0d8d48; WORD $0x00b4; BYTE $0x00 // leaq $46094(%rip), %rcx /* _P10_TAB(%rip) */
|
||||||
LONG $0x0459fbc5; BYTE $0xc1 // vmulsd (%rcx,%rax,8), %xmm0, %xmm0
|
LONG $0x0459fbc5; BYTE $0xc1 // vmulsd (%rcx,%rax,8), %xmm0, %xmm0
|
||||||
JMP LBB15_65
|
JMP LBB15_65
|
||||||
|
|
||||||
|
|
@ -5772,45 +5772,48 @@ _skip_number:
|
||||||
WORD $0x8948; BYTE $0xe5 // movq %rsp, %rbp
|
WORD $0x8948; BYTE $0xe5 // movq %rsp, %rbp
|
||||||
WORD $0x5741 // pushq %r15
|
WORD $0x5741 // pushq %r15
|
||||||
WORD $0x5641 // pushq %r14
|
WORD $0x5641 // pushq %r14
|
||||||
|
WORD $0x5541 // pushq %r13
|
||||||
WORD $0x5441 // pushq %r12
|
WORD $0x5441 // pushq %r12
|
||||||
BYTE $0x53 // pushq %rbx
|
BYTE $0x53 // pushq %rbx
|
||||||
TESTQ SI, SI
|
TESTQ SI, SI
|
||||||
JE LBB24_32
|
JE LBB24_34
|
||||||
CMPB 0(DI), $48
|
CMPB 0(DI), $48
|
||||||
JNE LBB24_5
|
JNE LBB24_5
|
||||||
MOVL $1, AX
|
MOVL $1, DX
|
||||||
CMPQ SI, $1
|
CMPQ SI, $1
|
||||||
JE LBB24_48
|
JE LBB24_52
|
||||||
MOVB 1(DI), CX
|
MOVB 1(DI), AX
|
||||||
ADDB $-46, CX
|
ADDB $-46, AX
|
||||||
CMPB CX, $55
|
CMPB AX, $55
|
||||||
JA LBB24_48
|
JA LBB24_52
|
||||||
MOVBLZX CX, CX
|
MOVBLZX AX, AX
|
||||||
MOVQ $36028797027352577, DX
|
MOVQ $36028797027352577, CX
|
||||||
BTQ CX, DX
|
BTQ AX, CX
|
||||||
JAE LBB24_48
|
JAE LBB24_52
|
||||||
|
|
||||||
LBB24_5:
|
LBB24_5:
|
||||||
CMPQ SI, $15
|
CMPQ SI, $16
|
||||||
JBE LBB24_52
|
JB LBB24_57
|
||||||
MOVQ SI, R11
|
LEAQ -16(SI), R11
|
||||||
ANDQ $-16, R11
|
MOVQ R11, AX
|
||||||
ADDQ DI, R11
|
ANDQ $-16, AX
|
||||||
MOVQ $-1, R10
|
LEAQ 16(AX)(DI*1), R10
|
||||||
QUAD $0xffffff1f056f7ac5 // vmovdqu $-225(%rip), %xmm8 /* LCPI24_0(%rip) */
|
ANDL $15, R11
|
||||||
QUAD $0xffffff270d6f7ac5 // vmovdqu $-217(%rip), %xmm9 /* LCPI24_1(%rip) */
|
|
||||||
QUAD $0xffffff2f156f7ac5 // vmovdqu $-209(%rip), %xmm10 /* LCPI24_2(%rip) */
|
|
||||||
QUAD $0xffffff371d6f7ac5 // vmovdqu $-201(%rip), %xmm11 /* LCPI24_3(%rip) */
|
|
||||||
QUAD $0xffffff3f256ffac5 // vmovdqu $-193(%rip), %xmm4 /* LCPI24_4(%rip) */
|
|
||||||
QUAD $0xffffff472d6ffac5 // vmovdqu $-185(%rip), %xmm5 /* LCPI24_5(%rip) */
|
|
||||||
QUAD $0xffffff4f356ffac5 // vmovdqu $-177(%rip), %xmm6 /* LCPI24_6(%rip) */
|
|
||||||
MOVL $4294967295, R14
|
|
||||||
MOVQ $-1, R8
|
|
||||||
MOVQ $-1, R9
|
MOVQ $-1, R9
|
||||||
MOVQ DI, DX
|
QUAD $0xffffff15056f7ac5 // vmovdqu $-235(%rip), %xmm8 /* LCPI24_0(%rip) */
|
||||||
|
QUAD $0xffffff1d0d6f7ac5 // vmovdqu $-227(%rip), %xmm9 /* LCPI24_1(%rip) */
|
||||||
|
QUAD $0xffffff25156f7ac5 // vmovdqu $-219(%rip), %xmm10 /* LCPI24_2(%rip) */
|
||||||
|
QUAD $0xffffff2d1d6f7ac5 // vmovdqu $-211(%rip), %xmm11 /* LCPI24_3(%rip) */
|
||||||
|
QUAD $0xffffff35256ffac5 // vmovdqu $-203(%rip), %xmm4 /* LCPI24_4(%rip) */
|
||||||
|
QUAD $0xffffff3d2d6ffac5 // vmovdqu $-195(%rip), %xmm5 /* LCPI24_5(%rip) */
|
||||||
|
QUAD $0xffffff45356ffac5 // vmovdqu $-187(%rip), %xmm6 /* LCPI24_6(%rip) */
|
||||||
|
MOVL $4294967295, R14
|
||||||
|
MOVQ $-1, AX
|
||||||
|
MOVQ $-1, R8
|
||||||
|
MOVQ DI, R15
|
||||||
|
|
||||||
LBB24_7:
|
LBB24_7:
|
||||||
LONG $0x3a6ffac5 // vmovdqu (%rdx), %xmm7
|
LONG $0x6f7ac1c4; BYTE $0x3f // vmovdqu (%r15), %xmm7
|
||||||
LONG $0x6441c1c4; BYTE $0xc0 // vpcmpgtb %xmm8, %xmm7, %xmm0
|
LONG $0x6441c1c4; BYTE $0xc0 // vpcmpgtb %xmm8, %xmm7, %xmm0
|
||||||
LONG $0xcf64b1c5 // vpcmpgtb %xmm7, %xmm9, %xmm1
|
LONG $0xcf64b1c5 // vpcmpgtb %xmm7, %xmm9, %xmm1
|
||||||
LONG $0xc1dbf9c5 // vpand %xmm1, %xmm0, %xmm0
|
LONG $0xc1dbf9c5 // vpand %xmm1, %xmm0, %xmm0
|
||||||
|
|
@ -5823,9 +5826,9 @@ LBB24_7:
|
||||||
LONG $0xdfebe9c5 // vpor %xmm7, %xmm2, %xmm3
|
LONG $0xdfebe9c5 // vpor %xmm7, %xmm2, %xmm3
|
||||||
LONG $0xc0ebf1c5 // vpor %xmm0, %xmm1, %xmm0
|
LONG $0xc0ebf1c5 // vpor %xmm0, %xmm1, %xmm0
|
||||||
LONG $0xc0ebe1c5 // vpor %xmm0, %xmm3, %xmm0
|
LONG $0xc0ebe1c5 // vpor %xmm0, %xmm3, %xmm0
|
||||||
LONG $0xc7d7f9c5 // vpmovmskb %xmm7, %eax
|
LONG $0xd7d7f9c5 // vpmovmskb %xmm7, %edx
|
||||||
LONG $0xe2d779c5 // vpmovmskb %xmm2, %r12d
|
LONG $0xead779c5 // vpmovmskb %xmm2, %r13d
|
||||||
LONG $0xf9d779c5 // vpmovmskb %xmm1, %r15d
|
LONG $0xe1d779c5 // vpmovmskb %xmm1, %r12d
|
||||||
LONG $0xc8d7f9c5 // vpmovmskb %xmm0, %ecx
|
LONG $0xc8d7f9c5 // vpmovmskb %xmm0, %ecx
|
||||||
XORQ R14, CX
|
XORQ R14, CX
|
||||||
BSFQ CX, CX
|
BSFQ CX, CX
|
||||||
|
|
@ -5834,242 +5837,277 @@ LBB24_7:
|
||||||
MOVL $-1, BX
|
MOVL $-1, BX
|
||||||
SHLL CX, BX
|
SHLL CX, BX
|
||||||
NOTL BX
|
NOTL BX
|
||||||
ANDL BX, AX
|
ANDL BX, DX
|
||||||
ANDL BX, R12
|
ANDL BX, R13
|
||||||
ANDL R15, BX
|
ANDL R12, BX
|
||||||
MOVL BX, R15
|
MOVL BX, R12
|
||||||
|
|
||||||
LBB24_9:
|
LBB24_9:
|
||||||
LEAL -1(AX), BX
|
LEAL -1(DX), BX
|
||||||
ANDL AX, BX
|
ANDL DX, BX
|
||||||
JNE LBB24_46
|
JNE LBB24_50
|
||||||
|
LEAL -1(R13), BX
|
||||||
|
ANDL R13, BX
|
||||||
|
JNE LBB24_50
|
||||||
LEAL -1(R12), BX
|
LEAL -1(R12), BX
|
||||||
ANDL R12, BX
|
ANDL R12, BX
|
||||||
JNE LBB24_46
|
JNE LBB24_50
|
||||||
LEAL -1(R15), BX
|
TESTL DX, DX
|
||||||
ANDL R15, BX
|
|
||||||
JNE LBB24_46
|
|
||||||
TESTL AX, AX
|
|
||||||
JE LBB24_15
|
JE LBB24_15
|
||||||
MOVQ DX, BX
|
MOVQ R15, BX
|
||||||
SUBQ DI, BX
|
SUBQ DI, BX
|
||||||
BSFL AX, AX
|
BSFL DX, DX
|
||||||
ADDQ BX, AX
|
ADDQ BX, DX
|
||||||
CMPQ R9, $-1
|
CMPQ R8, $-1
|
||||||
JNE LBB24_47
|
JNE LBB24_51
|
||||||
MOVQ AX, R9
|
MOVQ DX, R8
|
||||||
|
|
||||||
LBB24_15:
|
LBB24_15:
|
||||||
TESTL R12, R12
|
TESTL R13, R13
|
||||||
JE LBB24_18
|
JE LBB24_18
|
||||||
MOVQ DX, BX
|
MOVQ R15, BX
|
||||||
SUBQ DI, BX
|
SUBQ DI, BX
|
||||||
BSFL R12, AX
|
BSFL R13, DX
|
||||||
ADDQ BX, AX
|
ADDQ BX, DX
|
||||||
CMPQ R8, $-1
|
CMPQ AX, $-1
|
||||||
JNE LBB24_47
|
JNE LBB24_51
|
||||||
MOVQ AX, R8
|
MOVQ DX, AX
|
||||||
|
|
||||||
LBB24_18:
|
LBB24_18:
|
||||||
TESTL R15, R15
|
TESTL R12, R12
|
||||||
JE LBB24_21
|
JE LBB24_21
|
||||||
MOVQ DX, BX
|
MOVQ R15, BX
|
||||||
SUBQ DI, BX
|
SUBQ DI, BX
|
||||||
BSFL R15, AX
|
BSFL R12, DX
|
||||||
ADDQ BX, AX
|
ADDQ BX, DX
|
||||||
CMPQ R10, $-1
|
CMPQ R9, $-1
|
||||||
JNE LBB24_47
|
JNE LBB24_51
|
||||||
MOVQ AX, R10
|
MOVQ DX, R9
|
||||||
|
|
||||||
LBB24_21:
|
LBB24_21:
|
||||||
CMPL CX, $16
|
CMPL CX, $16
|
||||||
JNE LBB24_33
|
JNE LBB24_35
|
||||||
ADDQ $16, DX
|
ADDQ $16, R15
|
||||||
ADDQ $-16, SI
|
ADDQ $-16, SI
|
||||||
CMPQ SI, $15
|
CMPQ SI, $15
|
||||||
JA LBB24_7
|
JA LBB24_7
|
||||||
|
TESTQ R11, R11
|
||||||
LBB24_23:
|
JE LBB24_36
|
||||||
LONG $0x040d8d48; WORD $0x0001; BYTE $0x00 // leaq $260(%rip), %rcx /* LJTI24_0(%rip) */
|
|
||||||
|
|
||||||
LBB24_24:
|
LBB24_24:
|
||||||
MOVQ R11, DX
|
LEAQ 0(R10)(R11*1), CX
|
||||||
MOVBLSX 0(R11), AX
|
LONG $0x5b358d48; WORD $0x0001; BYTE $0x00 // leaq $347(%rip), %rsi /* LJTI24_0(%rip) */
|
||||||
ADDL $-43, AX
|
JMP LBB24_26
|
||||||
CMPL AX, $58
|
|
||||||
JA LBB24_34
|
LBB24_25:
|
||||||
LEAQ 1(DX), R11
|
MOVQ BX, R10
|
||||||
MOVLQSX 0(CX)(AX*4), AX
|
DECQ R11
|
||||||
ADDQ CX, AX
|
JE LBB24_54
|
||||||
JMP AX
|
|
||||||
|
|
||||||
LBB24_26:
|
LBB24_26:
|
||||||
MOVQ R11, AX
|
MOVBLSX 0(R10), DX
|
||||||
SUBQ DI, AX
|
ADDL $-43, DX
|
||||||
CMPQ R10, $-1
|
CMPL DX, $58
|
||||||
JNE LBB24_51
|
JA LBB24_36
|
||||||
DECQ AX
|
LEAQ 1(R10), BX
|
||||||
MOVQ AX, R10
|
MOVLQSX 0(SI)(DX*4), DX
|
||||||
JMP LBB24_24
|
ADDQ SI, DX
|
||||||
|
JMP DX
|
||||||
|
|
||||||
LBB24_28:
|
LBB24_28:
|
||||||
MOVQ R11, AX
|
MOVQ BX, DX
|
||||||
SUBQ DI, AX
|
SUBQ DI, DX
|
||||||
CMPQ R8, $-1
|
CMPQ R9, $-1
|
||||||
JNE LBB24_51
|
JNE LBB24_58
|
||||||
DECQ AX
|
DECQ DX
|
||||||
MOVQ AX, R8
|
MOVQ DX, R9
|
||||||
JMP LBB24_24
|
JMP LBB24_25
|
||||||
|
|
||||||
LBB24_30:
|
LBB24_30:
|
||||||
MOVQ R11, AX
|
MOVQ BX, DX
|
||||||
SUBQ DI, AX
|
SUBQ DI, DX
|
||||||
CMPQ R9, $-1
|
CMPQ AX, $-1
|
||||||
JNE LBB24_51
|
JNE LBB24_58
|
||||||
DECQ AX
|
DECQ DX
|
||||||
MOVQ AX, R9
|
MOVQ DX, AX
|
||||||
JMP LBB24_24
|
JMP LBB24_25
|
||||||
|
|
||||||
LBB24_32:
|
LBB24_32:
|
||||||
MOVQ $-1, AX
|
MOVQ BX, DX
|
||||||
JMP LBB24_48
|
SUBQ DI, DX
|
||||||
|
CMPQ R8, $-1
|
||||||
LBB24_33:
|
JNE LBB24_58
|
||||||
ADDQ CX, DX
|
DECQ DX
|
||||||
|
MOVQ DX, R8
|
||||||
|
JMP LBB24_25
|
||||||
|
|
||||||
LBB24_34:
|
LBB24_34:
|
||||||
MOVQ $-1, AX
|
MOVQ $-1, AX
|
||||||
TESTQ R10, R10
|
JMP LBB24_53
|
||||||
JE LBB24_48
|
|
||||||
|
LBB24_35:
|
||||||
|
ADDQ CX, R15
|
||||||
|
MOVQ R15, R10
|
||||||
|
|
||||||
|
LBB24_36:
|
||||||
|
MOVQ $-1, DX
|
||||||
|
TESTQ AX, AX
|
||||||
|
JE LBB24_52
|
||||||
|
|
||||||
|
LBB24_37:
|
||||||
TESTQ R9, R9
|
TESTQ R9, R9
|
||||||
JE LBB24_48
|
JE LBB24_52
|
||||||
TESTQ R10, R10
|
TESTQ R8, R8
|
||||||
JLE LBB24_39
|
JE LBB24_52
|
||||||
LEAQ -1(R10), AX
|
SUBQ DI, R10
|
||||||
CMPQ R8, AX
|
LEAQ -1(R10), CX
|
||||||
JE LBB24_39
|
CMPQ AX, CX
|
||||||
NOTQ R10
|
JE LBB24_45
|
||||||
MOVQ R10, AX
|
CMPQ R8, CX
|
||||||
JMP LBB24_48
|
JE LBB24_45
|
||||||
|
|
||||||
LBB24_39:
|
|
||||||
MOVQ R9, AX
|
|
||||||
ORQ R8, AX
|
|
||||||
CMPQ R9, R8
|
|
||||||
JL LBB24_42
|
|
||||||
TESTQ AX, AX
|
|
||||||
JS LBB24_42
|
|
||||||
NOTQ R9
|
|
||||||
MOVQ R9, AX
|
|
||||||
JMP LBB24_48
|
|
||||||
|
|
||||||
LBB24_42:
|
|
||||||
LEAQ -1(R8), CX
|
|
||||||
CMPQ R9, CX
|
CMPQ R9, CX
|
||||||
JNE LBB24_45
|
JE LBB24_45
|
||||||
TESTQ AX, AX
|
TESTQ R9, R9
|
||||||
JS LBB24_45
|
JLE LBB24_46
|
||||||
NOTQ R8
|
LEAQ -1(R9), CX
|
||||||
MOVQ R8, AX
|
CMPQ AX, CX
|
||||||
JMP LBB24_48
|
JE LBB24_46
|
||||||
|
NOTQ R9
|
||||||
|
MOVQ R9, DX
|
||||||
|
MOVQ R9, AX
|
||||||
|
JMP LBB24_53
|
||||||
|
|
||||||
LBB24_45:
|
LBB24_45:
|
||||||
SUBQ DI, DX
|
NEGQ R10
|
||||||
MOVQ DX, AX
|
MOVQ R10, DX
|
||||||
JMP LBB24_48
|
MOVQ R10, AX
|
||||||
|
JMP LBB24_53
|
||||||
|
|
||||||
LBB24_46:
|
LBB24_46:
|
||||||
SUBQ DI, DX
|
MOVQ R8, CX
|
||||||
BSFL BX, AX
|
ORQ AX, CX
|
||||||
ADDQ DX, AX
|
CMPQ R8, AX
|
||||||
|
JL LBB24_49
|
||||||
|
TESTQ CX, CX
|
||||||
|
JS LBB24_49
|
||||||
|
NOTQ R8
|
||||||
|
MOVQ R8, DX
|
||||||
|
MOVQ R8, AX
|
||||||
|
JMP LBB24_53
|
||||||
|
|
||||||
LBB24_47:
|
LBB24_49:
|
||||||
NOTQ AX
|
TESTQ CX, CX
|
||||||
|
LEAQ -1(AX), CX
|
||||||
|
NOTQ AX
|
||||||
|
LONG $0xc2480f49 // cmovsq %r10, %rax
|
||||||
|
CMPQ R8, CX
|
||||||
|
LONG $0xc2450f49 // cmovneq %r10, %rax
|
||||||
|
JMP LBB24_53
|
||||||
|
|
||||||
LBB24_48:
|
LBB24_50:
|
||||||
|
SUBQ DI, R15
|
||||||
|
BSFL BX, DX
|
||||||
|
ADDQ R15, DX
|
||||||
|
|
||||||
|
LBB24_51:
|
||||||
|
NOTQ DX
|
||||||
|
|
||||||
|
LBB24_52:
|
||||||
|
MOVQ DX, AX
|
||||||
|
|
||||||
|
LBB24_53:
|
||||||
BYTE $0x5b // popq %rbx
|
BYTE $0x5b // popq %rbx
|
||||||
WORD $0x5c41 // popq %r12
|
WORD $0x5c41 // popq %r12
|
||||||
|
WORD $0x5d41 // popq %r13
|
||||||
WORD $0x5e41 // popq %r14
|
WORD $0x5e41 // popq %r14
|
||||||
WORD $0x5f41 // popq %r15
|
WORD $0x5f41 // popq %r15
|
||||||
BYTE $0x5d // popq %rbp
|
BYTE $0x5d // popq %rbp
|
||||||
RET
|
RET
|
||||||
|
|
||||||
LBB24_51:
|
LBB24_54:
|
||||||
NEGQ AX
|
MOVQ CX, R10
|
||||||
JMP LBB24_48
|
MOVQ $-1, DX
|
||||||
|
TESTQ AX, AX
|
||||||
|
JNE LBB24_37
|
||||||
|
JMP LBB24_52
|
||||||
|
|
||||||
LBB24_52:
|
LBB24_58:
|
||||||
MOVQ $-1, R10
|
NEGQ DX
|
||||||
|
JMP LBB24_52
|
||||||
|
|
||||||
|
LBB24_57:
|
||||||
MOVQ $-1, R8
|
MOVQ $-1, R8
|
||||||
|
MOVQ DI, R10
|
||||||
|
MOVQ SI, R11
|
||||||
|
MOVQ $-1, AX
|
||||||
MOVQ $-1, R9
|
MOVQ $-1, R9
|
||||||
MOVQ DI, R11
|
JMP LBB24_24
|
||||||
JMP LBB24_23
|
|
||||||
|
|
||||||
// .set L24_0_set_26, LBB24_26-LJTI24_0
|
|
||||||
// .set L24_0_set_34, LBB24_34-LJTI24_0
|
|
||||||
// .set L24_0_set_30, LBB24_30-LJTI24_0
|
|
||||||
// .set L24_0_set_24, LBB24_24-LJTI24_0
|
|
||||||
// .set L24_0_set_28, LBB24_28-LJTI24_0
|
// .set L24_0_set_28, LBB24_28-LJTI24_0
|
||||||
|
// .set L24_0_set_36, LBB24_36-LJTI24_0
|
||||||
|
// .set L24_0_set_32, LBB24_32-LJTI24_0
|
||||||
|
// .set L24_0_set_25, LBB24_25-LJTI24_0
|
||||||
|
// .set L24_0_set_30, LBB24_30-LJTI24_0
|
||||||
LJTI24_0:
|
LJTI24_0:
|
||||||
LONG $0xffffff18 // .long L24_0_set_26
|
LONG $0xfffffecc // .long L24_0_set_28
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff18 // .long L24_0_set_26
|
LONG $0xfffffecc // .long L24_0_set_28
|
||||||
LONG $0xffffff48 // .long L24_0_set_30
|
LONG $0xfffffefc // .long L24_0_set_32
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xfffffefc // .long L24_0_set_24
|
LONG $0xfffffea7 // .long L24_0_set_25
|
||||||
LONG $0xfffffefc // .long L24_0_set_24
|
LONG $0xfffffea7 // .long L24_0_set_25
|
||||||
LONG $0xfffffefc // .long L24_0_set_24
|
LONG $0xfffffea7 // .long L24_0_set_25
|
||||||
LONG $0xfffffefc // .long L24_0_set_24
|
LONG $0xfffffea7 // .long L24_0_set_25
|
||||||
LONG $0xfffffefc // .long L24_0_set_24
|
LONG $0xfffffea7 // .long L24_0_set_25
|
||||||
LONG $0xfffffefc // .long L24_0_set_24
|
LONG $0xfffffea7 // .long L24_0_set_25
|
||||||
LONG $0xfffffefc // .long L24_0_set_24
|
LONG $0xfffffea7 // .long L24_0_set_25
|
||||||
LONG $0xfffffefc // .long L24_0_set_24
|
LONG $0xfffffea7 // .long L24_0_set_25
|
||||||
LONG $0xfffffefc // .long L24_0_set_24
|
LONG $0xfffffea7 // .long L24_0_set_25
|
||||||
LONG $0xfffffefc // .long L24_0_set_24
|
LONG $0xfffffea7 // .long L24_0_set_25
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff30 // .long L24_0_set_28
|
LONG $0xfffffee4 // .long L24_0_set_30
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff6c // .long L24_0_set_34
|
LONG $0xffffff26 // .long L24_0_set_36
|
||||||
LONG $0xffffff30 // .long L24_0_set_28
|
LONG $0xfffffee4 // .long L24_0_set_30
|
||||||
|
|
||||||
_skip_positive:
|
_skip_positive:
|
||||||
BYTE $0x55 // pushq %rbp
|
BYTE $0x55 // pushq %rbp
|
||||||
|
|
@ -6086,7 +6124,7 @@ _skip_positive:
|
||||||
MOVQ 8(DI), SI
|
MOVQ 8(DI), SI
|
||||||
SUBQ BX, SI
|
SUBQ BX, SI
|
||||||
MOVQ AX, DI
|
MOVQ AX, DI
|
||||||
LONG $0xfffc27e8; BYTE $0xff // callq _skip_number
|
LONG $0xfffbb8e8; BYTE $0xff // callq _skip_number
|
||||||
MOVQ $-2, CX
|
MOVQ $-2, CX
|
||||||
MOVQ $-2, DX
|
MOVQ $-2, DX
|
||||||
SUBQ AX, DX
|
SUBQ AX, DX
|
||||||
|
|
@ -10798,7 +10836,7 @@ TEXT ·__skip_array(SB), NOSPLIT | NOFRAME, $0 - 32
|
||||||
|
|
||||||
_entry:
|
_entry:
|
||||||
MOVQ (TLS), R14
|
MOVQ (TLS), R14
|
||||||
LEAQ -136(SP), R12
|
LEAQ -144(SP), R12
|
||||||
CMPQ R12, 16(R14)
|
CMPQ R12, 16(R14)
|
||||||
JBE _stack_grow
|
JBE _stack_grow
|
||||||
|
|
||||||
|
|
@ -10819,7 +10857,7 @@ TEXT ·__skip_object(SB), NOSPLIT | NOFRAME, $0 - 32
|
||||||
|
|
||||||
_entry:
|
_entry:
|
||||||
MOVQ (TLS), R14
|
MOVQ (TLS), R14
|
||||||
LEAQ -136(SP), R12
|
LEAQ -144(SP), R12
|
||||||
CMPQ R12, 16(R14)
|
CMPQ R12, 16(R14)
|
||||||
JBE _stack_grow
|
JBE _stack_grow
|
||||||
|
|
||||||
|
|
@ -10840,7 +10878,7 @@ TEXT ·__skip_one(SB), NOSPLIT | NOFRAME, $0 - 32
|
||||||
|
|
||||||
_entry:
|
_entry:
|
||||||
MOVQ (TLS), R14
|
MOVQ (TLS), R14
|
||||||
LEAQ -136(SP), R12
|
LEAQ -144(SP), R12
|
||||||
CMPQ R12, 16(R14)
|
CMPQ R12, 16(R14)
|
||||||
JBE _stack_grow
|
JBE _stack_grow
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -495,6 +495,18 @@ func TestNative_SkipOne(t *testing.T) {
|
||||||
assert.Equal(t, 41, q)
|
assert.Equal(t, 41, q)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNative_SkipOne_Error(t *testing.T) {
|
||||||
|
for _, s := range([]string{
|
||||||
|
"-", "+", "0.", "0. ", "+1", "0.0e ", "9e+", "0e-",
|
||||||
|
"tru", "fals", "nul", "trux", "fals ",
|
||||||
|
`"asdf`, `"\\\"`,
|
||||||
|
}) {
|
||||||
|
p := 0
|
||||||
|
q := __skip_one(&s, &p, &types.StateMachine{})
|
||||||
|
assert.True(t, q < 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestNative_SkipArray(t *testing.T) {
|
func TestNative_SkipArray(t *testing.T) {
|
||||||
p := 0
|
p := 0
|
||||||
s := `null, true, false, 1, 2.0, -3, {"asdf": "wqer"}],`
|
s := `null, true, false, 1, 2.0, -3, {"asdf": "wqer"}],`
|
||||||
|
|
|
||||||
|
|
@ -34,9 +34,9 @@ const (
|
||||||
_stack__lspace = 8
|
_stack__lspace = 8
|
||||||
_stack__lzero = 8
|
_stack__lzero = 8
|
||||||
_stack__quote = 80
|
_stack__quote = 80
|
||||||
_stack__skip_array = 136
|
_stack__skip_array = 144
|
||||||
_stack__skip_object = 136
|
_stack__skip_object = 144
|
||||||
_stack__skip_one = 136
|
_stack__skip_one = 144
|
||||||
_stack__u64toa = 8
|
_stack__u64toa = 8
|
||||||
_stack__unquote = 88
|
_stack__unquote = 88
|
||||||
_stack__value = 400
|
_stack__value = 400
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -495,6 +495,18 @@ func TestNative_SkipOne(t *testing.T) {
|
||||||
assert.Equal(t, 41, q)
|
assert.Equal(t, 41, q)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNative_SkipOne_Error(t *testing.T) {
|
||||||
|
for _, s := range([]string{
|
||||||
|
"-", "+", "0.", "0. ", "+1", "0.0e ", "9e+", "0e-",
|
||||||
|
"tru", "fals", "nul", "trux", "fals ",
|
||||||
|
`"asdf`, `"\\\"`,
|
||||||
|
}) {
|
||||||
|
p := 0
|
||||||
|
q := __skip_one(&s, &p, &types.StateMachine{})
|
||||||
|
assert.True(t, q < 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestNative_SkipArray(t *testing.T) {
|
func TestNative_SkipArray(t *testing.T) {
|
||||||
p := 0
|
p := 0
|
||||||
s := `null, true, false, 1, 2.0, -3, {"asdf": "wqer"}],`
|
s := `null, true, false, 1, 2.0, -3, {"asdf": "wqer"}],`
|
||||||
|
|
|
||||||
|
|
@ -34,9 +34,9 @@ const (
|
||||||
_stack__lspace = 8
|
_stack__lspace = 8
|
||||||
_stack__lzero = 8
|
_stack__lzero = 8
|
||||||
_stack__quote = 64
|
_stack__quote = 64
|
||||||
_stack__skip_array = 128
|
_stack__skip_array = 136
|
||||||
_stack__skip_object = 128
|
_stack__skip_object = 136
|
||||||
_stack__skip_one = 128
|
_stack__skip_one = 136
|
||||||
_stack__u64toa = 8
|
_stack__u64toa = 8
|
||||||
_stack__unquote = 72
|
_stack__unquote = 72
|
||||||
_stack__value = 392
|
_stack__value = 392
|
||||||
|
|
|
||||||
|
|
@ -493,6 +493,18 @@ func TestNative_SkipOne(t *testing.T) {
|
||||||
assert.Equal(t, 41, q)
|
assert.Equal(t, 41, q)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNative_SkipOne_Error(t *testing.T) {
|
||||||
|
for _, s := range([]string{
|
||||||
|
"-", "+", "0.", "0. ", "+1", "0.0e ", "9e+", "0e-",
|
||||||
|
"tru", "fals", "nul", "trux", "fals ",
|
||||||
|
`"asdf`, `"\\\"`,
|
||||||
|
}) {
|
||||||
|
p := 0
|
||||||
|
q := __skip_one(&s, &p, &types.StateMachine{})
|
||||||
|
assert.True(t, q < 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestNative_SkipArray(t *testing.T) {
|
func TestNative_SkipArray(t *testing.T) {
|
||||||
p := 0
|
p := 0
|
||||||
s := `null, true, false, 1, 2.0, -3, {"asdf": "wqer"}],`
|
s := `null, true, false, 1, 2.0, -3, {"asdf": "wqer"}],`
|
||||||
|
|
|
||||||
|
|
@ -1019,7 +1019,7 @@ static inline long skip_number(const char *sp, size_t nb) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* remaining bytes, do with scalar code */
|
/* remaining bytes, do with scalar code */
|
||||||
while (likely(--nb >= 0)) {
|
while (likely(nb-- > 0)) {
|
||||||
switch (*sp++) {
|
switch (*sp++) {
|
||||||
case '0' : /* fallthrough */
|
case '0' : /* fallthrough */
|
||||||
case '1' : /* fallthrough */
|
case '1' : /* fallthrough */
|
||||||
|
|
@ -1039,10 +1039,11 @@ static inline long skip_number(const char *sp, size_t nb) {
|
||||||
default : sp--; goto check_index;
|
default : sp--; goto check_index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
check_index:
|
check_index:
|
||||||
if (di == 0 || si == 0) {
|
if (di == 0 || si == 0 || ei == 0) {
|
||||||
return -1;
|
return -1;
|
||||||
|
} else if (di == sp - ss - 1|| si == sp - ss - 1 || ei == sp - ss - 1) {
|
||||||
|
return -(sp - ss);
|
||||||
} else if (si > 0 && ei != si - 1) {
|
} else if (si > 0 && ei != si - 1) {
|
||||||
return -si - 1;
|
return -si - 1;
|
||||||
} else if (di >= 0 && ei >= 0 && di > ei - 1) {
|
} else if (di >= 0 && ei >= 0 && di > ei - 1) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue