Uh oh!
There was an error while loading. Please reload this page.
[mono][interp] Fix calling of static delegates with simd arguments - #92927
Conversation
Previous code was checking if we should have already pushed a dreg, to compute the correct position of the argument on the stack. Save pointer to args directly instead.
If we do a delegate call that translates to a static call, the delegate pointer that was passed needs to be skipped and we need to pass the actual arguments. However, the following arguments might not come immediately after the delegate pointer, if the first argument is simd aligned. Pass this information to MINT_CALL_DELEGATE so the correct offset of the arguments can be computed.
Pass param_count directly
ghost
commented
Oct 3, 2023
Tagging subscribers to this area: @BrzVlad, @kotlarmilos Issue DetailsIf we do a delegate call that translates to a static call, the delegate pointer that was passed needs to be skipped and we need to pass the actual arguments. However, the following arguments might not come immediately after the delegate pointer, if the first argument is simd aligned. Pass this information to MINT_CALL_DELEGATE so the correct offset of the arguments can be computed. Fixes #92925
|
BrzVlad
commented
Oct 4, 2023
/azp run runtime-extra-platforms |
|
Azure Pipelines successfully started running 1 pipeline(s). |
BrzVlad
commented
Oct 4, 2023
This is actually a fix for a regression from .net7, so it is a backport candidate, which can be reproduced with a trivial sample: On .net8 rc1 this prints |
BrzVlad
commented
Oct 5, 2023
@matouskozak could you take a look at the extra platforms failures to see if everything looks ok ? |
matouskozak
commented
Oct 5, 2023
The failures seem unrelated. |
If we do a delegate call that translates to a static call, the delegate pointer that was passed needs to be skipped and we need to pass the actual arguments. However, the following arguments might not come immediately after the delegate pointer, if the first argument is simd aligned. Pass this information to MINT_CALL_DELEGATE so the correct offset of the arguments can be computed.
Fixes#92925