diff options
author | Alon Zakai <alonzakai@gmail.com> | 2018-12-13 15:45:21 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-13 15:45:21 -0800 |
commit | 0fd96e6b07f0a0907737c0f44e55060e057c2bb9 (patch) | |
tree | 62c169433f1dcf67644df59c102bb31852208b1d /test | |
parent | 802dd8ff76d423f438c1d69dd5da6c47bb762c88 (diff) | |
download | binaryen-0fd96e6b07f0a0907737c0f44e55060e057c2bb9.tar.gz binaryen-0fd96e6b07f0a0907737c0f44e55060e057c2bb9.tar.bz2 binaryen-0fd96e6b07f0a0907737c0f44e55060e057c2bb9.zip |
No exit runtime pass (#1816)
When emscripten knows that the runtime will not be exited, it can tell codegen to not emit atexit() calls (since those callbacks will never be run). This saves both code size and startup time. In asm2wasm the JSBackend does it directly. For the wasm backend, this pass does the same on the output wasm.
Diffstat (limited to 'test')
-rw-r--r-- | test/passes/no-exit-runtime.txt | 32 | ||||
-rw-r--r-- | test/passes/no-exit-runtime.wast | 15 |
2 files changed, 47 insertions, 0 deletions
diff --git a/test/passes/no-exit-runtime.txt b/test/passes/no-exit-runtime.txt new file mode 100644 index 000000000..c8913d32a --- /dev/null +++ b/test/passes/no-exit-runtime.txt @@ -0,0 +1,32 @@ +(module + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $1 (func)) + (import "env" "atexit" (func $fimport$0 (param i32 i32) (result i32))) + (import "env" "__cxa_atexit" (func $fimport$1 (param i32 i32) (result i32))) + (import "env" "_atexit" (func $fimport$2 (param i32 i32) (result i32))) + (import "env" "___cxa_atexit" (func $fimport$3 (param i32 i32) (result i32))) + (import "env" "other" (func $fimport$4 (param i32 i32) (result i32))) + (func $caller (; 5 ;) (type $1) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (call $fimport$4 + (i32.const 0) + (i32.const 1) + ) + ) + (drop + (unreachable) + ) + ) +) diff --git a/test/passes/no-exit-runtime.wast b/test/passes/no-exit-runtime.wast new file mode 100644 index 000000000..1afe5ef8d --- /dev/null +++ b/test/passes/no-exit-runtime.wast @@ -0,0 +1,15 @@ +(module + (import "env" "atexit" (func $fimport$0 (param i32 i32) (result i32))) + (import "env" "__cxa_atexit" (func $fimport$1 (param i32 i32) (result i32))) + (import "env" "_atexit" (func $fimport$2 (param i32 i32) (result i32))) + (import "env" "___cxa_atexit" (func $fimport$3 (param i32 i32) (result i32))) + (import "env" "other" (func $fimport$4 (param i32 i32) (result i32))) + (func $caller + (drop (call $fimport$0 (i32.const 0) (i32.const 1))) + (drop (call $fimport$1 (i32.const 0) (i32.const 1))) + (drop (call $fimport$2 (i32.const 0) (i32.const 1))) + (drop (call $fimport$3 (i32.const 0) (i32.const 1))) + (drop (call $fimport$4 (i32.const 0) (i32.const 1))) + (drop (call $fimport$0 (unreachable) (i32.const 1))) + ) +) |