diff --git a/api.go b/api.go index a2bc67e..a042476 100644 --- a/api.go +++ b/api.go @@ -169,9 +169,10 @@ func UnmarshalString(buf string, val interface{}) error { // and returns its representing ast.Node. // // Each path arg must be integer or string: -// - Integer means searching current node as array -// - String means searching current node as object +// - Integer is target index(>=0), means searching current node as array. +// - String is target key, means searching current node as object. // +// // Note, the api expects the json is well-formed at least, // otherwise it may return unexpected result. func Get(src []byte, path ...interface{}) (ast.Node, error) { diff --git a/ast/search_test.go b/ast/search_test.go index ba6f481..1cff73f 100644 --- a/ast/search_test.go +++ b/ast/search_test.go @@ -54,7 +54,7 @@ func TestGC_Search(t *testing.T) { wg.Wait() } -func TestExportError(t *testing.T) { +func TestExportErrorInvalidChar(t *testing.T) { data := `{"a":]` p := NewSearcher(data) _, err := p.GetByPath("a") @@ -85,27 +85,76 @@ func TestExportError(t *testing.T) { t.Fatal(err) } - data = `{"a":null}` + data = `{` p = NewSearcher(data) - _, err = p.GetByPath("b") + _, err = p.GetByPath("he") if err == nil { t.Fatal() } - if err != ErrNotExist { + if err == ErrNotExist { t.Fatal(err) } - data = `[1,2,3]` + data = `[` p = NewSearcher(data) - _, err = p.GetByPath(4) + _, err = p.GetByPath(0) if err == nil { t.Fatal() } - if err != ErrNotExist { + if err == ErrNotExist { t.Fatal(err) } } +type testExportError struct { + data string + path []interface{} + err error +} + +func TestExportErrNotExist(t *testing.T) { + tests := []testExportError{ + // object + {`{}`, []interface{}{"b"}, ErrNotExist}, + {` { } `, []interface{}{"b"}, ErrNotExist}, + {`{"a":null}`, []interface{}{"b"}, ErrNotExist}, + // This should be invalid char errors. + // {`{"a":null}`, []interface{}{"a", "b"}, ErrNotExist}, + // {`{"a":null}`, []interface{}{"a", 0}, ErrNotExist}, + // {`{"a":null}`, []interface{}{"a", "b", 0}, ErrNotExist}, + {`{"":{"b":123}}`, []interface{}{"b"}, ErrNotExist}, + {`{"a":{"b":123}}`, []interface{}{"b"}, ErrNotExist}, + {`{"a":{"b":123}}`, []interface{}{"a", "c"}, ErrNotExist}, + {`{"a":{"c": null, "b":{}}}`, []interface{}{"a", "b", "c"}, ErrNotExist}, + {`{"a":{"b":123}}`, []interface{}{"b", "b"}, ErrNotExist}, + {`{"\"\\":{"b":123}}`, []interface{}{"\"", "b"}, ErrNotExist}, + {`{"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"\\":{"b":123}}`, + []interface{}{"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"", "b"}, ErrNotExist}, + + // array + {`[]`, []interface{}{0}, ErrNotExist}, + {`[]`, []interface{}{1}, ErrNotExist}, + {` [ ] `, []interface{}{0}, ErrNotExist}, + {`[null]`, []interface{}{1}, ErrNotExist}, + {`[null, ["null", 123]]`, []interface{}{2}, ErrNotExist}, + {`[null, true , false, 14, 2.35, -46, "hello7", "\"8"]`, []interface{}{8}, ErrNotExist}, + {`[{}]`, []interface{}{1}, ErrNotExist}, + {`[[]]`, []interface{}{1}, ErrNotExist}, + {`[[],[{},{}, []],{}]`, []interface{}{3}, ErrNotExist}, + } + + for _, test := range tests { + f := func(t *testing.T) { + p := NewSearcher(test.data) + node, err := p.GetByPath(test.path...) + if err != test.err || node.Exists(){ + t.Fatal(err) + } + } + t.Run(test.data, f) + } +} + func TestSearcher_GetByPath(t *testing.T) { s := NewSearcher(` { "xx" : [] ,"yy" :{ }, "test" : [ true , 0.1 , "abc", ["h"], {"a":"bc"} ] } `) @@ -163,7 +212,6 @@ func TestSearcher_GetByPathSingle(t *testing.T) { {`[1,2,3]`, Path{0}, 1.0, Ok}, {`[1,2,3]`, Path{1}, 2.0, Ok}, {`[1,2,3]`, Path{2}, 3.0, Ok}, - {`[1,2,3]`, Path{2}, 3.0, Ok}, {`tru`, Path{}, nil, Error}, {`fal`, Path{}, nil, Error}, diff --git a/internal/native/avx/native_amd64.s b/internal/native/avx/native_amd64.s index 4eb3411..cd2a291 100644 --- a/internal/native/avx/native_amd64.s +++ b/internal/native/avx/native_amd64.s @@ -196,7 +196,7 @@ LBB1_6: LONG $0x000124b8; BYTE $0x00 // movl $292, %eax WORD $0x2944; BYTE $0xc8 // subl %r9d, %eax LONG $0x04e0c148 // shlq $4, %rax - LONG $0xda158d48; WORD $0x00af; BYTE $0x00 // leaq $45018(%rip), %rdx /* _pow10_ceil_sig.g(%rip) */ + LONG $0xfa158d48; WORD $0x00af; BYTE $0x00 // leaq $45050(%rip), %rdx /* _pow10_ceil_sig.g(%rip) */ LONG $0x101c8b4c // movq (%rax,%rdx), %r11 LONG $0x106c8b4c; BYTE $0x08 // movq $8(%rax,%rdx), %r13 WORD $0xc1fe // incb %cl @@ -378,7 +378,7 @@ LBB1_51: LONG $0x009d820f; WORD $0x0000 // jb LBB1_64, $157(%rip) LONG $0x01678d4d // leaq $1(%r15), %r12 WORD $0x894c; BYTE $0xe6 // movq %r12, %rsi - LONG $0x00776fe8; BYTE $0x00 // callq _format_significand, $30575(%rip) + LONG $0x00778fe8; BYTE $0x00 // callq _format_significand, $30607(%rip) WORD $0x8948; BYTE $0xc3 // movq %rax, %rbx QUAD $0x9090909090909090; LONG $0x90909090 // .p2align 4, 0x90 @@ -413,7 +413,7 @@ LBB1_60: WORD $0x0c8d; BYTE $0x12 // leal (%rdx,%rdx), %ecx WORD $0x0c8d; BYTE $0x89 // leal (%rcx,%rcx,4), %ecx WORD $0xc829 // subl %ecx, %eax - LONG $0xb40d8d48; WORD $0x00ab; BYTE $0x00 // leaq $43956(%rip), %rcx /* _Digits(%rip) */ + LONG $0xd40d8d48; WORD $0x00ab; BYTE $0x00 // leaq $43988(%rip), %rcx /* _Digits(%rip) */ LONG $0x510cb70f // movzwl (%rcx,%rdx,2), %ecx LONG $0x024b8966 // movw %cx, $2(%rbx) WORD $0x300c // orb $48, %al @@ -495,7 +495,7 @@ LBB1_61: WORD $0xf883; BYTE $0x0a // cmpl $10, %eax LONG $0x00878c0f; WORD $0x0000 // jl LBB1_63, $135(%rip) WORD $0xc089 // movl %eax, %eax - LONG $0x6a0d8d48; WORD $0x00aa; BYTE $0x00 // leaq $43626(%rip), %rcx /* _Digits(%rip) */ + LONG $0x8a0d8d48; WORD $0x00aa; BYTE $0x00 // leaq $43658(%rip), %rcx /* _Digits(%rip) */ LONG $0x4104b70f // movzwl (%rcx,%rax,2), %eax LONG $0x02438966 // movw %ax, $2(%rbx) LONG $0x04c38348 // addq $4, %rbx @@ -689,7 +689,7 @@ LBB1_77: LBB1_78: WORD $0x894c; BYTE $0xfe // movq %r15, %rsi WORD $0xf8c5; BYTE $0x77 // vzeroupper - LONG $0x007266e8; BYTE $0x00 // callq _format_significand, $29286(%rip) + LONG $0x007286e8; BYTE $0x00 // callq _format_significand, $29318(%rip) LONG $0x90909090; WORD $0x9090 // .p2align 4, 0x90 LBB1_79: @@ -916,7 +916,7 @@ LBB2_2: WORD $0xcf6b; BYTE $0x64 // imull $100, %edi, %ecx WORD $0xc829 // subl %ecx, %eax LONG $0xd8b70f44 // movzwl %ax, %r11d - LONG $0x100d8d48; WORD $0x00a4; BYTE $0x00 // leaq $42000(%rip), %rcx /* _Digits(%rip) */ + LONG $0x300d8d48; WORD $0x00a4; BYTE $0x00 // leaq $42032(%rip), %rcx /* _Digits(%rip) */ LONG $0x04b70f42; BYTE $0x51 // movzwl (%rcx,%r10,2), %eax LONG $0x40894166; BYTE $0xfe // movw %ax, $-2(%r8) LONG $0x04b70f42; BYTE $0x49 // movzwl (%rcx,%r9,2), %eax @@ -932,7 +932,7 @@ LBB2_2: LBB2_5: LONG $0x1759b941; WORD $0xd1b7 // movl $3518437209, %r9d - LONG $0xc9158d4c; WORD $0x00a3; BYTE $0x00 // leaq $41929(%rip), %r10 /* _Digits(%rip) */ + LONG $0xe9158d4c; WORD $0x00a3; BYTE $0x00 // leaq $41961(%rip), %r10 /* _Digits(%rip) */ QUAD $0x9090909090909090; BYTE $0x90 // .p2align 4, 0x90 LBB2_6: @@ -964,7 +964,7 @@ LBB2_7: WORD $0xc86b; BYTE $0x64 // imull $100, %eax, %ecx WORD $0xca29 // subl %ecx, %edx WORD $0xb70f; BYTE $0xca // movzwl %dx, %ecx - LONG $0x51158d48; WORD $0x00a3; BYTE $0x00 // leaq $41809(%rip), %rdx /* _Digits(%rip) */ + LONG $0x71158d48; WORD $0x00a3; BYTE $0x00 // leaq $41841(%rip), %rdx /* _Digits(%rip) */ LONG $0x4a0cb70f // movzwl (%rdx,%rcx,2), %ecx LONG $0x4b894166; BYTE $0xfe // movw %cx, $-2(%r11) LONG $0xfec38349 // addq $-2, %r11 @@ -974,7 +974,7 @@ LBB2_9: WORD $0xfa83; BYTE $0x0a // cmpl $10, %edx LONG $0x0018820f; WORD $0x0000 // jb LBB2_11, $24(%rip) WORD $0xd089 // movl %edx, %eax - LONG $0x300d8d48; WORD $0x00a3; BYTE $0x00 // leaq $41776(%rip), %rcx /* _Digits(%rip) */ + LONG $0x500d8d48; WORD $0x00a3; BYTE $0x00 // leaq $41808(%rip), %rcx /* _Digits(%rip) */ LONG $0x4104b70f // movzwl (%rcx,%rax,2), %eax LONG $0x43894166; BYTE $0xfe // movw %ax, $-2(%r11) WORD $0x894c; BYTE $0xc0 // movq %r8, %rax @@ -1050,7 +1050,7 @@ _u64toa: WORD $0x0148; BYTE $0xc0 // addq %rax, %rax LONG $0x03e8fe81; WORD $0x0000 // cmpl $1000, %esi LONG $0x0016820f; WORD $0x0000 // jb LBB4_3, $22(%rip) - LONG $0x5c0d8d48; WORD $0x00a2; BYTE $0x00 // leaq $41564(%rip), %rcx /* _Digits(%rip) */ + LONG $0x7c0d8d48; WORD $0x00a2; BYTE $0x00 // leaq $41596(%rip), %rcx /* _Digits(%rip) */ WORD $0x0c8a; BYTE $0x0a // movb (%rdx,%rcx), %cl WORD $0x0f88 // movb %cl, (%rdi) LONG $0x000001b9; BYTE $0x00 // movl $1, %ecx @@ -1064,14 +1064,14 @@ LBB4_3: LBB4_4: WORD $0xb70f; BYTE $0xd2 // movzwl %dx, %edx LONG $0x01ca8348 // orq $1, %rdx - LONG $0x34358d48; WORD $0x00a2; BYTE $0x00 // leaq $41524(%rip), %rsi /* _Digits(%rip) */ + LONG $0x54358d48; WORD $0x00a2; BYTE $0x00 // leaq $41556(%rip), %rsi /* _Digits(%rip) */ WORD $0x148a; BYTE $0x32 // movb (%rdx,%rsi), %dl WORD $0xce89 // movl %ecx, %esi WORD $0xc1ff // incl %ecx WORD $0x1488; BYTE $0x37 // movb %dl, (%rdi,%rsi) LBB4_6: - LONG $0x23158d48; WORD $0x00a2; BYTE $0x00 // leaq $41507(%rip), %rdx /* _Digits(%rip) */ + LONG $0x43158d48; WORD $0x00a2; BYTE $0x00 // leaq $41539(%rip), %rdx /* _Digits(%rip) */ WORD $0x148a; BYTE $0x10 // movb (%rax,%rdx), %dl WORD $0xce89 // movl %ecx, %esi WORD $0xc1ff // incl %ecx @@ -1080,7 +1080,7 @@ LBB4_6: LBB4_7: WORD $0xb70f; BYTE $0xc0 // movzwl %ax, %eax LONG $0x01c88348 // orq $1, %rax - LONG $0x0b158d48; WORD $0x00a2; BYTE $0x00 // leaq $41483(%rip), %rdx /* _Digits(%rip) */ + LONG $0x2b158d48; WORD $0x00a2; BYTE $0x00 // leaq $41515(%rip), %rdx /* _Digits(%rip) */ WORD $0x048a; BYTE $0x10 // movb (%rax,%rdx), %al WORD $0xca89 // movl %ecx, %edx WORD $0xc1ff // incl %ecx @@ -1127,7 +1127,7 @@ LBB4_8: WORD $0x014d; BYTE $0xdb // addq %r11, %r11 LONG $0x9680fe81; WORD $0x0098 // cmpl $10000000, %esi LONG $0x0017820f; WORD $0x0000 // jb LBB4_11, $23(%rip) - LONG $0x69058d48; WORD $0x00a1; BYTE $0x00 // leaq $41321(%rip), %rax /* _Digits(%rip) */ + LONG $0x89058d48; WORD $0x00a1; BYTE $0x00 // leaq $41353(%rip), %rax /* _Digits(%rip) */ LONG $0x02048a41 // movb (%r10,%rax), %al WORD $0x0788 // movb %al, (%rdi) LONG $0x000001b9; BYTE $0x00 // movl $1, %ecx @@ -1141,14 +1141,14 @@ LBB4_11: LBB4_12: WORD $0x8944; BYTE $0xd0 // movl %r10d, %eax LONG $0x01c88348 // orq $1, %rax - LONG $0x3d358d48; WORD $0x00a1; BYTE $0x00 // leaq $41277(%rip), %rsi /* _Digits(%rip) */ + LONG $0x5d358d48; WORD $0x00a1; BYTE $0x00 // leaq $41309(%rip), %rsi /* _Digits(%rip) */ WORD $0x048a; BYTE $0x30 // movb (%rax,%rsi), %al WORD $0xce89 // movl %ecx, %esi WORD $0xc1ff // incl %ecx WORD $0x0488; BYTE $0x37 // movb %al, (%rdi,%rsi) LBB4_14: - LONG $0x2c058d48; WORD $0x00a1; BYTE $0x00 // leaq $41260(%rip), %rax /* _Digits(%rip) */ + LONG $0x4c058d48; WORD $0x00a1; BYTE $0x00 // leaq $41292(%rip), %rax /* _Digits(%rip) */ LONG $0x01048a41 // movb (%r9,%rax), %al WORD $0xce89 // movl %ecx, %esi WORD $0xc1ff // incl %ecx @@ -1157,7 +1157,7 @@ LBB4_14: LBB4_15: LONG $0xc1b70f41 // movzwl %r9w, %eax LONG $0x01c88348 // orq $1, %rax - LONG $0x12358d48; WORD $0x00a1; BYTE $0x00 // leaq $41234(%rip), %rsi /* _Digits(%rip) */ + LONG $0x32358d48; WORD $0x00a1; BYTE $0x00 // leaq $41266(%rip), %rsi /* _Digits(%rip) */ WORD $0x048a; BYTE $0x30 // movb (%rax,%rsi), %al WORD $0xca89 // movl %ecx, %edx WORD $0x0488; BYTE $0x17 // movb %al, (%rdi,%rdx) @@ -1239,7 +1239,7 @@ LBB4_16: LONG $0x000010b9; BYTE $0x00 // movl $16, %ecx WORD $0xc129 // subl %eax, %ecx LONG $0x04e0c148 // shlq $4, %rax - LONG $0x18158d48; WORD $0x00c7; BYTE $0x00 // leaq $50968(%rip), %rdx /* _VecShiftShuffles(%rip) */ + LONG $0x38158d48; WORD $0x00c7; BYTE $0x00 // leaq $51000(%rip), %rdx /* _VecShiftShuffles(%rip) */ LONG $0x0071e2c4; WORD $0x1004 // vpshufb (%rax,%rdx), %xmm1, %xmm0 LONG $0x077ffac5 // vmovdqu %xmm0, (%rdi) WORD $0xc889 // movl %ecx, %eax @@ -1265,7 +1265,7 @@ LBB4_20: WORD $0xfa83; BYTE $0x63 // cmpl $99, %edx LONG $0x001f870f; WORD $0x0000 // ja LBB4_22, $31(%rip) WORD $0xd089 // movl %edx, %eax - LONG $0x5b0d8d48; WORD $0x009f; BYTE $0x00 // leaq $40795(%rip), %rcx /* _Digits(%rip) */ + LONG $0x7b0d8d48; WORD $0x009f; BYTE $0x00 // leaq $40827(%rip), %rcx /* _Digits(%rip) */ WORD $0x148a; BYTE $0x41 // movb (%rcx,%rax,2), %dl LONG $0x0141448a // movb $1(%rcx,%rax,2), %al WORD $0x1788 // movb %dl, (%rdi) @@ -1290,7 +1290,7 @@ LBB4_22: WORD $0xc96b; BYTE $0x64 // imull $100, %ecx, %ecx WORD $0xc829 // subl %ecx, %eax WORD $0xb70f; BYTE $0xc0 // movzwl %ax, %eax - LONG $0x060d8d48; WORD $0x009f; BYTE $0x00 // leaq $40710(%rip), %rcx /* _Digits(%rip) */ + LONG $0x260d8d48; WORD $0x009f; BYTE $0x00 // leaq $40742(%rip), %rcx /* _Digits(%rip) */ WORD $0x148a; BYTE $0x41 // movb (%rcx,%rax,2), %dl LONG $0x0141448a // movb $1(%rcx,%rax,2), %al WORD $0x5788; BYTE $0x01 // movb %dl, $1(%rdi) @@ -1302,7 +1302,7 @@ LBB4_24: WORD $0xc86b; BYTE $0x64 // imull $100, %eax, %ecx WORD $0xca29 // subl %ecx, %edx WORD $0xb70f; BYTE $0xc0 // movzwl %ax, %eax - LONG $0xe0058d4c; WORD $0x009e; BYTE $0x00 // leaq $40672(%rip), %r8 /* _Digits(%rip) */ + LONG $0x00058d4c; WORD $0x009f; BYTE $0x00 // leaq $40704(%rip), %r8 /* _Digits(%rip) */ LONG $0x400c8a41 // movb (%r8,%rax,2), %cl LONG $0x40448a41; BYTE $0x01 // movb $1(%r8,%rax,2), %al WORD $0x0f88 // movb %cl, (%rdi) @@ -1392,8 +1392,8 @@ _quote: WORD $0x8948; BYTE $0xf0 // movq %rsi, %rax WORD $0x8b4c; BYTE $0x31 // movq (%rcx), %r14 LONG $0x01c0f641 // testb $1, %r8b - LONG $0x6b0d8d48; WORD $0x00c5; BYTE $0x00 // leaq $50539(%rip), %rcx /* __SingleQuoteTab(%rip) */ - LONG $0x64058d4c; WORD $0x00d5; BYTE $0x00 // leaq $54628(%rip), %r8 /* __DoubleQuoteTab(%rip) */ + LONG $0x8b0d8d48; WORD $0x00c5; BYTE $0x00 // leaq $50571(%rip), %rcx /* __SingleQuoteTab(%rip) */ + LONG $0x84058d4c; WORD $0x00d5; BYTE $0x00 // leaq $54660(%rip), %r8 /* __DoubleQuoteTab(%rip) */ LONG $0xc1440f4c // cmoveq %rcx, %r8 QUAD $0x00000000f50c8d48 // leaq (,%rsi,8), %rcx WORD $0x3949; BYTE $0xce // cmpq %rcx, %r14 @@ -1494,7 +1494,7 @@ LBB5_15: LONG $0x34b60f41; BYTE $0x24 // movzbl (%r12), %esi WORD $0x8948; BYTE $0xf2 // movq %rsi, %rdx LONG $0x04e2c148 // shlq $4, %rdx - LONG $0xcd1d8d48; WORD $0x00c3; BYTE $0x00 // leaq $50125(%rip), %rbx /* __SingleQuoteTab(%rip) */ + LONG $0xed1d8d48; WORD $0x00c3; BYTE $0x00 // leaq $50157(%rip), %rbx /* __SingleQuoteTab(%rip) */ LONG $0x1a3c8348; BYTE $0x00 // cmpq $0, (%rdx,%rbx) LONG $0x0082850f; WORD $0x0000 // jne LBB5_21, $130(%rip) LONG $0xff518d48 // leaq $-1(%rcx), %rdx @@ -1711,7 +1711,7 @@ LBB5_74: LONG $0x00024de9; BYTE $0x00 // jmp LBB5_76, $589(%rip) LBB5_51: - LONG $0x160d8d4c; WORD $0x00e1; BYTE $0x00 // leaq $57622(%rip), %r9 /* __EscTab(%rip) */ + LONG $0x360d8d4c; WORD $0x00e1; BYTE $0x00 // leaq $57654(%rip), %r9 /* __EscTab(%rip) */ QUAD $0xfffffb4e056ff9c5 // vmovdqa $-1202(%rip), %xmm0 /* LCPI5_0(%rip) */ QUAD $0xfffffb560d6ff9c5 // vmovdqa $-1194(%rip), %xmm1 /* LCPI5_1(%rip) */ QUAD $0xfffffb5e156ff9c5 // vmovdqa $-1186(%rip), %xmm2 /* LCPI5_2(%rip) */ @@ -1935,7 +1935,7 @@ _unquote: LONG $0xb845894c // movq %r8, $-72(%rbp) WORD $0x8945; BYTE $0xc2 // movl %r8d, %r10d LONG $0x01e28341 // andl $1, %r10d - LONG $0x5a058d4c; WORD $0x00df; BYTE $0x00 // leaq $57178(%rip), %r8 /* __UnquoteTab(%rip) */ + LONG $0x7a058d4c; WORD $0x00df; BYTE $0x00 // leaq $57210(%rip), %r8 /* __UnquoteTab(%rip) */ QUAD $0xffffffb2056ff9c5 // vmovdqa $-78(%rip), %xmm0 /* LCPI6_0(%rip) */ WORD $0x8949; BYTE $0xf9 // movq %rdi, %r9 WORD $0x8949; BYTE $0xf5 // movq %rsi, %r13 @@ -2625,7 +2625,7 @@ _html_escape: QUAD $0xffffff910d6ff9c5 // vmovdqa $-111(%rip), %xmm1 /* LCPI7_1(%rip) */ QUAD $0xffffff99156ff9c5 // vmovdqa $-103(%rip), %xmm2 /* LCPI7_2(%rip) */ QUAD $0xffffffa11d6ff9c5 // vmovdqa $-95(%rip), %xmm3 /* LCPI7_3(%rip) */ - LONG $0xfa1d8d4c; WORD $0x00d6; BYTE $0x00 // leaq $55034(%rip), %r11 /* __HtmlQuoteTab(%rip) */ + LONG $0x1a1d8d4c; WORD $0x00d7; BYTE $0x00 // leaq $55066(%rip), %r11 /* __HtmlQuoteTab(%rip) */ WORD $0x8949; BYTE $0xff // movq %rdi, %r15 LONG $0xd0558b4c // movq $-48(%rbp), %r10 WORD $0x9090; BYTE $0x90 // .p2align 4, 0x90 @@ -3009,7 +3009,7 @@ LBB8_5: WORD $0xd348; BYTE $0xe7 // shlq %cl, %rdi WORD $0xc389 // movl %eax, %ebx LONG $0x04e3c148 // shlq $4, %rbx - LONG $0x91358d4c; WORD $0x005c; BYTE $0x00 // leaq $23697(%rip), %r14 /* _POW10_M128_TAB(%rip) */ + LONG $0xb1358d4c; WORD $0x005c; BYTE $0x00 // leaq $23729(%rip), %r14 /* _POW10_M128_TAB(%rip) */ WORD $0x8948; BYTE $0xf8 // movq %rdi, %rax LONG $0x3364f74a; BYTE $0x08 // mulq $8(%rbx,%r14) WORD $0x8949; BYTE $0xc7 // movq %rax, %r15 @@ -3136,7 +3136,7 @@ LBB9_5: LONG $0xd05d8948 // movq %rbx, $-48(%rbp) LONG $0x005a8e0f; WORD $0x0000 // jle LBB9_12, $90(%rip) WORD $0x3145; BYTE $0xe4 // xorl %r12d, %r12d - LONG $0x78358d4c; WORD $0x0086; BYTE $0x00 // leaq $34424(%rip), %r14 /* _POW_TAB(%rip) */ + LONG $0x98358d4c; WORD $0x0086; BYTE $0x00 // leaq $34456(%rip), %r14 /* _POW_TAB(%rip) */ LONG $0x00002de9; BYTE $0x00 // jmp LBB9_8, $45(%rip) WORD $0x9090; BYTE $0x90 // .p2align 4, 0x90 @@ -3149,7 +3149,7 @@ LBB9_10: LBB9_11: WORD $0x894c; BYTE $0xff // movq %r15, %rdi WORD $0xde89 // movl %ebx, %esi - LONG $0x005595e8; BYTE $0x00 // callq _right_shift, $21909(%rip) + LONG $0x0055b5e8; BYTE $0x00 // callq _right_shift, $21941(%rip) LBB9_7: WORD $0x0141; BYTE $0xdc // addl %ebx, %r12d @@ -3166,7 +3166,7 @@ LBB9_8: LONG $0xffffd3e9; BYTE $0xff // jmp LBB9_7, $-45(%rip) LBB9_12: - LONG $0x21358d4c; WORD $0x0086; BYTE $0x00 // leaq $34337(%rip), %r14 /* _POW_TAB(%rip) */ + LONG $0x41358d4c; WORD $0x0086; BYTE $0x00 // leaq $34369(%rip), %r14 /* _POW_TAB(%rip) */ LONG $0x00002de9; BYTE $0x00 // jmp LBB9_14, $45(%rip) LBB9_18: @@ -3178,7 +3178,7 @@ LBB9_18: LBB9_20: WORD $0x894c; BYTE $0xff // movq %r15, %rdi WORD $0xde89 // movl %ebx, %esi - LONG $0x005346e8; BYTE $0x00 // callq _left_shift, $21318(%rip) + LONG $0x005366e8; BYTE $0x00 // callq _left_shift, $21350(%rip) LONG $0x14478b41 // movl $20(%r15), %eax LBB9_13: @@ -3221,7 +3221,7 @@ LBB9_21: LBB9_25: WORD $0x894c; BYTE $0xff // movq %r15, %rdi LONG $0x00003cbe; BYTE $0x00 // movl $60, %esi - LONG $0x0054a3e8; BYTE $0x00 // callq _right_shift, $21667(%rip) + LONG $0x0054c3e8; BYTE $0x00 // callq _right_shift, $21699(%rip) LONG $0x3cc48341 // addl $60, %r12d LONG $0x88fc8341 // cmpl $-120, %r12d LONG $0xffe58c0f; WORD $0xffff // jl LBB9_25, $-27(%rip) @@ -3247,7 +3247,7 @@ LBB9_31: WORD $0xf741; BYTE $0xdc // negl %r12d WORD $0x894c; BYTE $0xff // movq %r15, %rdi WORD $0x8944; BYTE $0xe6 // movl %r12d, %esi - LONG $0x005450e8; BYTE $0x00 // callq _right_shift, $21584(%rip) + LONG $0x005470e8; BYTE $0x00 // callq _right_shift, $21616(%rip) LONG $0xfc02be41; WORD $0xffff // movl $-1022, %r14d LBB9_32: @@ -3255,7 +3255,7 @@ LBB9_32: LONG $0x000d840f; WORD $0x0000 // je LBB9_34, $13(%rip) WORD $0x894c; BYTE $0xff // movq %r15, %rdi LONG $0x000035be; BYTE $0x00 // movl $53, %esi - LONG $0x005242e8; BYTE $0x00 // callq _left_shift, $21058(%rip) + LONG $0x005262e8; BYTE $0x00 // callq _left_shift, $21090(%rip) LBB9_34: LONG $0x14478b41 // movl $20(%r15), %eax @@ -4306,7 +4306,7 @@ LCPI14_2: _advance_string: WORD $0xc1f6; BYTE $0x20 // testb $32, %cl LONG $0x0005850f; WORD $0x0000 // jne LBB14_2, $5(%rip) - LONG $0x004872e9; BYTE $0x00 // jmp _advance_string_default, $18546(%rip) + LONG $0x004892e9; BYTE $0x00 // jmp _advance_string_default, $18578(%rip) LBB14_2: BYTE $0x55 // pushq %rbp @@ -5011,7 +5011,7 @@ LBB15_62: WORD $0xfe83; BYTE $0x17 // cmpl $23, %esi LONG $0x00a48c0f; WORD $0x0000 // jl LBB15_73, $164(%rip) WORD $0x468d; BYTE $0xea // leal $-22(%rsi), %eax - LONG $0xe00d8d48; WORD $0x00e0; BYTE $0x00 // leaq $57568(%rip), %rcx /* _P10_TAB(%rip) */ + LONG $0x000d8d48; WORD $0x00e1; BYTE $0x00 // leaq $57600(%rip), %rcx /* _P10_TAB(%rip) */ LONG $0x0459fbc5; BYTE $0xc1 // vmulsd (%rcx,%rax,8), %xmm0, %xmm0 LONG $0x4511fbc5; BYTE $0xc8 // vmovsd %xmm0, $-56(%rbp) LONG $0x000016b8; BYTE $0x00 // movl $22, %eax @@ -5033,7 +5033,7 @@ LBB15_70: WORD $0xfe83; BYTE $0xea // cmpl $-22, %esi LONG $0x0094820f; WORD $0x0000 // jb LBB15_77, $148(%rip) WORD $0xdef7 // negl %esi - LONG $0x97058d48; WORD $0x00e0; BYTE $0x00 // leaq $57495(%rip), %rax /* _P10_TAB(%rip) */ + LONG $0xb7058d48; WORD $0x00e0; BYTE $0x00 // leaq $57527(%rip), %rax /* _P10_TAB(%rip) */ LONG $0x045efbc5; BYTE $0xf0 // vdivsd (%rax,%rsi,8), %xmm0, %xmm0 LONG $0x4511fbc5; BYTE $0xc8 // vmovsd %xmm0, $-56(%rbp) LONG $0x0000dee9; BYTE $0x00 // jmp LBB15_81, $222(%rip) @@ -5064,7 +5064,7 @@ LBB15_74: LONG $0xc82ef9c5 // vucomisd %xmm0, %xmm1 LONG $0x0018870f; WORD $0x0000 // ja LBB15_77, $24(%rip) WORD $0xc089 // movl %eax, %eax - LONG $0x1b0d8d48; WORD $0x00e0; BYTE $0x00 // leaq $57371(%rip), %rcx /* _P10_TAB(%rip) */ + LONG $0x3b0d8d48; WORD $0x00e0; BYTE $0x00 // leaq $57403(%rip), %rcx /* _P10_TAB(%rip) */ LONG $0x0459fbc5; BYTE $0xc1 // vmulsd (%rcx,%rax,8), %xmm0, %xmm0 LONG $0x4511fbc5; BYTE $0xc8 // vmovsd %xmm0, $-56(%rbp) LONG $0x000062e9; BYTE $0x00 // jmp LBB15_81, $98(%rip) @@ -7484,7 +7484,7 @@ _get_by_path: WORD $0x8949; BYTE $0xfc // movq %rdi, %r12 LONG $0x08428b48 // movq $8(%rdx), %rax WORD $0x8548; BYTE $0xc0 // testq %rax, %rax - LONG $0x062d840f; WORD $0x0000 // je LBB29_79, $1581(%rip) + LONG $0x064d840f; WORD $0x0000 // je LBB29_80, $1613(%rip) WORD $0x8b4c; BYTE $0x2a // movq (%rdx), %r13 LONG $0x04e0c148 // shlq $4, %rax WORD $0x014c; BYTE $0xe8 // addq %r13, %rax @@ -7503,7 +7503,7 @@ LBB29_2: WORD $0x7b3c // cmpb $123, %al LONG $0xc865894c // movq %r12, $-56(%rbp) LONG $0xc06d894c // movq %r13, $-64(%rbp) - LONG $0x060a850f; WORD $0x0000 // jne LBB29_81, $1546(%rip) + LONG $0x063a850f; WORD $0x0000 // jne LBB29_84, $1594(%rip) QUAD $0x9090909090909090; WORD $0x9090 // .p2align 4, 0x90 LBB29_4: @@ -7512,7 +7512,7 @@ LBB29_4: WORD $0x894c; BYTE $0xfa // movq %r15, %rdx LONG $0xffd28fe8; BYTE $0xff // callq _advance_ns, $-11633(%rip) WORD $0x223c // cmpb $34, %al - LONG $0x05e7850f; WORD $0x0000 // jne LBB29_81, $1511(%rip) + LONG $0x05f8850f; WORD $0x0000 // jne LBB29_81, $1528(%rip) LONG $0x08458b49 // movq $8(%r13), %rax WORD $0x894c; BYTE $0xfb // movq %r15, %rbx WORD $0x8b4c; BYTE $0x28 // movq (%rax), %r13 @@ -7522,9 +7522,9 @@ LBB29_4: WORD $0x8b4c; BYTE $0x23 // movq (%rbx), %r12 WORD $0x894c; BYTE $0xe6 // movq %r12, %rsi LONG $0xb8558d48 // leaq $-72(%rbp), %rdx - LONG $0x001e0fe8; BYTE $0x00 // callq _advance_string_default, $7695(%rip) + LONG $0x001e2fe8; BYTE $0x00 // callq _advance_string_default, $7727(%rip) WORD $0x8548; BYTE $0xc0 // testq %rax, %rax - LONG $0x05cf880f; WORD $0x0000 // js LBB29_83, $1487(%rip) + LONG $0x05ff880f; WORD $0x0000 // js LBB29_86, $1535(%rip) WORD $0x8949; BYTE $0xd8 // movq %rbx, %r8 WORD $0x8948; BYTE $0x03 // movq %rax, (%rbx) LONG $0xb84d8b48 // movq $-72(%rbp), %rcx @@ -7609,7 +7609,7 @@ LBB29_25: WORD $0x394c; BYTE $0xe0 // cmpq %r12, %rax WORD $0x8949; BYTE $0xc7 // movq %rax, %r15 LONG $0x03d6860f; WORD $0x0000 // jbe LBB29_71, $982(%rip) - LONG $0xc7358d4c; WORD $0x0094; BYTE $0x00 // leaq $38087(%rip), %r14 /* __UnquoteTab(%rip) */ + LONG $0xe7358d4c; WORD $0x0094; BYTE $0x00 // leaq $38119(%rip), %r14 /* __UnquoteTab(%rip) */ LONG $0xd05d8d48 // leaq $-48(%rbp), %rbx LBB29_28: @@ -7620,13 +7620,13 @@ LBB29_28: WORD $0x294c; BYTE $0xe1 // subq %r12, %rcx LONG $0xffc0c748; WORD $0xffff; BYTE $0xff // movq $-1, %rax WORD $0x8548; BYTE $0xc9 // testq %rcx, %rcx - LONG $0x04a38e0f; WORD $0x0000 // jle LBB29_87, $1187(%rip) + LONG $0x04d38e0f; WORD $0x0000 // jle LBB29_90, $1235(%rip) LONG $0x54b60f41; WORD $0x0124 // movzbl $1(%r12), %edx LONG $0x321c8a46 // movb (%rdx,%r14), %r11b LONG $0xfffb8041 // cmpb $-1, %r11b LONG $0x003e840f; WORD $0x0000 // je LBB29_35, $62(%rip) WORD $0x8445; BYTE $0xdb // testb %r11b, %r11b - LONG $0x0474840f; WORD $0x0000 // je LBB29_85, $1140(%rip) + LONG $0x04a4840f; WORD $0x0000 // je LBB29_88, $1188(%rip) LONG $0xd05d8844 // movb %r11b, $-48(%rbp) LONG $0x02c48349 // addq $2, %r12 LONG $0x000001b9; BYTE $0x00 // movl $1, %ecx @@ -7644,18 +7644,18 @@ LBB29_33: LBB29_35: LONG $0x03f98348 // cmpq $3, %rcx - LONG $0x04448e0f; WORD $0x0000 // jle LBB29_86, $1092(%rip) + LONG $0x04748e0f; WORD $0x0000 // jle LBB29_89, $1140(%rip) LONG $0x24448b41; BYTE $0x02 // movl $2(%r12), %eax WORD $0xc289 // movl %eax, %edx WORD $0xd2f7 // notl %edx LONG $0xcfd0b08d; WORD $0xcfcf // leal $-808464432(%rax), %esi LONG $0x8080e281; WORD $0x8080 // andl $-2139062144, %edx WORD $0xf285 // testl %esi, %edx - LONG $0x0408850f; WORD $0x0000 // jne LBB29_84, $1032(%rip) + LONG $0x0438850f; WORD $0x0000 // jne LBB29_87, $1080(%rip) LONG $0x1919b08d; WORD $0x1919 // leal $421075225(%rax), %esi WORD $0xc609 // orl %eax, %esi LONG $0x8080c6f7; WORD $0x8080 // testl $-2139062144, %esi - LONG $0x03f4850f; WORD $0x0000 // jne LBB29_84, $1012(%rip) + LONG $0x0424850f; WORD $0x0000 // jne LBB29_87, $1060(%rip) WORD $0xc689 // movl %eax, %esi LONG $0x7f7fe681; WORD $0x7f7f // andl $2139062143, %esi LONG $0xc0c0b941; WORD $0xc0c0 // movl $-1061109568, %r9d @@ -7663,13 +7663,13 @@ LBB29_35: LONG $0x469e8d44; WORD $0x4646; BYTE $0x46 // leal $1179010630(%rsi), %r11d WORD $0x2141; BYTE $0xd1 // andl %edx, %r9d WORD $0x8545; BYTE $0xd9 // testl %r11d, %r9d - LONG $0x03d0850f; WORD $0x0000 // jne LBB29_84, $976(%rip) + LONG $0x0400850f; WORD $0x0000 // jne LBB29_87, $1024(%rip) LONG $0xe0e0b941; WORD $0xe0e0 // movl $-522133280, %r9d WORD $0x2941; BYTE $0xf1 // subl %esi, %r9d LONG $0x3939c681; WORD $0x3939 // addl $960051513, %esi WORD $0x2144; BYTE $0xca // andl %r9d, %edx WORD $0xf285 // testl %esi, %edx - LONG $0x03b6850f; WORD $0x0000 // jne LBB29_84, $950(%rip) + LONG $0x03e6850f; WORD $0x0000 // jne LBB29_87, $998(%rip) WORD $0xc80f // bswapl %eax WORD $0xc289 // movl %eax, %edx WORD $0xeac1; BYTE $0x04 // shrl $4, %edx @@ -7755,13 +7755,13 @@ LBB29_59: LBB29_60: LONG $0x06f98348 // cmpq $6, %rcx - LONG $0x02ca8c0f; WORD $0x0000 // jl LBB29_89, $714(%rip) + LONG $0x02fa8c0f; WORD $0x0000 // jl LBB29_92, $762(%rip) LONG $0x00dbff3d; BYTE $0x00 // cmpl $56319, %eax - LONG $0x02bf870f; WORD $0x0000 // ja LBB29_89, $703(%rip) + LONG $0x02ef870f; WORD $0x0000 // ja LBB29_92, $751(%rip) LONG $0x5c398041 // cmpb $92, (%r9) - LONG $0x02b5850f; WORD $0x0000 // jne LBB29_89, $693(%rip) + LONG $0x02e5850f; WORD $0x0000 // jne LBB29_92, $741(%rip) LONG $0x247c8041; WORD $0x7507 // cmpb $117, $7(%r12) - LONG $0x02a9850f; WORD $0x0000 // jne LBB29_89, $681(%rip) + LONG $0x02d9850f; WORD $0x0000 // jne LBB29_92, $729(%rip) LONG $0x244c8d4d; BYTE $0x08 // leaq $8(%r12), %r9 LONG $0x244c8b41; BYTE $0x08 // movl $8(%r12), %ecx WORD $0xca89 // movl %ecx, %edx @@ -7769,11 +7769,11 @@ LBB29_60: LONG $0xcfd0b18d; WORD $0xcfcf // leal $-808464432(%rcx), %esi LONG $0x8080e281; WORD $0x8080 // andl $-2139062144, %edx WORD $0xf285 // testl %esi, %edx - LONG $0x027b850f; WORD $0x0000 // jne LBB29_88, $635(%rip) + LONG $0x02ab850f; WORD $0x0000 // jne LBB29_91, $683(%rip) LONG $0x1919b18d; WORD $0x1919 // leal $421075225(%rcx), %esi WORD $0xce09 // orl %ecx, %esi LONG $0x8080c6f7; WORD $0x8080 // testl $-2139062144, %esi - LONG $0x0267850f; WORD $0x0000 // jne LBB29_88, $615(%rip) + LONG $0x0297850f; WORD $0x0000 // jne LBB29_91, $663(%rip) WORD $0xce89 // movl %ecx, %esi LONG $0x7f7fe681; WORD $0x7f7f // andl $2139062143, %esi LONG $0xc0c0bb41; WORD $0xc0c0 // movl $-1061109568, %r11d @@ -7781,13 +7781,13 @@ LBB29_60: LONG $0x46b68d44; WORD $0x4646; BYTE $0x46 // leal $1179010630(%rsi), %r14d WORD $0x2141; BYTE $0xd3 // andl %edx, %r11d WORD $0x8545; BYTE $0xf3 // testl %r14d, %r11d - LONG $0x0243850f; WORD $0x0000 // jne LBB29_88, $579(%rip) + LONG $0x0273850f; WORD $0x0000 // jne LBB29_91, $627(%rip) LONG $0xe0e0bb41; WORD $0xe0e0 // movl $-522133280, %r11d WORD $0x2941; BYTE $0xf3 // subl %esi, %r11d LONG $0x3939c681; WORD $0x3939 // addl $960051513, %esi WORD $0x2144; BYTE $0xda // andl %r11d, %edx WORD $0xf285 // testl %esi, %edx - LONG $0x0229850f; WORD $0x0000 // jne LBB29_88, $553(%rip) + LONG $0x0259850f; WORD $0x0000 // jne LBB29_91, $601(%rip) WORD $0xc90f // bswapl %ecx WORD $0xca89 // movl %ecx, %edx WORD $0xeac1; BYTE $0x04 // shrl $4, %edx @@ -7802,7 +7802,7 @@ LBB29_60: WORD $0xd189 // movl %edx, %ecx LONG $0x0000e181; WORD $0x00fc // andl $16515072, %ecx LONG $0x0000f981; WORD $0x00dc // cmpl $14417920, %ecx - LONG $0x0200850f; WORD $0x0000 // jne LBB29_89, $512(%rip) + LONG $0x0230850f; WORD $0x0000 // jne LBB29_92, $560(%rip) WORD $0xd189 // movl %edx, %ecx WORD $0xe9c1; BYTE $0x08 // shrl $8, %ecx LONG $0xff00e181; WORD $0x0000 // andl $65280, %ecx @@ -7829,7 +7829,7 @@ LBB29_60: WORD $0x4588; BYTE $0xd3 // movb %al, $-45(%rbp) LONG $0x0cc48349 // addq $12, %r12 LONG $0x000004b9; BYTE $0x00 // movl $4, %ecx - LONG $0x8b358d4c; WORD $0x0091; BYTE $0x00 // leaq $37259(%rip), %r14 /* __UnquoteTab(%rip) */ + LONG $0xab358d4c; WORD $0x0091; BYTE $0x00 // leaq $37291(%rip), %r14 /* __UnquoteTab(%rip) */ LONG $0xd05d8d48 // leaq $-48(%rbp), %rbx LONG $0x0d4c8d4c; BYTE $0xd0 // leaq $-48(%rbp,%rcx), %r9 WORD $0x394d; BYTE $0xd5 // cmpq %r10, %r13 @@ -7861,9 +7861,9 @@ LBB29_22: WORD $0x894c; BYTE $0xc2 // movq %r8, %rdx LONG $0xffcd85e8; BYTE $0xff // callq _advance_ns, $-12923(%rip) WORD $0x3a3c // cmpb $58, %al - LONG $0x00dd850f; WORD $0x0000 // jne LBB29_81, $221(%rip) + LONG $0x010d850f; WORD $0x0000 // jne LBB29_84, $269(%rip) WORD $0x854d; BYTE $0xf6 // testq %r14, %r14 - LONG $0x00a4850f; WORD $0x0000 // jne LBB29_78, $164(%rip) + LONG $0x00c4850f; WORD $0x0000 // jne LBB29_79, $196(%rip) WORD $0x894c; BYTE $0xe7 // movq %r12, %rdi WORD $0x894c; BYTE $0xfe // movq %r15, %rsi LONG $0xffee89e8; BYTE $0xff // callq _skip_one_fast, $-4471(%rip) @@ -7873,7 +7873,7 @@ LBB29_22: LONG $0xffcd58e8; BYTE $0xff // callq _advance_ns, $-12968(%rip) WORD $0x2c3c // cmpb $44, %al LONG $0xfab0840f; WORD $0xffff // je LBB29_4, $-1360(%rip) - LONG $0x00009ce9; BYTE $0x00 // jmp LBB29_80, $156(%rip) + LONG $0x0000bce9; BYTE $0x00 // jmp LBB29_81, $188(%rip) LBB29_70: WORD $0x8949; BYTE $0xc7 // movq %rax, %r15 @@ -7888,53 +7888,68 @@ LBB29_71: WORD $0x9090; BYTE $0x90 // .p2align 4, 0x90 LBB29_73: - WORD $0x5b3c // cmpb $91, %al - LONG $0x0088850f; WORD $0x0000 // jne LBB29_81, $136(%rip) - WORD $0xf980; BYTE $0x02 // cmpb $2, %cl - LONG $0x007f850f; WORD $0x0000 // jne LBB29_81, $127(%rip) - LONG $0x08458b49 // movq $8(%r13), %rax - WORD $0x8b48; BYTE $0x18 // movq (%rax), %rbx - WORD $0xff48; BYTE $0xc3 // incq %rbx - LONG $0x90909090; BYTE $0x90 // .p2align 4, 0x90 + WORD $0x5b3c // cmpb $91, %al + LONG $0x00b8850f; WORD $0x0000 // jne LBB29_84, $184(%rip) + WORD $0xf980; BYTE $0x02 // cmpb $2, %cl + LONG $0x00af850f; WORD $0x0000 // jne LBB29_84, $175(%rip) + LONG $0x08458b49 // movq $8(%r13), %rax + WORD $0x8b48; BYTE $0x18 // movq (%rax), %rbx + LONG $0x243c8b49 // movq (%r12), %rdi + LONG $0x24748b49; BYTE $0x08 // movq $8(%r12), %rsi + WORD $0x894c; BYTE $0xfa // movq %r15, %rdx + LONG $0xffcd07e8; BYTE $0xff // callq _advance_ns, $-13049(%rip) + WORD $0x5d3c // cmpb $93, %al + LONG $0x0078840f; WORD $0x0000 // je LBB29_82, $120(%rip) + WORD $0xff49; BYTE $0x0f // decq (%r15) + WORD $0xff48; BYTE $0xc3 // incq %rbx + QUAD $0x9090909090909090; BYTE $0x90 // .p2align 4, 0x90 -LBB29_76: +LBB29_77: WORD $0xff48; BYTE $0xcb // decq %rbx WORD $0x8548; BYTE $0xdb // testq %rbx, %rbx - LONG $0x00348e0f; WORD $0x0000 // jle LBB29_78, $52(%rip) + LONG $0x00348e0f; WORD $0x0000 // jle LBB29_79, $52(%rip) WORD $0x894c; BYTE $0xe7 // movq %r12, %rdi WORD $0x894c; BYTE $0xfe // movq %r15, %rsi - LONG $0xffee19e8; BYTE $0xff // callq _skip_one_fast, $-4583(%rip) + LONG $0xffedf9e8; BYTE $0xff // callq _skip_one_fast, $-4615(%rip) LONG $0x243c8b49 // movq (%r12), %rdi LONG $0x24748b49; BYTE $0x08 // movq $8(%r12), %rsi WORD $0x894c; BYTE $0xfa // movq %r15, %rdx - LONG $0xffcce8e8; BYTE $0xff // callq _advance_ns, $-13080(%rip) + LONG $0xffccc8e8; BYTE $0xff // callq _advance_ns, $-13112(%rip) WORD $0x2c3c // cmpb $44, %al - LONG $0xffd0840f; WORD $0xffff // je LBB29_76, $-48(%rip) - LONG $0x00002ce9; BYTE $0x00 // jmp LBB29_80, $44(%rip) + LONG $0xffd0840f; WORD $0xffff // je LBB29_77, $-48(%rip) + LONG $0x000043e9; BYTE $0x00 // jmp LBB29_83, $67(%rip) QUAD $0x9090909090909090; WORD $0x9090; BYTE $0x90 // .p2align 4, 0x90 -LBB29_78: +LBB29_79: LONG $0x10c58349 // addq $16, %r13 LONG $0xb0458b48 // movq $-80(%rbp), %rax WORD $0x3949; BYTE $0xc5 // cmpq %rax, %r13 - LONG $0xf9e1850f; WORD $0xffff // jne LBB29_2, $-1567(%rip) - -LBB29_79: - WORD $0x894c; BYTE $0xe7 // movq %r12, %rdi - WORD $0x894c; BYTE $0xfe // movq %r15, %rsi - LONG $0xffedd4e8; BYTE $0xff // callq _skip_one_fast, $-4652(%rip) - LONG $0x000019e9; BYTE $0x00 // jmp LBB29_82, $25(%rip) + LONG $0xf9c1850f; WORD $0xffff // jne LBB29_2, $-1599(%rip) LBB29_80: - WORD $0xff49; BYTE $0x0f // decq (%r15) - LONG $0xdfc0c748; WORD $0xffff; BYTE $0xff // movq $-33, %rax - LONG $0x00000ae9; BYTE $0x00 // jmp LBB29_82, $10(%rip) + WORD $0x894c; BYTE $0xe7 // movq %r12, %rdi + WORD $0x894c; BYTE $0xfe // movq %r15, %rsi + LONG $0xffedb4e8; BYTE $0xff // callq _skip_one_fast, $-4684(%rip) + LONG $0x000029e9; BYTE $0x00 // jmp LBB29_85, $41(%rip) LBB29_81: + WORD $0x7d3c // cmpb $125, %al + LONG $0x0017850f; WORD $0x0000 // jne LBB29_84, $23(%rip) + +LBB29_82: + WORD $0xff49; BYTE $0x0f // decq (%r15) + LONG $0xdfc0c748; WORD $0xffff; BYTE $0xff // movq $-33, %rax + LONG $0x000012e9; BYTE $0x00 // jmp LBB29_85, $18(%rip) + +LBB29_83: + WORD $0x5d3c // cmpb $93, %al + LONG $0xffe9840f; WORD $0xffff // je LBB29_82, $-23(%rip) + +LBB29_84: WORD $0xff49; BYTE $0x0f // decq (%r15) LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax -LBB29_82: +LBB29_85: LONG $0x28c48348 // addq $40, %rsp BYTE $0x5b // popq %rbx WORD $0x5c41 // popq %r12 @@ -7944,41 +7959,41 @@ LBB29_82: BYTE $0x5d // popq %rbp BYTE $0xc3 // retq -LBB29_83: +LBB29_86: LONG $0xc8458b48 // movq $-56(%rbp), %rax LONG $0x08408b48 // movq $8(%rax), %rax WORD $0x8948; BYTE $0x03 // movq %rax, (%rbx) LONG $0xffc0c748; WORD $0xffff; BYTE $0xff // movq $-1, %rax - LONG $0xffffdae9; BYTE $0xff // jmp LBB29_82, $-38(%rip) - -LBB29_84: - LONG $0x02c48349 // addq $2, %r12 - LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax - LONG $0x000012e9; BYTE $0x00 // jmp LBB29_87, $18(%rip) - -LBB29_85: - WORD $0xff49; BYTE $0xc4 // incq %r12 - LONG $0xfdc0c748; WORD $0xffff; BYTE $0xff // movq $-3, %rax - LONG $0x000003e9; BYTE $0x00 // jmp LBB29_87, $3(%rip) - -LBB29_86: - WORD $0xff49; BYTE $0xc4 // incq %r12 + LONG $0xffffdae9; BYTE $0xff // jmp LBB29_85, $-38(%rip) LBB29_87: - WORD $0x2949; BYTE $0xfc // subq %rdi, %r12 - WORD $0x894d; BYTE $0x20 // movq %r12, (%r8) - LONG $0xffffade9; BYTE $0xff // jmp LBB29_82, $-83(%rip) + LONG $0x02c48349 // addq $2, %r12 + LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax + LONG $0x000012e9; BYTE $0x00 // jmp LBB29_90, $18(%rip) LBB29_88: - LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax - LONG $0x000007e9; BYTE $0x00 // jmp LBB29_90, $7(%rip) + WORD $0xff49; BYTE $0xc4 // incq %r12 + LONG $0xfdc0c748; WORD $0xffff; BYTE $0xff // movq $-3, %rax + LONG $0x000003e9; BYTE $0x00 // jmp LBB29_90, $3(%rip) LBB29_89: - LONG $0xfcc0c748; WORD $0xffff; BYTE $0xff // movq $-4, %rax + WORD $0xff49; BYTE $0xc4 // incq %r12 LBB29_90: + WORD $0x2949; BYTE $0xfc // subq %rdi, %r12 + WORD $0x894d; BYTE $0x20 // movq %r12, (%r8) + LONG $0xffffade9; BYTE $0xff // jmp LBB29_85, $-83(%rip) + +LBB29_91: + LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax + LONG $0x000007e9; BYTE $0x00 // jmp LBB29_93, $7(%rip) + +LBB29_92: + LONG $0xfcc0c748; WORD $0xffff; BYTE $0xff // movq $-4, %rax + +LBB29_93: WORD $0x894d; BYTE $0xcc // movq %r9, %r12 - LONG $0xffffdae9; BYTE $0xff // jmp LBB29_87, $-38(%rip) + LONG $0xffffdae9; BYTE $0xff // jmp LBB29_90, $-38(%rip) QUAD $0x9090909090909090 // .p2align 4, 0x90 _validate_utf8: @@ -8335,12 +8350,12 @@ LBB31_28: LONG $0xff1f820f; WORD $0xffff // jb LBB31_17, $-225(%rip) LBB31_30: - WORD $0xc031 // xorl %eax, %eax - LONG $0x08c48348 // addq $8, %rsp - BYTE $0x5b // popq %rbx - BYTE $0x5d // popq %rbp - BYTE $0xc3 // retq - QUAD $0x0000000000000000; QUAD $0x0000000000000000; QUAD $0x0000000000000000; WORD $0x0000 // .p2align 5, 0x00 + WORD $0xc031 // xorl %eax, %eax + LONG $0x08c48348 // addq $8, %rsp + BYTE $0x5b // popq %rbx + BYTE $0x5d // popq %rbp + BYTE $0xc3 // retq + QUAD $0x0000000000000000; WORD $0x0000 // .p2align 5, 0x00 LCPI32_0: QUAD $0x3030303030303030; QUAD $0x3030303030303030 // .space 16, '0000000000000000' @@ -11415,7 +11430,7 @@ _Digits: QUAD $0x3939383937393639 // .ascii 8, '96979899' QUAD $0x0000000000000000 // .p2align 4, 0x00 -_LB_3887b4d9: // _pow10_ceil_sig.g +_LB_f7e080b7: // _pow10_ceil_sig.g QUAD $0xff77b1fcbebcdc4f // .quad -38366372719436721 QUAD $0x25e8e89c13bb0f7b // .quad 2731688931043774331 QUAD $0x9faacf3df73609b1 // .quad -6941508010590729807 @@ -14070,7 +14085,7 @@ _P10_TAB: QUAD $0x4480f0cf064dd592 // .quad 0x4480f0cf064dd592 QUAD $0x0000000000000000 // .p2align 4, 0x00 -_LB_bc74c56d: // _pow10_ceil_sig_f32.g +_LB_2b359ec2: // _pow10_ceil_sig_f32.g QUAD $0x81ceb32c4b43fcf5 // .quad -9093133594791772939 QUAD $0xa2425ff75e14fc32 // .quad -6754730975062328270 QUAD $0xcad2f7f5359a3b3f // .quad -3831727700400522433 @@ -14161,7 +14176,7 @@ _entry: _f32toa: MOVQ out+0(FP), DI MOVSD val+8(FP), X0 - CALL ·__native_entry__+28608(SB) // _f32toa + CALL ·__native_entry__+28640(SB) // _f32toa MOVQ AX, ret+16(FP) RET @@ -14479,7 +14494,7 @@ _validate_utf8: MOVQ s+0(FP), DI MOVQ p+8(FP), SI MOVQ m+16(FP), DX - CALL ·__native_entry__+27344(SB) // _validate_utf8 + CALL ·__native_entry__+27392(SB) // _validate_utf8 MOVQ AX, ret+24(FP) RET @@ -14498,7 +14513,7 @@ _entry: _validate_utf8_fast: MOVQ s+0(FP), DI - CALL ·__native_entry__+28016(SB) // _validate_utf8_fast + CALL ·__native_entry__+28064(SB) // _validate_utf8_fast MOVQ AX, ret+8(FP) RET diff --git a/internal/native/avx/native_subr_amd64.go b/internal/native/avx/native_subr_amd64.go index a10365d..0f5bc22 100644 --- a/internal/native/avx/native_subr_amd64.go +++ b/internal/native/avx/native_subr_amd64.go @@ -9,7 +9,7 @@ package avx func __native_entry__() uintptr var ( - _subr__f32toa = __native_entry__() + 28608 + _subr__f32toa = __native_entry__() + 28640 _subr__f64toa = __native_entry__() + 448 _subr__get_by_path = __native_entry__() + 25568 _subr__html_escape = __native_entry__() + 9296 @@ -24,8 +24,8 @@ var ( _subr__u64toa = __native_entry__() + 3856 _subr__unquote = __native_entry__() + 6928 _subr__validate_one = __native_entry__() + 22368 - _subr__validate_utf8 = __native_entry__() + 27344 - _subr__validate_utf8_fast = __native_entry__() + 28016 + _subr__validate_utf8 = __native_entry__() + 27392 + _subr__validate_utf8_fast = __native_entry__() + 28064 _subr__value = __native_entry__() + 12480 _subr__vnumber = __native_entry__() + 16256 _subr__vsigned = __native_entry__() + 17872 diff --git a/internal/native/avx2/native_amd64.s b/internal/native/avx2/native_amd64.s index 19b45ad..646ff87 100644 --- a/internal/native/avx2/native_amd64.s +++ b/internal/native/avx2/native_amd64.s @@ -250,7 +250,7 @@ LBB1_6: LONG $0x000124b8; BYTE $0x00 // movl $292, %eax WORD $0x2944; BYTE $0xc8 // subl %r9d, %eax LONG $0x04e0c148 // shlq $4, %rax - LONG $0x8a158d48; WORD $0x00c5; BYTE $0x00 // leaq $50570(%rip), %rdx /* _pow10_ceil_sig.g(%rip) */ + LONG $0xca158d48; WORD $0x00c5; BYTE $0x00 // leaq $50634(%rip), %rdx /* _pow10_ceil_sig.g(%rip) */ LONG $0x101c8b4c // movq (%rax,%rdx), %r11 LONG $0x106c8b4c; BYTE $0x08 // movq $8(%rax,%rdx), %r13 WORD $0xc1fe // incb %cl @@ -432,7 +432,7 @@ LBB1_51: LONG $0x009d820f; WORD $0x0000 // jb LBB1_64, $157(%rip) LONG $0x01678d4d // leaq $1(%r15), %r12 WORD $0x894c; BYTE $0xe6 // movq %r12, %rsi - LONG $0x008d8fe8; BYTE $0x00 // callq _format_significand, $36239(%rip) + LONG $0x008dcfe8; BYTE $0x00 // callq _format_significand, $36303(%rip) WORD $0x8948; BYTE $0xc3 // movq %rax, %rbx QUAD $0x9090909090909090; LONG $0x90909090 // .p2align 4, 0x90 @@ -467,7 +467,7 @@ LBB1_60: WORD $0x0c8d; BYTE $0x12 // leal (%rdx,%rdx), %ecx WORD $0x0c8d; BYTE $0x89 // leal (%rcx,%rcx,4), %ecx WORD $0xc829 // subl %ecx, %eax - LONG $0x640d8d48; WORD $0x00c1; BYTE $0x00 // leaq $49508(%rip), %rcx /* _Digits(%rip) */ + LONG $0xa40d8d48; WORD $0x00c1; BYTE $0x00 // leaq $49572(%rip), %rcx /* _Digits(%rip) */ LONG $0x510cb70f // movzwl (%rcx,%rdx,2), %ecx LONG $0x024b8966 // movw %cx, $2(%rbx) WORD $0x300c // orb $48, %al @@ -549,7 +549,7 @@ LBB1_61: WORD $0xf883; BYTE $0x0a // cmpl $10, %eax LONG $0x00878c0f; WORD $0x0000 // jl LBB1_63, $135(%rip) WORD $0xc089 // movl %eax, %eax - LONG $0x1a0d8d48; WORD $0x00c0; BYTE $0x00 // leaq $49178(%rip), %rcx /* _Digits(%rip) */ + LONG $0x5a0d8d48; WORD $0x00c0; BYTE $0x00 // leaq $49242(%rip), %rcx /* _Digits(%rip) */ LONG $0x4104b70f // movzwl (%rcx,%rax,2), %eax LONG $0x02438966 // movw %ax, $2(%rbx) LONG $0x04c38348 // addq $4, %rbx @@ -743,7 +743,7 @@ LBB1_77: LBB1_78: WORD $0x894c; BYTE $0xfe // movq %r15, %rsi WORD $0xf8c5; BYTE $0x77 // vzeroupper - LONG $0x008886e8; BYTE $0x00 // callq _format_significand, $34950(%rip) + LONG $0x0088c6e8; BYTE $0x00 // callq _format_significand, $35014(%rip) LONG $0x90909090; WORD $0x9090 // .p2align 4, 0x90 LBB1_79: @@ -970,7 +970,7 @@ LBB2_2: WORD $0xcf6b; BYTE $0x64 // imull $100, %edi, %ecx WORD $0xc829 // subl %ecx, %eax LONG $0xd8b70f44 // movzwl %ax, %r11d - LONG $0xc00d8d48; WORD $0x00b9; BYTE $0x00 // leaq $47552(%rip), %rcx /* _Digits(%rip) */ + LONG $0x000d8d48; WORD $0x00ba; BYTE $0x00 // leaq $47616(%rip), %rcx /* _Digits(%rip) */ LONG $0x04b70f42; BYTE $0x51 // movzwl (%rcx,%r10,2), %eax LONG $0x40894166; BYTE $0xfe // movw %ax, $-2(%r8) LONG $0x04b70f42; BYTE $0x49 // movzwl (%rcx,%r9,2), %eax @@ -986,7 +986,7 @@ LBB2_2: LBB2_5: LONG $0x1759b941; WORD $0xd1b7 // movl $3518437209, %r9d - LONG $0x79158d4c; WORD $0x00b9; BYTE $0x00 // leaq $47481(%rip), %r10 /* _Digits(%rip) */ + LONG $0xb9158d4c; WORD $0x00b9; BYTE $0x00 // leaq $47545(%rip), %r10 /* _Digits(%rip) */ QUAD $0x9090909090909090; BYTE $0x90 // .p2align 4, 0x90 LBB2_6: @@ -1018,7 +1018,7 @@ LBB2_7: WORD $0xc86b; BYTE $0x64 // imull $100, %eax, %ecx WORD $0xca29 // subl %ecx, %edx WORD $0xb70f; BYTE $0xca // movzwl %dx, %ecx - LONG $0x01158d48; WORD $0x00b9; BYTE $0x00 // leaq $47361(%rip), %rdx /* _Digits(%rip) */ + LONG $0x41158d48; WORD $0x00b9; BYTE $0x00 // leaq $47425(%rip), %rdx /* _Digits(%rip) */ LONG $0x4a0cb70f // movzwl (%rdx,%rcx,2), %ecx LONG $0x4b894166; BYTE $0xfe // movw %cx, $-2(%r11) LONG $0xfec38349 // addq $-2, %r11 @@ -1028,7 +1028,7 @@ LBB2_9: WORD $0xfa83; BYTE $0x0a // cmpl $10, %edx LONG $0x0018820f; WORD $0x0000 // jb LBB2_11, $24(%rip) WORD $0xd089 // movl %edx, %eax - LONG $0xe00d8d48; WORD $0x00b8; BYTE $0x00 // leaq $47328(%rip), %rcx /* _Digits(%rip) */ + LONG $0x200d8d48; WORD $0x00b9; BYTE $0x00 // leaq $47392(%rip), %rcx /* _Digits(%rip) */ LONG $0x4104b70f // movzwl (%rcx,%rax,2), %eax LONG $0x43894166; BYTE $0xfe // movw %ax, $-2(%r11) WORD $0x894c; BYTE $0xc0 // movq %r8, %rax @@ -1104,7 +1104,7 @@ _u64toa: WORD $0x0148; BYTE $0xc0 // addq %rax, %rax LONG $0x03e8fe81; WORD $0x0000 // cmpl $1000, %esi LONG $0x0016820f; WORD $0x0000 // jb LBB4_3, $22(%rip) - LONG $0x0c0d8d48; WORD $0x00b8; BYTE $0x00 // leaq $47116(%rip), %rcx /* _Digits(%rip) */ + LONG $0x4c0d8d48; WORD $0x00b8; BYTE $0x00 // leaq $47180(%rip), %rcx /* _Digits(%rip) */ WORD $0x0c8a; BYTE $0x0a // movb (%rdx,%rcx), %cl WORD $0x0f88 // movb %cl, (%rdi) LONG $0x000001b9; BYTE $0x00 // movl $1, %ecx @@ -1118,14 +1118,14 @@ LBB4_3: LBB4_4: WORD $0xb70f; BYTE $0xd2 // movzwl %dx, %edx LONG $0x01ca8348 // orq $1, %rdx - LONG $0xe4358d48; WORD $0x00b7; BYTE $0x00 // leaq $47076(%rip), %rsi /* _Digits(%rip) */ + LONG $0x24358d48; WORD $0x00b8; BYTE $0x00 // leaq $47140(%rip), %rsi /* _Digits(%rip) */ WORD $0x148a; BYTE $0x32 // movb (%rdx,%rsi), %dl WORD $0xce89 // movl %ecx, %esi WORD $0xc1ff // incl %ecx WORD $0x1488; BYTE $0x37 // movb %dl, (%rdi,%rsi) LBB4_6: - LONG $0xd3158d48; WORD $0x00b7; BYTE $0x00 // leaq $47059(%rip), %rdx /* _Digits(%rip) */ + LONG $0x13158d48; WORD $0x00b8; BYTE $0x00 // leaq $47123(%rip), %rdx /* _Digits(%rip) */ WORD $0x148a; BYTE $0x10 // movb (%rax,%rdx), %dl WORD $0xce89 // movl %ecx, %esi WORD $0xc1ff // incl %ecx @@ -1134,7 +1134,7 @@ LBB4_6: LBB4_7: WORD $0xb70f; BYTE $0xc0 // movzwl %ax, %eax LONG $0x01c88348 // orq $1, %rax - LONG $0xbb158d48; WORD $0x00b7; BYTE $0x00 // leaq $47035(%rip), %rdx /* _Digits(%rip) */ + LONG $0xfb158d48; WORD $0x00b7; BYTE $0x00 // leaq $47099(%rip), %rdx /* _Digits(%rip) */ WORD $0x048a; BYTE $0x10 // movb (%rax,%rdx), %al WORD $0xca89 // movl %ecx, %edx WORD $0xc1ff // incl %ecx @@ -1181,7 +1181,7 @@ LBB4_8: WORD $0x014d; BYTE $0xdb // addq %r11, %r11 LONG $0x9680fe81; WORD $0x0098 // cmpl $10000000, %esi LONG $0x0017820f; WORD $0x0000 // jb LBB4_11, $23(%rip) - LONG $0x19058d48; WORD $0x00b7; BYTE $0x00 // leaq $46873(%rip), %rax /* _Digits(%rip) */ + LONG $0x59058d48; WORD $0x00b7; BYTE $0x00 // leaq $46937(%rip), %rax /* _Digits(%rip) */ LONG $0x02048a41 // movb (%r10,%rax), %al WORD $0x0788 // movb %al, (%rdi) LONG $0x000001b9; BYTE $0x00 // movl $1, %ecx @@ -1195,14 +1195,14 @@ LBB4_11: LBB4_12: WORD $0x8944; BYTE $0xd0 // movl %r10d, %eax LONG $0x01c88348 // orq $1, %rax - LONG $0xed358d48; WORD $0x00b6; BYTE $0x00 // leaq $46829(%rip), %rsi /* _Digits(%rip) */ + LONG $0x2d358d48; WORD $0x00b7; BYTE $0x00 // leaq $46893(%rip), %rsi /* _Digits(%rip) */ WORD $0x048a; BYTE $0x30 // movb (%rax,%rsi), %al WORD $0xce89 // movl %ecx, %esi WORD $0xc1ff // incl %ecx WORD $0x0488; BYTE $0x37 // movb %al, (%rdi,%rsi) LBB4_14: - LONG $0xdc058d48; WORD $0x00b6; BYTE $0x00 // leaq $46812(%rip), %rax /* _Digits(%rip) */ + LONG $0x1c058d48; WORD $0x00b7; BYTE $0x00 // leaq $46876(%rip), %rax /* _Digits(%rip) */ LONG $0x01048a41 // movb (%r9,%rax), %al WORD $0xce89 // movl %ecx, %esi WORD $0xc1ff // incl %ecx @@ -1211,7 +1211,7 @@ LBB4_14: LBB4_15: LONG $0xc1b70f41 // movzwl %r9w, %eax LONG $0x01c88348 // orq $1, %rax - LONG $0xc2358d48; WORD $0x00b6; BYTE $0x00 // leaq $46786(%rip), %rsi /* _Digits(%rip) */ + LONG $0x02358d48; WORD $0x00b7; BYTE $0x00 // leaq $46850(%rip), %rsi /* _Digits(%rip) */ WORD $0x048a; BYTE $0x30 // movb (%rax,%rsi), %al WORD $0xca89 // movl %ecx, %edx WORD $0x0488; BYTE $0x17 // movb %al, (%rdi,%rdx) @@ -1293,7 +1293,7 @@ LBB4_16: LONG $0x000010b9; BYTE $0x00 // movl $16, %ecx WORD $0xc129 // subl %eax, %ecx LONG $0x04e0c148 // shlq $4, %rax - LONG $0xc6158d48; WORD $0x00dc; BYTE $0x00 // leaq $56518(%rip), %rdx /* _VecShiftShuffles(%rip) */ + LONG $0x06158d48; WORD $0x00dd; BYTE $0x00 // leaq $56582(%rip), %rdx /* _VecShiftShuffles(%rip) */ LONG $0x0071e2c4; WORD $0x1004 // vpshufb (%rax,%rdx), %xmm1, %xmm0 LONG $0x077ffac5 // vmovdqu %xmm0, (%rdi) WORD $0xc889 // movl %ecx, %eax @@ -1319,7 +1319,7 @@ LBB4_20: WORD $0xfa83; BYTE $0x63 // cmpl $99, %edx LONG $0x001f870f; WORD $0x0000 // ja LBB4_22, $31(%rip) WORD $0xd089 // movl %edx, %eax - LONG $0x090d8d48; WORD $0x00b5; BYTE $0x00 // leaq $46345(%rip), %rcx /* _Digits(%rip) */ + LONG $0x490d8d48; WORD $0x00b5; BYTE $0x00 // leaq $46409(%rip), %rcx /* _Digits(%rip) */ WORD $0x148a; BYTE $0x41 // movb (%rcx,%rax,2), %dl LONG $0x0141448a // movb $1(%rcx,%rax,2), %al WORD $0x1788 // movb %dl, (%rdi) @@ -1344,7 +1344,7 @@ LBB4_22: WORD $0xc96b; BYTE $0x64 // imull $100, %ecx, %ecx WORD $0xc829 // subl %ecx, %eax WORD $0xb70f; BYTE $0xc0 // movzwl %ax, %eax - LONG $0xb40d8d48; WORD $0x00b4; BYTE $0x00 // leaq $46260(%rip), %rcx /* _Digits(%rip) */ + LONG $0xf40d8d48; WORD $0x00b4; BYTE $0x00 // leaq $46324(%rip), %rcx /* _Digits(%rip) */ WORD $0x148a; BYTE $0x41 // movb (%rcx,%rax,2), %dl LONG $0x0141448a // movb $1(%rcx,%rax,2), %al WORD $0x5788; BYTE $0x01 // movb %dl, $1(%rdi) @@ -1356,7 +1356,7 @@ LBB4_24: WORD $0xc86b; BYTE $0x64 // imull $100, %eax, %ecx WORD $0xca29 // subl %ecx, %edx WORD $0xb70f; BYTE $0xc0 // movzwl %ax, %eax - LONG $0x8e058d4c; WORD $0x00b4; BYTE $0x00 // leaq $46222(%rip), %r8 /* _Digits(%rip) */ + LONG $0xce058d4c; WORD $0x00b4; BYTE $0x00 // leaq $46286(%rip), %r8 /* _Digits(%rip) */ LONG $0x400c8a41 // movb (%r8,%rax,2), %cl LONG $0x40448a41; BYTE $0x01 // movb $1(%r8,%rax,2), %al WORD $0x0f88 // movb %cl, (%rdi) @@ -1458,8 +1458,8 @@ _quote: WORD $0x8949; BYTE $0xf2 // movq %rsi, %r10 WORD $0x8b4c; BYTE $0x09 // movq (%rcx), %r9 LONG $0x01c0f641 // testb $1, %r8b - LONG $0xbe058d48; WORD $0x00da; BYTE $0x00 // leaq $55998(%rip), %rax /* __SingleQuoteTab(%rip) */ - LONG $0xb7058d4c; WORD $0x00ea; BYTE $0x00 // leaq $60087(%rip), %r8 /* __DoubleQuoteTab(%rip) */ + LONG $0xfe058d48; WORD $0x00da; BYTE $0x00 // leaq $56062(%rip), %rax /* __SingleQuoteTab(%rip) */ + LONG $0xf7058d4c; WORD $0x00ea; BYTE $0x00 // leaq $60151(%rip), %r8 /* __DoubleQuoteTab(%rip) */ LONG $0xc0440f4c // cmoveq %rax, %r8 QUAD $0x00000000f5048d48 // leaq (,%rsi,8), %rax WORD $0x3949; BYTE $0xc1 // cmpq %rax, %r9 @@ -1733,7 +1733,7 @@ LBB5_36: LBB5_37: WORD $0x8548; BYTE $0xdb // testq %rbx, %rbx WORD $0x8949; BYTE $0xd7 // movq %rdx, %r15 - LONG $0xa6358d4c; WORD $0x00d6; BYTE $0x00 // leaq $54950(%rip), %r14 /* __SingleQuoteTab(%rip) */ + LONG $0xe6358d4c; WORD $0x00d6; BYTE $0x00 // leaq $55014(%rip), %r14 /* __SingleQuoteTab(%rip) */ LONG $0x01758e0f; WORD $0x0000 // jle LBB5_62, $373(%rip) WORD $0x8948; BYTE $0xc1 // movq %rax, %rcx WORD $0x8548; BYTE $0xc0 // testq %rax, %rax @@ -1992,7 +1992,7 @@ LBB5_87: LONG $0xfffedbe9; BYTE $0xff // jmp LBB5_69, $-293(%rip) LBB5_88: - LONG $0xb40d8d4c; WORD $0x00f3; BYTE $0x00 // leaq $62388(%rip), %r9 /* __EscTab(%rip) */ + LONG $0xf40d8d4c; WORD $0x00f3; BYTE $0x00 // leaq $62452(%rip), %r9 /* __EscTab(%rip) */ QUAD $0xfffff83c156f7dc5 // vmovdqa $-1988(%rip), %ymm10 /* LCPI5_0(%rip) */ QUAD $0xfffff8540d6f7dc5 // vmovdqa $-1964(%rip), %ymm9 /* LCPI5_1(%rip) */ QUAD $0xfffff86c1d6f7dc5 // vmovdqa $-1940(%rip), %ymm11 /* LCPI5_2(%rip) */ @@ -2447,7 +2447,7 @@ LBB6_24: LBB6_26: WORD $0x0148; BYTE $0xda // addq %rbx, %rdx LONG $0x41b60f41; BYTE $0xff // movzbl $-1(%r9), %eax - LONG $0xc60d8d48; WORD $0x00ee; BYTE $0x00 // leaq $61126(%rip), %rcx /* __UnquoteTab(%rip) */ + LONG $0x060d8d48; WORD $0x00ef; BYTE $0x00 // leaq $61190(%rip), %rcx /* __UnquoteTab(%rip) */ WORD $0x048a; BYTE $0x08 // movb (%rax,%rcx), %al WORD $0xff3c // cmpb $-1, %al LONG $0x001b840f; WORD $0x0000 // je LBB6_29, $27(%rip) @@ -3043,7 +3043,7 @@ _html_escape: QUAD $0xffffff1a256ffdc5 // vmovdqa $-230(%rip), %ymm4 /* LCPI7_1(%rip) */ QUAD $0xffffff322d6ffdc5 // vmovdqa $-206(%rip), %ymm5 /* LCPI7_2(%rip) */ QUAD $0xffffff4a356ffdc5 // vmovdqa $-182(%rip), %ymm6 /* LCPI7_3(%rip) */ - LONG $0x533d8d4c; WORD $0x00e7; BYTE $0x00 // leaq $59219(%rip), %r15 /* __HtmlQuoteTab(%rip) */ + LONG $0x933d8d4c; WORD $0x00e7; BYTE $0x00 // leaq $59283(%rip), %r15 /* __HtmlQuoteTab(%rip) */ QUAD $0x000300000001bf48; WORD $0x0000 // movabsq $12884901889, %rdi LONG $0xd0658b4c // movq $-48(%rbp), %r12 LONG $0xc8458b4c // movq $-56(%rbp), %r8 @@ -3648,7 +3648,7 @@ LBB8_5: WORD $0xd348; BYTE $0xe7 // shlq %cl, %rdi WORD $0xc389 // movl %eax, %ebx LONG $0x04e3c148 // shlq $4, %rbx - LONG $0xe1358d4c; WORD $0x0069; BYTE $0x00 // leaq $27105(%rip), %r14 /* _POW10_M128_TAB(%rip) */ + LONG $0x21358d4c; WORD $0x006a; BYTE $0x00 // leaq $27169(%rip), %r14 /* _POW10_M128_TAB(%rip) */ WORD $0x8948; BYTE $0xf8 // movq %rdi, %rax LONG $0x3364f74a; BYTE $0x08 // mulq $8(%rbx,%r14) WORD $0x8949; BYTE $0xc7 // movq %rax, %r15 @@ -3792,7 +3792,7 @@ LBB9_5: LONG $0xd05d8948 // movq %rbx, $-48(%rbp) LONG $0x005a8e0f; WORD $0x0000 // jle LBB9_12, $90(%rip) WORD $0x3145; BYTE $0xe4 // xorl %r12d, %r12d - LONG $0x78358d4c; WORD $0x0093; BYTE $0x00 // leaq $37752(%rip), %r14 /* _POW_TAB(%rip) */ + LONG $0xb8358d4c; WORD $0x0093; BYTE $0x00 // leaq $37816(%rip), %r14 /* _POW_TAB(%rip) */ LONG $0x00002de9; BYTE $0x00 // jmp LBB9_8, $45(%rip) WORD $0x9090; BYTE $0x90 // .p2align 4, 0x90 @@ -3805,7 +3805,7 @@ LBB9_10: LBB9_11: WORD $0x894c; BYTE $0xff // movq %r15, %rdi WORD $0xde89 // movl %ebx, %esi - LONG $0x006305e8; BYTE $0x00 // callq _right_shift, $25349(%rip) + LONG $0x006345e8; BYTE $0x00 // callq _right_shift, $25413(%rip) LBB9_7: WORD $0x0141; BYTE $0xdc // addl %ebx, %r12d @@ -3822,7 +3822,7 @@ LBB9_8: LONG $0xffffd3e9; BYTE $0xff // jmp LBB9_7, $-45(%rip) LBB9_12: - LONG $0x21358d4c; WORD $0x0093; BYTE $0x00 // leaq $37665(%rip), %r14 /* _POW_TAB(%rip) */ + LONG $0x61358d4c; WORD $0x0093; BYTE $0x00 // leaq $37729(%rip), %r14 /* _POW_TAB(%rip) */ LONG $0x00002de9; BYTE $0x00 // jmp LBB9_14, $45(%rip) LBB9_18: @@ -3834,7 +3834,7 @@ LBB9_18: LBB9_20: WORD $0x894c; BYTE $0xff // movq %r15, %rdi WORD $0xde89 // movl %ebx, %esi - LONG $0x0060b6e8; BYTE $0x00 // callq _left_shift, $24758(%rip) + LONG $0x0060f6e8; BYTE $0x00 // callq _left_shift, $24822(%rip) LONG $0x14478b41 // movl $20(%r15), %eax LBB9_13: @@ -3877,7 +3877,7 @@ LBB9_21: LBB9_25: WORD $0x894c; BYTE $0xff // movq %r15, %rdi LONG $0x00003cbe; BYTE $0x00 // movl $60, %esi - LONG $0x006213e8; BYTE $0x00 // callq _right_shift, $25107(%rip) + LONG $0x006253e8; BYTE $0x00 // callq _right_shift, $25171(%rip) LONG $0x3cc48341 // addl $60, %r12d LONG $0x88fc8341 // cmpl $-120, %r12d LONG $0xffe58c0f; WORD $0xffff // jl LBB9_25, $-27(%rip) @@ -3903,7 +3903,7 @@ LBB9_31: WORD $0xf741; BYTE $0xdc // negl %r12d WORD $0x894c; BYTE $0xff // movq %r15, %rdi WORD $0x8944; BYTE $0xe6 // movl %r12d, %esi - LONG $0x0061c0e8; BYTE $0x00 // callq _right_shift, $25024(%rip) + LONG $0x006200e8; BYTE $0x00 // callq _right_shift, $25088(%rip) LONG $0xfc02be41; WORD $0xffff // movl $-1022, %r14d LBB9_32: @@ -3911,7 +3911,7 @@ LBB9_32: LONG $0x000d840f; WORD $0x0000 // je LBB9_34, $13(%rip) WORD $0x894c; BYTE $0xff // movq %r15, %rdi LONG $0x000035be; BYTE $0x00 // movl $53, %esi - LONG $0x005fb2e8; BYTE $0x00 // callq _left_shift, $24498(%rip) + LONG $0x005ff2e8; BYTE $0x00 // callq _left_shift, $24562(%rip) LBB9_34: LONG $0x14478b41 // movl $20(%r15), %eax @@ -5136,7 +5136,7 @@ LCPI14_2: _advance_string: WORD $0xc1f6; BYTE $0x20 // testb $32, %cl LONG $0x0005850f; WORD $0x0000 // jne LBB14_2, $5(%rip) - LONG $0x0052f2e9; BYTE $0x00 // jmp _advance_string_default, $21234(%rip) + LONG $0x005332e9; BYTE $0x00 // jmp _advance_string_default, $21298(%rip) LBB14_2: BYTE $0x55 // pushq %rbp @@ -5776,7 +5776,7 @@ LBB15_62: WORD $0xfe83; BYTE $0x17 // cmpl $23, %esi LONG $0x00a48c0f; WORD $0x0000 // jl LBB15_73, $164(%rip) WORD $0x468d; BYTE $0xea // leal $-22(%rsi), %eax - LONG $0xe00d8d48; WORD $0x00eb; BYTE $0x00 // leaq $60384(%rip), %rcx /* _P10_TAB(%rip) */ + LONG $0x200d8d48; WORD $0x00ec; BYTE $0x00 // leaq $60448(%rip), %rcx /* _P10_TAB(%rip) */ LONG $0x0459fbc5; BYTE $0xc1 // vmulsd (%rcx,%rax,8), %xmm0, %xmm0 LONG $0x4511fbc5; BYTE $0xc8 // vmovsd %xmm0, $-56(%rbp) LONG $0x000016b8; BYTE $0x00 // movl $22, %eax @@ -5798,7 +5798,7 @@ LBB15_70: WORD $0xfe83; BYTE $0xea // cmpl $-22, %esi LONG $0x0094820f; WORD $0x0000 // jb LBB15_77, $148(%rip) WORD $0xdef7 // negl %esi - LONG $0x97058d48; WORD $0x00eb; BYTE $0x00 // leaq $60311(%rip), %rax /* _P10_TAB(%rip) */ + LONG $0xd7058d48; WORD $0x00eb; BYTE $0x00 // leaq $60375(%rip), %rax /* _P10_TAB(%rip) */ LONG $0x045efbc5; BYTE $0xf0 // vdivsd (%rax,%rsi,8), %xmm0, %xmm0 LONG $0x4511fbc5; BYTE $0xc8 // vmovsd %xmm0, $-56(%rbp) LONG $0x0000dee9; BYTE $0x00 // jmp LBB15_81, $222(%rip) @@ -5829,7 +5829,7 @@ LBB15_74: LONG $0xc82ef9c5 // vucomisd %xmm0, %xmm1 LONG $0x0018870f; WORD $0x0000 // ja LBB15_77, $24(%rip) WORD $0xc089 // movl %eax, %eax - LONG $0x1b0d8d48; WORD $0x00eb; BYTE $0x00 // leaq $60187(%rip), %rcx /* _P10_TAB(%rip) */ + LONG $0x5b0d8d48; WORD $0x00eb; BYTE $0x00 // leaq $60251(%rip), %rcx /* _P10_TAB(%rip) */ LONG $0x0459fbc5; BYTE $0xc1 // vmulsd (%rcx,%rax,8), %xmm0, %xmm0 LONG $0x4511fbc5; BYTE $0xc8 // vmovsd %xmm0, $-56(%rbp) LONG $0x000062e9; BYTE $0x00 // jmp LBB15_81, $98(%rip) @@ -8373,7 +8373,7 @@ _get_by_path: WORD $0x8949; BYTE $0xfc // movq %rdi, %r12 LONG $0x08428b48 // movq $8(%rdx), %rax WORD $0x8548; BYTE $0xc0 // testq %rax, %rax - LONG $0x062d840f; WORD $0x0000 // je LBB29_87, $1581(%rip) + LONG $0x064d840f; WORD $0x0000 // je LBB29_88, $1613(%rip) WORD $0x8b4c; BYTE $0x3a // movq (%rdx), %r15 LONG $0x04e0c148 // shlq $4, %rax WORD $0x014c; BYTE $0xf8 // addq %r15, %rax @@ -8390,7 +8390,7 @@ LBB29_2: LONG $0x05a1850f; WORD $0x0000 // jne LBB29_81, $1441(%rip) WORD $0x7b3c // cmpb $123, %al LONG $0xc87d894c // movq %r15, $-56(%rbp) - LONG $0x0615850f; WORD $0x0000 // jne LBB29_89, $1557(%rip) + LONG $0x0645850f; WORD $0x0000 // jne LBB29_92, $1605(%rip) LONG $0x90909090; BYTE $0x90 // .p2align 4, 0x90 LBB29_4: @@ -8398,7 +8398,7 @@ LBB29_4: WORD $0x894c; BYTE $0xf6 // movq %r14, %rsi LONG $0xffd085e8; BYTE $0xff // callq _advance_ns, $-12155(%rip) WORD $0x223c // cmpb $34, %al - LONG $0x05fd850f; WORD $0x0000 // jne LBB29_89, $1533(%rip) + LONG $0x060e850f; WORD $0x0000 // jne LBB29_89, $1550(%rip) LONG $0x08478b49 // movq $8(%r15), %rax WORD $0x8b4c; BYTE $0x28 // movq (%rax), %r13 LONG $0x08788b4c // movq $8(%rax), %r15 @@ -8407,9 +8407,9 @@ LBB29_4: WORD $0x894c; BYTE $0xe7 // movq %r12, %rdi WORD $0x8948; BYTE $0xde // movq %rbx, %rsi LONG $0xc0558d48 // leaq $-64(%rbp), %rdx - LONG $0x002738e8; BYTE $0x00 // callq _advance_string_default, $10040(%rip) + LONG $0x002778e8; BYTE $0x00 // callq _advance_string_default, $10104(%rip) WORD $0x8548; BYTE $0xc0 // testq %rax, %rax - LONG $0x05e8880f; WORD $0x0000 // js LBB29_91, $1512(%rip) + LONG $0x0618880f; WORD $0x0000 // js LBB29_94, $1560(%rip) WORD $0x8949; BYTE $0x06 // movq %rax, (%r14) LONG $0xc04d8b48 // movq $-64(%rbp), %rcx LONG $0xfff98348 // cmpq $-1, %rcx @@ -8531,7 +8531,7 @@ LBB29_31: LONG $0x034b8e0f; WORD $0x0000 // jle LBB29_80, $843(%rip) WORD $0x3949; BYTE $0xda // cmpq %rbx, %r10 LONG $0x0342860f; WORD $0x0000 // jbe LBB29_80, $834(%rip) - LONG $0xf43d8d4c; WORD $0x009c; BYTE $0x00 // leaq $40180(%rip), %r15 /* __UnquoteTab(%rip) */ + LONG $0x343d8d4c; WORD $0x009d; BYTE $0x00 // leaq $40244(%rip), %r15 /* __UnquoteTab(%rip) */ LBB29_34: WORD $0x038a // movb (%rbx), %al @@ -8541,13 +8541,13 @@ LBB29_34: WORD $0x2948; BYTE $0xda // subq %rbx, %rdx LONG $0xffc0c748; WORD $0xffff; BYTE $0xff // movq $-1, %rax WORD $0x8548; BYTE $0xd2 // testq %rdx, %rdx - LONG $0x04538e0f; WORD $0x0000 // jle LBB29_95, $1107(%rip) + LONG $0x04838e0f; WORD $0x0000 // jle LBB29_98, $1155(%rip) LONG $0x014bb60f // movzbl $1(%rbx), %ecx LONG $0x390c8a42 // movb (%rcx,%r15), %cl WORD $0xf980; BYTE $0xff // cmpb $-1, %cl LONG $0x003c840f; WORD $0x0000 // je LBB29_41, $60(%rip) WORD $0xc984 // testb %cl, %cl - LONG $0x0428840f; WORD $0x0000 // je LBB29_93, $1064(%rip) + LONG $0x0458840f; WORD $0x0000 // je LBB29_96, $1112(%rip) WORD $0x4d88; BYTE $0xd0 // movb %cl, $-48(%rbp) LONG $0x02c38348 // addq $2, %rbx LONG $0x000001ba; BYTE $0x00 // movl $1, %edx @@ -8565,18 +8565,18 @@ LBB29_39: LBB29_41: LONG $0x03fa8348 // cmpq $3, %rdx - LONG $0x03f98e0f; WORD $0x0000 // jle LBB29_94, $1017(%rip) + LONG $0x04298e0f; WORD $0x0000 // jle LBB29_97, $1065(%rip) WORD $0x438b; BYTE $0x02 // movl $2(%rbx), %eax WORD $0xc189 // movl %eax, %ecx WORD $0xd1f7 // notl %ecx LONG $0xcfd0b88d; WORD $0xcfcf // leal $-808464432(%rax), %edi LONG $0x8080e181; WORD $0x8080 // andl $-2139062144, %ecx WORD $0xf985 // testl %edi, %ecx - LONG $0x03bf850f; WORD $0x0000 // jne LBB29_92, $959(%rip) + LONG $0x03ef850f; WORD $0x0000 // jne LBB29_95, $1007(%rip) LONG $0x1919b88d; WORD $0x1919 // leal $421075225(%rax), %edi WORD $0xc709 // orl %eax, %edi LONG $0x8080c7f7; WORD $0x8080 // testl $-2139062144, %edi - LONG $0x03ab850f; WORD $0x0000 // jne LBB29_92, $939(%rip) + LONG $0x03db850f; WORD $0x0000 // jne LBB29_95, $987(%rip) WORD $0xc789 // movl %eax, %edi LONG $0x7f7fe781; WORD $0x7f7f // andl $2139062143, %edi LONG $0xc0c0c0be; BYTE $0xc0 // movl $-1061109568, %esi @@ -8584,13 +8584,13 @@ LBB29_41: LONG $0x468f8d44; WORD $0x4646; BYTE $0x46 // leal $1179010630(%rdi), %r9d WORD $0xce21 // andl %ecx, %esi WORD $0x8544; BYTE $0xce // testl %r9d, %esi - LONG $0x038a850f; WORD $0x0000 // jne LBB29_92, $906(%rip) + LONG $0x03ba850f; WORD $0x0000 // jne LBB29_95, $954(%rip) LONG $0xe0e0e0be; BYTE $0xe0 // movl $-522133280, %esi WORD $0xfe29 // subl %edi, %esi LONG $0x3939c781; WORD $0x3939 // addl $960051513, %edi WORD $0xf121 // andl %esi, %ecx WORD $0xf985 // testl %edi, %ecx - LONG $0x0373850f; WORD $0x0000 // jne LBB29_92, $883(%rip) + LONG $0x03a3850f; WORD $0x0000 // jne LBB29_95, $931(%rip) WORD $0xc80f // bswapl %eax WORD $0xc189 // movl %eax, %ecx WORD $0xe9c1; BYTE $0x04 // shrl $4, %ecx @@ -8677,13 +8677,13 @@ LBB29_65: LBB29_66: LONG $0x06fa8348 // cmpq $6, %rdx - LONG $0x02938c0f; WORD $0x0000 // jl LBB29_97, $659(%rip) + LONG $0x02c38c0f; WORD $0x0000 // jl LBB29_100, $707(%rip) LONG $0x00dbff3d; BYTE $0x00 // cmpl $56319, %eax - LONG $0x0288870f; WORD $0x0000 // ja LBB29_97, $648(%rip) + LONG $0x02b8870f; WORD $0x0000 // ja LBB29_100, $696(%rip) LONG $0x5c398041 // cmpb $92, (%r9) - LONG $0x027e850f; WORD $0x0000 // jne LBB29_97, $638(%rip) + LONG $0x02ae850f; WORD $0x0000 // jne LBB29_100, $686(%rip) LONG $0x75077b80 // cmpb $117, $7(%rbx) - LONG $0x0274850f; WORD $0x0000 // jne LBB29_97, $628(%rip) + LONG $0x02a4850f; WORD $0x0000 // jne LBB29_100, $676(%rip) LONG $0x084b8d4c // leaq $8(%rbx), %r9 WORD $0x538b; BYTE $0x08 // movl $8(%rbx), %edx WORD $0xd189 // movl %edx, %ecx @@ -8691,11 +8691,11 @@ LBB29_66: LONG $0xcfd0b28d; WORD $0xcfcf // leal $-808464432(%rdx), %esi LONG $0x8080e181; WORD $0x8080 // andl $-2139062144, %ecx WORD $0xf185 // testl %esi, %ecx - LONG $0x0249850f; WORD $0x0000 // jne LBB29_96, $585(%rip) + LONG $0x0279850f; WORD $0x0000 // jne LBB29_99, $633(%rip) LONG $0x1919b28d; WORD $0x1919 // leal $421075225(%rdx), %esi WORD $0xd609 // orl %edx, %esi LONG $0x8080c6f7; WORD $0x8080 // testl $-2139062144, %esi - LONG $0x0235850f; WORD $0x0000 // jne LBB29_96, $565(%rip) + LONG $0x0265850f; WORD $0x0000 // jne LBB29_99, $613(%rip) WORD $0xd789 // movl %edx, %edi LONG $0x7f7fe781; WORD $0x7f7f // andl $2139062143, %edi LONG $0xc0c0c0be; BYTE $0xc0 // movl $-1061109568, %esi @@ -8703,13 +8703,13 @@ LBB29_66: LONG $0x46bf8d44; WORD $0x4646; BYTE $0x46 // leal $1179010630(%rdi), %r15d WORD $0xce21 // andl %ecx, %esi WORD $0x8544; BYTE $0xfe // testl %r15d, %esi - LONG $0x0214850f; WORD $0x0000 // jne LBB29_96, $532(%rip) + LONG $0x0244850f; WORD $0x0000 // jne LBB29_99, $580(%rip) LONG $0xe0e0e0be; BYTE $0xe0 // movl $-522133280, %esi WORD $0xfe29 // subl %edi, %esi LONG $0x3939c781; WORD $0x3939 // addl $960051513, %edi WORD $0xf121 // andl %esi, %ecx WORD $0xf985 // testl %edi, %ecx - LONG $0x01fd850f; WORD $0x0000 // jne LBB29_96, $509(%rip) + LONG $0x022d850f; WORD $0x0000 // jne LBB29_99, $557(%rip) WORD $0xca0f // bswapl %edx WORD $0xd189 // movl %edx, %ecx WORD $0xe9c1; BYTE $0x04 // shrl $4, %ecx @@ -8724,7 +8724,7 @@ LBB29_66: WORD $0xca89 // movl %ecx, %edx LONG $0x0000e281; WORD $0x00fc // andl $16515072, %edx LONG $0x0000fa81; WORD $0x00dc // cmpl $14417920, %edx - LONG $0x01d4850f; WORD $0x0000 // jne LBB29_97, $468(%rip) + LONG $0x0204850f; WORD $0x0000 // jne LBB29_100, $516(%rip) WORD $0xca89 // movl %ecx, %edx WORD $0xeac1; BYTE $0x08 // shrl $8, %edx LONG $0xff00e281; WORD $0x0000 // andl $65280, %edx @@ -8751,7 +8751,7 @@ LBB29_66: WORD $0x4588; BYTE $0xd3 // movb %al, $-45(%rbp) LONG $0x0cc38348 // addq $12, %rbx LONG $0x000004ba; BYTE $0x00 // movl $4, %edx - LONG $0xe63d8d4c; WORD $0x0099; BYTE $0x00 // leaq $39398(%rip), %r15 /* __UnquoteTab(%rip) */ + LONG $0x263d8d4c; WORD $0x009a; BYTE $0x00 // leaq $39462(%rip), %r15 /* __UnquoteTab(%rip) */ LONG $0x15748d48; BYTE $0xd0 // leaq $-48(%rbp,%rdx), %rsi WORD $0x394d; BYTE $0xdd // cmpq %r11, %r13 LONG $0xfe54820f; WORD $0xffff // jb LBB29_52, $-428(%rip) @@ -8788,9 +8788,9 @@ LBB29_77: WORD $0xf8c5; BYTE $0x77 // vzeroupper LONG $0xffcb3ce8; BYTE $0xff // callq _advance_ns, $-13508(%rip) WORD $0x3a3c // cmpb $58, %al - LONG $0x00b4850f; WORD $0x0000 // jne LBB29_89, $180(%rip) + LONG $0x00e4850f; WORD $0x0000 // jne LBB29_92, $228(%rip) WORD $0x8548; BYTE $0xdb // testq %rbx, %rbx - LONG $0x007b850f; WORD $0x0000 // jne LBB29_86, $123(%rip) + LONG $0x009b850f; WORD $0x0000 // jne LBB29_87, $155(%rip) WORD $0x894c; BYTE $0xe7 // movq %r12, %rdi WORD $0x894c; BYTE $0xf6 // movq %r14, %rsi LONG $0xffef30e8; BYTE $0xff // callq _skip_one_fast, $-4304(%rip) @@ -8799,56 +8799,70 @@ LBB29_77: LONG $0xffcb15e8; BYTE $0xff // callq _advance_ns, $-13547(%rip) WORD $0x2c3c // cmpb $44, %al LONG $0xfa7d840f; WORD $0xffff // je LBB29_4, $-1411(%rip) - LONG $0x000079e9; BYTE $0x00 // jmp LBB29_88, $121(%rip) + LONG $0x000099e9; BYTE $0x00 // jmp LBB29_89, $153(%rip) QUAD $0x9090909090909090 // .p2align 4, 0x90 LBB29_81: - WORD $0x5b3c // cmpb $91, %al - LONG $0x0078850f; WORD $0x0000 // jne LBB29_89, $120(%rip) - WORD $0xf980; BYTE $0x02 // cmpb $2, %cl - LONG $0x006f850f; WORD $0x0000 // jne LBB29_89, $111(%rip) - LONG $0x08478b49 // movq $8(%r15), %rax - WORD $0x8b48; BYTE $0x18 // movq (%rax), %rbx - WORD $0xff48; BYTE $0xc3 // incq %rbx - LONG $0x90909090; BYTE $0x90 // .p2align 4, 0x90 + WORD $0x5b3c // cmpb $91, %al + LONG $0x00a8850f; WORD $0x0000 // jne LBB29_92, $168(%rip) + WORD $0xf980; BYTE $0x02 // cmpb $2, %cl + LONG $0x009f850f; WORD $0x0000 // jne LBB29_92, $159(%rip) + LONG $0x08478b49 // movq $8(%r15), %rax + WORD $0x8b48; BYTE $0x18 // movq (%rax), %rbx + WORD $0x894c; BYTE $0xe7 // movq %r12, %rdi + WORD $0x894c; BYTE $0xf6 // movq %r14, %rsi + LONG $0xffcadde8; BYTE $0xff // callq _advance_ns, $-13603(%rip) + WORD $0x5d3c // cmpb $93, %al + LONG $0x006e840f; WORD $0x0000 // je LBB29_90, $110(%rip) + WORD $0xff49; BYTE $0x0e // decq (%r14) + WORD $0xff48; BYTE $0xc3 // incq %rbx + QUAD $0x9090909090909090; LONG $0x90909090; WORD $0x9090; BYTE $0x90 // .p2align 4, 0x90 -LBB29_84: +LBB29_85: WORD $0xff48; BYTE $0xcb // decq %rbx WORD $0x8548; BYTE $0xdb // testq %rbx, %rbx - LONG $0x00248e0f; WORD $0x0000 // jle LBB29_86, $36(%rip) + LONG $0x00248e0f; WORD $0x0000 // jle LBB29_87, $36(%rip) WORD $0x894c; BYTE $0xe7 // movq %r12, %rdi WORD $0x894c; BYTE $0xf6 // movq %r14, %rsi - LONG $0xffeed9e8; BYTE $0xff // callq _skip_one_fast, $-4391(%rip) + LONG $0xffeeb9e8; BYTE $0xff // callq _skip_one_fast, $-4423(%rip) WORD $0x894c; BYTE $0xe7 // movq %r12, %rdi WORD $0x894c; BYTE $0xf6 // movq %r14, %rsi - LONG $0xffcabee8; BYTE $0xff // callq _advance_ns, $-13634(%rip) + LONG $0xffca9ee8; BYTE $0xff // callq _advance_ns, $-13666(%rip) WORD $0x2c3c // cmpb $44, %al - LONG $0xffd6840f; WORD $0xffff // je LBB29_84, $-42(%rip) - LONG $0x000022e9; BYTE $0x00 // jmp LBB29_88, $34(%rip) + LONG $0xffd6840f; WORD $0xffff // je LBB29_85, $-42(%rip) + LONG $0x000039e9; BYTE $0x00 // jmp LBB29_91, $57(%rip) BYTE $0x90 // .p2align 4, 0x90 -LBB29_86: +LBB29_87: LONG $0x10c78349 // addq $16, %r15 LONG $0xb8458b48 // movq $-72(%rbp), %rax WORD $0x3949; BYTE $0xc7 // cmpq %rax, %r15 - LONG $0xf9e1850f; WORD $0xffff // jne LBB29_2, $-1567(%rip) - -LBB29_87: - WORD $0x894c; BYTE $0xe7 // movq %r12, %rdi - WORD $0x894c; BYTE $0xf6 // movq %r14, %rsi - LONG $0xffeea4e8; BYTE $0xff // callq _skip_one_fast, $-4444(%rip) - LONG $0x000019e9; BYTE $0x00 // jmp LBB29_90, $25(%rip) + LONG $0xf9c1850f; WORD $0xffff // jne LBB29_2, $-1599(%rip) LBB29_88: - WORD $0xff49; BYTE $0x0e // decq (%r14) - LONG $0xdfc0c748; WORD $0xffff; BYTE $0xff // movq $-33, %rax - LONG $0x00000ae9; BYTE $0x00 // jmp LBB29_90, $10(%rip) + WORD $0x894c; BYTE $0xe7 // movq %r12, %rdi + WORD $0x894c; BYTE $0xf6 // movq %r14, %rsi + LONG $0xffee84e8; BYTE $0xff // callq _skip_one_fast, $-4476(%rip) + LONG $0x000029e9; BYTE $0x00 // jmp LBB29_93, $41(%rip) LBB29_89: + WORD $0x7d3c // cmpb $125, %al + LONG $0x0017850f; WORD $0x0000 // jne LBB29_92, $23(%rip) + +LBB29_90: + WORD $0xff49; BYTE $0x0e // decq (%r14) + LONG $0xdfc0c748; WORD $0xffff; BYTE $0xff // movq $-33, %rax + LONG $0x000012e9; BYTE $0x00 // jmp LBB29_93, $18(%rip) + +LBB29_91: + WORD $0x5d3c // cmpb $93, %al + LONG $0xffe9840f; WORD $0xffff // je LBB29_90, $-23(%rip) + +LBB29_92: WORD $0xff49; BYTE $0x0e // decq (%r14) LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax -LBB29_90: +LBB29_93: LONG $0x28c48348 // addq $40, %rsp BYTE $0x5b // popq %rbx WORD $0x5c41 // popq %r12 @@ -8858,40 +8872,40 @@ LBB29_90: BYTE $0x5d // popq %rbp BYTE $0xc3 // retq -LBB29_91: +LBB29_94: LONG $0x24448b49; BYTE $0x08 // movq $8(%r12), %rax WORD $0x8949; BYTE $0x06 // movq %rax, (%r14) LONG $0xffc0c748; WORD $0xffff; BYTE $0xff // movq $-1, %rax - LONG $0xffffdde9; BYTE $0xff // jmp LBB29_90, $-35(%rip) - -LBB29_92: - LONG $0x02c38348 // addq $2, %rbx - LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax - LONG $0x000012e9; BYTE $0x00 // jmp LBB29_95, $18(%rip) - -LBB29_93: - WORD $0xff48; BYTE $0xc3 // incq %rbx - LONG $0xfdc0c748; WORD $0xffff; BYTE $0xff // movq $-3, %rax - LONG $0x000003e9; BYTE $0x00 // jmp LBB29_95, $3(%rip) - -LBB29_94: - WORD $0xff48; BYTE $0xc3 // incq %rbx + LONG $0xffffdde9; BYTE $0xff // jmp LBB29_93, $-35(%rip) LBB29_95: - WORD $0x294c; BYTE $0xc3 // subq %r8, %rbx - WORD $0x8949; BYTE $0x1e // movq %rbx, (%r14) - LONG $0xffffb0e9; BYTE $0xff // jmp LBB29_90, $-80(%rip) + LONG $0x02c38348 // addq $2, %rbx + LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax + LONG $0x000012e9; BYTE $0x00 // jmp LBB29_98, $18(%rip) LBB29_96: - LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax - LONG $0x000007e9; BYTE $0x00 // jmp LBB29_98, $7(%rip) + WORD $0xff48; BYTE $0xc3 // incq %rbx + LONG $0xfdc0c748; WORD $0xffff; BYTE $0xff // movq $-3, %rax + LONG $0x000003e9; BYTE $0x00 // jmp LBB29_98, $3(%rip) LBB29_97: - LONG $0xfcc0c748; WORD $0xffff; BYTE $0xff // movq $-4, %rax + WORD $0xff48; BYTE $0xc3 // incq %rbx LBB29_98: + WORD $0x294c; BYTE $0xc3 // subq %r8, %rbx + WORD $0x8949; BYTE $0x1e // movq %rbx, (%r14) + LONG $0xffffb0e9; BYTE $0xff // jmp LBB29_93, $-80(%rip) + +LBB29_99: + LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax + LONG $0x000007e9; BYTE $0x00 // jmp LBB29_101, $7(%rip) + +LBB29_100: + LONG $0xfcc0c748; WORD $0xffff; BYTE $0xff // movq $-4, %rax + +LBB29_101: WORD $0x894c; BYTE $0xcb // movq %r9, %rbx - LONG $0xffffdae9; BYTE $0xff // jmp LBB29_95, $-38(%rip) + LONG $0xffffdae9; BYTE $0xff // jmp LBB29_98, $-38(%rip) QUAD $0x9090909090909090; WORD $0x9090; BYTE $0x90 // .p2align 4, 0x90 _validate_utf8: @@ -9089,10 +9103,10 @@ LBB30_32: LONG $0xffffe4e9; BYTE $0xff // jmp LBB30_37, $-28(%rip) LBB30_17: - WORD $0x8948; BYTE $0x3e // movq %rdi, (%rsi) - LONG $0xffc0c748; WORD $0xffff; BYTE $0xff // movq $-1, %rax - LONG $0xffffd5e9; BYTE $0xff // jmp LBB30_37, $-43(%rip) - LONG $0x00000000; WORD $0x0000 // .p2align 5, 0x00 + WORD $0x8948; BYTE $0x3e // movq %rdi, (%rsi) + LONG $0xffc0c748; WORD $0xffff; BYTE $0xff // movq $-1, %rax + LONG $0xffffd5e9; BYTE $0xff // jmp LBB30_37, $-43(%rip) + QUAD $0x0000000000000000; QUAD $0x0000000000000000; LONG $0x00000000; WORD $0x0000 // .p2align 5, 0x00 LCPI31_0: QUAD $0x0f0f0f0f0f0f0f0f; QUAD $0x0f0f0f0f0f0f0f0f // .space 16, '\x0f\x0f\x0f\x0f\x0f\x0f\x0f\x0f\x0f\x0f\x0f\x0f\x0f\x0f\x0f\x0f' @@ -12891,7 +12905,7 @@ _Digits: QUAD $0x3939383937393639 // .ascii 8, '96979899' QUAD $0x0000000000000000 // .p2align 4, 0x00 -_LB_5f525b1b: // _pow10_ceil_sig.g +_LB_e1d618e2: // _pow10_ceil_sig.g QUAD $0xff77b1fcbebcdc4f // .quad -38366372719436721 QUAD $0x25e8e89c13bb0f7b // .quad 2731688931043774331 QUAD $0x9faacf3df73609b1 // .quad -6941508010590729807 @@ -15546,7 +15560,7 @@ _P10_TAB: QUAD $0x4480f0cf064dd592 // .quad 0x4480f0cf064dd592 QUAD $0x0000000000000000 // .p2align 4, 0x00 -_LB_6cbaa151: // _pow10_ceil_sig_f32.g +_LB_5d6b68e6: // _pow10_ceil_sig_f32.g QUAD $0x81ceb32c4b43fcf5 // .quad -9093133594791772939 QUAD $0xa2425ff75e14fc32 // .quad -6754730975062328270 QUAD $0xcad2f7f5359a3b3f // .quad -3831727700400522433 @@ -15637,7 +15651,7 @@ _entry: _f32toa: MOVQ out+0(FP), DI MOVSD val+8(FP), X0 - CALL ·__native_entry__+34560(SB) // _f32toa + CALL ·__native_entry__+34624(SB) // _f32toa MOVQ AX, ret+16(FP) RET @@ -15955,7 +15969,7 @@ _validate_utf8: MOVQ s+0(FP), DI MOVQ p+8(FP), SI MOVQ m+16(FP), DX - CALL ·__native_entry__+31008(SB) // _validate_utf8 + CALL ·__native_entry__+31056(SB) // _validate_utf8 MOVQ AX, ret+24(FP) RET @@ -15974,7 +15988,7 @@ _entry: _validate_utf8_fast: MOVQ s+0(FP), DI - CALL ·__native_entry__+31952(SB) // _validate_utf8_fast + CALL ·__native_entry__+32016(SB) // _validate_utf8_fast MOVQ AX, ret+8(FP) RET diff --git a/internal/native/avx2/native_subr_amd64.go b/internal/native/avx2/native_subr_amd64.go index 0563533..930c21e 100644 --- a/internal/native/avx2/native_subr_amd64.go +++ b/internal/native/avx2/native_subr_amd64.go @@ -9,7 +9,7 @@ package avx2 func __native_entry__() uintptr var ( - _subr__f32toa = __native_entry__() + 34560 + _subr__f32toa = __native_entry__() + 34624 _subr__f64toa = __native_entry__() + 736 _subr__get_by_path = __native_entry__() + 29232 _subr__html_escape = __native_entry__() + 10944 @@ -24,8 +24,8 @@ var ( _subr__u64toa = __native_entry__() + 4144 _subr__unquote = __native_entry__() + 8336 _subr__validate_one = __native_entry__() + 26064 - _subr__validate_utf8 = __native_entry__() + 31008 - _subr__validate_utf8_fast = __native_entry__() + 31952 + _subr__validate_utf8 = __native_entry__() + 31056 + _subr__validate_utf8_fast = __native_entry__() + 32016 _subr__value = __native_entry__() + 15472 _subr__vnumber = __native_entry__() + 19280 _subr__vsigned = __native_entry__() + 20896 diff --git a/internal/native/sse/native_amd64.s b/internal/native/sse/native_amd64.s index 4262883..727effc 100644 --- a/internal/native/sse/native_amd64.s +++ b/internal/native/sse/native_amd64.s @@ -198,7 +198,7 @@ LBB1_6: LONG $0x000124b8; BYTE $0x00 // movl $292, %eax WORD $0x2944; BYTE $0xc8 // subl %r9d, %eax LONG $0x04e0c148 // shlq $4, %rax - LONG $0x0a158d48; WORD $0x00b2; BYTE $0x00 // leaq $45578(%rip), %rdx /* _pow10_ceil_sig.g(%rip) */ + LONG $0x3a158d48; WORD $0x00b2; BYTE $0x00 // leaq $45626(%rip), %rdx /* _pow10_ceil_sig.g(%rip) */ LONG $0x101c8b4c // movq (%rax,%rdx), %r11 LONG $0x106c8b4c; BYTE $0x08 // movq $8(%rax,%rdx), %r13 WORD $0xc1fe // incb %cl @@ -380,7 +380,7 @@ LBB1_51: LONG $0x009d820f; WORD $0x0000 // jb LBB1_64, $157(%rip) LONG $0x01678d4d // leaq $1(%r15), %r12 WORD $0x894c; BYTE $0xe6 // movq %r12, %rsi - LONG $0x00797fe8; BYTE $0x00 // callq _format_significand, $31103(%rip) + LONG $0x0079afe8; BYTE $0x00 // callq _format_significand, $31151(%rip) WORD $0x8948; BYTE $0xc3 // movq %rax, %rbx QUAD $0x9090909090909090; LONG $0x90909090 // .p2align 4, 0x90 @@ -415,7 +415,7 @@ LBB1_60: WORD $0x0c8d; BYTE $0x12 // leal (%rdx,%rdx), %ecx WORD $0x0c8d; BYTE $0x89 // leal (%rcx,%rcx,4), %ecx WORD $0xc829 // subl %ecx, %eax - LONG $0xe40d8d48; WORD $0x00ad; BYTE $0x00 // leaq $44516(%rip), %rcx /* _Digits(%rip) */ + LONG $0x140d8d48; WORD $0x00ae; BYTE $0x00 // leaq $44564(%rip), %rcx /* _Digits(%rip) */ LONG $0x510cb70f // movzwl (%rcx,%rdx,2), %ecx LONG $0x024b8966 // movw %cx, $2(%rbx) WORD $0x300c // orb $48, %al @@ -497,7 +497,7 @@ LBB1_61: WORD $0xf883; BYTE $0x0a // cmpl $10, %eax LONG $0x00878c0f; WORD $0x0000 // jl LBB1_63, $135(%rip) WORD $0xc089 // movl %eax, %eax - LONG $0x9d0d8d48; WORD $0x00ac; BYTE $0x00 // leaq $44189(%rip), %rcx /* _Digits(%rip) */ + LONG $0xcd0d8d48; WORD $0x00ac; BYTE $0x00 // leaq $44237(%rip), %rcx /* _Digits(%rip) */ LONG $0x4104b70f // movzwl (%rcx,%rax,2), %eax LONG $0x02438966 // movw %ax, $2(%rbx) LONG $0x04c38348 // addq $4, %rbx @@ -686,7 +686,7 @@ LBB1_77: LBB1_78: WORD $0x894c; BYTE $0xfe // movq %r15, %rsi - LONG $0x007489e8; BYTE $0x00 // callq _format_significand, $29833(%rip) + LONG $0x0074b9e8; BYTE $0x00 // callq _format_significand, $29881(%rip) QUAD $0x9090909090909090; BYTE $0x90 // .p2align 4, 0x90 LBB1_79: @@ -910,7 +910,7 @@ LBB2_2: WORD $0xcf6b; BYTE $0x64 // imull $100, %edi, %ecx WORD $0xc829 // subl %ecx, %eax LONG $0xd8b70f44 // movzwl %ax, %r11d - LONG $0x600d8d48; WORD $0x00a6; BYTE $0x00 // leaq $42592(%rip), %rcx /* _Digits(%rip) */ + LONG $0x900d8d48; WORD $0x00a6; BYTE $0x00 // leaq $42640(%rip), %rcx /* _Digits(%rip) */ LONG $0x04b70f42; BYTE $0x51 // movzwl (%rcx,%r10,2), %eax LONG $0x40894166; BYTE $0xfe // movw %ax, $-2(%r8) LONG $0x04b70f42; BYTE $0x49 // movzwl (%rcx,%r9,2), %eax @@ -926,7 +926,7 @@ LBB2_2: LBB2_5: LONG $0x1759b941; WORD $0xd1b7 // movl $3518437209, %r9d - LONG $0x19158d4c; WORD $0x00a6; BYTE $0x00 // leaq $42521(%rip), %r10 /* _Digits(%rip) */ + LONG $0x49158d4c; WORD $0x00a6; BYTE $0x00 // leaq $42569(%rip), %r10 /* _Digits(%rip) */ QUAD $0x9090909090909090; BYTE $0x90 // .p2align 4, 0x90 LBB2_6: @@ -958,7 +958,7 @@ LBB2_7: WORD $0xc86b; BYTE $0x64 // imull $100, %eax, %ecx WORD $0xca29 // subl %ecx, %edx WORD $0xb70f; BYTE $0xca // movzwl %dx, %ecx - LONG $0xa1158d48; WORD $0x00a5; BYTE $0x00 // leaq $42401(%rip), %rdx /* _Digits(%rip) */ + LONG $0xd1158d48; WORD $0x00a5; BYTE $0x00 // leaq $42449(%rip), %rdx /* _Digits(%rip) */ LONG $0x4a0cb70f // movzwl (%rdx,%rcx,2), %ecx LONG $0x4b894166; BYTE $0xfe // movw %cx, $-2(%r11) LONG $0xfec38349 // addq $-2, %r11 @@ -968,7 +968,7 @@ LBB2_9: WORD $0xfa83; BYTE $0x0a // cmpl $10, %edx LONG $0x0018820f; WORD $0x0000 // jb LBB2_11, $24(%rip) WORD $0xd089 // movl %edx, %eax - LONG $0x800d8d48; WORD $0x00a5; BYTE $0x00 // leaq $42368(%rip), %rcx /* _Digits(%rip) */ + LONG $0xb00d8d48; WORD $0x00a5; BYTE $0x00 // leaq $42416(%rip), %rcx /* _Digits(%rip) */ LONG $0x4104b70f // movzwl (%rcx,%rax,2), %eax LONG $0x43894166; BYTE $0xfe // movw %ax, $-2(%r11) WORD $0x894c; BYTE $0xc0 // movq %r8, %rax @@ -1057,7 +1057,7 @@ _u64toa: WORD $0x0148; BYTE $0xc0 // addq %rax, %rax LONG $0x03e8fe81; WORD $0x0000 // cmpl $1000, %esi LONG $0x0016820f; WORD $0x0000 // jb LBB4_3, $22(%rip) - LONG $0x9c0d8d48; WORD $0x00a4; BYTE $0x00 // leaq $42140(%rip), %rcx /* _Digits(%rip) */ + LONG $0xcc0d8d48; WORD $0x00a4; BYTE $0x00 // leaq $42188(%rip), %rcx /* _Digits(%rip) */ WORD $0x0c8a; BYTE $0x0a // movb (%rdx,%rcx), %cl WORD $0x0f88 // movb %cl, (%rdi) LONG $0x000001b9; BYTE $0x00 // movl $1, %ecx @@ -1071,14 +1071,14 @@ LBB4_3: LBB4_4: WORD $0xb70f; BYTE $0xd2 // movzwl %dx, %edx LONG $0x01ca8348 // orq $1, %rdx - LONG $0x74358d48; WORD $0x00a4; BYTE $0x00 // leaq $42100(%rip), %rsi /* _Digits(%rip) */ + LONG $0xa4358d48; WORD $0x00a4; BYTE $0x00 // leaq $42148(%rip), %rsi /* _Digits(%rip) */ WORD $0x148a; BYTE $0x32 // movb (%rdx,%rsi), %dl WORD $0xce89 // movl %ecx, %esi WORD $0xc1ff // incl %ecx WORD $0x1488; BYTE $0x37 // movb %dl, (%rdi,%rsi) LBB4_6: - LONG $0x63158d48; WORD $0x00a4; BYTE $0x00 // leaq $42083(%rip), %rdx /* _Digits(%rip) */ + LONG $0x93158d48; WORD $0x00a4; BYTE $0x00 // leaq $42131(%rip), %rdx /* _Digits(%rip) */ WORD $0x148a; BYTE $0x10 // movb (%rax,%rdx), %dl WORD $0xce89 // movl %ecx, %esi WORD $0xc1ff // incl %ecx @@ -1087,7 +1087,7 @@ LBB4_6: LBB4_7: WORD $0xb70f; BYTE $0xc0 // movzwl %ax, %eax LONG $0x01c88348 // orq $1, %rax - LONG $0x4b158d48; WORD $0x00a4; BYTE $0x00 // leaq $42059(%rip), %rdx /* _Digits(%rip) */ + LONG $0x7b158d48; WORD $0x00a4; BYTE $0x00 // leaq $42107(%rip), %rdx /* _Digits(%rip) */ WORD $0x048a; BYTE $0x10 // movb (%rax,%rdx), %al WORD $0xca89 // movl %ecx, %edx WORD $0xc1ff // incl %ecx @@ -1134,7 +1134,7 @@ LBB4_8: WORD $0x014d; BYTE $0xdb // addq %r11, %r11 LONG $0x9680fe81; WORD $0x0098 // cmpl $10000000, %esi LONG $0x0017820f; WORD $0x0000 // jb LBB4_11, $23(%rip) - LONG $0xa9058d48; WORD $0x00a3; BYTE $0x00 // leaq $41897(%rip), %rax /* _Digits(%rip) */ + LONG $0xd9058d48; WORD $0x00a3; BYTE $0x00 // leaq $41945(%rip), %rax /* _Digits(%rip) */ LONG $0x02048a41 // movb (%r10,%rax), %al WORD $0x0788 // movb %al, (%rdi) LONG $0x000001b9; BYTE $0x00 // movl $1, %ecx @@ -1148,14 +1148,14 @@ LBB4_11: LBB4_12: WORD $0x8944; BYTE $0xd0 // movl %r10d, %eax LONG $0x01c88348 // orq $1, %rax - LONG $0x7d358d48; WORD $0x00a3; BYTE $0x00 // leaq $41853(%rip), %rsi /* _Digits(%rip) */ + LONG $0xad358d48; WORD $0x00a3; BYTE $0x00 // leaq $41901(%rip), %rsi /* _Digits(%rip) */ WORD $0x048a; BYTE $0x30 // movb (%rax,%rsi), %al WORD $0xce89 // movl %ecx, %esi WORD $0xc1ff // incl %ecx WORD $0x0488; BYTE $0x37 // movb %al, (%rdi,%rsi) LBB4_14: - LONG $0x6c058d48; WORD $0x00a3; BYTE $0x00 // leaq $41836(%rip), %rax /* _Digits(%rip) */ + LONG $0x9c058d48; WORD $0x00a3; BYTE $0x00 // leaq $41884(%rip), %rax /* _Digits(%rip) */ LONG $0x01048a41 // movb (%r9,%rax), %al WORD $0xce89 // movl %ecx, %esi WORD $0xc1ff // incl %ecx @@ -1164,7 +1164,7 @@ LBB4_14: LBB4_15: LONG $0xc1b70f41 // movzwl %r9w, %eax LONG $0x01c88348 // orq $1, %rax - LONG $0x52358d48; WORD $0x00a3; BYTE $0x00 // leaq $41810(%rip), %rsi /* _Digits(%rip) */ + LONG $0x82358d48; WORD $0x00a3; BYTE $0x00 // leaq $41858(%rip), %rsi /* _Digits(%rip) */ WORD $0x048a; BYTE $0x30 // movb (%rax,%rsi), %al WORD $0xca89 // movl %ecx, %edx WORD $0x0488; BYTE $0x17 // movb %al, (%rdi,%rdx) @@ -1250,7 +1250,7 @@ LBB4_16: LONG $0x000010b9; BYTE $0x00 // movl $16, %ecx WORD $0xc129 // subl %eax, %ecx LONG $0x04e0c148 // shlq $4, %rax - LONG $0x48158d48; WORD $0x00c9; BYTE $0x00 // leaq $51528(%rip), %rdx /* _VecShiftShuffles(%rip) */ + LONG $0x78158d48; WORD $0x00c9; BYTE $0x00 // leaq $51576(%rip), %rdx /* _VecShiftShuffles(%rip) */ LONG $0x00380f66; WORD $0x100c // pshufb (%rax,%rdx), %xmm1 LONG $0x0f7f0ff3 // movdqu %xmm1, (%rdi) WORD $0xc889 // movl %ecx, %eax @@ -1276,7 +1276,7 @@ LBB4_20: WORD $0xfa83; BYTE $0x63 // cmpl $99, %edx LONG $0x001f870f; WORD $0x0000 // ja LBB4_22, $31(%rip) WORD $0xd089 // movl %edx, %eax - LONG $0x8b0d8d48; WORD $0x00a1; BYTE $0x00 // leaq $41355(%rip), %rcx /* _Digits(%rip) */ + LONG $0xbb0d8d48; WORD $0x00a1; BYTE $0x00 // leaq $41403(%rip), %rcx /* _Digits(%rip) */ WORD $0x148a; BYTE $0x41 // movb (%rcx,%rax,2), %dl LONG $0x0141448a // movb $1(%rcx,%rax,2), %al WORD $0x1788 // movb %dl, (%rdi) @@ -1301,7 +1301,7 @@ LBB4_22: WORD $0xc96b; BYTE $0x64 // imull $100, %ecx, %ecx WORD $0xc829 // subl %ecx, %eax WORD $0xb70f; BYTE $0xc0 // movzwl %ax, %eax - LONG $0x360d8d48; WORD $0x00a1; BYTE $0x00 // leaq $41270(%rip), %rcx /* _Digits(%rip) */ + LONG $0x660d8d48; WORD $0x00a1; BYTE $0x00 // leaq $41318(%rip), %rcx /* _Digits(%rip) */ WORD $0x148a; BYTE $0x41 // movb (%rcx,%rax,2), %dl LONG $0x0141448a // movb $1(%rcx,%rax,2), %al WORD $0x5788; BYTE $0x01 // movb %dl, $1(%rdi) @@ -1313,7 +1313,7 @@ LBB4_24: WORD $0xc86b; BYTE $0x64 // imull $100, %eax, %ecx WORD $0xca29 // subl %ecx, %edx WORD $0xb70f; BYTE $0xc0 // movzwl %ax, %eax - LONG $0x10058d4c; WORD $0x00a1; BYTE $0x00 // leaq $41232(%rip), %r8 /* _Digits(%rip) */ + LONG $0x40058d4c; WORD $0x00a1; BYTE $0x00 // leaq $41280(%rip), %r8 /* _Digits(%rip) */ LONG $0x400c8a41 // movb (%r8,%rax,2), %cl LONG $0x40448a41; BYTE $0x01 // movb $1(%r8,%rax,2), %al WORD $0x0f88 // movb %cl, (%rdi) @@ -1406,8 +1406,8 @@ _quote: WORD $0x8948; BYTE $0xf0 // movq %rsi, %rax WORD $0x8b4c; BYTE $0x19 // movq (%rcx), %r11 LONG $0x01c0f641 // testb $1, %r8b - LONG $0x880d8d48; WORD $0x00c7; BYTE $0x00 // leaq $51080(%rip), %rcx /* __SingleQuoteTab(%rip) */ - LONG $0x81058d4c; WORD $0x00d7; BYTE $0x00 // leaq $55169(%rip), %r8 /* __DoubleQuoteTab(%rip) */ + LONG $0xb80d8d48; WORD $0x00c7; BYTE $0x00 // leaq $51128(%rip), %rcx /* __SingleQuoteTab(%rip) */ + LONG $0xb1058d4c; WORD $0x00d7; BYTE $0x00 // leaq $55217(%rip), %r8 /* __DoubleQuoteTab(%rip) */ LONG $0xc1440f4c // cmoveq %rcx, %r8 QUAD $0x00000000f50c8d48 // leaq (,%rsi,8), %rcx WORD $0x3949; BYTE $0xcb // cmpq %rcx, %r11 @@ -1514,7 +1514,7 @@ LBB5_15: LONG $0x34b60f41; BYTE $0x24 // movzbl (%r12), %esi WORD $0x8948; BYTE $0xf2 // movq %rsi, %rdx LONG $0x04e2c148 // shlq $4, %rdx - LONG $0xcd1d8d48; WORD $0x00c5; BYTE $0x00 // leaq $50637(%rip), %rbx /* __SingleQuoteTab(%rip) */ + LONG $0xfd1d8d48; WORD $0x00c5; BYTE $0x00 // leaq $50685(%rip), %rbx /* __SingleQuoteTab(%rip) */ LONG $0x1a3c8348; BYTE $0x00 // cmpq $0, (%rdx,%rbx) LONG $0x0082850f; WORD $0x0000 // jne LBB5_21, $130(%rip) LONG $0xff518d48 // leaq $-1(%rcx), %rdx @@ -1731,7 +1731,7 @@ LBB5_74: LONG $0x00025de9; BYTE $0x00 // jmp LBB5_76, $605(%rip) LBB5_51: - LONG $0x160d8d4c; WORD $0x00e3; BYTE $0x00 // leaq $58134(%rip), %r9 /* __EscTab(%rip) */ + LONG $0x460d8d4c; WORD $0x00e3; BYTE $0x00 // leaq $58182(%rip), %r9 /* __EscTab(%rip) */ QUAD $0xfffffb2e056f0f66 // movdqa $-1234(%rip), %xmm0 /* LCPI5_0(%rip) */ QUAD $0xfffffb360d6f0f66 // movdqa $-1226(%rip), %xmm1 /* LCPI5_1(%rip) */ QUAD $0xfffffb3e156f0f66 // movdqa $-1218(%rip), %xmm2 /* LCPI5_2(%rip) */ @@ -1958,7 +1958,7 @@ _unquote: LONG $0xb845894c // movq %r8, $-72(%rbp) WORD $0x8945; BYTE $0xc2 // movl %r8d, %r10d LONG $0x01e28341 // andl $1, %r10d - LONG $0x4a058d4c; WORD $0x00e1; BYTE $0x00 // leaq $57674(%rip), %r8 /* __UnquoteTab(%rip) */ + LONG $0x7a058d4c; WORD $0x00e1; BYTE $0x00 // leaq $57722(%rip), %r8 /* __UnquoteTab(%rip) */ QUAD $0xffffffb2056f0f66 // movdqa $-78(%rip), %xmm0 /* LCPI6_0(%rip) */ WORD $0x8949; BYTE $0xf9 // movq %rdi, %r9 WORD $0x8949; BYTE $0xf5 // movq %rsi, %r13 @@ -2648,7 +2648,7 @@ _html_escape: QUAD $0xffffff910d6f0f66 // movdqa $-111(%rip), %xmm1 /* LCPI7_1(%rip) */ QUAD $0xffffff99156f0f66 // movdqa $-103(%rip), %xmm2 /* LCPI7_2(%rip) */ QUAD $0xffffffa11d6f0f66 // movdqa $-95(%rip), %xmm3 /* LCPI7_3(%rip) */ - LONG $0xea1d8d4c; WORD $0x00d8; BYTE $0x00 // leaq $55530(%rip), %r11 /* __HtmlQuoteTab(%rip) */ + LONG $0x1a1d8d4c; WORD $0x00d9; BYTE $0x00 // leaq $55578(%rip), %r11 /* __HtmlQuoteTab(%rip) */ WORD $0x8949; BYTE $0xff // movq %rdi, %r15 LONG $0xd0558b4c // movq $-48(%rbp), %r10 WORD $0x9090; BYTE $0x90 // .p2align 4, 0x90 @@ -3036,7 +3036,7 @@ LBB8_5: WORD $0xd348; BYTE $0xe7 // shlq %cl, %rdi WORD $0xc389 // movl %eax, %ebx LONG $0x04e3c148 // shlq $4, %rbx - LONG $0x71358d4c; WORD $0x005e; BYTE $0x00 // leaq $24177(%rip), %r14 /* _POW10_M128_TAB(%rip) */ + LONG $0xa1358d4c; WORD $0x005e; BYTE $0x00 // leaq $24225(%rip), %r14 /* _POW10_M128_TAB(%rip) */ WORD $0x8948; BYTE $0xf8 // movq %rdi, %rax LONG $0x3364f74a; BYTE $0x08 // mulq $8(%rbx,%r14) WORD $0x8949; BYTE $0xc7 // movq %rax, %r15 @@ -3163,7 +3163,7 @@ LBB9_5: LONG $0xd05d8948 // movq %rbx, $-48(%rbp) LONG $0x005a8e0f; WORD $0x0000 // jle LBB9_12, $90(%rip) WORD $0x3145; BYTE $0xe4 // xorl %r12d, %r12d - LONG $0x58358d4c; WORD $0x0088; BYTE $0x00 // leaq $34904(%rip), %r14 /* _POW_TAB(%rip) */ + LONG $0x88358d4c; WORD $0x0088; BYTE $0x00 // leaq $34952(%rip), %r14 /* _POW_TAB(%rip) */ LONG $0x00002de9; BYTE $0x00 // jmp LBB9_8, $45(%rip) WORD $0x9090; BYTE $0x90 // .p2align 4, 0x90 @@ -3176,7 +3176,7 @@ LBB9_10: LBB9_11: WORD $0x894c; BYTE $0xff // movq %r15, %rdi WORD $0xde89 // movl %ebx, %esi - LONG $0x005755e8; BYTE $0x00 // callq _right_shift, $22357(%rip) + LONG $0x005785e8; BYTE $0x00 // callq _right_shift, $22405(%rip) LBB9_7: WORD $0x0141; BYTE $0xdc // addl %ebx, %r12d @@ -3193,7 +3193,7 @@ LBB9_8: LONG $0xffffd3e9; BYTE $0xff // jmp LBB9_7, $-45(%rip) LBB9_12: - LONG $0x01358d4c; WORD $0x0088; BYTE $0x00 // leaq $34817(%rip), %r14 /* _POW_TAB(%rip) */ + LONG $0x31358d4c; WORD $0x0088; BYTE $0x00 // leaq $34865(%rip), %r14 /* _POW_TAB(%rip) */ LONG $0x00002de9; BYTE $0x00 // jmp LBB9_14, $45(%rip) LBB9_18: @@ -3205,7 +3205,7 @@ LBB9_18: LBB9_20: WORD $0x894c; BYTE $0xff // movq %r15, %rdi WORD $0xde89 // movl %ebx, %esi - LONG $0x005506e8; BYTE $0x00 // callq _left_shift, $21766(%rip) + LONG $0x005536e8; BYTE $0x00 // callq _left_shift, $21814(%rip) LONG $0x14478b41 // movl $20(%r15), %eax LBB9_13: @@ -3248,7 +3248,7 @@ LBB9_21: LBB9_25: WORD $0x894c; BYTE $0xff // movq %r15, %rdi LONG $0x00003cbe; BYTE $0x00 // movl $60, %esi - LONG $0x005663e8; BYTE $0x00 // callq _right_shift, $22115(%rip) + LONG $0x005693e8; BYTE $0x00 // callq _right_shift, $22163(%rip) LONG $0x3cc48341 // addl $60, %r12d LONG $0x88fc8341 // cmpl $-120, %r12d LONG $0xffe58c0f; WORD $0xffff // jl LBB9_25, $-27(%rip) @@ -3274,7 +3274,7 @@ LBB9_31: WORD $0xf741; BYTE $0xdc // negl %r12d WORD $0x894c; BYTE $0xff // movq %r15, %rdi WORD $0x8944; BYTE $0xe6 // movl %r12d, %esi - LONG $0x005610e8; BYTE $0x00 // callq _right_shift, $22032(%rip) + LONG $0x005640e8; BYTE $0x00 // callq _right_shift, $22080(%rip) LONG $0xfc02be41; WORD $0xffff // movl $-1022, %r14d LBB9_32: @@ -3282,7 +3282,7 @@ LBB9_32: LONG $0x000d840f; WORD $0x0000 // je LBB9_34, $13(%rip) WORD $0x894c; BYTE $0xff // movq %r15, %rdi LONG $0x000035be; BYTE $0x00 // movl $53, %esi - LONG $0x005402e8; BYTE $0x00 // callq _left_shift, $21506(%rip) + LONG $0x005432e8; BYTE $0x00 // callq _left_shift, $21554(%rip) LBB9_34: LONG $0x14478b41 // movl $20(%r15), %eax @@ -4336,7 +4336,7 @@ LCPI14_2: _advance_string: WORD $0xc1f6; BYTE $0x20 // testb $32, %cl LONG $0x0005850f; WORD $0x0000 // jne LBB14_2, $5(%rip) - LONG $0x004a22e9; BYTE $0x00 // jmp _advance_string_default, $18978(%rip) + LONG $0x004a52e9; BYTE $0x00 // jmp _advance_string_default, $19026(%rip) LBB14_2: BYTE $0x55 // pushq %rbp @@ -5057,7 +5057,7 @@ LBB15_62: WORD $0xfe83; BYTE $0x17 // cmpl $23, %esi LONG $0x00a68c0f; WORD $0x0000 // jl LBB15_73, $166(%rip) WORD $0x468d; BYTE $0xea // leal $-22(%rsi), %eax - LONG $0x5e0d8d48; WORD $0x00e2; BYTE $0x00 // leaq $57950(%rip), %rcx /* _P10_TAB(%rip) */ + LONG $0x8e0d8d48; WORD $0x00e2; BYTE $0x00 // leaq $57998(%rip), %rcx /* _P10_TAB(%rip) */ LONG $0x04590ff2; BYTE $0xc1 // mulsd (%rcx,%rax,8), %xmm0 LONG $0x45110ff2; BYTE $0xc8 // movsd %xmm0, $-56(%rbp) LONG $0x000016b8; BYTE $0x00 // movl $22, %eax @@ -5079,7 +5079,7 @@ LBB15_70: WORD $0xfe83; BYTE $0xea // cmpl $-22, %esi LONG $0x0096820f; WORD $0x0000 // jb LBB15_77, $150(%rip) WORD $0xdef7 // negl %esi - LONG $0x15058d48; WORD $0x00e2; BYTE $0x00 // leaq $57877(%rip), %rax /* _P10_TAB(%rip) */ + LONG $0x45058d48; WORD $0x00e2; BYTE $0x00 // leaq $57925(%rip), %rax /* _P10_TAB(%rip) */ LONG $0x045e0ff2; BYTE $0xf0 // divsd (%rax,%rsi,8), %xmm0 LONG $0x45110ff2; BYTE $0xc8 // movsd %xmm0, $-56(%rbp) LONG $0x0000e0e9; BYTE $0x00 // jmp LBB15_81, $224(%rip) @@ -5111,7 +5111,7 @@ LBB15_74: LONG $0xc82e0f66 // ucomisd %xmm0, %xmm1 LONG $0x0018870f; WORD $0x0000 // ja LBB15_77, $24(%rip) WORD $0xc089 // movl %eax, %eax - LONG $0x970d8d48; WORD $0x00e1; BYTE $0x00 // leaq $57751(%rip), %rcx /* _P10_TAB(%rip) */ + LONG $0xc70d8d48; WORD $0x00e1; BYTE $0x00 // leaq $57799(%rip), %rcx /* _P10_TAB(%rip) */ LONG $0x04590ff2; BYTE $0xc1 // mulsd (%rcx,%rax,8), %xmm0 LONG $0x45110ff2; BYTE $0xc8 // movsd %xmm0, $-56(%rbp) LONG $0x000062e9; BYTE $0x00 // jmp LBB15_81, $98(%rip) @@ -7631,7 +7631,7 @@ _get_by_path: WORD $0x8949; BYTE $0xfc // movq %rdi, %r12 LONG $0x08428b48 // movq $8(%rdx), %rax WORD $0x8548; BYTE $0xc0 // testq %rax, %rax - LONG $0x062d840f; WORD $0x0000 // je LBB29_79, $1581(%rip) + LONG $0x064d840f; WORD $0x0000 // je LBB29_80, $1613(%rip) WORD $0x8b4c; BYTE $0x2a // movq (%rdx), %r13 LONG $0x04e0c148 // shlq $4, %rax WORD $0x014c; BYTE $0xe8 // addq %r13, %rax @@ -7650,7 +7650,7 @@ LBB29_2: WORD $0x7b3c // cmpb $123, %al LONG $0xc865894c // movq %r12, $-56(%rbp) LONG $0xc06d894c // movq %r13, $-64(%rbp) - LONG $0x060a850f; WORD $0x0000 // jne LBB29_81, $1546(%rip) + LONG $0x063a850f; WORD $0x0000 // jne LBB29_84, $1594(%rip) QUAD $0x9090909090909090; WORD $0x9090 // .p2align 4, 0x90 LBB29_4: @@ -7659,7 +7659,7 @@ LBB29_4: WORD $0x894c; BYTE $0xfa // movq %r15, %rdx LONG $0xffd05fe8; BYTE $0xff // callq _advance_ns, $-12193(%rip) WORD $0x223c // cmpb $34, %al - LONG $0x05e7850f; WORD $0x0000 // jne LBB29_81, $1511(%rip) + LONG $0x05f8850f; WORD $0x0000 // jne LBB29_81, $1528(%rip) LONG $0x08458b49 // movq $8(%r13), %rax WORD $0x894c; BYTE $0xfb // movq %r15, %rbx WORD $0x8b4c; BYTE $0x28 // movq (%rax), %r13 @@ -7669,9 +7669,9 @@ LBB29_4: WORD $0x8b4c; BYTE $0x23 // movq (%rbx), %r12 WORD $0x894c; BYTE $0xe6 // movq %r12, %rsi LONG $0xb8558d48 // leaq $-72(%rbp), %rdx - LONG $0x001d9fe8; BYTE $0x00 // callq _advance_string_default, $7583(%rip) + LONG $0x001dcfe8; BYTE $0x00 // callq _advance_string_default, $7631(%rip) WORD $0x8548; BYTE $0xc0 // testq %rax, %rax - LONG $0x05cf880f; WORD $0x0000 // js LBB29_83, $1487(%rip) + LONG $0x05ff880f; WORD $0x0000 // js LBB29_86, $1535(%rip) WORD $0x8949; BYTE $0xd8 // movq %rbx, %r8 WORD $0x8948; BYTE $0x03 // movq %rax, (%rbx) LONG $0xb84d8b48 // movq $-72(%rbp), %rcx @@ -7758,7 +7758,7 @@ LBB29_25: WORD $0x394c; BYTE $0xe0 // cmpq %r12, %rax WORD $0x8949; BYTE $0xc7 // movq %rax, %r15 LONG $0x03d6860f; WORD $0x0000 // jbe LBB29_71, $982(%rip) - LONG $0x77358d4c; WORD $0x0094; BYTE $0x00 // leaq $38007(%rip), %r14 /* __UnquoteTab(%rip) */ + LONG $0xa7358d4c; WORD $0x0094; BYTE $0x00 // leaq $38055(%rip), %r14 /* __UnquoteTab(%rip) */ LONG $0xd05d8d48 // leaq $-48(%rbp), %rbx LBB29_28: @@ -7769,13 +7769,13 @@ LBB29_28: WORD $0x294c; BYTE $0xe1 // subq %r12, %rcx LONG $0xffc0c748; WORD $0xffff; BYTE $0xff // movq $-1, %rax WORD $0x8548; BYTE $0xc9 // testq %rcx, %rcx - LONG $0x04a38e0f; WORD $0x0000 // jle LBB29_87, $1187(%rip) + LONG $0x04d38e0f; WORD $0x0000 // jle LBB29_90, $1235(%rip) LONG $0x54b60f41; WORD $0x0124 // movzbl $1(%r12), %edx LONG $0x321c8a46 // movb (%rdx,%r14), %r11b LONG $0xfffb8041 // cmpb $-1, %r11b LONG $0x003e840f; WORD $0x0000 // je LBB29_35, $62(%rip) WORD $0x8445; BYTE $0xdb // testb %r11b, %r11b - LONG $0x0474840f; WORD $0x0000 // je LBB29_85, $1140(%rip) + LONG $0x04a4840f; WORD $0x0000 // je LBB29_88, $1188(%rip) LONG $0xd05d8844 // movb %r11b, $-48(%rbp) LONG $0x02c48349 // addq $2, %r12 LONG $0x000001b9; BYTE $0x00 // movl $1, %ecx @@ -7793,18 +7793,18 @@ LBB29_33: LBB29_35: LONG $0x03f98348 // cmpq $3, %rcx - LONG $0x04448e0f; WORD $0x0000 // jle LBB29_86, $1092(%rip) + LONG $0x04748e0f; WORD $0x0000 // jle LBB29_89, $1140(%rip) LONG $0x24448b41; BYTE $0x02 // movl $2(%r12), %eax WORD $0xc289 // movl %eax, %edx WORD $0xd2f7 // notl %edx LONG $0xcfd0b08d; WORD $0xcfcf // leal $-808464432(%rax), %esi LONG $0x8080e281; WORD $0x8080 // andl $-2139062144, %edx WORD $0xf285 // testl %esi, %edx - LONG $0x0408850f; WORD $0x0000 // jne LBB29_84, $1032(%rip) + LONG $0x0438850f; WORD $0x0000 // jne LBB29_87, $1080(%rip) LONG $0x1919b08d; WORD $0x1919 // leal $421075225(%rax), %esi WORD $0xc609 // orl %eax, %esi LONG $0x8080c6f7; WORD $0x8080 // testl $-2139062144, %esi - LONG $0x03f4850f; WORD $0x0000 // jne LBB29_84, $1012(%rip) + LONG $0x0424850f; WORD $0x0000 // jne LBB29_87, $1060(%rip) WORD $0xc689 // movl %eax, %esi LONG $0x7f7fe681; WORD $0x7f7f // andl $2139062143, %esi LONG $0xc0c0b941; WORD $0xc0c0 // movl $-1061109568, %r9d @@ -7812,13 +7812,13 @@ LBB29_35: LONG $0x469e8d44; WORD $0x4646; BYTE $0x46 // leal $1179010630(%rsi), %r11d WORD $0x2141; BYTE $0xd1 // andl %edx, %r9d WORD $0x8545; BYTE $0xd9 // testl %r11d, %r9d - LONG $0x03d0850f; WORD $0x0000 // jne LBB29_84, $976(%rip) + LONG $0x0400850f; WORD $0x0000 // jne LBB29_87, $1024(%rip) LONG $0xe0e0b941; WORD $0xe0e0 // movl $-522133280, %r9d WORD $0x2941; BYTE $0xf1 // subl %esi, %r9d LONG $0x3939c681; WORD $0x3939 // addl $960051513, %esi WORD $0x2144; BYTE $0xca // andl %r9d, %edx WORD $0xf285 // testl %esi, %edx - LONG $0x03b6850f; WORD $0x0000 // jne LBB29_84, $950(%rip) + LONG $0x03e6850f; WORD $0x0000 // jne LBB29_87, $998(%rip) WORD $0xc80f // bswapl %eax WORD $0xc289 // movl %eax, %edx WORD $0xeac1; BYTE $0x04 // shrl $4, %edx @@ -7904,13 +7904,13 @@ LBB29_59: LBB29_60: LONG $0x06f98348 // cmpq $6, %rcx - LONG $0x02ca8c0f; WORD $0x0000 // jl LBB29_89, $714(%rip) + LONG $0x02fa8c0f; WORD $0x0000 // jl LBB29_92, $762(%rip) LONG $0x00dbff3d; BYTE $0x00 // cmpl $56319, %eax - LONG $0x02bf870f; WORD $0x0000 // ja LBB29_89, $703(%rip) + LONG $0x02ef870f; WORD $0x0000 // ja LBB29_92, $751(%rip) LONG $0x5c398041 // cmpb $92, (%r9) - LONG $0x02b5850f; WORD $0x0000 // jne LBB29_89, $693(%rip) + LONG $0x02e5850f; WORD $0x0000 // jne LBB29_92, $741(%rip) LONG $0x247c8041; WORD $0x7507 // cmpb $117, $7(%r12) - LONG $0x02a9850f; WORD $0x0000 // jne LBB29_89, $681(%rip) + LONG $0x02d9850f; WORD $0x0000 // jne LBB29_92, $729(%rip) LONG $0x244c8d4d; BYTE $0x08 // leaq $8(%r12), %r9 LONG $0x244c8b41; BYTE $0x08 // movl $8(%r12), %ecx WORD $0xca89 // movl %ecx, %edx @@ -7918,11 +7918,11 @@ LBB29_60: LONG $0xcfd0b18d; WORD $0xcfcf // leal $-808464432(%rcx), %esi LONG $0x8080e281; WORD $0x8080 // andl $-2139062144, %edx WORD $0xf285 // testl %esi, %edx - LONG $0x027b850f; WORD $0x0000 // jne LBB29_88, $635(%rip) + LONG $0x02ab850f; WORD $0x0000 // jne LBB29_91, $683(%rip) LONG $0x1919b18d; WORD $0x1919 // leal $421075225(%rcx), %esi WORD $0xce09 // orl %ecx, %esi LONG $0x8080c6f7; WORD $0x8080 // testl $-2139062144, %esi - LONG $0x0267850f; WORD $0x0000 // jne LBB29_88, $615(%rip) + LONG $0x0297850f; WORD $0x0000 // jne LBB29_91, $663(%rip) WORD $0xce89 // movl %ecx, %esi LONG $0x7f7fe681; WORD $0x7f7f // andl $2139062143, %esi LONG $0xc0c0bb41; WORD $0xc0c0 // movl $-1061109568, %r11d @@ -7930,13 +7930,13 @@ LBB29_60: LONG $0x46b68d44; WORD $0x4646; BYTE $0x46 // leal $1179010630(%rsi), %r14d WORD $0x2141; BYTE $0xd3 // andl %edx, %r11d WORD $0x8545; BYTE $0xf3 // testl %r14d, %r11d - LONG $0x0243850f; WORD $0x0000 // jne LBB29_88, $579(%rip) + LONG $0x0273850f; WORD $0x0000 // jne LBB29_91, $627(%rip) LONG $0xe0e0bb41; WORD $0xe0e0 // movl $-522133280, %r11d WORD $0x2941; BYTE $0xf3 // subl %esi, %r11d LONG $0x3939c681; WORD $0x3939 // addl $960051513, %esi WORD $0x2144; BYTE $0xda // andl %r11d, %edx WORD $0xf285 // testl %esi, %edx - LONG $0x0229850f; WORD $0x0000 // jne LBB29_88, $553(%rip) + LONG $0x0259850f; WORD $0x0000 // jne LBB29_91, $601(%rip) WORD $0xc90f // bswapl %ecx WORD $0xca89 // movl %ecx, %edx WORD $0xeac1; BYTE $0x04 // shrl $4, %edx @@ -7951,7 +7951,7 @@ LBB29_60: WORD $0xd189 // movl %edx, %ecx LONG $0x0000e181; WORD $0x00fc // andl $16515072, %ecx LONG $0x0000f981; WORD $0x00dc // cmpl $14417920, %ecx - LONG $0x0200850f; WORD $0x0000 // jne LBB29_89, $512(%rip) + LONG $0x0230850f; WORD $0x0000 // jne LBB29_92, $560(%rip) WORD $0xd189 // movl %edx, %ecx WORD $0xe9c1; BYTE $0x08 // shrl $8, %ecx LONG $0xff00e181; WORD $0x0000 // andl $65280, %ecx @@ -7978,7 +7978,7 @@ LBB29_60: WORD $0x4588; BYTE $0xd3 // movb %al, $-45(%rbp) LONG $0x0cc48349 // addq $12, %r12 LONG $0x000004b9; BYTE $0x00 // movl $4, %ecx - LONG $0x3b358d4c; WORD $0x0091; BYTE $0x00 // leaq $37179(%rip), %r14 /* __UnquoteTab(%rip) */ + LONG $0x6b358d4c; WORD $0x0091; BYTE $0x00 // leaq $37227(%rip), %r14 /* __UnquoteTab(%rip) */ LONG $0xd05d8d48 // leaq $-48(%rbp), %rbx LONG $0x0d4c8d4c; BYTE $0xd0 // leaq $-48(%rbp,%rcx), %r9 WORD $0x394d; BYTE $0xd5 // cmpq %r10, %r13 @@ -8010,9 +8010,9 @@ LBB29_22: WORD $0x894c; BYTE $0xc2 // movq %r8, %rdx LONG $0xffcb55e8; BYTE $0xff // callq _advance_ns, $-13483(%rip) WORD $0x3a3c // cmpb $58, %al - LONG $0x00dd850f; WORD $0x0000 // jne LBB29_81, $221(%rip) + LONG $0x010d850f; WORD $0x0000 // jne LBB29_84, $269(%rip) WORD $0x854d; BYTE $0xf6 // testq %r14, %r14 - LONG $0x00a4850f; WORD $0x0000 // jne LBB29_78, $164(%rip) + LONG $0x00c4850f; WORD $0x0000 // jne LBB29_79, $196(%rip) WORD $0x894c; BYTE $0xe7 // movq %r12, %rdi WORD $0x894c; BYTE $0xfe // movq %r15, %rsi LONG $0xffecd9e8; BYTE $0xff // callq _skip_one_fast, $-4903(%rip) @@ -8022,7 +8022,7 @@ LBB29_22: LONG $0xffcb28e8; BYTE $0xff // callq _advance_ns, $-13528(%rip) WORD $0x2c3c // cmpb $44, %al LONG $0xfab0840f; WORD $0xffff // je LBB29_4, $-1360(%rip) - LONG $0x00009ce9; BYTE $0x00 // jmp LBB29_80, $156(%rip) + LONG $0x0000bce9; BYTE $0x00 // jmp LBB29_81, $188(%rip) LBB29_70: WORD $0x8949; BYTE $0xc7 // movq %rax, %r15 @@ -8037,53 +8037,68 @@ LBB29_71: WORD $0x9090; BYTE $0x90 // .p2align 4, 0x90 LBB29_73: - WORD $0x5b3c // cmpb $91, %al - LONG $0x0088850f; WORD $0x0000 // jne LBB29_81, $136(%rip) - WORD $0xf980; BYTE $0x02 // cmpb $2, %cl - LONG $0x007f850f; WORD $0x0000 // jne LBB29_81, $127(%rip) - LONG $0x08458b49 // movq $8(%r13), %rax - WORD $0x8b48; BYTE $0x18 // movq (%rax), %rbx - WORD $0xff48; BYTE $0xc3 // incq %rbx - LONG $0x90909090; BYTE $0x90 // .p2align 4, 0x90 + WORD $0x5b3c // cmpb $91, %al + LONG $0x00b8850f; WORD $0x0000 // jne LBB29_84, $184(%rip) + WORD $0xf980; BYTE $0x02 // cmpb $2, %cl + LONG $0x00af850f; WORD $0x0000 // jne LBB29_84, $175(%rip) + LONG $0x08458b49 // movq $8(%r13), %rax + WORD $0x8b48; BYTE $0x18 // movq (%rax), %rbx + LONG $0x243c8b49 // movq (%r12), %rdi + LONG $0x24748b49; BYTE $0x08 // movq $8(%r12), %rsi + WORD $0x894c; BYTE $0xfa // movq %r15, %rdx + LONG $0xffcad7e8; BYTE $0xff // callq _advance_ns, $-13609(%rip) + WORD $0x5d3c // cmpb $93, %al + LONG $0x0078840f; WORD $0x0000 // je LBB29_82, $120(%rip) + WORD $0xff49; BYTE $0x0f // decq (%r15) + WORD $0xff48; BYTE $0xc3 // incq %rbx + QUAD $0x9090909090909090; BYTE $0x90 // .p2align 4, 0x90 -LBB29_76: +LBB29_77: WORD $0xff48; BYTE $0xcb // decq %rbx WORD $0x8548; BYTE $0xdb // testq %rbx, %rbx - LONG $0x00348e0f; WORD $0x0000 // jle LBB29_78, $52(%rip) + LONG $0x00348e0f; WORD $0x0000 // jle LBB29_79, $52(%rip) WORD $0x894c; BYTE $0xe7 // movq %r12, %rdi WORD $0x894c; BYTE $0xfe // movq %r15, %rsi - LONG $0xffec69e8; BYTE $0xff // callq _skip_one_fast, $-5015(%rip) + LONG $0xffec49e8; BYTE $0xff // callq _skip_one_fast, $-5047(%rip) LONG $0x243c8b49 // movq (%r12), %rdi LONG $0x24748b49; BYTE $0x08 // movq $8(%r12), %rsi WORD $0x894c; BYTE $0xfa // movq %r15, %rdx - LONG $0xffcab8e8; BYTE $0xff // callq _advance_ns, $-13640(%rip) + LONG $0xffca98e8; BYTE $0xff // callq _advance_ns, $-13672(%rip) WORD $0x2c3c // cmpb $44, %al - LONG $0xffd0840f; WORD $0xffff // je LBB29_76, $-48(%rip) - LONG $0x00002ce9; BYTE $0x00 // jmp LBB29_80, $44(%rip) + LONG $0xffd0840f; WORD $0xffff // je LBB29_77, $-48(%rip) + LONG $0x000043e9; BYTE $0x00 // jmp LBB29_83, $67(%rip) QUAD $0x9090909090909090; WORD $0x9090; BYTE $0x90 // .p2align 4, 0x90 -LBB29_78: +LBB29_79: LONG $0x10c58349 // addq $16, %r13 LONG $0xb0458b48 // movq $-80(%rbp), %rax WORD $0x3949; BYTE $0xc5 // cmpq %rax, %r13 - LONG $0xf9e1850f; WORD $0xffff // jne LBB29_2, $-1567(%rip) - -LBB29_79: - WORD $0x894c; BYTE $0xe7 // movq %r12, %rdi - WORD $0x894c; BYTE $0xfe // movq %r15, %rsi - LONG $0xffec24e8; BYTE $0xff // callq _skip_one_fast, $-5084(%rip) - LONG $0x000019e9; BYTE $0x00 // jmp LBB29_82, $25(%rip) + LONG $0xf9c1850f; WORD $0xffff // jne LBB29_2, $-1599(%rip) LBB29_80: - WORD $0xff49; BYTE $0x0f // decq (%r15) - LONG $0xdfc0c748; WORD $0xffff; BYTE $0xff // movq $-33, %rax - LONG $0x00000ae9; BYTE $0x00 // jmp LBB29_82, $10(%rip) + WORD $0x894c; BYTE $0xe7 // movq %r12, %rdi + WORD $0x894c; BYTE $0xfe // movq %r15, %rsi + LONG $0xffec04e8; BYTE $0xff // callq _skip_one_fast, $-5116(%rip) + LONG $0x000029e9; BYTE $0x00 // jmp LBB29_85, $41(%rip) LBB29_81: + WORD $0x7d3c // cmpb $125, %al + LONG $0x0017850f; WORD $0x0000 // jne LBB29_84, $23(%rip) + +LBB29_82: + WORD $0xff49; BYTE $0x0f // decq (%r15) + LONG $0xdfc0c748; WORD $0xffff; BYTE $0xff // movq $-33, %rax + LONG $0x000012e9; BYTE $0x00 // jmp LBB29_85, $18(%rip) + +LBB29_83: + WORD $0x5d3c // cmpb $93, %al + LONG $0xffe9840f; WORD $0xffff // je LBB29_82, $-23(%rip) + +LBB29_84: WORD $0xff49; BYTE $0x0f // decq (%r15) LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax -LBB29_82: +LBB29_85: LONG $0x28c48348 // addq $40, %rsp BYTE $0x5b // popq %rbx WORD $0x5c41 // popq %r12 @@ -8093,41 +8108,41 @@ LBB29_82: BYTE $0x5d // popq %rbp BYTE $0xc3 // retq -LBB29_83: +LBB29_86: LONG $0xc8458b48 // movq $-56(%rbp), %rax LONG $0x08408b48 // movq $8(%rax), %rax WORD $0x8948; BYTE $0x03 // movq %rax, (%rbx) LONG $0xffc0c748; WORD $0xffff; BYTE $0xff // movq $-1, %rax - LONG $0xffffdae9; BYTE $0xff // jmp LBB29_82, $-38(%rip) - -LBB29_84: - LONG $0x02c48349 // addq $2, %r12 - LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax - LONG $0x000012e9; BYTE $0x00 // jmp LBB29_87, $18(%rip) - -LBB29_85: - WORD $0xff49; BYTE $0xc4 // incq %r12 - LONG $0xfdc0c748; WORD $0xffff; BYTE $0xff // movq $-3, %rax - LONG $0x000003e9; BYTE $0x00 // jmp LBB29_87, $3(%rip) - -LBB29_86: - WORD $0xff49; BYTE $0xc4 // incq %r12 + LONG $0xffffdae9; BYTE $0xff // jmp LBB29_85, $-38(%rip) LBB29_87: - WORD $0x2949; BYTE $0xfc // subq %rdi, %r12 - WORD $0x894d; BYTE $0x20 // movq %r12, (%r8) - LONG $0xffffade9; BYTE $0xff // jmp LBB29_82, $-83(%rip) + LONG $0x02c48349 // addq $2, %r12 + LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax + LONG $0x000012e9; BYTE $0x00 // jmp LBB29_90, $18(%rip) LBB29_88: - LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax - LONG $0x000007e9; BYTE $0x00 // jmp LBB29_90, $7(%rip) + WORD $0xff49; BYTE $0xc4 // incq %r12 + LONG $0xfdc0c748; WORD $0xffff; BYTE $0xff // movq $-3, %rax + LONG $0x000003e9; BYTE $0x00 // jmp LBB29_90, $3(%rip) LBB29_89: - LONG $0xfcc0c748; WORD $0xffff; BYTE $0xff // movq $-4, %rax + WORD $0xff49; BYTE $0xc4 // incq %r12 LBB29_90: + WORD $0x2949; BYTE $0xfc // subq %rdi, %r12 + WORD $0x894d; BYTE $0x20 // movq %r12, (%r8) + LONG $0xffffade9; BYTE $0xff // jmp LBB29_85, $-83(%rip) + +LBB29_91: + LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax + LONG $0x000007e9; BYTE $0x00 // jmp LBB29_93, $7(%rip) + +LBB29_92: + LONG $0xfcc0c748; WORD $0xffff; BYTE $0xff // movq $-4, %rax + +LBB29_93: WORD $0x894d; BYTE $0xcc // movq %r9, %r12 - LONG $0xffffdae9; BYTE $0xff // jmp LBB29_87, $-38(%rip) + LONG $0xffffdae9; BYTE $0xff // jmp LBB29_90, $-38(%rip) QUAD $0x9090909090909090 // .p2align 4, 0x90 _validate_utf8: @@ -11561,7 +11576,7 @@ _Digits: QUAD $0x3939383937393639 // .ascii 8, '96979899' QUAD $0x0000000000000000 // .p2align 4, 0x00 -_LB_d7a2d665: // _pow10_ceil_sig.g +_LB_612f9db5: // _pow10_ceil_sig.g QUAD $0xff77b1fcbebcdc4f // .quad -38366372719436721 QUAD $0x25e8e89c13bb0f7b // .quad 2731688931043774331 QUAD $0x9faacf3df73609b1 // .quad -6941508010590729807 @@ -14216,7 +14231,7 @@ _P10_TAB: QUAD $0x4480f0cf064dd592 // .quad 0x4480f0cf064dd592 QUAD $0x0000000000000000 // .p2align 4, 0x00 -_LB_76da1fa4: // _pow10_ceil_sig_f32.g +_LB_2206210c: // _pow10_ceil_sig_f32.g QUAD $0x81ceb32c4b43fcf5 // .quad -9093133594791772939 QUAD $0xa2425ff75e14fc32 // .quad -6754730975062328270 QUAD $0xcad2f7f5359a3b3f // .quad -3831727700400522433 @@ -14307,7 +14322,7 @@ _entry: _f32toa: MOVQ out+0(FP), DI MOVSD val+8(FP), X0 - CALL ·__native_entry__+29216(SB) // _f32toa + CALL ·__native_entry__+29264(SB) // _f32toa MOVQ AX, ret+16(FP) RET @@ -14625,7 +14640,7 @@ _validate_utf8: MOVQ s+0(FP), DI MOVQ p+8(FP), SI MOVQ m+16(FP), DX - CALL ·__native_entry__+27984(SB) // _validate_utf8 + CALL ·__native_entry__+28032(SB) // _validate_utf8 MOVQ AX, ret+24(FP) RET @@ -14644,7 +14659,7 @@ _entry: _validate_utf8_fast: MOVQ s+0(FP), DI - CALL ·__native_entry__+28656(SB) // _validate_utf8_fast + CALL ·__native_entry__+28704(SB) // _validate_utf8_fast MOVQ AX, ret+8(FP) RET diff --git a/internal/native/sse/native_subr_amd64.go b/internal/native/sse/native_subr_amd64.go index ee1c760..7d2af7e 100644 --- a/internal/native/sse/native_subr_amd64.go +++ b/internal/native/sse/native_subr_amd64.go @@ -9,7 +9,7 @@ package sse func __native_entry__() uintptr var ( - _subr__f32toa = __native_entry__() + 29216 + _subr__f32toa = __native_entry__() + 29264 _subr__f64toa = __native_entry__() + 448 _subr__get_by_path = __native_entry__() + 26208 _subr__html_escape = __native_entry__() + 9360 @@ -24,8 +24,8 @@ var ( _subr__u64toa = __native_entry__() + 3840 _subr__unquote = __native_entry__() + 6992 _subr__validate_one = __native_entry__() + 22576 - _subr__validate_utf8 = __native_entry__() + 27984 - _subr__validate_utf8_fast = __native_entry__() + 28656 + _subr__validate_utf8 = __native_entry__() + 28032 + _subr__validate_utf8_fast = __native_entry__() + 28704 _subr__value = __native_entry__() + 12560 _subr__vnumber = __native_entry__() + 16416 _subr__vsigned = __native_entry__() + 18064 diff --git a/native/scanning.c b/native/scanning.c index 1f4175c..1bfd947 100644 --- a/native/scanning.c +++ b/native/scanning.c @@ -1824,6 +1824,7 @@ query: if (ps == pe) { return skip_one_fast(src, p); } + /* match type: should query key in object, query index in array */ c = advance_ns(src, p); if (is_str(ps)) { @@ -1842,7 +1843,14 @@ query: skip_in_obj: c = advance_ns(src, p); - if (c != '"') goto err_inval; + if (c == '}') { + goto not_found; + } + if (c != '"') { + goto err_inval; + } + + /* parse the object key */ found = match_key(src, p, get_str(ps)); if (found < 0) { return found; // parse string errors @@ -1850,24 +1858,45 @@ skip_in_obj: /* value should after : */ c = advance_ns(src, p); - if (c != ':') goto err_inval; + if (c != ':') { + goto err_inval; + } if (found) { ps++; goto query; - } else { - skip_one_fast(src, p); - c = advance_ns(src, p); - if (c != ',') goto not_found; // not found key - goto skip_in_obj; } + /* skip the unknown fields */ + skip_one_fast(src, p); + c = advance_ns(src, p); + if (c == '}') { + goto not_found; + } + if (c != ',') { + goto err_inval; + } + goto skip_in_obj; + skip_in_arr: index = get_int(ps); + + /* check empty array */ + c = advance_ns(src, p); + if (c == ']') { + goto not_found; + } + *p -= 1; + /* skip array elem one by one */ while (index-- > 0) { skip_one_fast(src, p); c = advance_ns(src, p); - if (c != ',') goto not_found; // out of range + if (c == ']') { + goto not_found; + } + if (c != ',') { + goto err_inval; + } } ps++; goto query;