summaryrefslogtreecommitdiff
path: root/vendor/github.com/bytedance/sonic/internal/encoder/x86
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/bytedance/sonic/internal/encoder/x86')
-rw-r--r--vendor/github.com/bytedance/sonic/internal/encoder/x86/asm_stubs_amd64_go121.go4
-rw-r--r--vendor/github.com/bytedance/sonic/internal/encoder/x86/assembler_regabi_amd64.go31
-rw-r--r--vendor/github.com/bytedance/sonic/internal/encoder/x86/debug_go117.go4
-rw-r--r--vendor/github.com/bytedance/sonic/internal/encoder/x86/stbus.go3
4 files changed, 32 insertions, 10 deletions
diff --git a/vendor/github.com/bytedance/sonic/internal/encoder/x86/asm_stubs_amd64_go121.go b/vendor/github.com/bytedance/sonic/internal/encoder/x86/asm_stubs_amd64_go121.go
index 3d70021e4..6956bd9ba 100644
--- a/vendor/github.com/bytedance/sonic/internal/encoder/x86/asm_stubs_amd64_go121.go
+++ b/vendor/github.com/bytedance/sonic/internal/encoder/x86/asm_stubs_amd64_go121.go
@@ -1,5 +1,5 @@
-//go:build go1.21 && !go1.24
-// +build go1.21,!go1.24
+//go:build go1.21 && !go1.25
+// +build go1.21,!go1.25
// Copyright 2023 CloudWeGo Authors
//
diff --git a/vendor/github.com/bytedance/sonic/internal/encoder/x86/assembler_regabi_amd64.go b/vendor/github.com/bytedance/sonic/internal/encoder/x86/assembler_regabi_amd64.go
index c0912fb81..d6d451329 100644
--- a/vendor/github.com/bytedance/sonic/internal/encoder/x86/assembler_regabi_amd64.go
+++ b/vendor/github.com/bytedance/sonic/internal/encoder/x86/assembler_regabi_amd64.go
@@ -1,5 +1,5 @@
-//go:build go1.17 && !go1.24
-// +build go1.17,!go1.24
+//go:build go1.17 && !go1.25
+// +build go1.17,!go1.25
/*
* Copyright 2021 ByteDance Inc.
@@ -265,6 +265,8 @@ var _OpFuncTab = [256]func(*Assembler, *ir.Instr){
ir.OP_marshal_text_p: (*Assembler)._asm_OP_marshal_text_p,
ir.OP_cond_set: (*Assembler)._asm_OP_cond_set,
ir.OP_cond_testc: (*Assembler)._asm_OP_cond_testc,
+ ir.OP_unsupported: (*Assembler)._asm_OP_unsupported,
+ ir.OP_is_zero: (*Assembler)._asm_OP_is_zero,
}
func (self *Assembler) instr(v *ir.Instr) {
@@ -756,7 +758,7 @@ var (
_F_f32toa = jit.Imm(int64(native.S_f32toa))
_F_i64toa = jit.Imm(int64(native.S_i64toa))
_F_u64toa = jit.Imm(int64(native.S_u64toa))
- _F_b64encode = jit.Imm(int64(_subr__b64encode))
+ _F_b64encode = jit.Imm(int64(rt.SubrB64Encode))
)
var (
@@ -1097,6 +1099,20 @@ func (self *Assembler) _asm_OP_is_zero_map(p *ir.Instr) {
self.Xjmp("JE", p.Vi()) // JE p.Vi()
}
+var (
+ _F_is_zero = jit.Func(alg.IsZero)
+ _T_reflect_Type = rt.UnpackIface(reflect.Type(nil))
+)
+
+func (self *Assembler) _asm_OP_is_zero(p *ir.Instr) {
+ fv := p.VField()
+ self.Emit("MOVQ", _SP_p, _AX) // ptr
+ self.Emit("MOVQ", jit.ImmPtr(unsafe.Pointer(fv)), _BX) // fv
+ self.call_go(_F_is_zero) // CALL $fn
+ self.Emit("CMPB", _AX, jit.Imm(0)) // CMPB (SP.p), $0
+ self.Xjmp("JNE", p.Vi()) // JE p.Vi()
+}
+
func (self *Assembler) _asm_OP_goto(p *ir.Instr) {
self.Xjmp("JMP", p.Vi())
}
@@ -1187,6 +1203,15 @@ func (self *Assembler) _asm_OP_cond_testc(p *ir.Instr) {
self.Xjmp("JC", p.Vi())
}
+var _F_error_unsupported = jit.Func(vars.Error_unsuppoted)
+
+func (self *Assembler) _asm_OP_unsupported(i *ir.Instr) {
+ typ := int64(uintptr(unsafe.Pointer(i.GoType())))
+ self.Emit("MOVQ", jit.Imm(typ), _AX)
+ self.call_go(_F_error_unsupported)
+ self.Sjmp("JMP", _LB_error)
+}
+
func (self *Assembler) print_gc(i int, p1 *ir.Instr, p2 *ir.Instr) {
self.Emit("MOVQ", jit.Imm(int64(p2.Op())), _CX) // MOVQ $(p2.Op()), AX
self.Emit("MOVQ", jit.Imm(int64(p1.Op())), _BX) // MOVQ $(p1.Op()), BX
diff --git a/vendor/github.com/bytedance/sonic/internal/encoder/x86/debug_go117.go b/vendor/github.com/bytedance/sonic/internal/encoder/x86/debug_go117.go
index 0aca3f4c5..1d1338756 100644
--- a/vendor/github.com/bytedance/sonic/internal/encoder/x86/debug_go117.go
+++ b/vendor/github.com/bytedance/sonic/internal/encoder/x86/debug_go117.go
@@ -1,5 +1,5 @@
-//go:build go1.17 && !go1.24
-// +build go1.17,!go1.24
+//go:build go1.17 && !go1.25
+// +build go1.17,!go1.25
/*
* Copyright 2021 ByteDance Inc.
diff --git a/vendor/github.com/bytedance/sonic/internal/encoder/x86/stbus.go b/vendor/github.com/bytedance/sonic/internal/encoder/x86/stbus.go
index b9fa473f5..7b6b1f96b 100644
--- a/vendor/github.com/bytedance/sonic/internal/encoder/x86/stbus.go
+++ b/vendor/github.com/bytedance/sonic/internal/encoder/x86/stbus.go
@@ -27,9 +27,6 @@ import (
_ "github.com/cloudwego/base64x"
)
-//go:linkname _subr__b64encode github.com/cloudwego/base64x._subr__b64encode
-var _subr__b64encode uintptr
-
var compiler func(*rt.GoType, ... interface{}) (interface{}, error)
func SetCompiler(c func(*rt.GoType, ... interface{}) (interface{}, error)) {