summaryrefslogtreecommitdiff
path: root/src/tools/wasm-split/split-options.h
diff options
context:
space:
mode:
authorThomas Lively <tlively@google.com>2023-01-18 13:46:45 -0600
committerGitHub <noreply@github.com>2023-01-18 19:46:45 +0000
commitaebad47fec02af167bd1c328b8614deb42e9ff0e (patch)
tree597bdb02eab7ed4aa6b21e66aed49f782354a91a /src/tools/wasm-split/split-options.h
parent82bd2c4e5717cbe19a1a6c34cfdd5116b13a68dc (diff)
downloadbinaryen-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