From 59f79e8e74a46434e9ac6ce39273ae5472df1ef6 Mon Sep 17 00:00:00 2001 From: Nuno Cruces Date: Tue, 2 May 2023 01:05:41 +0100 Subject: [PATCH] Optimize calls. --- module.go | 8 ++++---- module_test.go | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/module.go b/module.go index 85e04d4..7ecc2a8 100644 --- a/module.go +++ b/module.go @@ -79,7 +79,7 @@ type module struct { mod api.Module vfs io.Closer api sqliteAPI - arg []uint64 + arg [8]uint64 } func newModule(mod api.Module) (m *module, err error) { @@ -205,14 +205,14 @@ func (m *module) error(rc uint64, handle uint32, sql ...string) error { } func (m *module) call(fn api.Function, params ...uint64) []uint64 { - m.arg = append(m.arg[:0], params...) - r, err := fn.Call(m.ctx, m.arg...) + copy(m.arg[:], params) + err := fn.CallWithStack(m.ctx, m.arg[:]) if err != nil { // The module closed or panicked; release resources. m.vfs.Close() panic(err) } - return r + return m.arg[:] } func (m *module) free(ptr uint32) { diff --git a/module_test.go b/module_test.go index 32a55ea..9587dbe 100644 --- a/module_test.go +++ b/module_test.go @@ -26,14 +26,14 @@ func TestConn_error_OOM(t *testing.T) { t.Error("want panic") } -func TestConn_call_nil(t *testing.T) { +func TestConn_call_closed(t *testing.T) { t.Parallel() m, err := instantiateModule() if err != nil { t.Fatal(err) } - defer m.close() + m.close() defer func() { _ = recover() }() m.call(m.api.free)