mirror of
https://github.com/yusing/godoxy.git
synced 2026-01-11 22:30:47 +01:00
refactor(synk): replace runtime weak pointer functions with weak package and simplify buffer handling
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user