diff options
author | 2024-06-07 15:06:43 +0200 | |
---|---|---|
committer | 2024-06-07 15:06:43 +0200 | |
commit | cc4f773b0e0f45cdb28727853b9d253234a93b56 (patch) | |
tree | 455224a7cb489909906eda5778d0e700867358d4 /vendor/github.com/ncruces/go-sqlite3/internal/util/alloc_windows.go | |
parent | [feature] Implement filters_changed stream event (#2972) (diff) | |
download | gotosocial-cc4f773b0e0f45cdb28727853b9d253234a93b56.tar.xz |
[chore] Update WASM go-sqlite3 to v0.16.1 (#2976)
This includes support for journal mode set to WAL on the BSDs.
Relates to: #1753, #2962
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/internal/util/alloc_windows.go')
-rw-r--r-- | vendor/github.com/ncruces/go-sqlite3/internal/util/alloc_windows.go | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/alloc_windows.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/alloc_windows.go deleted file mode 100644 index 8936173b4..000000000 --- a/vendor/github.com/ncruces/go-sqlite3/internal/util/alloc_windows.go +++ /dev/null @@ -1,76 +0,0 @@ -//go:build !sqlite3_nosys - -package util - -import ( - "math" - "reflect" - "unsafe" - - "github.com/tetratelabs/wazero/experimental" - "golang.org/x/sys/windows" -) - -func virtualAlloc(cap, max uint64) experimental.LinearMemory { - // Round up to the page size. - rnd := uint64(windows.Getpagesize() - 1) - max = (max + rnd) &^ rnd - - if max > math.MaxInt { - // This ensures uintptr(max) overflows to a large value, - // and windows.VirtualAlloc returns an error. - max = math.MaxUint64 - } - - // Reserve max bytes of address space, to ensure we won't need to move it. - // This does not commit memory. - r, err := windows.VirtualAlloc(0, uintptr(max), windows.MEM_RESERVE, windows.PAGE_READWRITE) - if err != nil { - panic(err) - } - - 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.Data = r - return &mem -} - -// The slice covers the entire mmapped memory: -// - len(buf) is the already committed memory, -// - cap(buf) is the reserved address space. -type virtualMemory struct { - buf []byte - addr uintptr -} - -func (m *virtualMemory) Reallocate(size uint64) []byte { - com := uint64(len(m.buf)) - res := uint64(cap(m.buf)) - if com < size && size < res { - // Round up to the page size. - rnd := uint64(windows.Getpagesize() - 1) - new := (size + rnd) &^ rnd - - // Commit additional memory up to new bytes. - _, err := windows.VirtualAlloc(m.addr, uintptr(new), windows.MEM_COMMIT, windows.PAGE_READWRITE) - if err != nil { - panic(err) - } - - // Update committed memory. - m.buf = m.buf[:new] - } - // Limit returned capacity because bytes beyond - // len(m.buf) have not yet been committed. - return m.buf[:size:len(m.buf)] -} - -func (m *virtualMemory) Free() { - err := windows.VirtualFree(m.addr, 0, windows.MEM_RELEASE) - if err != nil { - panic(err) - } - m.addr = 0 -} |