Stage2: wasm - Implement the MIR pass #10153
Merged
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 implements the MIR pass for the wasm backend. Right now it re-uses the values of the opcode for each MIR tag, which allows us to easily write its value to memory without having to map from MIR to a wasm opcode. We will however have to add synthetic tags such as debug lines etc. Although not all 256 values are being used, the spec does reserve them and have in the past added new opcodes to those reserved slots. However, an option could be to have synthetic tags use a
secondary_tag
field, as we will need those anyway for some of the wasm opcodes that are beyondu8
. This has the added benefit that eachMIR
instruction will remain 5 bytes max, as we can keepTag
1 byte, rather than 2.