wasmparser: avoid skipping locals to get OperatorsReader for a function body #2204
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR lets users turn a finished LocalsReader into an OperatorsReader, avoiding a need to ask the FunctionBody to skip through the locals again (as suggested at #2180 (comment) -- @alexcrichton if you prefer a different/better way to do this please feel free to ignore this one!).
This seems to yield roughly a 3-4.5% improvement in the
parse/tests
,parse/bz2
,parse/spidermonkey
, etc. benchmarks.The validator was already doing this (https://github.com/bytecodealliance/wasm-tools/blob/main/crates/wasmparser/src/validator/func.rs#L82-L87) and is unchanged by this PR, so I didn't expect this to affect validation time -- although I am seeing a ~1.5-2% slowdown in the validate tests for reasons unknown (hopefully just random variation from how this is being compiled).