summaryrefslogtreecommitdiff
path: root/vendor/github.com/bytedance/sonic/internal
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/bytedance/sonic/internal')
-rw-r--r--vendor/github.com/bytedance/sonic/internal/decoder/api/stream.go9
-rw-r--r--vendor/github.com/bytedance/sonic/internal/decoder/optdec/node.go18
-rw-r--r--vendor/github.com/bytedance/sonic/internal/encoder/alg/mapiter.go13
-rw-r--r--vendor/github.com/bytedance/sonic/internal/encoder/alg/spec.go18
-rw-r--r--vendor/github.com/bytedance/sonic/internal/optcaching/fcache.go2
5 files changed, 25 insertions, 35 deletions
diff --git a/vendor/github.com/bytedance/sonic/internal/decoder/api/stream.go b/vendor/github.com/bytedance/sonic/internal/decoder/api/stream.go
index 8a8102dd5..ecf120462 100644
--- a/vendor/github.com/bytedance/sonic/internal/decoder/api/stream.go
+++ b/vendor/github.com/bytedance/sonic/internal/decoder/api/stream.go
@@ -76,11 +76,12 @@ func (self *StreamDecoder) Decode(val interface{}) (err error) {
if y := native.SkipOneFast(&src, &x); y < 0 {
if self.readMore() {
goto try_skip
- } else {
- err = SyntaxError{e, self.s, types.ParsingError(-s), ""}
- self.setErr(err)
- return
+ }
+ if self.err == nil {
+ self.err = SyntaxError{e, self.s, types.ParsingError(-s), ""}
+ self.setErr(self.err)
}
+ return self.err
} else {
s = y + s
e = x + s
diff --git a/vendor/github.com/bytedance/sonic/internal/decoder/optdec/node.go b/vendor/github.com/bytedance/sonic/internal/decoder/optdec/node.go
index 774b6eef7..085e81102 100644
--- a/vendor/github.com/bytedance/sonic/internal/decoder/optdec/node.go
+++ b/vendor/github.com/bytedance/sonic/internal/decoder/optdec/node.go
@@ -12,7 +12,7 @@ import (
type Context struct {
Parser *Parser
efacePool *efacePool
- Stack bounedStack
+ Stack boundedStack
Utf8Inv bool
}
@@ -26,20 +26,20 @@ type parentStat struct {
con unsafe.Pointer
remain uint64
}
-type bounedStack struct {
+type boundedStack struct {
stack []parentStat
index int
}
-func newStack(size int) bounedStack {
- return bounedStack{
+func newStack(size int) boundedStack {
+ return boundedStack{
stack: make([]parentStat, size + 2),
index: 0,
}
}
//go:nosplit
-func (s *bounedStack) Pop() (unsafe.Pointer, int, bool){
+func (s *boundedStack) Pop() (unsafe.Pointer, int, bool){
s.index--
con := s.stack[s.index].con
remain := s.stack[s.index].remain &^ (uint64(1) << 63)
@@ -50,7 +50,7 @@ func (s *bounedStack) Pop() (unsafe.Pointer, int, bool){
}
//go:nosplit
-func (s *bounedStack) Push(p unsafe.Pointer, remain int, isObj bool) {
+func (s *boundedStack) Push(p unsafe.Pointer, remain int, isObj bool) {
s.stack[s.index].con = p
s.stack[s.index].remain = uint64(remain)
if isObj {
@@ -1253,7 +1253,7 @@ func (node *Node) AsEfaceFallback(ctx *Context) (interface{}, error) {
if ctx.Parser.options & (1 << _F_use_number) != 0 {
num, ok := node.AsNumber(ctx)
if !ok {
- // skip the unmacthed type
+ // skip the unmatched type
*node = NewNode(node.Next())
return nil, newUnmatched(node.Position(), rt.JsonNumberType)
} else {
@@ -1275,13 +1275,13 @@ func (node *Node) AsEfaceFallback(ctx *Context) (interface{}, error) {
return f, nil
}
- // skip the unmacthed type
+ // skip the unmatched type
*node = NewNode(node.Next())
return nil, newUnmatched(node.Position(), rt.Int64Type)
} else {
num, ok := node.AsF64(ctx)
if !ok {
- // skip the unmacthed type
+ // skip the unmatched type
*node = NewNode(node.Next())
return nil, newUnmatched(node.Position(), rt.Float64Type)
} else {
diff --git a/vendor/github.com/bytedance/sonic/internal/encoder/alg/mapiter.go b/vendor/github.com/bytedance/sonic/internal/encoder/alg/mapiter.go
index 032ae3b8a..090afac13 100644
--- a/vendor/github.com/bytedance/sonic/internal/encoder/alg/mapiter.go
+++ b/vendor/github.com/bytedance/sonic/internal/encoder/alg/mapiter.go
@@ -97,17 +97,18 @@ func (self *MapIterator) append(t *rt.GoType, k unsafe.Pointer, v unsafe.Pointer
func (self *MapIterator) appendGeneric(p *_MapPair, t *rt.GoType, v reflect.Kind, k unsafe.Pointer) error {
switch v {
- case reflect.Int : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int)(k)), 10)) ; return nil
- case reflect.Int8 : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int8)(k)), 10)) ; return nil
- case reflect.Int16 : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int16)(k)), 10)) ; return nil
- case reflect.Int32 : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int32)(k)), 10)) ; return nil
- case reflect.Int64 : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int64)(k)), 10)) ; return nil
+ case reflect.Int : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int)(k)), 10)) ; return nil
+ case reflect.Int8 : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int8)(k)), 10)) ; return nil
+ case reflect.Int16 : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int16)(k)), 10)) ; return nil
+ case reflect.Int32 : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int32)(k)), 10)) ; return nil
+ case reflect.Int64 : p.k = rt.Mem2Str(strconv.AppendInt(p.m[:0], int64(*(*int64)(k)), 10)) ; return nil
case reflect.Uint : p.k = rt.Mem2Str(strconv.AppendUint(p.m[:0], uint64(*(*uint)(k)), 10)) ; return nil
case reflect.Uint8 : p.k = rt.Mem2Str(strconv.AppendUint(p.m[:0], uint64(*(*uint8)(k)), 10)) ; return nil
case reflect.Uint16 : p.k = rt.Mem2Str(strconv.AppendUint(p.m[:0], uint64(*(*uint16)(k)), 10)) ; return nil
case reflect.Uint32 : p.k = rt.Mem2Str(strconv.AppendUint(p.m[:0], uint64(*(*uint32)(k)), 10)) ; return nil
- case reflect.Uint64 : p.k = rt.Mem2Str(strconv.AppendUint(p.m[:0], uint64(*(*uint64)(k)), 10)) ; return nil
+ case reflect.Uint64 : p.k = rt.Mem2Str(strconv.AppendUint(p.m[:0], uint64(*(*uint64)(k)), 10)) ; return nil
case reflect.Uintptr : p.k = rt.Mem2Str(strconv.AppendUint(p.m[:0], uint64(*(*uintptr)(k)), 10)) ; return nil
+ case reflect.Bool : if *(*bool)(k) { p.k = "true" } else { p.k = "false" }; return nil
case reflect.Interface : return self.appendInterface(p, t, k)
case reflect.Struct, reflect.Ptr : return self.appendConcrete(p, t, k)
default : panic("unexpected map key type")
diff --git a/vendor/github.com/bytedance/sonic/internal/encoder/alg/spec.go b/vendor/github.com/bytedance/sonic/internal/encoder/alg/spec.go
index 6f76ac739..ecdbfb7bd 100644
--- a/vendor/github.com/bytedance/sonic/internal/encoder/alg/spec.go
+++ b/vendor/github.com/bytedance/sonic/internal/encoder/alg/spec.go
@@ -21,6 +21,7 @@ package alg
import (
"runtime"
+ "strconv"
"unsafe"
"github.com/bytedance/sonic/internal/native"
@@ -177,22 +178,9 @@ func F32toa(buf []byte, v float32) ([]byte) {
}
func I64toa(buf []byte, v int64) ([]byte) {
- buf = rt.GuardSlice2(buf, 32)
- ret := native.I64toa((*byte)(rt.IndexByte(buf, len(buf))), v)
- if ret > 0 {
- return buf[:len(buf)+ret]
- } else {
- return buf
- }
+ return strconv.AppendInt(buf, v, 10)
}
func U64toa(buf []byte, v uint64) ([]byte) {
- buf = rt.GuardSlice2(buf, 32)
- ret := native.U64toa((*byte)(rt.IndexByte(buf, len(buf))), v)
- if ret > 0 {
- return buf[:len(buf)+ret]
- } else {
- return buf
- }
+ return strconv.AppendUint(buf, v, 10)
}
-
diff --git a/vendor/github.com/bytedance/sonic/internal/optcaching/fcache.go b/vendor/github.com/bytedance/sonic/internal/optcaching/fcache.go
index 010028203..f207b4b16 100644
--- a/vendor/github.com/bytedance/sonic/internal/optcaching/fcache.go
+++ b/vendor/github.com/bytedance/sonic/internal/optcaching/fcache.go
@@ -324,7 +324,7 @@ func (self *NormalFieldMap) Set(fields []resolver.FieldMeta) {
}
-// use hashnap
+// use hashmap
type FallbackFieldMap struct {
oders []string
inner map[string]int