From 38a8dc4b923ffb0294d4689a02afe9a0d205923e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 23 Mar 2021 10:06:41 -0700 Subject: [PATCH 1/6] future test updates [ci skip] --- tests/code_size/hello_webgl2_wasm.json | 8 ++++---- tests/code_size/hello_webgl2_wasm2js.json | 8 ++++---- tests/code_size/hello_webgl_wasm.json | 8 ++++---- tests/code_size/hello_webgl_wasm2js.json | 8 ++++---- tests/code_size/random_printf_wasm.json | 8 ++++---- tests/code_size/random_printf_wasm2js.json | 8 ++++---- tests/other/metadce/hello_world_O2.funcs | 5 ----- tests/other/metadce/hello_world_O3.funcs | 5 ----- tests/other/metadce/hello_world_O3_MAIN_MODULE_2.funcs | 6 ------ tests/other/metadce/hello_world_Os.funcs | 5 ----- tests/other/metadce/hello_world_Oz.funcs | 5 ----- tests/other/metadce/mem_O3.funcs | 1 - tests/other/metadce/mem_O3_ALLOW_MEMORY_GROWTH.funcs | 1 - .../mem_O3_ALLOW_MEMORY_GROWTH_STANDALONE_WASM.funcs | 3 --- tests/other/metadce/mem_O3_STANDALONE_WASM.funcs | 2 -- tests/other/metadce/mem_no_argv_O3_STANDALONE_WASM.funcs | 1 - .../metadce/mem_no_argv_O3_STANDALONE_WASM_flto.funcs | 1 - .../metadce/mem_no_main_O3_STANDALONE_WASM_noentry.funcs | 1 - .../minimal_Oz_USE_PTHREADS_PROXY_TO_PTHREAD.funcs | 8 -------- 19 files changed, 24 insertions(+), 68 deletions(-) diff --git a/tests/code_size/hello_webgl2_wasm.json b/tests/code_size/hello_webgl2_wasm.json index 9831e72dc4cb0..72d67b8b823bb 100644 --- a/tests/code_size/hello_webgl2_wasm.json +++ b/tests/code_size/hello_webgl2_wasm.json @@ -3,8 +3,8 @@ "a.html.gz": 377, "a.js": 4927, "a.js.gz": 2352, - "a.wasm": 10879, - "a.wasm.gz": 6905, - "total": 16369, - "total_gz": 9634 + "a.wasm": 10784, + "a.wasm.gz": 6858, + "total": 16274, + "total_gz": 9587 } diff --git a/tests/code_size/hello_webgl2_wasm2js.json b/tests/code_size/hello_webgl2_wasm2js.json index c5ec459b73858..c792632dfd719 100644 --- a/tests/code_size/hello_webgl2_wasm2js.json +++ b/tests/code_size/hello_webgl2_wasm2js.json @@ -1,10 +1,10 @@ { "a.html": 588, "a.html.gz": 386, - "a.js": 21282, - "a.js.gz": 8255, + "a.js": 20734, + "a.js.gz": 8307, "a.mem": 3171, "a.mem.gz": 2715, - "total": 25041, - "total_gz": 11356 + "total": 24493, + "total_gz": 11408 } diff --git a/tests/code_size/hello_webgl_wasm.json b/tests/code_size/hello_webgl_wasm.json index e46db2ceab8ee..a874e7d364b06 100644 --- a/tests/code_size/hello_webgl_wasm.json +++ b/tests/code_size/hello_webgl_wasm.json @@ -3,8 +3,8 @@ "a.html.gz": 377, "a.js": 4410, "a.js.gz": 2172, - "a.wasm": 10879, - "a.wasm.gz": 6905, - "total": 15852, - "total_gz": 9454 + "a.wasm": 10784, + "a.wasm.gz": 6858, + "total": 15757, + "total_gz": 9407 } diff --git a/tests/code_size/hello_webgl_wasm2js.json b/tests/code_size/hello_webgl_wasm2js.json index 14443e86d8633..528b60431d97d 100644 --- a/tests/code_size/hello_webgl_wasm2js.json +++ b/tests/code_size/hello_webgl_wasm2js.json @@ -1,10 +1,10 @@ { "a.html": 588, "a.html.gz": 386, - "a.js": 20766, - "a.js.gz": 8100, + "a.js": 20218, + "a.js.gz": 8150, "a.mem": 3171, "a.mem.gz": 2715, - "total": 24525, - "total_gz": 11201 + "total": 23977, + "total_gz": 11251 } diff --git a/tests/code_size/random_printf_wasm.json b/tests/code_size/random_printf_wasm.json index 7582fedb6a971..8e80b8c1c5ba2 100644 --- a/tests/code_size/random_printf_wasm.json +++ b/tests/code_size/random_printf_wasm.json @@ -1,6 +1,6 @@ { - "a.html": 13738, - "a.html.gz": 7298, - "total": 13738, - "total_gz": 7298 + "a.html": 13570, + "a.html.gz": 7194, + "total": 13570, + "total_gz": 7194 } diff --git a/tests/code_size/random_printf_wasm2js.json b/tests/code_size/random_printf_wasm2js.json index 457d4bff063c1..af77797312aa8 100644 --- a/tests/code_size/random_printf_wasm2js.json +++ b/tests/code_size/random_printf_wasm2js.json @@ -1,6 +1,6 @@ { - "a.html": 18976, - "a.html.gz": 7942, - "total": 18976, - "total_gz": 7942 + "a.html": 18670, + "a.html.gz": 7868, + "total": 18670, + "total_gz": 7868 } diff --git a/tests/other/metadce/hello_world_O2.funcs b/tests/other/metadce/hello_world_O2.funcs index 01043eb8306b7..e422e214a61be 100644 --- a/tests/other/metadce/hello_world_O2.funcs +++ b/tests/other/metadce/hello_world_O2.funcs @@ -2,17 +2,12 @@ $__emscripten_stdout_close $__emscripten_stdout_seek $__errno_location $__fwritex -$__overflow $__stdio_write $__towrite $__wasi_syscall_ret $__wasm_call_ctors -$fwrite $legalstub$dynCall_jiji $main -$memcpy -$puts $stackAlloc $stackRestore $stackSave -$strlen diff --git a/tests/other/metadce/hello_world_O3.funcs b/tests/other/metadce/hello_world_O3.funcs index 5817f30a9676e..341b1f7f10988 100644 --- a/tests/other/metadce/hello_world_O3.funcs +++ b/tests/other/metadce/hello_world_O3.funcs @@ -1,12 +1,7 @@ $__emscripten_stdout_close $__emscripten_stdout_seek $__fwritex -$__overflow $__stdio_write $__towrite $__wasm_call_ctors -$fwrite $main -$memcpy -$puts -$strlen diff --git a/tests/other/metadce/hello_world_O3_MAIN_MODULE_2.funcs b/tests/other/metadce/hello_world_O3_MAIN_MODULE_2.funcs index 15f749d40d1fe..0f819ed417daf 100644 --- a/tests/other/metadce/hello_world_O3_MAIN_MODULE_2.funcs +++ b/tests/other/metadce/hello_world_O3_MAIN_MODULE_2.funcs @@ -1,20 +1,14 @@ $__emscripten_stdout_close $__emscripten_stdout_seek $__fwritex -$__overflow $__stdio_write $__towrite -$__wasm_apply_data_relocs $__wasm_apply_global_relocs $__wasm_call_ctors $dlmalloc -$fwrite $legalstub$dynCall_jiji $main -$memcpy -$puts $sbrk $stackAlloc $stackRestore $stackSave -$strlen diff --git a/tests/other/metadce/hello_world_Os.funcs b/tests/other/metadce/hello_world_Os.funcs index be0a7847c413d..6840fa3f66bd8 100644 --- a/tests/other/metadce/hello_world_Os.funcs +++ b/tests/other/metadce/hello_world_Os.funcs @@ -1,13 +1,8 @@ $__emscripten_stdout_close $__emscripten_stdout_seek $__fwritex -$__overflow $__stdio_write $__towrite $__wasi_syscall_ret $__wasm_call_ctors -$fwrite $main -$memcpy -$puts -$strlen diff --git a/tests/other/metadce/hello_world_Oz.funcs b/tests/other/metadce/hello_world_Oz.funcs index be0a7847c413d..6840fa3f66bd8 100644 --- a/tests/other/metadce/hello_world_Oz.funcs +++ b/tests/other/metadce/hello_world_Oz.funcs @@ -1,13 +1,8 @@ $__emscripten_stdout_close $__emscripten_stdout_seek $__fwritex -$__overflow $__stdio_write $__towrite $__wasi_syscall_ret $__wasm_call_ctors -$fwrite $main -$memcpy -$puts -$strlen diff --git a/tests/other/metadce/mem_O3.funcs b/tests/other/metadce/mem_O3.funcs index c707f3f2fe654..aa0174861bf05 100644 --- a/tests/other/metadce/mem_O3.funcs +++ b/tests/other/metadce/mem_O3.funcs @@ -1,5 +1,4 @@ $__wasm_call_ctors -$dlmalloc $main $sbrk $stackAlloc diff --git a/tests/other/metadce/mem_O3_ALLOW_MEMORY_GROWTH.funcs b/tests/other/metadce/mem_O3_ALLOW_MEMORY_GROWTH.funcs index c707f3f2fe654..aa0174861bf05 100644 --- a/tests/other/metadce/mem_O3_ALLOW_MEMORY_GROWTH.funcs +++ b/tests/other/metadce/mem_O3_ALLOW_MEMORY_GROWTH.funcs @@ -1,5 +1,4 @@ $__wasm_call_ctors -$dlmalloc $main $sbrk $stackAlloc diff --git a/tests/other/metadce/mem_O3_ALLOW_MEMORY_GROWTH_STANDALONE_WASM.funcs b/tests/other/metadce/mem_O3_ALLOW_MEMORY_GROWTH_STANDALONE_WASM.funcs index 5c0a7037f4512..8a606d12795d2 100644 --- a/tests/other/metadce/mem_O3_ALLOW_MEMORY_GROWTH_STANDALONE_WASM.funcs +++ b/tests/other/metadce/mem_O3_ALLOW_MEMORY_GROWTH_STANDALONE_WASM.funcs @@ -1,6 +1,3 @@ -$__main_void $__wasm_call_ctors $_start -$dlmalloc -$emscripten_resize_heap $sbrk diff --git a/tests/other/metadce/mem_O3_STANDALONE_WASM.funcs b/tests/other/metadce/mem_O3_STANDALONE_WASM.funcs index 3b0c9127112e5..8a606d12795d2 100644 --- a/tests/other/metadce/mem_O3_STANDALONE_WASM.funcs +++ b/tests/other/metadce/mem_O3_STANDALONE_WASM.funcs @@ -1,5 +1,3 @@ -$__main_void $__wasm_call_ctors $_start -$dlmalloc $sbrk diff --git a/tests/other/metadce/mem_no_argv_O3_STANDALONE_WASM.funcs b/tests/other/metadce/mem_no_argv_O3_STANDALONE_WASM.funcs index 3df33b3441ed5..8a606d12795d2 100644 --- a/tests/other/metadce/mem_no_argv_O3_STANDALONE_WASM.funcs +++ b/tests/other/metadce/mem_no_argv_O3_STANDALONE_WASM.funcs @@ -1,4 +1,3 @@ $__wasm_call_ctors $_start -$dlmalloc $sbrk diff --git a/tests/other/metadce/mem_no_argv_O3_STANDALONE_WASM_flto.funcs b/tests/other/metadce/mem_no_argv_O3_STANDALONE_WASM_flto.funcs index b264d43811522..86fd2dc1446bb 100644 --- a/tests/other/metadce/mem_no_argv_O3_STANDALONE_WASM_flto.funcs +++ b/tests/other/metadce/mem_no_argv_O3_STANDALONE_WASM_flto.funcs @@ -1,3 +1,2 @@ $__wasm_call_ctors $_start -$dlmalloc diff --git a/tests/other/metadce/mem_no_main_O3_STANDALONE_WASM_noentry.funcs b/tests/other/metadce/mem_no_main_O3_STANDALONE_WASM_noentry.funcs index c0964edec3d7f..109453df798f0 100644 --- a/tests/other/metadce/mem_no_main_O3_STANDALONE_WASM_noentry.funcs +++ b/tests/other/metadce/mem_no_main_O3_STANDALONE_WASM_noentry.funcs @@ -1,4 +1,3 @@ $__wasm_call_ctors -$dlmalloc $foo $sbrk diff --git a/tests/other/metadce/minimal_Oz_USE_PTHREADS_PROXY_TO_PTHREAD.funcs b/tests/other/metadce/minimal_Oz_USE_PTHREADS_PROXY_TO_PTHREAD.funcs index 11a78e18d08ed..ff0bf7f4cfb66 100644 --- a/tests/other/metadce/minimal_Oz_USE_PTHREADS_PROXY_TO_PTHREAD.funcs +++ b/tests/other/metadce/minimal_Oz_USE_PTHREADS_PROXY_TO_PTHREAD.funcs @@ -1,17 +1,12 @@ -$GetOrAllocateQueue $GetQueue $__emscripten_pthread_data_constructor $__errno_location $__pthread_mutex_lock -$__pthread_mutex_timedlock $__pthread_mutex_trylock -$__pthread_mutex_trylock_owner $__pthread_mutex_unlock $__pthread_self_internal $__pthread_setcancelstate $__pthread_tsd_run_dtors -$__timedwait -$__timedwait_cp $__wasm_call_ctors $__wasm_init_memory $_do_call @@ -38,11 +33,8 @@ $emscripten_stack_set_limits $emscripten_sync_run_in_main_thread $emscripten_sync_run_in_main_thread $emscripten_tls_init -$emscripten_wait_for_call_v $free_tls $init_mparams -$internal_memalign -$pthread_mutex_init $sbrk $stackAlloc $stackRestore From 549dad4697ba4919e49231d97dfc397e1fedd769 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 24 Mar 2021 16:38:45 -0700 Subject: [PATCH 2/6] Disable aggressive binaryen inlining in some tests that look at stack traces --- tests/test_core.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/test_core.py b/tests/test_core.py index 7237f95b994bd..b53bff4a2ab3e 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -6586,6 +6586,8 @@ def test_demangle_stacks(self, extra_args): self.emcc_args += extra_args self.set_setting('DEMANGLE_SUPPORT') self.set_setting('ASSERTIONS') + # disable aggressive inlining in binaryen + self.set_setting('BINARYEN_EXTRA_PASSES', '--one-caller-inline-max-function-size=1') # ensure function names are preserved self.emcc_args += ['--profiling-funcs', '--llvm-opts', '0'] self.do_core_test('test_demangle_stacks.cpp', assert_returncode=NON_ZERO) @@ -6595,6 +6597,9 @@ def test_demangle_stacks(self, extra_args): self.do_core_test('test_demangle_stacks_noassert.cpp', assert_returncode=NON_ZERO) def test_demangle_stacks_symbol_map(self): + # disable aggressive inlining in binaryen + self.set_setting('BINARYEN_EXTRA_PASSES', '--one-caller-inline-max-function-size=1') + self.set_setting('DEMANGLE_SUPPORT') if '-O' in str(self.emcc_args) and '-O0' not in self.emcc_args and '-O1' not in self.emcc_args and '-g' not in self.emcc_args: self.emcc_args += ['--llvm-opts', '0'] From ef2743a9cf6f1853f3d8a98ac2ca8742aff7d307 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 29 Mar 2021 15:44:09 -0700 Subject: [PATCH 3/6] return tests --- tests/test_other.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/test_other.py b/tests/test_other.py index 6c98c4470af9d..b90ca5eccfb2f 100644 --- a/tests/test_other.py +++ b/tests/test_other.py @@ -6813,8 +6813,6 @@ def assertFileContents(self, filename, contents): def run_metadce_test(self, filename, args, expected_exists, expected_not_exists, expected_size, check_sent=True, check_imports=True, check_exports=True, check_funcs=True): - return self.skipTest('let https://github.com/WebAssembly/binaryen/pull/3730 roll in') - size_slack = 0.05 # in -Os, -Oz, we remove imports wasm doesn't need @@ -8438,7 +8436,6 @@ def test(args, closure, opt): 'hello_webgl2_wasm': ('hello_webgl2', False), 'hello_webgl2_wasm2js': ('hello_webgl2', True), }) - @unittest.skip('let https://github.com/WebAssembly/binaryen/pull/3730 roll in') def test_minimal_runtime_code_size(self, test_name, js, compare_js_output=False): smallest_code_size_args = ['-s', 'MINIMAL_RUNTIME=2', '-s', 'ENVIRONMENT=web', From 284117cf13d2e75ba5b999bf267f8d403bd0b365 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 29 Mar 2021 15:51:16 -0700 Subject: [PATCH 4/6] update --- tests/code_size/hello_webgl2_wasm.json | 17 ++++------------- tests/code_size/hello_webgl2_wasm2js.json | 17 ++++------------- tests/code_size/hello_webgl_wasm.json | 17 ++++------------- tests/code_size/hello_webgl_wasm2js.json | 17 ++++------------- tests/code_size/random_printf_wasm.json | 15 ++++----------- tests/code_size/random_printf_wasm2js.json | 15 ++++----------- 6 files changed, 24 insertions(+), 74 deletions(-) diff --git a/tests/code_size/hello_webgl2_wasm.json b/tests/code_size/hello_webgl2_wasm.json index 3e2aa5f5859fc..f3a3468069a2b 100644 --- a/tests/code_size/hello_webgl2_wasm.json +++ b/tests/code_size/hello_webgl2_wasm.json @@ -1,19 +1,10 @@ { "a.html": 563, "a.html.gz": 377, -<<<<<<< HEAD - "a.js": 4927, - "a.js.gz": 2352, - "a.wasm": 10784, - "a.wasm.gz": 6858, - "total": 16274, - "total_gz": 9587 -======= "a.js": 4882, "a.js.gz": 2330, - "a.wasm": 10448, - "a.wasm.gz": 6720, - "total": 15893, - "total_gz": 9427 ->>>>>>> origin/main + "a.wasm": 10356, + "a.wasm.gz": 6676, + "total": 15801, + "total_gz": 9383 } diff --git a/tests/code_size/hello_webgl2_wasm2js.json b/tests/code_size/hello_webgl2_wasm2js.json index cc5e0504716f2..ecf064c0bd12c 100644 --- a/tests/code_size/hello_webgl2_wasm2js.json +++ b/tests/code_size/hello_webgl2_wasm2js.json @@ -1,19 +1,10 @@ { "a.html": 588, "a.html.gz": 386, -<<<<<<< HEAD - "a.js": 20734, - "a.js.gz": 8307, + "a.js": 19867, + "a.js.gz": 8077, "a.mem": 3171, "a.mem.gz": 2715, - "total": 24493, - "total_gz": 11408 -======= - "a.js": 20432, - "a.js.gz": 8018, - "a.mem": 3171, - "a.mem.gz": 2715, - "total": 24191, - "total_gz": 11119 ->>>>>>> origin/main + "total": 23626, + "total_gz": 11178 } diff --git a/tests/code_size/hello_webgl_wasm.json b/tests/code_size/hello_webgl_wasm.json index 206ee2a1f89ab..7f8020059e391 100644 --- a/tests/code_size/hello_webgl_wasm.json +++ b/tests/code_size/hello_webgl_wasm.json @@ -1,19 +1,10 @@ { "a.html": 563, "a.html.gz": 377, -<<<<<<< HEAD - "a.js": 4410, - "a.js.gz": 2172, - "a.wasm": 10784, - "a.wasm.gz": 6858, - "total": 15757, - "total_gz": 9407 -======= "a.js": 4386, "a.js.gz": 2156, - "a.wasm": 10448, - "a.wasm.gz": 6720, - "total": 15397, - "total_gz": 9253 ->>>>>>> origin/main + "a.wasm": 10356, + "a.wasm.gz": 6676, + "total": 15305, + "total_gz": 9209 } diff --git a/tests/code_size/hello_webgl_wasm2js.json b/tests/code_size/hello_webgl_wasm2js.json index d381c0ee41024..d72a3e9a1d72b 100644 --- a/tests/code_size/hello_webgl_wasm2js.json +++ b/tests/code_size/hello_webgl_wasm2js.json @@ -1,19 +1,10 @@ { "a.html": 588, "a.html.gz": 386, -<<<<<<< HEAD - "a.js": 20218, - "a.js.gz": 8150, + "a.js": 19352, + "a.js.gz": 7918, "a.mem": 3171, "a.mem.gz": 2715, - "total": 23977, - "total_gz": 11251 -======= - "a.js": 19917, - "a.js.gz": 7870, - "a.mem": 3171, - "a.mem.gz": 2715, - "total": 23676, - "total_gz": 10971 ->>>>>>> origin/main + "total": 23111, + "total_gz": 11019 } diff --git a/tests/code_size/random_printf_wasm.json b/tests/code_size/random_printf_wasm.json index efffb9e8d8b61..dfd4f27f07bd7 100644 --- a/tests/code_size/random_printf_wasm.json +++ b/tests/code_size/random_printf_wasm.json @@ -1,13 +1,6 @@ { -<<<<<<< HEAD - "a.html": 13570, - "a.html.gz": 7194, - "total": 13570, - "total_gz": 7194 -======= - "a.html": 12617, - "a.html.gz": 6787, - "total": 12617, - "total_gz": 6787 ->>>>>>> origin/main + "a.html": 12509, + "a.html.gz": 6735, + "total": 12509, + "total_gz": 6735 } diff --git a/tests/code_size/random_printf_wasm2js.json b/tests/code_size/random_printf_wasm2js.json index 560056a2af6b7..f7b617f6b3fac 100644 --- a/tests/code_size/random_printf_wasm2js.json +++ b/tests/code_size/random_printf_wasm2js.json @@ -1,13 +1,6 @@ { -<<<<<<< HEAD - "a.html": 18670, - "a.html.gz": 7868, - "total": 18670, - "total_gz": 7868 -======= - "a.html": 17510, - "a.html.gz": 7437, - "total": 17510, - "total_gz": 7437 ->>>>>>> origin/main + "a.html": 17254, + "a.html.gz": 7401, + "total": 17254, + "total_gz": 7401 } From 2f433a238aa23fd3c1f245683a98e149b0212fda Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 29 Mar 2021 19:49:09 -0700 Subject: [PATCH 5/6] changelog --- ChangeLog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index 336852ddbc1da..6d81de24a9525 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -20,6 +20,8 @@ See docs/process.md for more on how version tagging works. Current Trunk ------------- +- Binaryen inlining heuristics changed to always inline single-use functions. + This should reduce code size and improve performance (#13744). 2.0.16: 03/25/2021 ------------------ From 98bbdfe59e294d4b089ce0c2544d3b4b56b4c6fe Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 29 Mar 2021 21:48:52 -0700 Subject: [PATCH 6/6] rephrase --- ChangeLog.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 6d81de24a9525..98400f974877a 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -20,8 +20,8 @@ See docs/process.md for more on how version tagging works. Current Trunk ------------- -- Binaryen inlining heuristics changed to always inline single-use functions. - This should reduce code size and improve performance (#13744). +- Binaryen now always inlines single-use functions. This should reduce code size + and improve performance (#13744). 2.0.16: 03/25/2021 ------------------