diff options
| author | Cherry Mui <cherryyz@google.com> | 2024-10-25 17:30:26 -0400 |
|---|---|---|
| committer | Cherry Mui <cherryyz@google.com> | 2024-10-28 13:27:58 +0000 |
| commit | bbdc65bb3825dfde90603d1b26a2034e8963356c (patch) | |
| tree | b45ce978bb161bfa5b584eb79ea526d364271910 /test | |
| parent | 889abb17e125bb0f5d8de61bb80ef15fbe2a130d (diff) | |
| download | go-bbdc65bb3825dfde90603d1b26a2034e8963356c.tar.xz | |
test: add a test for wasm memory usage
Test that a small Wasm program uses 8 MB of linear memory. This
reflects the current allocator. We test an exact value, but if the
allocator changes, we can update or relax this.
Updates #69018.
Change-Id: Ifc0bb420af008bd30cde4745b3efde3ce091b683
Reviewed-on: https://go-review.googlesource.com/c/go/+/622378
Reviewed-by: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Diffstat (limited to 'test')
| -rw-r--r-- | test/wasmmemsize.dir/asm_wasm.s | 11 | ||||
| -rw-r--r-- | test/wasmmemsize.dir/main.go | 30 | ||||
| -rw-r--r-- | test/wasmmemsize.go | 11 |
3 files changed, 52 insertions, 0 deletions
diff --git a/test/wasmmemsize.dir/asm_wasm.s b/test/wasmmemsize.dir/asm_wasm.s new file mode 100644 index 0000000000..daccfcc753 --- /dev/null +++ b/test/wasmmemsize.dir/asm_wasm.s @@ -0,0 +1,11 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "textflag.h" + +TEXT ·currentMemory(SB), NOSPLIT, $0 + Get SP + CurrentMemory + I32Store ret+0(FP) + RET diff --git a/test/wasmmemsize.dir/main.go b/test/wasmmemsize.dir/main.go new file mode 100644 index 0000000000..d3beab2481 --- /dev/null +++ b/test/wasmmemsize.dir/main.go @@ -0,0 +1,30 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import ( + "fmt" + "io" +) + +// Expect 8 MB of memory usage for a small wasm program. +// This reflects the current allocator. We test an exact +// value here, but if the allocator changes, we can update +// or relax this. +const want = 8 << 20 + +var w = io.Discard + +func main() { + fmt.Fprintln(w, "hello world") + + const pageSize = 64 * 1024 + sz := uintptr(currentMemory()) * pageSize + if sz != want { + fmt.Printf("FAIL: unexpected memory size %d, want %d\n", sz, want) + } +} + +func currentMemory() int32 // implemented in assembly diff --git a/test/wasmmemsize.go b/test/wasmmemsize.go new file mode 100644 index 0000000000..4498169087 --- /dev/null +++ b/test/wasmmemsize.go @@ -0,0 +1,11 @@ +// runindir + +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This test checks the memory size of a small wasm program. + +//go:build wasm + +package ignored |
