-
Notifications
You must be signed in to change notification settings - Fork 825
Closed
Description
Binaryen seems to sometimes clear field names which makes code harder to read afterwards.
Take for example after.tar.gz
% tar xvzf after.tar.gz
after.O0.wasm
% wasm-opt --enable-gc --enable-reference-types --enable-multivalue --enable-exception-handling --enable-nontrapping-float-to-int --enable-sign-ext --enable-bulk-memory --enable-threads '--no-inline=*<noInline>*' --closed-world --traps-never-happen --type-unfinalizing -Os --type-ssa --gufa -Os --type-merging -Os --type-finalizing --minimize-rec-groups -g after.O0.wasm -o after.O2.wasm
% wami --full-wat after.O2.wasm -o after.O2.wat
% wami --full-wat after.O0.wasm -o after.O0.wat
We see e.g. that after.O0.wat (the unoptimized version) has
(type $#ClosureBase (;67;) (sub $_Closure (struct
(field $field0 i32)
(field $field1 (mut i32))
(field $context (ref struct))
(field $vtable (ref $#VtableBase))
(field $functionType (ref $_FunctionType)))))
(type $#Closure-0-0 (;73;) (sub $#ClosureBase (struct
(field $field0 i32)
(field $field1 (mut i32))
(field $context (ref struct))
(field $vtable (ref $#Vtable-0-0))
(field $functionType (ref $_FunctionType)))))
(type $#Closure-0-1 (;119;) (sub $#Closure-0-0 (struct
(field $field0 i32)
(field $field1 (mut i32))
(field $context (ref struct))
(field $vtable (ref $#Vtable-0-1))
(field $functionType (ref $_FunctionType)))))
(type $#Closure-0-2 (;125;) (sub final $#Closure-0-1 (struct
(field $field0 i32)
(field $field1 (mut i32))
(field $context (ref struct))
(field $vtable (ref $#Vtable-0-2))
(field $functionType (ref $_FunctionType)))))
(type $#Closure-1-0 (;330;) (sub $#ClosureBase (struct
(field $field0 i32)
(field $field1 (mut i32))
(field $context (ref struct))
(field $vtable (ref $#Vtable-1-0))
(field $functionType (ref $_FunctionType)))))
(type $#Closure-1-1 (;334;) (sub final $#Closure-1-0 (struct
(field $field0 i32)
(field $field1 (mut i32))
(field $context (ref struct))
(field $vtable (ref $#Vtable-1-1))
(field $functionType (ref $_FunctionType)))))We see e.g. that after.O2.wat (the optimized version) has
(type $#ClosureBase (;24;) (sub $Object (struct
(field $field0 i32)
(field $field1 (mut i32))
(field $field2 (ref $_FunctionType)))))
(type $#Closure-0-1 (;25;) (sub final $#ClosureBase (struct
(field $field0 i32)
(field $field1 (mut i32))
(field $field2 (ref $_FunctionType))
(field $context (ref struct))
(field $field4 (ref $#Vtable-0-1)))))
(type $#Closure-1-1 (;31;) (sub final $#ClosureBase (struct
(field $field0 i32)
(field $field1 (mut i32))
(field $field2 (ref $_FunctionType))
(field $context (ref $<context file:///...>)))))=> Instead of (field $field2 (ref $_FunctionType)) we should have (field $functionType (ref $_FunctionType)) (i.e. with field name functionType)
Metadata
Metadata
Assignees
Labels
No labels