Skip to content

Deduplicate function signatures in wasm modules#2772

Merged
alexcrichton merged 1 commit into
bytecodealliance:mainfrom
alexcrichton:dedupe-function-signatures
Mar 25, 2021
Merged

Deduplicate function signatures in wasm modules#2772
alexcrichton merged 1 commit into
bytecodealliance:mainfrom
alexcrichton:dedupe-function-signatures

Conversation

@alexcrichton
Copy link
Copy Markdown
Member

Currently wasmtime will generate a SignatureIndex-per-type in the
module itself, even if the module itself declares the same type multiple
times. To make matters worse if the same type is declared across
multiple modules used in a module-linking-using-module then the
signature will be recorded each time it's declared.

This commit adds a simple map to module translation to deduplicate these
function types. This should improve the performance of module-linking
graphs where the same function type may be declared in a number of
modules. For modules that don't use module linking this adds an extra
map that's not used too often, but the time spent managing it should be
dwarfed by other compile tasks.

Currently wasmtime will generate a `SignatureIndex`-per-type in the
module itself, even if the module itself declares the same type multiple
times. To make matters worse if the same type is declared across
multiple modules used in a module-linking-using-module then the
signature will be recorded each time it's declared.

This commit adds a simple map to module translation to deduplicate these
function types. This should improve the performance of module-linking
graphs where the same function type may be declared in a number of
modules. For modules that don't use module linking this adds an extra
map that's not used too often, but the time spent managing it should be
dwarfed by other compile tasks.
@alexcrichton alexcrichton merged commit 6541567 into bytecodealliance:main Mar 25, 2021
@alexcrichton alexcrichton deleted the dedupe-function-signatures branch March 25, 2021 23:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants