This commit is contained in:
GitLab Deploy Bot
2025-10-21 23:45:13 +07:00
parent 6c387b420c
commit bb60e987e5
3548 changed files with 4952576 additions and 116 deletions
+31
View 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
}