Don't generate duplicate thunks

Previously, functions that appear in multiple places
(exported, start function, table) would generate a thunk
for each place they appear in. Those additional thunks are
identical and only only one of them would be referenced.
Main offender are tables with redundant entries.

This commit eliminates those duplicate thunks without adding
any additional overhead.
This commit is contained in:
Alexander Theißen
2020-10-13 10:42:36 +02:00
parent 5e3b06de05
commit 1f8e6dd5b2
3 changed files with 9 additions and 57 deletions
+2 -18
View File
@@ -22,23 +22,7 @@
i32.const 1
i32.sub
global.set 0)
(func (;4;) (type 1)
global.get 0
i32.const 1
i32.add
global.set 0
global.get 0
i32.const 1024
i32.gt_u
if ;; label = @1
unreachable
end
call 1
global.get 0
i32.const 1
i32.sub
global.set 0)
(global (;0;) (mut i32) (i32.const 0))
(export "exported_start" (func 4))
(export "exported_start" (func 3))
(export "call" (func 2))
(start 4))
(start 3))