alloc_other.go 486 B

123456789101112131415161718192021222324
  1. //go:build !unix && !windows
  2. package alloc
  3. import "github.com/tetratelabs/wazero/experimental"
  4. func NewMemory(cap, max uint64) experimental.LinearMemory {
  5. return &sliceMemory{make([]byte, 0, cap)}
  6. }
  7. type sliceMemory struct {
  8. buf []byte
  9. }
  10. func (b *sliceMemory) Free() {}
  11. func (b *sliceMemory) Reallocate(size uint64) []byte {
  12. if cap := uint64(cap(b.buf)); size > cap {
  13. b.buf = append(b.buf[:cap], make([]byte, size-cap)...)
  14. } else {
  15. b.buf = b.buf[:size]
  16. }
  17. return b.buf
  18. }