first func(arg, p unsafe.Pointer) // called first time p is returned
arg unsafe.Pointer
list *mlink
- chunk *byte
+ chunk unsafe.Pointer
nchunk uint32
inuse uintptr // in-use bytes now
stat *uint64
return v
}
if uintptr(f.nchunk) < f.size {
- f.chunk = (*uint8)(persistentalloc(_FixAllocChunk, 0, f.stat))
+ f.chunk = persistentalloc(_FixAllocChunk, 0, f.stat)
f.nchunk = _FixAllocChunk
}
- v := unsafe.Pointer(f.chunk)
+ v := f.chunk
if f.first != nil {
f.first(f.arg, v)
}
- f.chunk = (*byte)(add(unsafe.Pointer(f.chunk), f.size))
+ f.chunk = add(f.chunk, f.size)
f.nchunk -= uint32(f.size)
f.inuse += f.size
return v