| 06be7808 | 05-Feb-2026 |
Nick Fitzgerald <[email protected]> |
Clean up `gc_ops` fuzzing mutator (#12533)
* Clean up `gc_ops` fuzzing mutator
This commit cleans up a few random things about the `gc_ops` fuzzing mutator, notably:
* The macro to define `GcOp` a
Clean up `gc_ops` fuzzing mutator (#12533)
* Clean up `gc_ops` fuzzing mutator
This commit cleans up a few random things about the `gc_ops` fuzzing mutator, notably:
* The macro to define `GcOp` and many of its methods is refactored to be more extensible going forward (e.g. all of GC op `fixup` is now macro-generated, instead of having special-cases for typed struct ops, and we could probably also move encoding into the macro as a follow up PR). * Furthermore, the macro is also a `for_each_*`-style macro now, which lets us define the GC ops once and then use the macro multiple times to define different things, rather than being forced to put everything we want to generate into one macro RHS. This should make things a bit easier to read and edit and plays nicer with LSP. * A bunch of GC op filtering that was logically part of fixing up an instruction is now actually part of `GcOp::fixup`. Also a redundant `op.fixup()` call was removed, `GcOp::fixup` takes `&self` instead of `&mut self` since it returns a new `GcOp` now instead of mutatint `self` in place, etc... * A few other small things here and there.
* Fix `GcOps` fuzz mutator tests
Also remove the `test_wat_string` test because it isn't really helpful at this point, it is just something we have to remember to update whenever we add/remove/change `GcOp`s while not giving us anything in return.
show more ...
|