Conversation
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
There was a problem hiding this comment.
Pull request overview
This PR updates the WASM RyuJIT emitter to provide real call-indirect signatures by deriving argument lowering from method handles and by hard-coding signatures for certain runtime helpers, then passing those signatures to the JIT↔EE getWasmTypeSymbol API.
Changes:
- Build a
CorInfoWasmTypesignature array foremitIns_Callwhenparams.methHndis available. - Special-case a set of helper calls (detected via
eeGetHelperNum) with hard-coded signatures. - Use the computed signature to obtain a
CORINFO_WASM_TYPE_SYMBOL_HANDLEforcall_indirect.
|
Found an oversight, working on it. |
|
@dotnet/jit-contrib I think this is ready for review now and gets us generating valid modules for all the cases I've tested. It also gets us closer to generating the right code. |
SingleAccretion
left a comment
There was a problem hiding this comment.
LGTM modulo comments.
adamperlin
left a comment
There was a problem hiding this comment.
This looks good to me, just two questions!
This gets us generating valid modules for my set of test scenarios by generating correct call signatures.
EDIT: With this PR, the generated code for i.e. a gc write barrier helper call looks like:
Note that we're missing support for address relocations in crossgen so I just emit the raw truncated helper address value as a displacement against __r2r_start.