From 6fe7b434160c84cbac1157073a795ac6e9f30479 Mon Sep 17 00:00:00 2001 From: Richard Musiol Date: Thu, 5 Jul 2018 15:32:31 +0200 Subject: [PATCH] misc/wasm: free up memory on exit Private fields of the Go class are not used any more after the program has exited. Delete them to allow JavaScript's garbage collection to clean up the WebAssembly instance. Updates #26193. Change-Id: I349784a49eaad0c22ceedd4f859df97132775537 Reviewed-on: https://go-review.googlesource.com/122296 Run-TryBot: Richard Musiol TryBot-Result: Gobot Gobot Reviewed-by: Paul Jolly Reviewed-by: Brad Fitzpatrick --- misc/wasm/wasm_exec.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/misc/wasm/wasm_exec.js b/misc/wasm/wasm_exec.js index 565dc928bc..233c5aa187 100644 --- a/misc/wasm/wasm_exec.js +++ b/misc/wasm/wasm_exec.js @@ -177,8 +177,12 @@ go: { // func wasmExit(code int32) "runtime.wasmExit": (sp) => { + const code = mem().getInt32(sp + 8, true); this.exited = true; - this.exit(mem().getInt32(sp + 8, true)); + delete this._inst; + delete this._values; + delete this._refs; + this.exit(code); }, // func wasmWrite(fd uintptr, p unsafe.Pointer, n int32) -- 2.50.0