refactor(synk): replace runtime weak pointer functions with weak package and simplify buffer handling

This commit is contained in:
yusing
2025-09-27 11:24:50 +08:00
parent 9545482a44
commit e2aeef3a86

View File

@@ -1,34 +1,25 @@
package synk
import (
"runtime"
"sync/atomic"
"unsafe"
"weak"
)
type weakBuf = unsafe.Pointer
type weakBuf = weak.Pointer[[]byte]
func makeWeak(b *[]byte) weakBuf {
ptr := runtime_registerWeakPointer(unsafe.Pointer(b))
addCleanup(b, addGCed, cap(*b))
runtime.KeepAlive(ptr)
return weakBuf(ptr)
return weak.Make(b)
}
func getBufFromWeak(w weakBuf) []byte {
ptr := (*[]byte)(runtime_makeStrongFromWeak(w))
if ptr == nil {
return nil
ptr := w.Value()
if ptr != nil {
return *ptr
}
return *ptr
return nil
}
//go:linkname runtime_registerWeakPointer weak.runtime_registerWeakPointer
func runtime_registerWeakPointer(unsafe.Pointer) unsafe.Pointer
//go:linkname runtime_makeStrongFromWeak weak.runtime_makeStrongFromWeak
func runtime_makeStrongFromWeak(unsafe.Pointer) unsafe.Pointer
type BytesPool struct {
sizedPool chan weakBuf
unsizedPool chan weakBuf