- update json

master v1.0.97
李光春 1 year ago
parent 12e42acd30
commit 7237b43fdd

@ -32,22 +32,22 @@ require (
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
gorm.io/datatypes v1.1.1
gorm.io/driver/mysql v1.4.7
gorm.io/driver/postgres v1.4.8
gorm.io/driver/postgres v1.5.0
gorm.io/gen v0.3.21
gorm.io/gorm v1.24.6
gorm.io/gorm v1.24.7-0.20230306060331-85eaf9eeda11
xorm.io/xorm v1.3.2
)
require (
github.com/bitly/go-simplejson v0.5.0 // indirect
github.com/bytedance/sonic v1.8.3 // indirect
github.com/bytedance/sonic v1.8.5 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
github.com/clbanning/mxj v1.8.4 // indirect
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/goccy/go-json v0.10.0 // indirect
github.com/goccy/go-json v0.10.1 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/go-querystring v1.1.0 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
@ -56,7 +56,7 @@ require (
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.16.0 // indirect
github.com/klauspost/compress v1.16.3 // indirect
github.com/klauspost/cpuid/v2 v2.2.4 // indirect
github.com/leodido/go-urn v1.2.2 // indirect
github.com/mattn/go-isatty v0.0.17 // indirect
@ -91,7 +91,7 @@ require (
golang.org/x/sys v0.6.0 // indirect
golang.org/x/time v0.3.0 // indirect
golang.org/x/tools v0.7.0 // indirect
google.golang.org/protobuf v1.29.0 // indirect
google.golang.org/protobuf v1.30.0 // indirect
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect

@ -45,8 +45,8 @@ github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngE
github.com/bsm/ginkgo/v2 v2.5.0 h1:aOAnND1T40wEdAtkGSkvSICWeQ8L3UASX7YVCqQx+eQ=
github.com/bsm/gomega v1.20.0 h1:JhAwLmtRzXFTx2AkALSLa8ijZafntmhSoU63Ok18Uq8=
github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
github.com/bytedance/sonic v1.8.3 h1:pf6fGl5eqWYKkx1RcD4qpuX+BIUaduv/wTm5ekWJ80M=
github.com/bytedance/sonic v1.8.3/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U=
github.com/bytedance/sonic v1.8.5 h1:kjX0/vo5acEQ/sinD/18SkA/lDDUk23F0RcaHvI7omc=
github.com/bytedance/sonic v1.8.5/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U=
github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
@ -123,8 +123,8 @@ github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ
github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/goccy/go-json v0.8.1/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/goccy/go-json v0.10.0 h1:mXKd9Qw4NuzShiRlOXKews24ufknHO7gx30lsDyokKA=
github.com/goccy/go-json v0.10.0/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/goccy/go-json v0.10.1 h1:lEs5Ob+oOG/Ze199njvzHbhn6p9T+h64F5hRj69iTTo=
github.com/goccy/go-json v0.10.1/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
@ -270,8 +270,8 @@ github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:C
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4=
github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY=
github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk=
github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
@ -721,8 +721,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac
google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.29.0 h1:44S3JjaKmLEE4YIkjzexaP+NzZsudE3Zin5Njn/pYX0=
google.golang.org/protobuf v1.29.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk=
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk=
@ -758,8 +758,8 @@ gorm.io/datatypes v1.1.1/go.mod h1:u8GEgFjJ+GpsGfgHmBUcQqHm/937t3sj/SO9dvbndTg=
gorm.io/driver/mysql v1.4.3/go.mod h1:sSIebwZAVPiT+27jK9HIwvsqOGKx3YMPmrA3mBJR10c=
gorm.io/driver/mysql v1.4.7 h1:rY46lkCspzGHn7+IYsNpSfEv9tA+SU4SkkB+GFX125Y=
gorm.io/driver/mysql v1.4.7/go.mod h1:SxzItlnT1cb6e1e4ZRpgJN2VYtcqJgqnHxWr4wsP8oc=
gorm.io/driver/postgres v1.4.8 h1:NDWizaclb7Q2aupT0jkwK8jx1HVCNzt+PQ8v/VnxviA=
gorm.io/driver/postgres v1.4.8/go.mod h1:O9MruWGNLUBUWVYfWuBClpf3HeGjOoybY0SNmCs3wsw=
gorm.io/driver/postgres v1.5.0 h1:u2FXTy14l45qc3UeCJ7QaAXZmZfDDv0YrthvmRq1l0U=
gorm.io/driver/postgres v1.5.0/go.mod h1:FUZXzO+5Uqg5zzwzv4KK49R8lvGIyscBOqYrtI1Ce9A=
gorm.io/driver/sqlite v1.4.2/go.mod h1:0Aq3iPO+v9ZKbcdiz8gLWRw5VOPcBOPUQJFLq5e2ecI=
gorm.io/driver/sqlite v1.4.3 h1:HBBcZSDnWi5BW3B3rwvVTc510KGkBkexlOg0QrmLUuU=
gorm.io/driver/sqlserver v1.4.1 h1:t4r4r6Jam5E6ejqP7N82qAJIJAht27EGT41HyPfXRw0=
@ -767,10 +767,9 @@ gorm.io/gen v0.3.21 h1:t8329wT4tW1ZZWOm7vn4LV6OIrz8a5zCg+p78ezt+rA=
gorm.io/gen v0.3.21/go.mod h1:aWgvoKdG9f8Des4TegSa0N5a+gwhGsFo0JJMaLwokvk=
gorm.io/gorm v1.23.8/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
gorm.io/gorm v1.24.0/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA=
gorm.io/gorm v1.24.2/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA=
gorm.io/gorm v1.24.3/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA=
gorm.io/gorm v1.24.6 h1:wy98aq9oFEetsc4CAbKD2SoBCdMzsbSIvSUUFJuHi5s=
gorm.io/gorm v1.24.6/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
gorm.io/gorm v1.24.7-0.20230306060331-85eaf9eeda11 h1:9qNbmu21nNThCNnF5i2R3kw2aL27U8ZwbzccNjOmW0g=
gorm.io/gorm v1.24.7-0.20230306060331-85eaf9eeda11/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
gorm.io/hints v1.1.1 h1:NPampLxQujY+277452rt4yqtg6JmzNZ1jA2olk0eFXw=
gorm.io/hints v1.1.1/go.mod h1:zdwzfFqvBWGbpuKiAhLFOSGSpeD3/VsRgkXR9Y7Z3cs=
gorm.io/plugin/dbresolver v1.4.1 h1:Ug4LcoPhrvqq71UhxtF346f+skTYoCa/nEsdjvHwEzk=

@ -1,5 +1,5 @@
package go_library
func Version() string {
return "1.0.96"
return "1.0.97"
}

@ -5,8 +5,44 @@ import (
"github.com/dtapps/go-library/utils/gojobs/jobs_gorm_model"
"github.com/dtapps/go-library/utils/gotime"
"github.com/dtapps/go-library/utils/gotrace_id"
"strings"
)
// Filter 过滤
func (c *Client) Filter(ctx context.Context, isMandatoryIp bool, tasks []jobs_gorm_model.Task) (newTasks []jobs_gorm_model.Task) {
for _, v := range tasks {
// 强制只能是当前的ip
if isMandatoryIp {
if v.SpecifyIp == v.SpecifyIp {
newTasks = append(newTasks, v)
continue
}
}
if v.SpecifyIp == "" || v.SpecifyIp == SpecifyIpNull {
newTasks = append(newTasks, v)
continue
}
// 判断是否包含该ip
specifyIpFind := strings.Contains(v.SpecifyIp, ",")
if specifyIpFind {
// 分割字符串
parts := strings.Split(v.SpecifyIp, ",")
for _, vv := range parts {
if vv == v.SpecifyIp {
newTasks = append(newTasks, v)
continue
}
}
} else {
if v.SpecifyIp == v.SpecifyIp {
newTasks = append(newTasks, v)
continue
}
}
}
return newTasks
}
// Run 运行
func (c *Client) Run(ctx context.Context, task jobs_gorm_model.Task, taskResultCode int, taskResultDesc string) {

@ -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) {

@ -116,6 +116,10 @@ func (self *Searcher) GetByPath(path ...interface{}) (Node, error) {
self.parser.p = 0
start, err = self.parser.getByPath(path...)
if err != 0 {
// for compatibility with old version
if err == types.ERR_NOT_FOUND {
return Node{}, ErrNotExist
}
return Node{}, self.parser.syntaxError(err)
}

@ -1487,18 +1487,21 @@ func (self *_Assembler) _asm_OP_map_init(_ *_Instr) {
func (self *_Assembler) _asm_OP_map_key_i8(p *_Instr) {
self.parse_signed(int8Type, "", p.vi()) // PARSE int8
self.range_signed(_I_int8, _T_int8, math.MinInt8, math.MaxInt8) // RANGE int8
self.match_char('"')
self.mapassign_std(p.vt(), _VAR_st_Iv) // MAPASSIGN int8, mapassign, st.Iv
}
func (self *_Assembler) _asm_OP_map_key_i16(p *_Instr) {
self.parse_signed(int16Type, "", p.vi()) // PARSE int16
self.range_signed(_I_int16, _T_int16, math.MinInt16, math.MaxInt16) // RANGE int16
self.match_char('"')
self.mapassign_std(p.vt(), _VAR_st_Iv) // MAPASSIGN int16, mapassign, st.Iv
}
func (self *_Assembler) _asm_OP_map_key_i32(p *_Instr) {
self.parse_signed(int32Type, "", p.vi()) // PARSE int32
self.range_signed(_I_int32, _T_int32, math.MinInt32, math.MaxInt32) // RANGE int32
self.match_char('"')
if vt := p.vt(); !mapfast(vt) {
self.mapassign_std(vt, _VAR_st_Iv) // MAPASSIGN int32, mapassign, st.Iv
} else {
@ -1508,6 +1511,7 @@ func (self *_Assembler) _asm_OP_map_key_i32(p *_Instr) {
func (self *_Assembler) _asm_OP_map_key_i64(p *_Instr) {
self.parse_signed(int64Type, "", p.vi()) // PARSE int64
self.match_char('"')
if vt := p.vt(); !mapfast(vt) {
self.mapassign_std(vt, _VAR_st_Iv) // MAPASSIGN int64, mapassign, st.Iv
} else {
@ -1519,18 +1523,21 @@ func (self *_Assembler) _asm_OP_map_key_i64(p *_Instr) {
func (self *_Assembler) _asm_OP_map_key_u8(p *_Instr) {
self.parse_unsigned(uint8Type, "", p.vi()) // PARSE uint8
self.range_unsigned(_I_uint8, _T_uint8, math.MaxUint8) // RANGE uint8
self.match_char('"')
self.mapassign_std(p.vt(), _VAR_st_Iv) // MAPASSIGN uint8, vt.Iv
}
func (self *_Assembler) _asm_OP_map_key_u16(p *_Instr) {
self.parse_unsigned(uint16Type, "", p.vi()) // PARSE uint16
self.range_unsigned(_I_uint16, _T_uint16, math.MaxUint16) // RANGE uint16
self.match_char('"')
self.mapassign_std(p.vt(), _VAR_st_Iv) // MAPASSIGN uint16, vt.Iv
}
func (self *_Assembler) _asm_OP_map_key_u32(p *_Instr) {
self.parse_unsigned(uint32Type, "", p.vi()) // PARSE uint32
self.range_unsigned(_I_uint32, _T_uint32, math.MaxUint32) // RANGE uint32
self.match_char('"')
if vt := p.vt(); !mapfast(vt) {
self.mapassign_std(vt, _VAR_st_Iv) // MAPASSIGN uint32, vt.Iv
} else {
@ -1540,6 +1547,7 @@ func (self *_Assembler) _asm_OP_map_key_u32(p *_Instr) {
func (self *_Assembler) _asm_OP_map_key_u64(p *_Instr) {
self.parse_unsigned(uint64Type, "", p.vi()) // PARSE uint64
self.match_char('"')
if vt := p.vt(); !mapfast(vt) {
self.mapassign_std(vt, _VAR_st_Iv) // MAPASSIGN uint64, vt.Iv
} else {
@ -1552,11 +1560,13 @@ func (self *_Assembler) _asm_OP_map_key_f32(p *_Instr) {
self.parse_number(float32Type, "", p.vi()) // PARSE NUMBER
self.range_single() // RANGE float32
self.Emit("MOVSS", _X0, _VAR_st_Dv) // MOVSS X0, st.Dv
self.match_char('"')
self.mapassign_std(p.vt(), _VAR_st_Dv) // MAPASSIGN ${p.vt()}, mapassign, st.Dv
}
func (self *_Assembler) _asm_OP_map_key_f64(p *_Instr) {
self.parse_number(float64Type, "", p.vi()) // PARSE NUMBER
self.match_char('"')
self.mapassign_std(p.vt(), _VAR_st_Dv) // MAPASSIGN ${p.vt()}, mapassign, st.Dv
}
@ -1787,10 +1797,14 @@ func (self *_Assembler) lspace(subfix string) {
}
func (self *_Assembler) _asm_OP_match_char(p *_Instr) {
self.match_char(p.vb())
}
func (self *_Assembler) match_char(char byte) {
self.check_eof(1)
self.Emit("CMPB", jit.Sib(_IP, _IC, 1, 0), jit.Imm(int64(p.vb()))) // CMPB (IP)(IC), ${p.vb()}
self.Sjmp("JNE" , _LB_char_0_error) // JNE _char_0_error
self.Emit("ADDQ", jit.Imm(1), _IC) // ADDQ $1, IC
self.Emit("CMPB", jit.Sib(_IP, _IC, 1, 0), jit.Imm(int64(char))) // CMPB (IP)(IC), ${p.vb()}
self.Sjmp("JNE" , _LB_char_0_error) // JNE _char_0_error
self.Emit("ADDQ", jit.Imm(1), _IC) // ADDQ $1, IC
}
func (self *_Assembler) _asm_OP_check_char(p *_Instr) {

@ -1482,18 +1482,21 @@ func (self *_Assembler) _asm_OP_map_init(_ *_Instr) {
func (self *_Assembler) _asm_OP_map_key_i8(p *_Instr) {
self.parse_signed(int8Type, "", p.vi()) // PARSE int8
self.range_signed_CX(_I_int8, _T_int8, math.MinInt8, math.MaxInt8) // RANGE int8
self.match_char('"')
self.mapassign_std(p.vt(), _VAR_st_Iv) // MAPASSIGN int8, mapassign, st.Iv
}
func (self *_Assembler) _asm_OP_map_key_i16(p *_Instr) {
self.parse_signed(int16Type, "", p.vi()) // PARSE int16
self.range_signed_CX(_I_int16, _T_int16, math.MinInt16, math.MaxInt16) // RANGE int16
self.match_char('"')
self.mapassign_std(p.vt(), _VAR_st_Iv) // MAPASSIGN int16, mapassign, st.Iv
}
func (self *_Assembler) _asm_OP_map_key_i32(p *_Instr) {
self.parse_signed(int32Type, "", p.vi()) // PARSE int32
self.range_signed_CX(_I_int32, _T_int32, math.MinInt32, math.MaxInt32) // RANGE int32
self.match_char('"')
if vt := p.vt(); !mapfast(vt) {
self.mapassign_std(vt, _VAR_st_Iv) // MAPASSIGN int32, mapassign, st.Iv
} else {
@ -1504,6 +1507,7 @@ func (self *_Assembler) _asm_OP_map_key_i32(p *_Instr) {
func (self *_Assembler) _asm_OP_map_key_i64(p *_Instr) {
self.parse_signed(int64Type, "", p.vi()) // PARSE int64
self.match_char('"')
if vt := p.vt(); !mapfast(vt) {
self.mapassign_std(vt, _VAR_st_Iv) // MAPASSIGN int64, mapassign, st.Iv
} else {
@ -1515,18 +1519,21 @@ func (self *_Assembler) _asm_OP_map_key_i64(p *_Instr) {
func (self *_Assembler) _asm_OP_map_key_u8(p *_Instr) {
self.parse_unsigned(uint8Type, "", p.vi()) // PARSE uint8
self.range_unsigned_CX(_I_uint8, _T_uint8, math.MaxUint8) // RANGE uint8
self.mapassign_std(p.vt(), _VAR_st_Iv) // MAPASSIGN uint8, vt.Iv
self.match_char('"')
self.mapassign_std(p.vt(), _VAR_st_Iv) // MAPASSIGN uint8, vt.Iv
}
func (self *_Assembler) _asm_OP_map_key_u16(p *_Instr) {
self.parse_unsigned(uint16Type, "", p.vi()) // PARSE uint16
self.range_unsigned_CX(_I_uint16, _T_uint16, math.MaxUint16) // RANGE uint16
self.match_char('"')
self.mapassign_std(p.vt(), _VAR_st_Iv) // MAPASSIGN uint16, vt.Iv
}
func (self *_Assembler) _asm_OP_map_key_u32(p *_Instr) {
self.parse_unsigned(uint32Type, "", p.vi()) // PARSE uint32
self.range_unsigned_CX(_I_uint32, _T_uint32, math.MaxUint32) // RANGE uint32
self.match_char('"')
if vt := p.vt(); !mapfast(vt) {
self.mapassign_std(vt, _VAR_st_Iv) // MAPASSIGN uint32, vt.Iv
} else {
@ -1537,6 +1544,7 @@ func (self *_Assembler) _asm_OP_map_key_u32(p *_Instr) {
func (self *_Assembler) _asm_OP_map_key_u64(p *_Instr) {
self.parse_unsigned(uint64Type, "", p.vi()) // PARSE uint64
self.match_char('"')
if vt := p.vt(); !mapfast(vt) {
self.mapassign_std(vt, _VAR_st_Iv) // MAPASSIGN uint64, vt.Iv
} else {
@ -1549,11 +1557,13 @@ func (self *_Assembler) _asm_OP_map_key_f32(p *_Instr) {
self.parse_number(float32Type, "", p.vi()) // PARSE NUMBER
self.range_single_X0() // RANGE float32
self.Emit("MOVSS", _X0, _VAR_st_Dv) // MOVSS X0, st.Dv
self.match_char('"')
self.mapassign_std(p.vt(), _VAR_st_Dv) // MAPASSIGN ${p.vt()}, mapassign, st.Dv
}
func (self *_Assembler) _asm_OP_map_key_f64(p *_Instr) {
self.parse_number(float64Type, "", p.vi()) // PARSE NUMBER
self.match_char('"')
self.mapassign_std(p.vt(), _VAR_st_Dv) // MAPASSIGN ${p.vt()}, mapassign, st.Dv
}
@ -1767,8 +1777,12 @@ func (self *_Assembler) lspace(subfix string) {
}
func (self *_Assembler) _asm_OP_match_char(p *_Instr) {
self.match_char(p.vb())
}
func (self *_Assembler) match_char(char byte) {
self.check_eof(1)
self.Emit("CMPB", jit.Sib(_IP, _IC, 1, 0), jit.Imm(int64(p.vb()))) // CMPB (IP)(IC), ${p.vb()}
self.Emit("CMPB", jit.Sib(_IP, _IC, 1, 0), jit.Imm(int64(char))) // CMPB (IP)(IC), ${p.vb()}
self.Sjmp("JNE" , _LB_char_0_error) // JNE _char_0_error
self.Emit("ADDQ", jit.Imm(1), _IC) // ADDQ $1, IC
}

@ -639,11 +639,6 @@ func (self *_Compiler) compileMapOp(p *_Program, sp int, vt reflect.Type, op _Op
skip2 := p.pc()
p.rtt(op, vt)
/* match the closing quote if needed */
if op != _OP_map_key_str && op != _OP_map_key_utext && op != _OP_map_key_utext_p {
p.chr(_OP_match_char, '"')
}
/* match the value separator */
p.add(_OP_lspace)
p.chr(_OP_match_char, ':')
@ -660,11 +655,6 @@ func (self *_Compiler) compileMapOp(p *_Program, sp int, vt reflect.Type, op _Op
skip3 := p.pc()
p.rtt(op, vt)
/* match the closing quote if needed */
if op != _OP_map_key_str && op != _OP_map_key_utext && op != _OP_map_key_utext_p {
p.chr(_OP_match_char, '"')
}
/* match the value separator */
p.add(_OP_lspace)
p.chr(_OP_match_char, ':')

@ -21,13 +21,12 @@ import (
`io`
`sync`
`github.com/bytedance/sonic/option`
`github.com/bytedance/sonic/internal/native/types`
)
var (
defaultBufferSize uint = 4096
growSliceFactorShift uint = 1
minLeftBufferShift uint = 2
minLeftBufferShift uint = 1
)
type StreamDecoder struct {
@ -41,7 +40,7 @@ type StreamDecoder struct {
var bufPool = sync.Pool{
New: func () interface{} {
return make([]byte, 0, defaultBufferSize)
return make([]byte, 0, option.DefaultDecoderBufferSize)
},
}
@ -206,8 +205,8 @@ func realloc(buf *[]byte) {
c := uint(cap(*buf))
if c - l <= c >> minLeftBufferShift {
e := l+(l>>minLeftBufferShift)
if e < defaultBufferSize {
e = defaultBufferSize
if e < option.DefaultDecoderBufferSize {
e = option.DefaultDecoderBufferSize
}
tmp := make([]byte, l, e)
copy(tmp, *buf)

@ -30,7 +30,6 @@ import (
const (
_MaxStack = 4096 // 4k states
_MaxBuffer = 1048576 // 1MB buffer size
_StackSize = unsafe.Sizeof(_Stack{})
)
@ -92,7 +91,7 @@ func newBytes() []byte {
if ret := bytesPool.Get(); ret != nil {
return ret.([]byte)
} else {
return make([]byte, 0, _MaxBuffer)
return make([]byte, 0, option.DefaultEncoderBufferSize)
}
}
@ -112,7 +111,7 @@ func newBuffer() *bytes.Buffer {
if ret := bufferPool.Get(); ret != nil {
return ret.(*bytes.Buffer)
} else {
return bytes.NewBuffer(make([]byte, 0, _MaxBuffer))
return bytes.NewBuffer(make([]byte, 0, option.DefaultEncoderBufferSize))
}
}

@ -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 $0xba158d48; WORD $0x00af; BYTE $0x00 // leaq $44986(%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 $0x00774fe8; BYTE $0x00 // callq _format_significand, $30543(%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 $0x940d8d48; WORD $0x00ab; BYTE $0x00 // leaq $43924(%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 $0x4a0d8d48; WORD $0x00aa; BYTE $0x00 // leaq $43594(%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 $0x007246e8; BYTE $0x00 // callq _format_significand, $29254(%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 $0xf00d8d48; WORD $0x00a3; BYTE $0x00 // leaq $41968(%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 $0xa9158d4c; WORD $0x00a3; BYTE $0x00 // leaq $41897(%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 $0x31158d48; WORD $0x00a3; BYTE $0x00 // leaq $41777(%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 $0x100d8d48; WORD $0x00a3; BYTE $0x00 // leaq $41744(%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 $0x3c0d8d48; WORD $0x00a2; BYTE $0x00 // leaq $41532(%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 $0x14358d48; WORD $0x00a2; BYTE $0x00 // leaq $41492(%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 $0x03158d48; WORD $0x00a2; BYTE $0x00 // leaq $41475(%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 $0xeb158d48; WORD $0x00a1; BYTE $0x00 // leaq $41451(%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 $0x49058d48; WORD $0x00a1; BYTE $0x00 // leaq $41289(%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 $0x1d358d48; WORD $0x00a1; BYTE $0x00 // leaq $41245(%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 $0x0c058d48; WORD $0x00a1; BYTE $0x00 // leaq $41228(%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 $0xf2358d48; WORD $0x00a0; BYTE $0x00 // leaq $41202(%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 $0xf8158d48; WORD $0x00c6; BYTE $0x00 // leaq $50936(%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 $0x3b0d8d48; WORD $0x009f; BYTE $0x00 // leaq $40763(%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 $0xe60d8d48; WORD $0x009e; BYTE $0x00 // leaq $40678(%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 $0xc0058d4c; WORD $0x009e; BYTE $0x00 // leaq $40640(%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 $0x4b0d8d48; WORD $0x00c5; BYTE $0x00 // leaq $50507(%rip), %rcx /* __SingleQuoteTab(%rip) */
LONG $0x44058d4c; WORD $0x00d5; BYTE $0x00 // leaq $54596(%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 $0xad1d8d48; WORD $0x00c3; BYTE $0x00 // leaq $50093(%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 $0xf60d8d4c; WORD $0x00e0; BYTE $0x00 // leaq $57590(%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 $0x3a058d4c; WORD $0x00df; BYTE $0x00 // leaq $57146(%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 $0xda1d8d4c; WORD $0x00d6; BYTE $0x00 // leaq $55002(%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 $0x71358d4c; WORD $0x005c; BYTE $0x00 // leaq $23665(%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 $0x58358d4c; WORD $0x0086; BYTE $0x00 // leaq $34392(%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 $0x005575e8; BYTE $0x00 // callq _right_shift, $21877(%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 $0x01358d4c; WORD $0x0086; BYTE $0x00 // leaq $34305(%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 $0x005326e8; BYTE $0x00 // callq _left_shift, $21286(%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 $0x005483e8; BYTE $0x00 // callq _right_shift, $21635(%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 $0x005430e8; BYTE $0x00 // callq _right_shift, $21552(%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 $0x005222e8; BYTE $0x00 // callq _left_shift, $21026(%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 $0x004852e9; BYTE $0x00 // jmp _advance_string_default, $18514(%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 $0xc00d8d48; WORD $0x00e0; BYTE $0x00 // leaq $57536(%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 $0x77058d48; WORD $0x00e0; BYTE $0x00 // leaq $57463(%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 $0xfb0d8d48; WORD $0x00df; BYTE $0x00 // leaq $57339(%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)
@ -6709,20 +6709,20 @@ LBB28_18:
LONG $0xffffcce9; BYTE $0xff // jmp LBB28_16, $-52(%rip)
LBB28_19:
WORD $0x8b4d; BYTE $0x07 // movq (%r15), %r8
LONG $0x084f8b4d // movq $8(%r15), %r9
LONG $0x101c8d4d // leaq (%r8,%rdx), %r11
WORD $0x2949; BYTE $0xd1 // subq %rdx, %r9
LONG $0x20f98349 // cmpq $32, %r9
LONG $0x07e8820f; WORD $0x0000 // jb LBB28_27, $2024(%rip)
LONG $0xffffba41; WORD $0xffff // movl $4294967295, %r10d
WORD $0x3145; BYTE $0xe4 // xorl %r12d, %r12d
QUAD $0xfffffe3b056ff9c5 // vmovdqa $-453(%rip), %xmm0 /* LCPI28_3(%rip) */
QUAD $0xfffffe430d6ff9c5 // vmovdqa $-445(%rip), %xmm1 /* LCPI28_4(%rip) */
WORD $0xd231 // xorl %edx, %edx
WORD $0x3145; BYTE $0xff // xorl %r15d, %r15d
LONG $0x00002be9; BYTE $0x00 // jmp LBB28_21, $43(%rip)
QUAD $0x9090909090909090; BYTE $0x90 // .p2align 4, 0x90
WORD $0x8b4d; BYTE $0x07 // movq (%r15), %r8
LONG $0x084f8b4d // movq $8(%r15), %r9
LONG $0x101c8d4d // leaq (%r8,%rdx), %r11
WORD $0x2949; BYTE $0xd1 // subq %rdx, %r9
LONG $0x20f98349 // cmpq $32, %r9
LONG $0x07e88c0f; WORD $0x0000 // jl LBB28_27, $2024(%rip)
LONG $0x0020bc41; WORD $0x0000 // movl $32, %r12d
LONG $0xffffba41; WORD $0xffff // movl $4294967295, %r10d
WORD $0xd231 // xorl %edx, %edx
QUAD $0xfffffe36056ff9c5 // vmovdqa $-458(%rip), %xmm0 /* LCPI28_3(%rip) */
QUAD $0xfffffe3e0d6ff9c5 // vmovdqa $-450(%rip), %xmm1 /* LCPI28_4(%rip) */
WORD $0x3145; BYTE $0xff // xorl %r15d, %r15d
LONG $0x000028e9; BYTE $0x00 // jmp LBB28_21, $40(%rip)
LONG $0x90909090; WORD $0x9090 // .p2align 4, 0x90
LBB28_23:
WORD $0x3145; BYTE $0xff // xorl %r15d, %r15d
@ -6733,8 +6733,8 @@ LBB28_24:
LONG $0x20c28348 // addq $32, %rdx
LONG $0x214c8d4b; BYTE $0xe0 // leaq $-32(%r9,%r12), %rcx
LONG $0xe0c48349 // addq $-32, %r12
LONG $0x1ff98348 // cmpq $31, %rcx
LONG $0x078b860f; WORD $0x0000 // jbe LBB28_25, $1931(%rip)
LONG $0x3ff98348 // cmpq $63, %rcx
LONG $0x078b8e0f; WORD $0x0000 // jle LBB28_25, $1931(%rip)
LBB28_21:
LONG $0x6f7ac1c4; WORD $0x1314 // vmovdqu (%r11,%rdx), %xmm2
@ -7291,11 +7291,11 @@ LBB28_25:
WORD $0x854d; BYTE $0xff // testq %r15, %r15
LONG $0x0020850f; WORD $0x0000 // jne LBB28_82, $32(%rip)
WORD $0x0149; BYTE $0xd3 // addq %rdx, %r11
WORD $0x014d; BYTE $0xe1 // addq %r12, %r9
WORD $0x2949; BYTE $0xd1 // subq %rdx, %r9
LBB28_27:
WORD $0x854d; BYTE $0xc9 // testq %r9, %r9
LONG $0x0052850f; WORD $0x0000 // jne LBB28_86, $82(%rip)
LONG $0x00528f0f; WORD $0x0000 // jg LBB28_86, $82(%rip)
LONG $0xfff7bee9; BYTE $0xff // jmp LBB28_16, $-2114(%rip)
LBB28_81:
@ -7310,7 +7310,7 @@ LBB28_82:
WORD $0xf748; BYTE $0xd2 // notq %rdx
WORD $0x0149; BYTE $0xd1 // addq %rdx, %r9
WORD $0x854d; BYTE $0xc9 // testq %r9, %r9
LONG $0x0024850f; WORD $0x0000 // jne LBB28_86, $36(%rip)
LONG $0x00248f0f; WORD $0x0000 // jg LBB28_86, $36(%rip)
LONG $0xfff790e9; BYTE $0xff // jmp LBB28_16, $-2160(%rip)
LBB28_84:
@ -7319,7 +7319,7 @@ LBB28_84:
WORD $0x0149; BYTE $0xc3 // addq %rax, %r11
LONG $0xffc0c748; WORD $0xffff; BYTE $0xff // movq $-1, %rax
WORD $0x0149; BYTE $0xc9 // addq %rcx, %r9
LONG $0xf771840f; WORD $0xffff // je LBB28_16, $-2191(%rip)
LONG $0xf7718e0f; WORD $0xffff // jle LBB28_16, $-2191(%rip)
LBB28_86:
LONG $0x03b60f41 // movzbl (%r11), %eax
@ -7332,7 +7332,7 @@ LBB28_86:
WORD $0x0149; BYTE $0xc3 // addq %rax, %r11
LONG $0xffc0c748; WORD $0xffff; BYTE $0xff // movq $-1, %rax
WORD $0x0149; BYTE $0xc9 // addq %rcx, %r9
LONG $0xffcd850f; WORD $0xffff // jne LBB28_86, $-51(%rip)
LONG $0xffcd8f0f; WORD $0xffff // jg LBB28_86, $-51(%rip)
LONG $0xfff739e9; BYTE $0xff // jmp LBB28_16, $-2247(%rip)
BYTE $0x90 // .p2align 2, 0x90
@ -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 $0x05fb850f; WORD $0x0000 // jne LBB29_80, $1531(%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 $0x05d8850f; WORD $0x0000 // jne LBB29_80, $1496(%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 $0x001defe8; BYTE $0x00 // callq _advance_string_default, $7663(%rip)
LONG $0x001e2fe8; BYTE $0x00 // callq _advance_string_default, $7727(%rip)
WORD $0x8548; BYTE $0xc0 // testq %rax, %rax
LONG $0x05c0880f; WORD $0x0000 // js LBB29_82, $1472(%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 $0xa7358d4c; WORD $0x0094; BYTE $0x00 // leaq $38055(%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 $0x04948e0f; WORD $0x0000 // jle LBB29_86, $1172(%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 $0x0465840f; WORD $0x0000 // je LBB29_84, $1125(%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 $0x04358e0f; WORD $0x0000 // jle LBB29_85, $1077(%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 $0x03f9850f; WORD $0x0000 // jne LBB29_83, $1017(%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 $0x03e5850f; WORD $0x0000 // jne LBB29_83, $997(%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 $0x03c1850f; WORD $0x0000 // jne LBB29_83, $961(%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 $0x03a7850f; WORD $0x0000 // jne LBB29_83, $935(%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 $0x02bb8c0f; WORD $0x0000 // jl LBB29_88, $699(%rip)
LONG $0x02fa8c0f; WORD $0x0000 // jl LBB29_92, $762(%rip)
LONG $0x00dbff3d; BYTE $0x00 // cmpl $56319, %eax
LONG $0x02b0870f; WORD $0x0000 // ja LBB29_88, $688(%rip)
LONG $0x02ef870f; WORD $0x0000 // ja LBB29_92, $751(%rip)
LONG $0x5c398041 // cmpb $92, (%r9)
LONG $0x02a6850f; WORD $0x0000 // jne LBB29_88, $678(%rip)
LONG $0x02e5850f; WORD $0x0000 // jne LBB29_92, $741(%rip)
LONG $0x247c8041; WORD $0x7507 // cmpb $117, $7(%r12)
LONG $0x029a850f; WORD $0x0000 // jne LBB29_88, $666(%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 $0x026c850f; WORD $0x0000 // jne LBB29_87, $620(%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 $0x0258850f; WORD $0x0000 // jne LBB29_87, $600(%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 $0x0234850f; WORD $0x0000 // jne LBB29_87, $564(%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 $0x021a850f; WORD $0x0000 // jne LBB29_87, $538(%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 $0x01f1850f; WORD $0x0000 // jne LBB29_88, $497(%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 $0x6b358d4c; WORD $0x0091; BYTE $0x00 // leaq $37227(%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 $0x00ce850f; WORD $0x0000 // jne LBB29_80, $206(%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,48 +7888,68 @@ LBB29_71:
WORD $0x9090; BYTE $0x90 // .p2align 4, 0x90
LBB29_73:
WORD $0x5b3c // cmpb $91, %al
LONG $0x0079850f; WORD $0x0000 // jne LBB29_80, $121(%rip)
WORD $0xf980; BYTE $0x02 // cmpb $2, %cl
LONG $0x0070850f; WORD $0x0000 // jne LBB29_80, $112(%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)
LONG $0xf9c1850f; WORD $0xffff // jne LBB29_2, $-1599(%rip)
LBB29_79:
LBB29_80:
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 $0x00000ae9; BYTE $0x00 // jmp LBB29_81, $10(%rip)
LONG $0xffedb4e8; BYTE $0xff // callq _skip_one_fast, $-4684(%rip)
LONG $0x000029e9; BYTE $0x00 // jmp LBB29_85, $41(%rip)
LBB29_80:
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_81:
LBB29_85:
LONG $0x28c48348 // addq $40, %rsp
BYTE $0x5b // popq %rbx
WORD $0x5c41 // popq %r12
@ -7939,42 +7959,42 @@ LBB29_81:
BYTE $0x5d // popq %rbp
BYTE $0xc3 // retq
LBB29_82:
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_81, $-38(%rip)
LONG $0xffffdae9; BYTE $0xff // jmp LBB29_85, $-38(%rip)
LBB29_83:
LBB29_87:
LONG $0x02c48349 // addq $2, %r12
LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax
LONG $0x000012e9; BYTE $0x00 // jmp LBB29_86, $18(%rip)
LONG $0x000012e9; BYTE $0x00 // jmp LBB29_90, $18(%rip)
LBB29_84:
LBB29_88:
WORD $0xff49; BYTE $0xc4 // incq %r12
LONG $0xfdc0c748; WORD $0xffff; BYTE $0xff // movq $-3, %rax
LONG $0x000003e9; BYTE $0x00 // jmp LBB29_86, $3(%rip)
LONG $0x000003e9; BYTE $0x00 // jmp LBB29_90, $3(%rip)
LBB29_85:
LBB29_89:
WORD $0xff49; BYTE $0xc4 // incq %r12
LBB29_86:
LBB29_90:
WORD $0x2949; BYTE $0xfc // subq %rdi, %r12
WORD $0x894d; BYTE $0x20 // movq %r12, (%r8)
LONG $0xffffade9; BYTE $0xff // jmp LBB29_81, $-83(%rip)
LONG $0xffffade9; BYTE $0xff // jmp LBB29_85, $-83(%rip)
LBB29_87:
LBB29_91:
LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax
LONG $0x000007e9; BYTE $0x00 // jmp LBB29_89, $7(%rip)
LONG $0x000007e9; BYTE $0x00 // jmp LBB29_93, $7(%rip)
LBB29_88:
LBB29_92:
LONG $0xfcc0c748; WORD $0xffff; BYTE $0xff // movq $-4, %rax
LBB29_89:
WORD $0x894d; BYTE $0xcc // movq %r9, %r12
LONG $0xffffdae9; BYTE $0xff // jmp LBB29_86, $-38(%rip)
LONG $0x90909090; WORD $0x9090; BYTE $0x90 // .p2align 4, 0x90
LBB29_93:
WORD $0x894d; BYTE $0xcc // movq %r9, %r12
LONG $0xffffdae9; BYTE $0xff // jmp LBB29_90, $-38(%rip)
QUAD $0x9090909090909090 // .p2align 4, 0x90
_validate_utf8:
BYTE $0x55 // pushq %rbp
@ -11410,7 +11430,7 @@ _Digits:
QUAD $0x3939383937393639 // .ascii 8, '96979899'
QUAD $0x0000000000000000 // .p2align 4, 0x00
_LB_ba9a92e3: // _pow10_ceil_sig.g
_LB_f7e080b7: // _pow10_ceil_sig.g
QUAD $0xff77b1fcbebcdc4f // .quad -38366372719436721
QUAD $0x25e8e89c13bb0f7b // .quad 2731688931043774331
QUAD $0x9faacf3df73609b1 // .quad -6941508010590729807
@ -14065,7 +14085,7 @@ _P10_TAB:
QUAD $0x4480f0cf064dd592 // .quad 0x4480f0cf064dd592
QUAD $0x0000000000000000 // .p2align 4, 0x00
_LB_ae3e0b42: // _pow10_ceil_sig_f32.g
_LB_2b359ec2: // _pow10_ceil_sig_f32.g
QUAD $0x81ceb32c4b43fcf5 // .quad -9093133594791772939
QUAD $0xa2425ff75e14fc32 // .quad -6754730975062328270
QUAD $0xcad2f7f5359a3b3f // .quad -3831727700400522433
@ -14156,7 +14176,7 @@ _entry:
_f32toa:
MOVQ out+0(FP), DI
MOVSD val+8(FP), X0
CALL ·__native_entry__+28576(SB) // _f32toa
CALL ·__native_entry__+28640(SB) // _f32toa
MOVQ AX, ret+16(FP)
RET
@ -14474,7 +14494,7 @@ _validate_utf8:
MOVQ s+0(FP), DI
MOVQ p+8(FP), SI
MOVQ m+16(FP), DX
CALL ·__native_entry__+27328(SB) // _validate_utf8
CALL ·__native_entry__+27392(SB) // _validate_utf8
MOVQ AX, ret+24(FP)
RET
@ -14493,7 +14513,7 @@ _entry:
_validate_utf8_fast:
MOVQ s+0(FP), DI
CALL ·__native_entry__+28000(SB) // _validate_utf8_fast
CALL ·__native_entry__+28064(SB) // _validate_utf8_fast
MOVQ AX, ret+8(FP)
RET

@ -9,7 +9,7 @@ package avx
func __native_entry__() uintptr
var (
_subr__f32toa = __native_entry__() + 28576
_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__() + 27328
_subr__validate_utf8_fast = __native_entry__() + 28000
_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

@ -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)
@ -7682,22 +7682,22 @@ LBB28_23:
LONG $0xffffcce9; BYTE $0xff // jmp LBB28_21, $-52(%rip)
LBB28_24:
WORD $0x8b49; BYTE $0x0f // movq (%r15), %rcx
LONG $0x085f8b4d // movq $8(%r15), %r11
LONG $0x244c8948; BYTE $0x18 // movq %rcx, $24(%rsp)
LONG $0x113c8d4c // leaq (%rcx,%rdx), %r15
WORD $0x2949; BYTE $0xd3 // subq %rdx, %r11
LONG $0x20fb8349 // cmpq $32, %r11
LONG $0x06b0820f; WORD $0x0000 // jb LBB28_33, $1712(%rip)
LONG $0xffffb941; WORD $0xffff // movl $4294967295, %r9d
WORD $0xdb31 // xorl %ebx, %ebx
QUAD $0xfffffd67056ffdc5 // vmovdqa $-665(%rip), %ymm0 /* LCPI28_6(%rip) */
QUAD $0xfffffd7f0d6ffdc5 // vmovdqa $-641(%rip), %ymm1 /* LCPI28_7(%rip) */
LONG $0xab918d45; WORD $0xaaaa; BYTE $0xaa // leal $-1431655765(%r9), %r10d
WORD $0xd231 // xorl %edx, %edx
WORD $0xff31 // xorl %edi, %edi
LONG $0x000064e9; BYTE $0x00 // jmp LBB28_26, $100(%rip)
QUAD $0x9090909090909090; LONG $0x90909090; WORD $0x9090; BYTE $0x90 // .p2align 4, 0x90
WORD $0x8b49; BYTE $0x0f // movq (%r15), %rcx
LONG $0x085f8b4d // movq $8(%r15), %r11
LONG $0x244c8948; BYTE $0x18 // movq %rcx, $24(%rsp)
LONG $0x113c8d4c // leaq (%rcx,%rdx), %r15
WORD $0x2949; BYTE $0xd3 // subq %rdx, %r11
LONG $0x20fb8349 // cmpq $32, %r11
LONG $0x06b08c0f; WORD $0x0000 // jl LBB28_33, $1712(%rip)
LONG $0x000020bb; BYTE $0x00 // movl $32, %ebx
LONG $0xffffb941; WORD $0xffff // movl $4294967295, %r9d
WORD $0xd231 // xorl %edx, %edx
QUAD $0xfffffd62056ffdc5 // vmovdqa $-670(%rip), %ymm0 /* LCPI28_6(%rip) */
QUAD $0xfffffd7a0d6ffdc5 // vmovdqa $-646(%rip), %ymm1 /* LCPI28_7(%rip) */
LONG $0xab918d45; WORD $0xaaaa; BYTE $0xaa // leal $-1431655765(%r9), %r10d
WORD $0xff31 // xorl %edi, %edi
LONG $0x000061e9; BYTE $0x00 // jmp LBB28_26, $97(%rip)
QUAD $0x9090909090909090; LONG $0x90909090 // .p2align 4, 0x90
LBB28_29:
WORD $0xfe89 // movl %edi, %esi
@ -7724,8 +7724,8 @@ LBB28_30:
LONG $0x20c28348 // addq $32, %rdx
LONG $0x1b4c8d49; BYTE $0xe0 // leaq $-32(%r11,%rbx), %rcx
LONG $0xe0c38348 // addq $-32, %rbx
LONG $0x1ff98348 // cmpq $31, %rcx
LONG $0x0615860f; WORD $0x0000 // jbe LBB28_31, $1557(%rip)
LONG $0x3ff98348 // cmpq $63, %rcx
LONG $0x06158e0f; WORD $0x0000 // jle LBB28_31, $1557(%rip)
LBB28_26:
LONG $0x6f7ec1c4; WORD $0x1714 // vmovdqu (%r15,%rdx), %ymm2
@ -8176,11 +8176,11 @@ LBB28_31:
WORD $0x8548; BYTE $0xff // testq %rdi, %rdi
LONG $0x0028850f; WORD $0x0000 // jne LBB28_89, $40(%rip)
WORD $0x0149; BYTE $0xd7 // addq %rdx, %r15
WORD $0x0149; BYTE $0xdb // addq %rbx, %r11
WORD $0x2949; BYTE $0xd3 // subq %rdx, %r11
LBB28_33:
WORD $0x854d; BYTE $0xdb // testq %r11, %r11
LONG $0x005a850f; WORD $0x0000 // jne LBB28_93, $90(%rip)
LONG $0x005a8f0f; WORD $0x0000 // jg LBB28_93, $90(%rip)
LONG $0xfff8f1e9; BYTE $0xff // jmp LBB28_21, $-1807(%rip)
LBB28_87:
@ -8199,7 +8199,7 @@ LBB28_89:
WORD $0xf748; BYTE $0xd2 // notq %rdx
WORD $0x0149; BYTE $0xd3 // addq %rdx, %r11
WORD $0x854d; BYTE $0xdb // testq %r11, %r11
LONG $0x0024850f; WORD $0x0000 // jne LBB28_93, $36(%rip)
LONG $0x00248f0f; WORD $0x0000 // jg LBB28_93, $36(%rip)
LONG $0xfff8bbe9; BYTE $0xff // jmp LBB28_21, $-1861(%rip)
LBB28_91:
@ -8208,7 +8208,7 @@ LBB28_91:
WORD $0x0149; BYTE $0xc7 // addq %rax, %r15
LONG $0xffc0c748; WORD $0xffff; BYTE $0xff // movq $-1, %rax
WORD $0x0149; BYTE $0xd3 // addq %rdx, %r11
LONG $0xf89c840f; WORD $0xffff // je LBB28_21, $-1892(%rip)
LONG $0xf89c8e0f; WORD $0xffff // jle LBB28_21, $-1892(%rip)
LBB28_93:
LONG $0x07b60f41 // movzbl (%r15), %eax
@ -8221,7 +8221,7 @@ LBB28_93:
WORD $0x0149; BYTE $0xc7 // addq %rax, %r15
LONG $0xffc0c748; WORD $0xffff; BYTE $0xff // movq $-1, %rax
WORD $0x0149; BYTE $0xd3 // addq %rdx, %r11
LONG $0xffcd850f; WORD $0xffff // jne LBB28_93, $-51(%rip)
LONG $0xffcd8f0f; WORD $0xffff // jg LBB28_93, $-51(%rip)
LONG $0xfff864e9; BYTE $0xff // jmp LBB28_21, $-1948(%rip)
// .p2align 2, 0x90
@ -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 $0x0606850f; WORD $0x0000 // jne LBB29_88, $1542(%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 $0x05ee850f; WORD $0x0000 // jne LBB29_88, $1518(%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 $0x05d9880f; WORD $0x0000 // js LBB29_90, $1497(%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 $0x04448e0f; WORD $0x0000 // jle LBB29_94, $1092(%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 $0x0419840f; WORD $0x0000 // je LBB29_92, $1049(%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 $0x03ea8e0f; WORD $0x0000 // jle LBB29_93, $1002(%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 $0x03b0850f; WORD $0x0000 // jne LBB29_91, $944(%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 $0x039c850f; WORD $0x0000 // jne LBB29_91, $924(%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 $0x037b850f; WORD $0x0000 // jne LBB29_91, $891(%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 $0x0364850f; WORD $0x0000 // jne LBB29_91, $868(%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 $0x02848c0f; WORD $0x0000 // jl LBB29_96, $644(%rip)
LONG $0x02c38c0f; WORD $0x0000 // jl LBB29_100, $707(%rip)
LONG $0x00dbff3d; BYTE $0x00 // cmpl $56319, %eax
LONG $0x0279870f; WORD $0x0000 // ja LBB29_96, $633(%rip)
LONG $0x02b8870f; WORD $0x0000 // ja LBB29_100, $696(%rip)
LONG $0x5c398041 // cmpb $92, (%r9)
LONG $0x026f850f; WORD $0x0000 // jne LBB29_96, $623(%rip)
LONG $0x02ae850f; WORD $0x0000 // jne LBB29_100, $686(%rip)
LONG $0x75077b80 // cmpb $117, $7(%rbx)
LONG $0x0265850f; WORD $0x0000 // jne LBB29_96, $613(%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 $0x023a850f; WORD $0x0000 // jne LBB29_95, $570(%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 $0x0226850f; WORD $0x0000 // jne LBB29_95, $550(%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 $0x0205850f; WORD $0x0000 // jne LBB29_95, $517(%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 $0x01ee850f; WORD $0x0000 // jne LBB29_95, $494(%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 $0x01c5850f; WORD $0x0000 // jne LBB29_96, $453(%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 $0x00a5850f; WORD $0x0000 // jne LBB29_88, $165(%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,51 +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 $0x0069850f; WORD $0x0000 // jne LBB29_88, $105(%rip)
WORD $0xf980; BYTE $0x02 // cmpb $2, %cl
LONG $0x0060850f; WORD $0x0000 // jne LBB29_88, $96(%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)
LONG $0xf9c1850f; WORD $0xffff // jne LBB29_2, $-1599(%rip)
LBB29_87:
LBB29_88:
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 $0x00000ae9; BYTE $0x00 // jmp LBB29_89, $10(%rip)
LONG $0xffee84e8; BYTE $0xff // callq _skip_one_fast, $-4476(%rip)
LONG $0x000029e9; BYTE $0x00 // jmp LBB29_93, $41(%rip)
LBB29_88:
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_89:
LBB29_93:
LONG $0x28c48348 // addq $40, %rsp
BYTE $0x5b // popq %rbx
WORD $0x5c41 // popq %r12
@ -8853,41 +8872,41 @@ LBB29_89:
BYTE $0x5d // popq %rbp
BYTE $0xc3 // retq
LBB29_90:
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_89, $-35(%rip)
LONG $0xffffdde9; BYTE $0xff // jmp LBB29_93, $-35(%rip)
LBB29_91:
LBB29_95:
LONG $0x02c38348 // addq $2, %rbx
LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax
LONG $0x000012e9; BYTE $0x00 // jmp LBB29_94, $18(%rip)
LONG $0x000012e9; BYTE $0x00 // jmp LBB29_98, $18(%rip)
LBB29_92:
LBB29_96:
WORD $0xff48; BYTE $0xc3 // incq %rbx
LONG $0xfdc0c748; WORD $0xffff; BYTE $0xff // movq $-3, %rax
LONG $0x000003e9; BYTE $0x00 // jmp LBB29_94, $3(%rip)
LONG $0x000003e9; BYTE $0x00 // jmp LBB29_98, $3(%rip)
LBB29_93:
LBB29_97:
WORD $0xff48; BYTE $0xc3 // incq %rbx
LBB29_94:
LBB29_98:
WORD $0x294c; BYTE $0xc3 // subq %r8, %rbx
WORD $0x8949; BYTE $0x1e // movq %rbx, (%r14)
LONG $0xffffb0e9; BYTE $0xff // jmp LBB29_89, $-80(%rip)
LONG $0xffffb0e9; BYTE $0xff // jmp LBB29_93, $-80(%rip)
LBB29_95:
LBB29_99:
LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax
LONG $0x000007e9; BYTE $0x00 // jmp LBB29_97, $7(%rip)
LONG $0x000007e9; BYTE $0x00 // jmp LBB29_101, $7(%rip)
LBB29_96:
LBB29_100:
LONG $0xfcc0c748; WORD $0xffff; BYTE $0xff // movq $-4, %rax
LBB29_97:
WORD $0x894c; BYTE $0xcb // movq %r9, %rbx
LONG $0xffffdae9; BYTE $0xff // jmp LBB29_94, $-38(%rip)
QUAD $0x9090909090909090; WORD $0x9090 // .p2align 4, 0x90
LBB29_101:
WORD $0x894c; BYTE $0xcb // movq %r9, %rbx
LONG $0xffffdae9; BYTE $0xff // jmp LBB29_98, $-38(%rip)
QUAD $0x9090909090909090; WORD $0x9090; BYTE $0x90 // .p2align 4, 0x90
_validate_utf8:
BYTE $0x55 // pushq %rbp
@ -12886,7 +12905,7 @@ _Digits:
QUAD $0x3939383937393639 // .ascii 8, '96979899'
QUAD $0x0000000000000000 // .p2align 4, 0x00
_LB_d6605758: // _pow10_ceil_sig.g
_LB_e1d618e2: // _pow10_ceil_sig.g
QUAD $0xff77b1fcbebcdc4f // .quad -38366372719436721
QUAD $0x25e8e89c13bb0f7b // .quad 2731688931043774331
QUAD $0x9faacf3df73609b1 // .quad -6941508010590729807
@ -15541,7 +15560,7 @@ _P10_TAB:
QUAD $0x4480f0cf064dd592 // .quad 0x4480f0cf064dd592
QUAD $0x0000000000000000 // .p2align 4, 0x00
_LB_4a64d01e: // _pow10_ceil_sig_f32.g
_LB_5d6b68e6: // _pow10_ceil_sig_f32.g
QUAD $0x81ceb32c4b43fcf5 // .quad -9093133594791772939
QUAD $0xa2425ff75e14fc32 // .quad -6754730975062328270
QUAD $0xcad2f7f5359a3b3f // .quad -3831727700400522433
@ -15632,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
@ -15950,7 +15969,7 @@ _validate_utf8:
MOVQ s+0(FP), DI
MOVQ p+8(FP), SI
MOVQ m+16(FP), DX
CALL ·__native_entry__+30992(SB) // _validate_utf8
CALL ·__native_entry__+31056(SB) // _validate_utf8
MOVQ AX, ret+24(FP)
RET
@ -15969,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

@ -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__() + 30992
_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

@ -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 $0xfa158d48; WORD $0x00b1; BYTE $0x00 // leaq $45562(%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 $0x00796fe8; BYTE $0x00 // callq _format_significand, $31087(%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 $0xd40d8d48; WORD $0x00ad; BYTE $0x00 // leaq $44500(%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 $0x8d0d8d48; WORD $0x00ac; BYTE $0x00 // leaq $44173(%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 $0x007479e8; BYTE $0x00 // callq _format_significand, $29817(%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 $0x500d8d48; WORD $0x00a6; BYTE $0x00 // leaq $42576(%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 $0x09158d4c; WORD $0x00a6; BYTE $0x00 // leaq $42505(%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 $0x91158d48; WORD $0x00a5; BYTE $0x00 // leaq $42385(%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 $0x700d8d48; WORD $0x00a5; BYTE $0x00 // leaq $42352(%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 $0x8c0d8d48; WORD $0x00a4; BYTE $0x00 // leaq $42124(%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 $0x64358d48; WORD $0x00a4; BYTE $0x00 // leaq $42084(%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 $0x53158d48; WORD $0x00a4; BYTE $0x00 // leaq $42067(%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 $0x3b158d48; WORD $0x00a4; BYTE $0x00 // leaq $42043(%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 $0x99058d48; WORD $0x00a3; BYTE $0x00 // leaq $41881(%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 $0x6d358d48; WORD $0x00a3; BYTE $0x00 // leaq $41837(%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 $0x5c058d48; WORD $0x00a3; BYTE $0x00 // leaq $41820(%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 $0x42358d48; WORD $0x00a3; BYTE $0x00 // leaq $41794(%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 $0x38158d48; WORD $0x00c9; BYTE $0x00 // leaq $51512(%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 $0x7b0d8d48; WORD $0x00a1; BYTE $0x00 // leaq $41339(%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 $0x260d8d48; WORD $0x00a1; BYTE $0x00 // leaq $41254(%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 $0x00058d4c; WORD $0x00a1; BYTE $0x00 // leaq $41216(%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 $0x780d8d48; WORD $0x00c7; BYTE $0x00 // leaq $51064(%rip), %rcx /* __SingleQuoteTab(%rip) */
LONG $0x71058d4c; WORD $0x00d7; BYTE $0x00 // leaq $55153(%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 $0xbd1d8d48; WORD $0x00c5; BYTE $0x00 // leaq $50621(%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 $0x060d8d4c; WORD $0x00e3; BYTE $0x00 // leaq $58118(%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 $0x3a058d4c; WORD $0x00e1; BYTE $0x00 // leaq $57658(%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 $0xda1d8d4c; WORD $0x00d8; BYTE $0x00 // leaq $55514(%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 $0x61358d4c; WORD $0x005e; BYTE $0x00 // leaq $24161(%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 $0x48358d4c; WORD $0x0088; BYTE $0x00 // leaq $34888(%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 $0x005745e8; BYTE $0x00 // callq _right_shift, $22341(%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 $0xf1358d4c; WORD $0x0087; BYTE $0x00 // leaq $34801(%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 $0x0054f6e8; BYTE $0x00 // callq _left_shift, $21750(%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 $0x005653e8; BYTE $0x00 // callq _right_shift, $22099(%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 $0x005600e8; BYTE $0x00 // callq _right_shift, $22016(%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 $0x0053f2e8; BYTE $0x00 // callq _left_shift, $21490(%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 $0x004a12e9; BYTE $0x00 // jmp _advance_string_default, $18962(%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 $0x4e0d8d48; WORD $0x00e2; BYTE $0x00 // leaq $57934(%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 $0x05058d48; WORD $0x00e2; BYTE $0x00 // leaq $57861(%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 $0x870d8d48; WORD $0x00e1; BYTE $0x00 // leaq $57735(%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)
@ -6760,20 +6760,20 @@ LBB28_18:
LONG $0xffffcee9; BYTE $0xff // jmp LBB28_16, $-50(%rip)
LBB28_19:
WORD $0x8b4d; BYTE $0x06 // movq (%r14), %r8
LONG $0x084e8b4d // movq $8(%r14), %r9
LONG $0x101c8d4d // leaq (%r8,%rdx), %r11
WORD $0x2949; BYTE $0xd1 // subq %rdx, %r9
LONG $0x20f98349 // cmpq $32, %r9
LONG $0x098c820f; WORD $0x0000 // jb LBB28_27, $2444(%rip)
LONG $0xffffba41; WORD $0xffff // movl $4294967295, %r10d
WORD $0x3145; BYTE $0xff // xorl %r15d, %r15d
QUAD $0xfffffe3c056f0f66 // movdqa $-452(%rip), %xmm0 /* LCPI28_3(%rip) */
QUAD $0xfffffe440d6f0f66 // movdqa $-444(%rip), %xmm1 /* LCPI28_4(%rip) */
WORD $0xd231 // xorl %edx, %edx
WORD $0x3145; BYTE $0xf6 // xorl %r14d, %r14d
LONG $0x00002ce9; BYTE $0x00 // jmp LBB28_21, $44(%rip)
QUAD $0x9090909090909090; WORD $0x9090 // .p2align 4, 0x90
WORD $0x8b4d; BYTE $0x06 // movq (%r14), %r8
LONG $0x084e8b4d // movq $8(%r14), %r9
LONG $0x101c8d4d // leaq (%r8,%rdx), %r11
WORD $0x2949; BYTE $0xd1 // subq %rdx, %r9
LONG $0x20f98349 // cmpq $32, %r9
LONG $0x098c8c0f; WORD $0x0000 // jl LBB28_27, $2444(%rip)
LONG $0x0020bf41; WORD $0x0000 // movl $32, %r15d
LONG $0xffffba41; WORD $0xffff // movl $4294967295, %r10d
WORD $0xd231 // xorl %edx, %edx
QUAD $0xfffffe37056f0f66 // movdqa $-457(%rip), %xmm0 /* LCPI28_3(%rip) */
QUAD $0xfffffe3f0d6f0f66 // movdqa $-449(%rip), %xmm1 /* LCPI28_4(%rip) */
WORD $0x3145; BYTE $0xf6 // xorl %r14d, %r14d
LONG $0x000029e9; BYTE $0x00 // jmp LBB28_21, $41(%rip)
LONG $0x90909090; WORD $0x9090; BYTE $0x90 // .p2align 4, 0x90
LBB28_23:
WORD $0x3145; BYTE $0xf6 // xorl %r14d, %r14d
@ -6784,8 +6784,8 @@ LBB28_24:
LONG $0x20c28348 // addq $32, %rdx
LONG $0x394c8d4b; BYTE $0xe0 // leaq $-32(%r9,%r15), %rcx
LONG $0xe0c78349 // addq $-32, %r15
LONG $0x1ff98348 // cmpq $31, %rcx
LONG $0x092e860f; WORD $0x0000 // jbe LBB28_25, $2350(%rip)
LONG $0x3ff98348 // cmpq $63, %rcx
LONG $0x092e8e0f; WORD $0x0000 // jle LBB28_25, $2350(%rip)
LBB28_21:
LONG $0x6f0f41f3; WORD $0x1314 // movdqu (%r11,%rdx), %xmm2
@ -7437,11 +7437,11 @@ LBB28_25:
WORD $0x854d; BYTE $0xf6 // testq %r14, %r14
LONG $0x0024850f; WORD $0x0000 // jne LBB28_84, $36(%rip)
WORD $0x0149; BYTE $0xd3 // addq %rdx, %r11
WORD $0x014d; BYTE $0xf9 // addq %r15, %r9
WORD $0x2949; BYTE $0xd1 // subq %rdx, %r9
LBB28_27:
WORD $0x854d; BYTE $0xc9 // testq %r9, %r9
LONG $0x0056850f; WORD $0x0000 // jne LBB28_88, $86(%rip)
LONG $0x00568f0f; WORD $0x0000 // jg LBB28_88, $86(%rip)
LONG $0xfff61ce9; BYTE $0xff // jmp LBB28_16, $-2532(%rip)
LBB28_83:
@ -7457,7 +7457,7 @@ LBB28_84:
WORD $0xf748; BYTE $0xd2 // notq %rdx
WORD $0x0149; BYTE $0xd1 // addq %rdx, %r9
WORD $0x854d; BYTE $0xc9 // testq %r9, %r9
LONG $0x0024850f; WORD $0x0000 // jne LBB28_88, $36(%rip)
LONG $0x00248f0f; WORD $0x0000 // jg LBB28_88, $36(%rip)
LONG $0xfff5eae9; BYTE $0xff // jmp LBB28_16, $-2582(%rip)
LBB28_86:
@ -7466,7 +7466,7 @@ LBB28_86:
WORD $0x0149; BYTE $0xc3 // addq %rax, %r11
LONG $0xffc0c748; WORD $0xffff; BYTE $0xff // movq $-1, %rax
WORD $0x0149; BYTE $0xc9 // addq %rcx, %r9
LONG $0xf5cb840f; WORD $0xffff // je LBB28_16, $-2613(%rip)
LONG $0xf5cb8e0f; WORD $0xffff // jle LBB28_16, $-2613(%rip)
LBB28_88:
LONG $0x03b60f41 // movzbl (%r11), %eax
@ -7479,7 +7479,7 @@ LBB28_88:
WORD $0x0149; BYTE $0xc3 // addq %rax, %r11
LONG $0xffc0c748; WORD $0xffff; BYTE $0xff // movq $-1, %rax
WORD $0x0149; BYTE $0xc9 // addq %rcx, %r9
LONG $0xffcd850f; WORD $0xffff // jne LBB28_88, $-51(%rip)
LONG $0xffcd8f0f; WORD $0xffff // jg LBB28_88, $-51(%rip)
LONG $0xfff593e9; BYTE $0xff // jmp LBB28_16, $-2669(%rip)
WORD $0x9090 // .p2align 2, 0x90
@ -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 $0x05fb850f; WORD $0x0000 // jne LBB29_80, $1531(%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 $0x05d8850f; WORD $0x0000 // jne LBB29_80, $1496(%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 $0x001d8fe8; BYTE $0x00 // callq _advance_string_default, $7567(%rip)
LONG $0x001dcfe8; BYTE $0x00 // callq _advance_string_default, $7631(%rip)
WORD $0x8548; BYTE $0xc0 // testq %rax, %rax
LONG $0x05c0880f; WORD $0x0000 // js LBB29_82, $1472(%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 $0x67358d4c; WORD $0x0094; BYTE $0x00 // leaq $37991(%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 $0x04948e0f; WORD $0x0000 // jle LBB29_86, $1172(%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 $0x0465840f; WORD $0x0000 // je LBB29_84, $1125(%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 $0x04358e0f; WORD $0x0000 // jle LBB29_85, $1077(%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 $0x03f9850f; WORD $0x0000 // jne LBB29_83, $1017(%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 $0x03e5850f; WORD $0x0000 // jne LBB29_83, $997(%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 $0x03c1850f; WORD $0x0000 // jne LBB29_83, $961(%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 $0x03a7850f; WORD $0x0000 // jne LBB29_83, $935(%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 $0x02bb8c0f; WORD $0x0000 // jl LBB29_88, $699(%rip)
LONG $0x02fa8c0f; WORD $0x0000 // jl LBB29_92, $762(%rip)
LONG $0x00dbff3d; BYTE $0x00 // cmpl $56319, %eax
LONG $0x02b0870f; WORD $0x0000 // ja LBB29_88, $688(%rip)
LONG $0x02ef870f; WORD $0x0000 // ja LBB29_92, $751(%rip)
LONG $0x5c398041 // cmpb $92, (%r9)
LONG $0x02a6850f; WORD $0x0000 // jne LBB29_88, $678(%rip)
LONG $0x02e5850f; WORD $0x0000 // jne LBB29_92, $741(%rip)
LONG $0x247c8041; WORD $0x7507 // cmpb $117, $7(%r12)
LONG $0x029a850f; WORD $0x0000 // jne LBB29_88, $666(%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 $0x026c850f; WORD $0x0000 // jne LBB29_87, $620(%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 $0x0258850f; WORD $0x0000 // jne LBB29_87, $600(%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 $0x0234850f; WORD $0x0000 // jne LBB29_87, $564(%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 $0x021a850f; WORD $0x0000 // jne LBB29_87, $538(%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 $0x01f1850f; WORD $0x0000 // jne LBB29_88, $497(%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 $0x2b358d4c; WORD $0x0091; BYTE $0x00 // leaq $37163(%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 $0x00ce850f; WORD $0x0000 // jne LBB29_80, $206(%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,48 +8037,68 @@ LBB29_71:
WORD $0x9090; BYTE $0x90 // .p2align 4, 0x90
LBB29_73:
WORD $0x5b3c // cmpb $91, %al
LONG $0x0079850f; WORD $0x0000 // jne LBB29_80, $121(%rip)
WORD $0xf980; BYTE $0x02 // cmpb $2, %cl
LONG $0x0070850f; WORD $0x0000 // jne LBB29_80, $112(%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)
LONG $0xf9c1850f; WORD $0xffff // jne LBB29_2, $-1599(%rip)
LBB29_79:
LBB29_80:
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 $0x00000ae9; BYTE $0x00 // jmp LBB29_81, $10(%rip)
LONG $0xffec04e8; BYTE $0xff // callq _skip_one_fast, $-5116(%rip)
LONG $0x000029e9; BYTE $0x00 // jmp LBB29_85, $41(%rip)
LBB29_80:
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_81:
LBB29_85:
LONG $0x28c48348 // addq $40, %rsp
BYTE $0x5b // popq %rbx
WORD $0x5c41 // popq %r12
@ -8088,42 +8108,42 @@ LBB29_81:
BYTE $0x5d // popq %rbp
BYTE $0xc3 // retq
LBB29_82:
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_81, $-38(%rip)
LONG $0xffffdae9; BYTE $0xff // jmp LBB29_85, $-38(%rip)
LBB29_83:
LBB29_87:
LONG $0x02c48349 // addq $2, %r12
LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax
LONG $0x000012e9; BYTE $0x00 // jmp LBB29_86, $18(%rip)
LONG $0x000012e9; BYTE $0x00 // jmp LBB29_90, $18(%rip)
LBB29_84:
LBB29_88:
WORD $0xff49; BYTE $0xc4 // incq %r12
LONG $0xfdc0c748; WORD $0xffff; BYTE $0xff // movq $-3, %rax
LONG $0x000003e9; BYTE $0x00 // jmp LBB29_86, $3(%rip)
LONG $0x000003e9; BYTE $0x00 // jmp LBB29_90, $3(%rip)
LBB29_85:
LBB29_89:
WORD $0xff49; BYTE $0xc4 // incq %r12
LBB29_86:
LBB29_90:
WORD $0x2949; BYTE $0xfc // subq %rdi, %r12
WORD $0x894d; BYTE $0x20 // movq %r12, (%r8)
LONG $0xffffade9; BYTE $0xff // jmp LBB29_81, $-83(%rip)
LONG $0xffffade9; BYTE $0xff // jmp LBB29_85, $-83(%rip)
LBB29_87:
LBB29_91:
LONG $0xfec0c748; WORD $0xffff; BYTE $0xff // movq $-2, %rax
LONG $0x000007e9; BYTE $0x00 // jmp LBB29_89, $7(%rip)
LONG $0x000007e9; BYTE $0x00 // jmp LBB29_93, $7(%rip)
LBB29_88:
LBB29_92:
LONG $0xfcc0c748; WORD $0xffff; BYTE $0xff // movq $-4, %rax
LBB29_89:
WORD $0x894d; BYTE $0xcc // movq %r9, %r12
LONG $0xffffdae9; BYTE $0xff // jmp LBB29_86, $-38(%rip)
LONG $0x90909090; WORD $0x9090; BYTE $0x90 // .p2align 4, 0x90
LBB29_93:
WORD $0x894d; BYTE $0xcc // movq %r9, %r12
LONG $0xffffdae9; BYTE $0xff // jmp LBB29_90, $-38(%rip)
QUAD $0x9090909090909090 // .p2align 4, 0x90
_validate_utf8:
BYTE $0x55 // pushq %rbp
@ -11556,7 +11576,7 @@ _Digits:
QUAD $0x3939383937393639 // .ascii 8, '96979899'
QUAD $0x0000000000000000 // .p2align 4, 0x00
_LB_1eff03ac: // _pow10_ceil_sig.g
_LB_612f9db5: // _pow10_ceil_sig.g
QUAD $0xff77b1fcbebcdc4f // .quad -38366372719436721
QUAD $0x25e8e89c13bb0f7b // .quad 2731688931043774331
QUAD $0x9faacf3df73609b1 // .quad -6941508010590729807
@ -14211,7 +14231,7 @@ _P10_TAB:
QUAD $0x4480f0cf064dd592 // .quad 0x4480f0cf064dd592
QUAD $0x0000000000000000 // .p2align 4, 0x00
_LB_43ccba7c: // _pow10_ceil_sig_f32.g
_LB_2206210c: // _pow10_ceil_sig_f32.g
QUAD $0x81ceb32c4b43fcf5 // .quad -9093133594791772939
QUAD $0xa2425ff75e14fc32 // .quad -6754730975062328270
QUAD $0xcad2f7f5359a3b3f // .quad -3831727700400522433
@ -14302,7 +14322,7 @@ _entry:
_f32toa:
MOVQ out+0(FP), DI
MOVSD val+8(FP), X0
CALL ·__native_entry__+29200(SB) // _f32toa
CALL ·__native_entry__+29264(SB) // _f32toa
MOVQ AX, ret+16(FP)
RET
@ -14620,7 +14640,7 @@ _validate_utf8:
MOVQ s+0(FP), DI
MOVQ p+8(FP), SI
MOVQ m+16(FP), DX
CALL ·__native_entry__+27968(SB) // _validate_utf8
CALL ·__native_entry__+28032(SB) // _validate_utf8
MOVQ AX, ret+24(FP)
RET
@ -14639,7 +14659,7 @@ _entry:
_validate_utf8_fast:
MOVQ s+0(FP), DI
CALL ·__native_entry__+28640(SB) // _validate_utf8_fast
CALL ·__native_entry__+28704(SB) // _validate_utf8_fast
MOVQ AX, ret+8(FP)
RET

@ -9,7 +9,7 @@ package sse
func __native_entry__() uintptr
var (
_subr__f32toa = __native_entry__() + 29200
_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__() + 27968
_subr__validate_utf8_fast = __native_entry__() + 28640
_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

@ -76,6 +76,10 @@ const (
ERR_FLOAT_INFINITY ParsingError = 8
ERR_MISMATCH ParsingError = 9
ERR_INVALID_UTF8 ParsingError = 10
// error code used in ast
ERR_NOT_FOUND ParsingError = 33
ERR_UNSUPPORT_TYPE ParsingError = 34
)
var _ParsingErrors = []string{

@ -16,6 +16,14 @@
package option
var (
// DefaultDecoderBufferSize is the initial buffer size of StreamDecoder
DefaultDecoderBufferSize uint = 128 * 1024
// DefaultEncoderBufferSize is the initial buffer size of Encoder
DefaultEncoderBufferSize uint = 128 * 1024
)
// CompileOptions includes all options for encoder or decoder compiler.
type CompileOptions struct {
// the maximum depth for compilation inline

@ -1,3 +1,25 @@
# v0.10.1 - 2023/03/13
### Fix bugs
* Fix checkptr error for array decoder ( #415 )
* Fix added buffer size check when decoding key ( #430 )
* Fix handling of anonymous fields other than struct ( #431 )
* Fix to not optimize when lower conversion can't handle byte-by-byte ( #432 )
* Fix a problem that MarshalIndent does not work when UnorderedMap is specified ( #435 )
* Fix mapDecoder.DecodeStream() for empty objects containing whitespace ( #425 )
* Fix an issue that could not set the correct NextField for fields in the embedded structure ( #438 )
# v0.10.0 - 2022/11/29
### New features
* Support JSON Path ( #250 )
### Fix bugs
* Fix marshaler for map's key ( #409 )
# v0.9.11 - 2022/08/18
### Fix bugs

@ -19,7 +19,9 @@ type arrayDecoder struct {
}
func newArrayDecoder(dec Decoder, elemType *runtime.Type, alen int, structName, fieldName string) *arrayDecoder {
zeroValue := *(*unsafe.Pointer)(unsafe_New(elemType))
// workaround to avoid checkptr errors. cannot use `*(*unsafe.Pointer)(unsafe_New(elemType))` directly.
zeroValuePtr := unsafe_New(elemType)
zeroValue := **(**unsafe.Pointer)(unsafe.Pointer(&zeroValuePtr))
return &arrayDecoder{
valueDecoder: dec,
elemType: elemType,

@ -88,7 +88,7 @@ func (d *mapDecoder) DecodeStream(s *Stream, depth int64, p unsafe.Pointer) erro
mapValue = makemap(d.mapType, 0)
}
s.cursor++
if s.equalChar('}') {
if s.skipWhiteSpace() == '}' {
*(*unsafe.Pointer)(p) = mapValue
s.cursor++
return nil

@ -51,6 +51,14 @@ func init() {
}
}
func toASCIILower(s string) string {
b := []byte(s)
for i := range b {
b[i] = largeToSmallTable[b[i]]
}
return string(b)
}
func newStructDecoder(structName, fieldName string, fieldMap map[string]*structFieldSet) *structDecoder {
return &structDecoder{
fieldMap: fieldMap,
@ -91,6 +99,10 @@ func (d *structDecoder) tryOptimize() {
for k, v := range d.fieldMap {
key := strings.ToLower(k)
if key != k {
if key != toASCIILower(k) {
d.isTriedOptimize = true
return
}
// already exists same key (e.g. Hello and HELLO has same lower case key
if _, exists := conflicted[key]; exists {
d.isTriedOptimize = true
@ -158,49 +170,53 @@ func (d *structDecoder) tryOptimize() {
}
// decode from '\uXXXX'
func decodeKeyCharByUnicodeRune(buf []byte, cursor int64) ([]byte, int64) {
func decodeKeyCharByUnicodeRune(buf []byte, cursor int64) ([]byte, int64, error) {
const defaultOffset = 4
const surrogateOffset = 6
if cursor+defaultOffset >= int64(len(buf)) {
return nil, 0, errors.ErrUnexpectedEndOfJSON("escaped string", cursor)
}
r := unicodeToRune(buf[cursor : cursor+defaultOffset])
if utf16.IsSurrogate(r) {
cursor += defaultOffset
if cursor+surrogateOffset >= int64(len(buf)) || buf[cursor] != '\\' || buf[cursor+1] != 'u' {
return []byte(string(unicode.ReplacementChar)), cursor + defaultOffset - 1
return []byte(string(unicode.ReplacementChar)), cursor + defaultOffset - 1, nil
}
cursor += 2
r2 := unicodeToRune(buf[cursor : cursor+defaultOffset])
if r := utf16.DecodeRune(r, r2); r != unicode.ReplacementChar {
return []byte(string(r)), cursor + defaultOffset - 1
return []byte(string(r)), cursor + defaultOffset - 1, nil
}
}
return []byte(string(r)), cursor + defaultOffset - 1
return []byte(string(r)), cursor + defaultOffset - 1, nil
}
func decodeKeyCharByEscapedChar(buf []byte, cursor int64) ([]byte, int64) {
func decodeKeyCharByEscapedChar(buf []byte, cursor int64) ([]byte, int64, error) {
c := buf[cursor]
cursor++
switch c {
case '"':
return []byte{'"'}, cursor
return []byte{'"'}, cursor, nil
case '\\':
return []byte{'\\'}, cursor
return []byte{'\\'}, cursor, nil
case '/':
return []byte{'/'}, cursor
return []byte{'/'}, cursor, nil
case 'b':
return []byte{'\b'}, cursor
return []byte{'\b'}, cursor, nil
case 'f':
return []byte{'\f'}, cursor
return []byte{'\f'}, cursor, nil
case 'n':
return []byte{'\n'}, cursor
return []byte{'\n'}, cursor, nil
case 'r':
return []byte{'\r'}, cursor
return []byte{'\r'}, cursor, nil
case 't':
return []byte{'\t'}, cursor
return []byte{'\t'}, cursor, nil
case 'u':
return decodeKeyCharByUnicodeRune(buf, cursor)
}
return nil, cursor
return nil, cursor, nil
}
func decodeKeyByBitmapUint8(d *structDecoder, buf []byte, cursor int64) (int64, *structFieldSet, error) {
@ -242,7 +258,10 @@ func decodeKeyByBitmapUint8(d *structDecoder, buf []byte, cursor int64) (int64,
return 0, nil, errors.ErrUnexpectedEndOfJSON("string", cursor)
case '\\':
cursor++
chars, nextCursor := decodeKeyCharByEscapedChar(buf, cursor)
chars, nextCursor, err := decodeKeyCharByEscapedChar(buf, cursor)
if err != nil {
return 0, nil, err
}
for _, c := range chars {
curBit &= bitmap[keyIdx][largeToSmallTable[c]]
if curBit == 0 {
@ -305,7 +324,10 @@ func decodeKeyByBitmapUint16(d *structDecoder, buf []byte, cursor int64) (int64,
return 0, nil, errors.ErrUnexpectedEndOfJSON("string", cursor)
case '\\':
cursor++
chars, nextCursor := decodeKeyCharByEscapedChar(buf, cursor)
chars, nextCursor, err := decodeKeyCharByEscapedChar(buf, cursor)
if err != nil {
return 0, nil, err
}
for _, c := range chars {
curBit &= bitmap[keyIdx][largeToSmallTable[c]]
if curBit == 0 {

@ -397,7 +397,10 @@ func (c *StructCode) lastFieldCode(field *StructFieldCode, firstField *Opcode) *
func (c *StructCode) lastAnonymousFieldCode(firstField *Opcode) *Opcode {
// firstField is special StructHead operation for anonymous structure.
// So, StructHead's next operation is truly struct head operation.
lastField := firstField.Next
for firstField.Op == OpStructHead {
firstField = firstField.Next
}
lastField := firstField
for lastField.NextField != nil {
lastField = lastField.NextField
}
@ -437,11 +440,6 @@ func (c *StructCode) ToOpcode(ctx *compileContext) Opcodes {
}
if isEndField {
endField := fieldCodes.Last()
if isEmbeddedStruct(field) {
firstField.End = endField
lastField := c.lastAnonymousFieldCode(firstField)
lastField.NextField = endField
}
if len(codes) > 0 {
codes.First().End = endField
} else {
@ -698,7 +696,15 @@ func (c *StructFieldCode) addStructEndCode(ctx *compileContext, codes Opcodes) O
Indent: ctx.indent,
}
codes.Last().Next = end
codes.First().NextField = end
code := codes.First()
for code.Op == OpStructField || code.Op == OpStructHead {
code = code.Next
}
for code.NextField != nil {
code = code.NextField
}
code.NextField = end
codes = codes.Add(end)
ctx.incOpcodeIndex()
return codes

@ -617,6 +617,13 @@ func (c *Compiler) structCode(typ *runtime.Type, isPtr bool) (*StructCode, error
return code, nil
}
func toElemType(t *runtime.Type) *runtime.Type {
for t.Kind() == reflect.Ptr {
t = t.Elem()
}
return t
}
func (c *Compiler) structFieldCode(structCode *StructCode, tag *runtime.StructTag, isPtr, isOnlyOneFirstField bool) (*StructFieldCode, error) {
field := tag.Field
fieldType := runtime.Type2RType(field.Type)
@ -626,7 +633,7 @@ func (c *Compiler) structFieldCode(structCode *StructCode, tag *runtime.StructTa
key: tag.Key,
tag: tag,
offset: field.Offset,
isAnonymous: field.Anonymous && !tag.IsTaggedKey,
isAnonymous: field.Anonymous && !tag.IsTaggedKey && toElemType(fieldType).Kind() == reflect.Struct,
isTaggedKey: tag.IsTaggedKey,
isNilableType: c.isNilableType(fieldType),
isNilCheck: true,

@ -189,7 +189,7 @@ func appendNullComma(ctx *encoder.RuntimeContext, b []byte) []byte {
}
func appendColon(_ *encoder.RuntimeContext, b []byte) []byte {
return append(b, ':', ' ')
return append(b[:len(b)-2], ':', ' ')
}
func appendMapKeyValue(ctx *encoder.RuntimeContext, code *encoder.Opcode, b, key, value []byte) []byte {
@ -229,8 +229,9 @@ func appendEmptyObject(_ *encoder.RuntimeContext, b []byte) []byte {
func appendObjectEnd(ctx *encoder.RuntimeContext, code *encoder.Opcode, b []byte) []byte {
last := len(b) - 1
b[last] = '\n'
b = appendIndent(ctx, b, code.Indent-1)
// replace comma to newline
b[last-1] = '\n'
b = appendIndent(ctx, b[:last], code.Indent)
return append(b, '}', ',', '\n')
}

@ -133,7 +133,7 @@ func appendNullComma(_ *encoder.RuntimeContext, b []byte) []byte {
}
func appendColon(_ *encoder.RuntimeContext, b []byte) []byte {
return append(b, ':', ' ')
return append(b[:len(b)-2], ':', ' ')
}
func appendMapKeyValue(ctx *encoder.RuntimeContext, code *encoder.Opcode, b, key, value []byte) []byte {
@ -173,8 +173,9 @@ func appendEmptyObject(_ *encoder.RuntimeContext, b []byte) []byte {
func appendObjectEnd(ctx *encoder.RuntimeContext, code *encoder.Opcode, b []byte) []byte {
last := len(b) - 1
b[last] = '\n'
b = appendIndent(ctx, b, code.Indent-1)
// replace comma to newline
b[last-1] = '\n'
b = appendIndent(ctx, b[:last], code.Indent)
return append(b, '}', ',', '\n')
}

@ -16,6 +16,21 @@ This package provides various compression algorithms.
# changelog
* Mar 13, 2023 - [v1.16.1](https://github.com/klauspost/compress/releases/tag/v1.16.1)
* zstd: Speed up + improve best encoder by @greatroar in https://github.com/klauspost/compress/pull/776
* gzhttp: Add optional [BREACH mitigation](https://github.com/klauspost/compress/tree/master/gzhttp#breach-mitigation). https://github.com/klauspost/compress/pull/762 https://github.com/klauspost/compress/pull/768 https://github.com/klauspost/compress/pull/769 https://github.com/klauspost/compress/pull/770 https://github.com/klauspost/compress/pull/767
* s2: Add Intel LZ4s converter https://github.com/klauspost/compress/pull/766
* zstd: Minor bug fixes https://github.com/klauspost/compress/pull/771 https://github.com/klauspost/compress/pull/772 https://github.com/klauspost/compress/pull/773
* huff0: Speed up compress1xDo by @greatroar in https://github.com/klauspost/compress/pull/774
* Feb 26, 2023 - [v1.16.0](https://github.com/klauspost/compress/releases/tag/v1.16.0)
* s2: Add [Dictionary](https://github.com/klauspost/compress/tree/master/s2#dictionaries) support. https://github.com/klauspost/compress/pull/685
* s2: Add Compression Size Estimate. https://github.com/klauspost/compress/pull/752
* s2: Add support for custom stream encoder. https://github.com/klauspost/compress/pull/755
* s2: Add LZ4 block converter. https://github.com/klauspost/compress/pull/748
* s2: Support io.ReaderAt in ReadSeeker. https://github.com/klauspost/compress/pull/747
* s2c/s2sx: Use concurrent decoding. https://github.com/klauspost/compress/pull/746
* Jan 21st, 2023 (v1.15.15)
* deflate: Improve level 7-9 by @klauspost in https://github.com/klauspost/compress/pull/739
* zstd: Add delta encoding support by @greatroar in https://github.com/klauspost/compress/pull/728

@ -260,7 +260,9 @@ func (s *Scratch) buildDtable() error {
// If the buffer is over-read an error is returned.
func (s *Scratch) decompress() error {
br := &s.bits
br.init(s.br.unread())
if err := br.init(s.br.unread()); err != nil {
return err
}
var s1, s2 decoder
// Initialize and decode first state and symbol.

@ -60,6 +60,22 @@ func (b *bitWriter) encTwoSymbols(ct cTable, av, bv byte) {
b.nBits += encA.nBits + encB.nBits
}
// encFourSymbols adds up to 32 bits from four symbols.
// It will not check if there is space for them,
// so the caller must ensure that b has been flushed recently.
func (b *bitWriter) encFourSymbols(encA, encB, encC, encD cTableEntry) {
bitsA := encA.nBits
bitsB := bitsA + encB.nBits
bitsC := bitsB + encC.nBits
bitsD := bitsC + encD.nBits
combined := uint64(encA.val) |
(uint64(encB.val) << (bitsA & 63)) |
(uint64(encC.val) << (bitsB & 63)) |
(uint64(encD.val) << (bitsC & 63))
b.bitContainer |= combined << (b.nBits & 63)
b.nBits += bitsD
}
// flush32 will flush out, so there are at least 32 bits available for writing.
func (b *bitWriter) flush32() {
if b.nBits < 32 {

@ -248,8 +248,7 @@ func (s *Scratch) compress1xDo(dst, src []byte) ([]byte, error) {
tmp := src[n : n+4]
// tmp should be len 4
bw.flush32()
bw.encTwoSymbols(cTable, tmp[3], tmp[2])
bw.encTwoSymbols(cTable, tmp[1], tmp[0])
bw.encFourSymbols(cTable[tmp[3]], cTable[tmp[2]], cTable[tmp[1]], cTable[tmp[0]])
}
} else {
for ; n >= 0; n -= 4 {

@ -9,6 +9,7 @@ import (
"encoding/binary"
"errors"
"fmt"
"hash/crc32"
"io"
"os"
"path/filepath"
@ -442,6 +443,9 @@ func (b *blockDec) decodeLiterals(in []byte, hist *history) (remain []byte, err
}
}
var err error
if debugDecoder {
println("huff table input:", len(literals), "CRC:", crc32.ChecksumIEEE(literals))
}
huff, literals, err = huff0.ReadTable(literals, huff)
if err != nil {
println("reading huffman table:", err)

@ -54,7 +54,7 @@ func (b *byteBuf) readBig(n int, dst []byte) ([]byte, error) {
func (b *byteBuf) readByte() (byte, error) {
bb := *b
if len(bb) < 1 {
return 0, nil
return 0, io.ErrUnexpectedEOF
}
r := bb[0]
*b = bb[1:]

@ -32,7 +32,6 @@ type match struct {
length int32
rep int32
est int32
_ [12]byte // Aligned size to cache line: 4+4+4+4+4 bytes + 12 bytes padding = 32 bytes
}
const highScore = 25000
@ -189,12 +188,6 @@ encodeLoop:
panic("offset0 was 0")
}
bestOf := func(a, b *match) *match {
if a.est-b.est+(a.s-b.s)*bitsPerByte>>10 < 0 {
return a
}
return b
}
const goodEnough = 100
nextHashL := hashLen(cv, bestLongTableBits, bestLongLen)
@ -202,40 +195,41 @@ encodeLoop:
candidateL := e.longTable[nextHashL]
candidateS := e.table[nextHashS]
matchAt := func(offset int32, s int32, first uint32, rep int32) match {
// Set m to a match at offset if it looks like that will improve compression.
improve := func(m *match, offset int32, s int32, first uint32, rep int32) {
if s-offset >= e.maxMatchOff || load3232(src, offset) != first {
return match{s: s, est: highScore}
return
}
if debugAsserts {
if !bytes.Equal(src[s:s+4], src[offset:offset+4]) {
panic(fmt.Sprintf("first match mismatch: %v != %v, first: %08x", src[s:s+4], src[offset:offset+4], first))
}
}
m := match{offset: offset, s: s, length: 4 + e.matchlen(s+4, offset+4, src), rep: rep}
m.estBits(bitsPerByte)
return m
cand := match{offset: offset, s: s, length: 4 + e.matchlen(s+4, offset+4, src), rep: rep}
cand.estBits(bitsPerByte)
if m.est >= highScore || cand.est-m.est+(cand.s-m.s)*bitsPerByte>>10 < 0 {
*m = cand
}
}
m1 := matchAt(candidateL.offset-e.cur, s, uint32(cv), -1)
m2 := matchAt(candidateL.prev-e.cur, s, uint32(cv), -1)
m3 := matchAt(candidateS.offset-e.cur, s, uint32(cv), -1)
m4 := matchAt(candidateS.prev-e.cur, s, uint32(cv), -1)
best := bestOf(bestOf(&m1, &m2), bestOf(&m3, &m4))
best := match{s: s, est: highScore}
improve(&best, candidateL.offset-e.cur, s, uint32(cv), -1)
improve(&best, candidateL.prev-e.cur, s, uint32(cv), -1)
improve(&best, candidateS.offset-e.cur, s, uint32(cv), -1)
improve(&best, candidateS.prev-e.cur, s, uint32(cv), -1)
if canRepeat && best.length < goodEnough {
cv32 := uint32(cv >> 8)
spp := s + 1
m1 := matchAt(spp-offset1, spp, cv32, 1)
m2 := matchAt(spp-offset2, spp, cv32, 2)
m3 := matchAt(spp-offset3, spp, cv32, 3)
best = bestOf(bestOf(best, &m1), bestOf(&m2, &m3))
improve(&best, spp-offset1, spp, cv32, 1)
improve(&best, spp-offset2, spp, cv32, 2)
improve(&best, spp-offset3, spp, cv32, 3)
if best.length > 0 {
cv32 = uint32(cv >> 24)
spp += 2
m1 := matchAt(spp-offset1, spp, cv32, 1)
m2 := matchAt(spp-offset2, spp, cv32, 2)
m3 := matchAt(spp-offset3, spp, cv32, 3)
best = bestOf(bestOf(best, &m1), bestOf(&m2, &m3))
improve(&best, spp-offset1, spp, cv32, 1)
improve(&best, spp-offset2, spp, cv32, 2)
improve(&best, spp-offset3, spp, cv32, 3)
}
}
// Load next and check...
@ -262,18 +256,16 @@ encodeLoop:
candidateL2 := e.longTable[hashLen(cv2, bestLongTableBits, bestLongLen)]
// Short at s+1
m1 := matchAt(candidateS.offset-e.cur, s, uint32(cv), -1)
improve(&best, candidateS.offset-e.cur, s, uint32(cv), -1)
// Long at s+1, s+2
m2 := matchAt(candidateL.offset-e.cur, s, uint32(cv), -1)
m3 := matchAt(candidateL.prev-e.cur, s, uint32(cv), -1)
m4 := matchAt(candidateL2.offset-e.cur, s+1, uint32(cv2), -1)
m5 := matchAt(candidateL2.prev-e.cur, s+1, uint32(cv2), -1)
best = bestOf(bestOf(bestOf(best, &m1), &m2), bestOf(bestOf(&m3, &m4), &m5))
improve(&best, candidateL.offset-e.cur, s, uint32(cv), -1)
improve(&best, candidateL.prev-e.cur, s, uint32(cv), -1)
improve(&best, candidateL2.offset-e.cur, s+1, uint32(cv2), -1)
improve(&best, candidateL2.prev-e.cur, s+1, uint32(cv2), -1)
if false {
// Short at s+3.
// Too often worse...
m := matchAt(e.table[hashLen(cv2>>8, bestShortTableBits, bestShortLen)].offset-e.cur, s+2, uint32(cv2>>8), -1)
best = bestOf(best, &m)
improve(&best, e.table[hashLen(cv2>>8, bestShortTableBits, bestShortLen)].offset-e.cur, s+2, uint32(cv2>>8), -1)
}
// See if we can find a better match by checking where the current best ends.
// Use that offset to see if we can find a better full match.
@ -284,13 +276,10 @@ encodeLoop:
// For this compression level 2 yields the best results.
const skipBeginning = 2
if pos := candidateEnd.offset - e.cur - best.length + skipBeginning; pos >= 0 {
m := matchAt(pos, best.s+skipBeginning, load3232(src, best.s+skipBeginning), -1)
bestEnd := bestOf(best, &m)
improve(&best, pos, best.s+skipBeginning, load3232(src, best.s+skipBeginning), -1)
if pos := candidateEnd.prev - e.cur - best.length + skipBeginning; pos >= 0 {
m := matchAt(pos, best.s+skipBeginning, load3232(src, best.s+skipBeginning), -1)
bestEnd = bestOf(bestEnd, &m)
improve(&best, pos, best.s+skipBeginning, load3232(src, best.s+skipBeginning), -1)
}
best = bestEnd
}
}
}

@ -314,9 +314,6 @@ func (s *sequenceDecs) decodeSync(hist []byte) error {
}
size := ll + ml + len(out)
if size-startSize > maxBlockSize {
if size-startSize == 424242 {
panic("here")
}
return fmt.Errorf("output bigger than max block size (%d)", maxBlockSize)
}
if size > cap(out) {
@ -427,8 +424,7 @@ func (s *sequenceDecs) decodeSync(hist []byte) error {
}
}
// Check if space for literals
if size := len(s.literals) + len(s.out) - startSize; size > maxBlockSize {
if size := len(s.literals) + len(out) - startSize; size > maxBlockSize {
return fmt.Errorf("output bigger than max block size (%d)", maxBlockSize)
}

@ -148,7 +148,6 @@ func (s *sequenceDecs) decodeSyncSimple(hist []byte) (bool, error) {
s.seqSize += ctx.litRemain
if s.seqSize > maxBlockSize {
return true, fmt.Errorf("output bigger than max block size (%d)", maxBlockSize)
}
err := br.close()
if err != nil {

@ -0,0 +1,20 @@
package postgres
import (
"github.com/jackc/pgx/v5/pgconn"
"gorm.io/gorm"
)
var errCodes = map[string]string{
"uniqueConstraint": "23505",
}
func (dialector Dialector) Translate(err error) error {
if pgErr, ok := err.(*pgconn.PgError); ok {
if pgErr.Code == errCodes["uniqueConstraint"] {
return gorm.ErrDuplicatedKey
}
}
return err
}

@ -315,7 +315,7 @@ func (m Migrator) AlterColumn(value interface{}, field string) error {
return err
}
} else {
if err := m.DB.Exec("ALTER TABLE ? ALTER COLUMN ? TYPE ? USING ?::?",
if err := m.DB.Exec("ALTER TABLE ? ALTER COLUMN ? TYPE ?"+m.genUsingExpression(fileType.SQL, fieldColumnType.DatabaseTypeName()),
m.CurrentTable(stmt), clause.Column{Name: field.DBName}, fileType, clause.Column{Name: field.DBName}, fileType).Error; err != nil {
return err
}
@ -375,6 +375,16 @@ func (m Migrator) AlterColumn(value interface{}, field string) error {
return nil
}
func (m Migrator) genUsingExpression(targetType, sourceType string) string {
if targetType == "boolean" {
switch sourceType {
case "int2", "int8", "numeric":
return " USING ?::INT::?"
}
}
return " USING ?::?"
}
func (m Migrator) HasConstraint(value interface{}, name string) bool {
var count int64
m.RunWithValue(value, func(stmt *gorm.Statement) error {

2
vendor/gorm.io/gorm/errors.go generated vendored

@ -45,4 +45,6 @@ var (
ErrInvalidValueOfLength = errors.New("invalid association values, length doesn't match")
// ErrPreloadNotAllowed preload is not allowed when count is used
ErrPreloadNotAllowed = errors.New("preload is not allowed when count is used")
// ErrDuplicatedKey occurs when there is a unique key constraint violation
ErrDuplicatedKey = errors.New("duplicated key not allowed")
)

4
vendor/gorm.io/gorm/gorm.go generated vendored

@ -347,6 +347,10 @@ func (db *DB) Callback() *callbacks {
// AddError add error to db
func (db *DB) AddError(err error) error {
if errTranslator, ok := db.Dialector.(ErrorTranslator); ok {
err = errTranslator.Translate(err)
}
if db.Error == nil {
db.Error = err
} else if err != nil {

@ -86,3 +86,7 @@ type Rows interface {
Err() error
Close() error
}
type ErrorTranslator interface {
Translate(err error) error
}

@ -8,7 +8,9 @@ import (
"gorm.io/gorm/schema"
)
type DummyDialector struct{}
type DummyDialector struct {
TranslatedErr error
}
func (DummyDialector) Name() string {
return "dummy"
@ -92,3 +94,7 @@ func (DummyDialector) Explain(sql string, vars ...interface{}) string {
func (DummyDialector) DataTypeOf(*schema.Field) string {
return ""
}
func (d DummyDialector) Translate(err error) error {
return d.TranslatedErr
}

12
vendor/modules.txt vendored

@ -24,7 +24,7 @@ github.com/baidubce/bce-sdk-go/util/log
github.com/basgys/goxml2json
# github.com/bitly/go-simplejson v0.5.0
## explicit
# github.com/bytedance/sonic v1.8.3
# github.com/bytedance/sonic v1.8.5
## explicit; go 1.15
github.com/bytedance/sonic
github.com/bytedance/sonic/ast
@ -88,7 +88,7 @@ github.com/go-playground/validator/v10/translations/zh
# github.com/go-sql-driver/mysql v1.7.0
## explicit; go 1.13
github.com/go-sql-driver/mysql
# github.com/goccy/go-json v0.10.0
# github.com/goccy/go-json v0.10.1
## explicit; go 1.12
github.com/goccy/go-json
github.com/goccy/go-json/internal/decoder
@ -134,7 +134,7 @@ github.com/jinzhu/now
# github.com/json-iterator/go v1.1.12
## explicit; go 1.12
github.com/json-iterator/go
# github.com/klauspost/compress v1.16.0
# github.com/klauspost/compress v1.16.3
## explicit; go 1.18
github.com/klauspost/compress
github.com/klauspost/compress/fse
@ -456,7 +456,7 @@ golang.org/x/tools/internal/pkgbits
golang.org/x/tools/internal/tokeninternal
golang.org/x/tools/internal/typeparams
golang.org/x/tools/internal/typesinternal
# google.golang.org/protobuf v1.29.0
# google.golang.org/protobuf v1.30.0
## explicit; go 1.11
google.golang.org/protobuf/encoding/protowire
google.golang.org/protobuf/internal/detrand
@ -490,7 +490,7 @@ gorm.io/datatypes
# gorm.io/driver/mysql v1.4.7
## explicit; go 1.14
gorm.io/driver/mysql
# gorm.io/driver/postgres v1.4.8
# gorm.io/driver/postgres v1.5.0
## explicit; go 1.14
gorm.io/driver/postgres
# gorm.io/gen v0.3.21
@ -503,7 +503,7 @@ gorm.io/gen/internal/model
gorm.io/gen/internal/parser
gorm.io/gen/internal/template
gorm.io/gen/internal/utils/pools
# gorm.io/gorm v1.24.6
# gorm.io/gorm v1.24.7-0.20230306060331-85eaf9eeda11
## explicit; go 1.16
gorm.io/gorm
gorm.io/gorm/callbacks

Loading…
Cancel
Save