From: Cherry Mui Date: Fri, 25 Oct 2024 21:30:26 +0000 (-0400) Subject: test: add a test for wasm memory usage X-Git-Tag: go1.24rc1~585 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=bbdc65bb3825dfde90603d1b26a2034e8963356c;p=gostls13.git 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 LUCI-TryBot-Result: Go LUCI --- 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