From 19bc6e3fac0a88b5f18cdb67a230953c705c1460 Mon Sep 17 00:00:00 2001 From: Nuno Cruces Date: Sun, 2 Jun 2024 12:34:57 +0100 Subject: [PATCH] Rename. --- internal/alloc/alloc_other.go | 9 +++++++++ internal/{util => alloc}/alloc_slice.go | 13 ++++++------- internal/{util => alloc}/alloc_unix.go | 4 ++-- internal/{util => alloc}/alloc_windows.go | 6 +++--- internal/util/alloc_other.go | 9 --------- internal/util/mmap.go | 3 ++- internal/util/mmap_other.go | 5 +++-- 7 files changed, 25 insertions(+), 24 deletions(-) create mode 100644 internal/alloc/alloc_other.go rename internal/{util => alloc}/alloc_slice.go (56%) rename internal/{util => alloc}/alloc_unix.go (95%) rename internal/{util => alloc}/alloc_windows.go (94%) delete mode 100644 internal/util/alloc_other.go diff --git a/internal/alloc/alloc_other.go b/internal/alloc/alloc_other.go new file mode 100644 index 0000000..ded8da1 --- /dev/null +++ b/internal/alloc/alloc_other.go @@ -0,0 +1,9 @@ +//go:build !(unix || windows) || sqlite3_nosys + +package alloc + +import "github.com/tetratelabs/wazero/experimental" + +func Virtual(cap, max uint64) experimental.LinearMemory { + return Slice(cap, max) +} diff --git a/internal/util/alloc_slice.go b/internal/alloc/alloc_slice.go similarity index 56% rename from internal/util/alloc_slice.go rename to internal/alloc/alloc_slice.go index b8cc145..5072ca9 100644 --- a/internal/util/alloc_slice.go +++ b/internal/alloc/alloc_slice.go @@ -1,21 +1,20 @@ //go:build !(darwin || linux) || !(amd64 || arm64 || riscv64) || sqlite3_noshm || sqlite3_nosys -package util +package alloc import "github.com/tetratelabs/wazero/experimental" -func sliceAlloc(cap, max uint64) experimental.LinearMemory { - return &sliceBuffer{make([]byte, cap), max} +func Slice(cap, _ uint64) experimental.LinearMemory { + return &sliceMemory{make([]byte, 0, cap)} } -type sliceBuffer struct { +type sliceMemory struct { buf []byte - max uint64 } -func (b *sliceBuffer) Free() {} +func (b *sliceMemory) Free() {} -func (b *sliceBuffer) Reallocate(size uint64) []byte { +func (b *sliceMemory) Reallocate(size uint64) []byte { if cap := uint64(cap(b.buf)); size > cap { b.buf = append(b.buf[:cap], make([]byte, size-cap)...) } else { diff --git a/internal/util/alloc_unix.go b/internal/alloc/alloc_unix.go similarity index 95% rename from internal/util/alloc_unix.go rename to internal/alloc/alloc_unix.go index 2b1d391..39a3a38 100644 --- a/internal/util/alloc_unix.go +++ b/internal/alloc/alloc_unix.go @@ -1,6 +1,6 @@ //go:build unix && !sqlite3_nosys -package util +package alloc import ( "math" @@ -9,7 +9,7 @@ import ( "golang.org/x/sys/unix" ) -func virtualAlloc(cap, max uint64) experimental.LinearMemory { +func Virtual(_, max uint64) experimental.LinearMemory { // Round up to the page size. rnd := uint64(unix.Getpagesize() - 1) max = (max + rnd) &^ rnd diff --git a/internal/util/alloc_windows.go b/internal/alloc/alloc_windows.go similarity index 94% rename from internal/util/alloc_windows.go rename to internal/alloc/alloc_windows.go index 8936173..27d875f 100644 --- a/internal/util/alloc_windows.go +++ b/internal/alloc/alloc_windows.go @@ -1,6 +1,6 @@ //go:build !sqlite3_nosys -package util +package alloc import ( "math" @@ -11,7 +11,7 @@ import ( "golang.org/x/sys/windows" ) -func virtualAlloc(cap, max uint64) experimental.LinearMemory { +func Virtual(_, max uint64) experimental.LinearMemory { // Round up to the page size. rnd := uint64(windows.Getpagesize() - 1) max = (max + rnd) &^ rnd @@ -32,7 +32,7 @@ func virtualAlloc(cap, max uint64) experimental.LinearMemory { mem := virtualMemory{addr: r} // SliceHeader, although deprecated, avoids a go vet warning. sh := (*reflect.SliceHeader)(unsafe.Pointer(&mem.buf)) - sh.Cap = int(max) // Not a bug. + sh.Cap = int(max) sh.Data = r return &mem } diff --git a/internal/util/alloc_other.go b/internal/util/alloc_other.go deleted file mode 100644 index ba16efc..0000000 --- a/internal/util/alloc_other.go +++ /dev/null @@ -1,9 +0,0 @@ -//go:build !(unix || windows) || sqlite3_nosys - -package util - -import "github.com/tetratelabs/wazero/experimental" - -func virtualAlloc(cap, max uint64) experimental.LinearMemory { - return sliceAlloc(cap, max) -} diff --git a/internal/util/mmap.go b/internal/util/mmap.go index 6783c96..ada07e1 100644 --- a/internal/util/mmap.go +++ b/internal/util/mmap.go @@ -7,6 +7,7 @@ import ( "os" "unsafe" + "github.com/ncruces/go-sqlite3/internal/alloc" "github.com/tetratelabs/wazero/api" "github.com/tetratelabs/wazero/experimental" "golang.org/x/sys/unix" @@ -14,7 +15,7 @@ import ( func withAllocator(ctx context.Context) context.Context { return experimental.WithMemoryAllocator(ctx, - experimental.MemoryAllocatorFunc(virtualAlloc)) + experimental.MemoryAllocatorFunc(alloc.Virtual)) } type mmapState struct { diff --git a/internal/util/mmap_other.go b/internal/util/mmap_other.go index 1e81c9f..15e0d3e 100644 --- a/internal/util/mmap_other.go +++ b/internal/util/mmap_other.go @@ -5,6 +5,7 @@ package util import ( "context" + "github.com/ncruces/go-sqlite3/internal/alloc" "github.com/tetratelabs/wazero/experimental" ) @@ -14,8 +15,8 @@ func withAllocator(ctx context.Context) context.Context { return experimental.WithMemoryAllocator(ctx, experimental.MemoryAllocatorFunc(func(cap, max uint64) experimental.LinearMemory { if cap == max { - return virtualAlloc(cap, max) + return alloc.Virtual(cap, max) } - return sliceAlloc(cap, max) + return alloc.Slice(cap, max) })) }