-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
[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
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
|
/azp run runtime-extra-platforms |
Azure Pipelines successfully started running 1 pipeline(s). |
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 |
@matouskozak could you take a look at the extra platforms failures to see if everything looks ok ? |
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