mirror of
				https://github.com/golang/go.git
				synced 2025-10-31 16:50:58 +00:00 
			
		
		
		
	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>
This commit is contained in:
		
							parent
							
								
									889abb17e1
								
							
						
					
					
						commit
						bbdc65bb38
					
				
					 3 changed files with 52 additions and 0 deletions
				
			
		
							
								
								
									
										11
									
								
								test/wasmmemsize.dir/asm_wasm.s
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								test/wasmmemsize.dir/asm_wasm.s
									
										
									
									
									
										Normal file
									
								
							|  | @ -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 | ||||
							
								
								
									
										30
									
								
								test/wasmmemsize.dir/main.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								test/wasmmemsize.dir/main.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -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 | ||||
							
								
								
									
										11
									
								
								test/wasmmemsize.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								test/wasmmemsize.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -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 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Cherry Mui
						Cherry Mui