diff options
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/internal')
9 files changed, 53 insertions, 77 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_other.go b/vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_other.go index ded8da108..d9a3de224 100644 --- a/vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_other.go +++ b/vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_other.go @@ -4,6 +4,21 @@ package alloc import "github.com/tetratelabs/wazero/experimental" -func Virtual(cap, max uint64) experimental.LinearMemory { - return Slice(cap, max) +func NewMemory(cap, max uint64) experimental.LinearMemory { + return &sliceMemory{make([]byte, 0, cap)} +} + +type sliceMemory struct { + buf []byte +} + +func (b *sliceMemory) Free() {} + +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 { + b.buf = b.buf[:size] + } + return b.buf } diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_slice.go b/vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_slice.go deleted file mode 100644 index 5fc725c65..000000000 --- a/vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_slice.go +++ /dev/null @@ -1,24 +0,0 @@ -//go:build !(darwin || linux) || !(amd64 || arm64 || riscv64 || ppc64le) || sqlite3_noshm || sqlite3_nosys - -package alloc - -import "github.com/tetratelabs/wazero/experimental" - -func Slice(cap, _ uint64) experimental.LinearMemory { - return &sliceMemory{make([]byte, 0, cap)} -} - -type sliceMemory struct { - buf []byte -} - -func (b *sliceMemory) Free() {} - -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 { - b.buf = b.buf[:size] - } - return b.buf -} diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_unix.go b/vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_unix.go index c05cfa735..2948487f6 100644 --- a/vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_unix.go +++ b/vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_unix.go @@ -9,7 +9,7 @@ import ( "golang.org/x/sys/unix" ) -func Virtual(_, max uint64) experimental.LinearMemory { +func NewMemory(_, max uint64) experimental.LinearMemory { // Round up to the page size. rnd := uint64(unix.Getpagesize() - 1) max = (max + rnd) &^ rnd diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_windows.go b/vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_windows.go index 46181b118..8e67e0319 100644 --- a/vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_windows.go +++ b/vendor/github.com/ncruces/go-sqlite3/internal/alloc/alloc_windows.go @@ -11,7 +11,7 @@ import ( "golang.org/x/sys/windows" ) -func Virtual(_, max uint64) experimental.LinearMemory { +func NewMemory(_, max uint64) experimental.LinearMemory { // Round up to the page size. rnd := uint64(windows.Getpagesize() - 1) max = (max + rnd) &^ rnd diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/bool.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/bool.go deleted file mode 100644 index 8427f3085..000000000 --- a/vendor/github.com/ncruces/go-sqlite3/internal/util/bool.go +++ /dev/null @@ -1,22 +0,0 @@ -package util - -import "strings" - -func ParseBool(s string) (b, ok bool) { - if len(s) == 0 { - return false, false - } - if s[0] == '0' { - return false, true - } - if '1' <= s[0] && s[0] <= '9' { - return true, true - } - switch strings.ToLower(s) { - case "true", "yes", "on": - return true, true - case "false", "no", "off": - return false, true - } - return false, false -} diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/math.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/math.go new file mode 100644 index 000000000..a95f73764 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/math.go @@ -0,0 +1,29 @@ +package util + +import "math" + +func abs(n int) int { + if n < 0 { + return -n + } + return n +} + +func GCD(m, n int) int { + for n != 0 { + m, n = n, m%n + } + return abs(m) +} + +func LCM(m, n int) int { + if n == 0 { + return 0 + } + return abs(n) * (abs(m) / GCD(m, n)) +} + +// https://developer.nvidia.com/blog/lerp-faster-cuda/ +func Lerp(v0, v1, t float64) float64 { + return math.FMA(t, v1, math.FMA(-t, v0, v0)) +} diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/mmap.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/mmap.go index 813772679..5788eeb24 100644 --- a/vendor/github.com/ncruces/go-sqlite3/internal/util/mmap.go +++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/mmap.go @@ -1,4 +1,4 @@ -//go:build unix && (amd64 || arm64 || riscv64 || ppc64le) && !(sqlite3_noshm || sqlite3_nosys) +//go:build unix && (386 || arm || amd64 || arm64 || riscv64 || ppc64le) && !(sqlite3_noshm || sqlite3_nosys) package util @@ -7,17 +7,10 @@ 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" ) -func withAllocator(ctx context.Context) context.Context { - return experimental.WithMemoryAllocator(ctx, - experimental.MemoryAllocatorFunc(alloc.Virtual)) -} - type mmapState struct { regions []*MappedRegion } diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_other.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_other.go index b6cd4c551..a2fbf24df 100644 --- a/vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_other.go +++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_other.go @@ -1,22 +1,5 @@ -//go:build !unix || !(amd64 || arm64 || riscv64 || ppc64le) || sqlite3_noshm || sqlite3_nosys +//go:build !unix || !(386 || arm || amd64 || arm64 || riscv64 || ppc64le) || sqlite3_noshm || sqlite3_nosys package util -import ( - "context" - - "github.com/ncruces/go-sqlite3/internal/alloc" - "github.com/tetratelabs/wazero/experimental" -) - type mmapState struct{} - -func withAllocator(ctx context.Context) context.Context { - return experimental.WithMemoryAllocator(ctx, - experimental.MemoryAllocatorFunc(func(cap, max uint64) experimental.LinearMemory { - if cap == max { - return alloc.Virtual(cap, max) - } - return alloc.Slice(cap, max) - })) -} diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/module.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/module.go index 22793e972..4089dcab9 100644 --- a/vendor/github.com/ncruces/go-sqlite3/internal/util/module.go +++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/module.go @@ -4,6 +4,8 @@ import ( "context" "github.com/tetratelabs/wazero/experimental" + + "github.com/ncruces/go-sqlite3/internal/alloc" ) type moduleKey struct{} @@ -14,7 +16,7 @@ type moduleState struct { func NewContext(ctx context.Context) context.Context { state := new(moduleState) - ctx = withAllocator(ctx) + ctx = experimental.WithMemoryAllocator(ctx, experimental.MemoryAllocatorFunc(alloc.NewMemory)) ctx = experimental.WithCloseNotifier(ctx, state) ctx = context.WithValue(ctx, moduleKey{}, state) return ctx |