diff options
author | Thomas Lively <tlively@google.com> | 2023-01-18 13:46:45 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-18 19:46:45 +0000 |
commit | aebad47fec02af167bd1c328b8614deb42e9ff0e (patch) | |
tree | 597bdb02eab7ed4aa6b21e66aed49f782354a91a /src/tools/wasm-split/split-options.h | |
parent | 82bd2c4e5717cbe19a1a6c34cfdd5116b13a68dc (diff) | |
download | binaryen-aebad47fec02af167bd1c328b8614deb42e9ff0e.tar.gz binaryen-aebad47fec02af167bd1c328b8614deb42e9ff0e.tar.bz2 binaryen-aebad47fec02af167bd1c328b8614deb42e9ff0e.zip |
[Wasm GC] Use DFA minimization to merge types (#5432)
Analyze type merging candidates as states in a DFA, using a partition refining
DFA minimization algorithm to more aggressively find sets of mergeable types.
The new implementation can merge types that the previous iteration would have
taken an arbitrary number of iterations to merge or would not have been able to
merge at all.
The new implementation is also careful in its treatment of private and public
types and should work as-is under an open world assumption or a relaxed
closed-world assumption that admits more public types. Specifically, the new
code avoids merging public types into their supertypes, but still allows
private subtypes to be merged into their public supertypes.
The new implementation supports merging function types, which the old
implementation did not.
Finally, the new implementation is able to merge identical sibling types even
when the analysis determines that they cannot be merged into their common
supertype. Extending this capability to sibling top-level types without
nontrivial supertypes is left to a follow-on PR.
Diffstat (limited to 'src/tools/wasm-split/split-options.h')
0 files changed, 0 insertions, 0 deletions