chore: migrate to gitea
This commit is contained in:
31
vendor/github.com/bytedance/sonic/internal/rt/pool.go
generated
vendored
Normal file
31
vendor/github.com/bytedance/sonic/internal/rt/pool.go
generated
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
package rt
|
||||
|
||||
import (
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
type SlicePool struct {
|
||||
pool unsafe.Pointer
|
||||
len int
|
||||
index int
|
||||
typ uintptr
|
||||
}
|
||||
|
||||
func NewPool(typ *GoType, size int) SlicePool {
|
||||
return SlicePool{pool: newarray(typ, size), len: size, typ: uintptr(unsafe.Pointer(typ))}
|
||||
}
|
||||
|
||||
func (self *SlicePool) GetSlice(size int) unsafe.Pointer {
|
||||
// pool is full, fallback to normal alloc
|
||||
if size > self.Remain() {
|
||||
return newarray(AsGoType(self.typ), size)
|
||||
}
|
||||
|
||||
ptr := PtrAdd(self.pool, uintptr(self.index)* AsGoType(self.typ).Size)
|
||||
self.index += size
|
||||
return ptr
|
||||
}
|
||||
|
||||
func (self *SlicePool) Remain() int {
|
||||
return self.len - self.index
|
||||
}
|
||||
Reference in New Issue
Block a user