summaryrefslogtreecommitdiff
path: root/vendor/github.com/bytedance/sonic/ast/decode.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/bytedance/sonic/ast/decode.go')
-rw-r--r--vendor/github.com/bytedance/sonic/ast/decode.go17
1 files changed, 6 insertions, 11 deletions
diff --git a/vendor/github.com/bytedance/sonic/ast/decode.go b/vendor/github.com/bytedance/sonic/ast/decode.go
index 135ee6eb8..45f5e2d2b 100644
--- a/vendor/github.com/bytedance/sonic/ast/decode.go
+++ b/vendor/github.com/bytedance/sonic/ast/decode.go
@@ -25,10 +25,9 @@ import (
"github.com/bytedance/sonic/internal/native/types"
"github.com/bytedance/sonic/internal/rt"
"github.com/bytedance/sonic/internal/utils"
+ "github.com/bytedance/sonic/unquote"
)
-// Hack: this is used for both checking space and cause friendly compile errors in 32-bit arch.
-const _Sonic_Not_Support_32Bit_Arch__Checking_32Bit_Arch_Here = (1 << ' ') | (1 << '\t') | (1 << '\r') | (1 << '\n')
var bytesNull = []byte("null")
@@ -40,17 +39,13 @@ const (
bytesArray = "[]"
)
-func isSpace(c byte) bool {
- return (int(1<<c) & _Sonic_Not_Support_32Bit_Arch__Checking_32Bit_Arch_Here) != 0
-}
-
//go:nocheckptr
func skipBlank(src string, pos int) int {
se := uintptr(rt.IndexChar(src, len(src)))
sp := uintptr(rt.IndexChar(src, pos))
for sp < se {
- if !isSpace(*(*byte)(unsafe.Pointer(sp))) {
+ if !utils.IsSpace(*(*byte)(unsafe.Pointer(sp))) {
break
}
sp += 1
@@ -107,13 +102,13 @@ func decodeString(src string, pos int) (ret int, v string) {
return ret, v
}
- vv, ok := unquoteBytes(rt.Str2Mem(src[pos:ret]))
- if !ok {
+ result, err := unquote.String(src[pos:ret])
+ if err != 0 {
return -int(types.ERR_INVALID_CHAR), ""
}
runtime.KeepAlive(src)
- return ret, rt.Mem2Str(vv)
+ return ret, result
}
func decodeBinary(src string, pos int) (ret int, v []byte) {
@@ -549,7 +544,7 @@ func _DecodeString(src string, pos int, needEsc bool, validStr bool) (v string,
return str, p.p, true
}
/* unquote the string */
- out, err := unquote(str)
+ out, err := unquote.String(str)
/* check for errors */
if err != 0 {
return "", -int(err), true