Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
threads: fuzz
shared-everything-threads
(#1756)
* threads: fuzz `shared-everything-threads` This adds initial support for fuzzing the WebAssembly side of the shared-everything-threads [proposal]. Eventual addition of the CM builtins will require extensions to this. [proposal]: https://github.com/WebAssembly/shared-everything-threads * Propagate shared function type into the code builder * Avoid shared function bodies for now Since it may take a while to implement all the "reverse validation" in wasm-smith's instruction generator, this effectively cordons off that bit of the fuzzer so that we can at least generate shared types in modules. Later, once the instruction generator is smarter, we will remove this filter and start generating shared function bodies. * Avoid shared const expressions for now Like shared function bodies, this can be cordoned off until later. * Allow `CodeBuilder::shared` to be unused for now * Check sharedness in `arbitrary_super_type_of_heap_type` * Actually filter `ref.func` const expressions In 2a2ddd5, I tried to avoid `ref.func` expressions entirely for shared types but unfortunately the other side could still occur: a `ref.func` on an unshared table that generates a shared funcref. This filters out the available types to match sharedness. * review: move feature-flipping to `Config::sanitize` * review: fuzz shared-everything at the same ratio as threads * fix: disable shared-everything if reference types is disabled * fix: disable shared-everything entirely for mutate fuzz target * review: invisibly propagate sharedness As @alexcrichton suggested, this holds a `must_share` flag on `Module` and carefully sets it and unsets it using `propagate_shared`. * fix: formatting * review: revert `arbitrary_ref_type` changes * review: add TODO to remove extra check * review: use `arbitrary_shared` more
- Loading branch information