-
Notifications
You must be signed in to change notification settings - Fork 819
Fuzzer: Merge and optimize even with closed world in Two() #7963
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
scripts/fuzz_opt.py
Outdated
| # Run at relatively high priority, as this is the main place we check cross- | ||
| # module interactions. | ||
| frequency = 1 | ||
| frequency = 1 # TODO: We may want even higher priority here |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Higher than 1?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://www.youtube.com/watch?v=4xgx4k83zzc
Seriously though, yes, "1" here means we use it with chance 100% when we pick it. But it still is limited by that chance to be picked out of the list in the first place. If e.g. we put it in the list twice, it would have double the chance it currently has.
The key idea here is that we can take two separate modules, merge them, and then
optimize in the most aggressive manner (even closed world) internally, as any
optimization change after the merge is a bug. (We must still avoid optimizing
the separate modules in closed world, which happens later in this fuzzer.)
Compare the full merged output to the pre-merged, for maximal coverage. This
requires fixing up export names after the merge, which is a little annoying, but
seems worth it.
This mode has been (re)finding WebAssembly/custom-descriptors#57 , so it should not land until we fix it here.