-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
osx-arm64 ABI changes. #41130
Comments
I did a quick survey of |
sandreenko@9abb9ad reproduces the issue:
working on a fix. |
These failing tests are also related to this issue
|
These failures are also related
|
These p1 interop test failures are also related
|
This is also related
|
This is also related... seg faults calling SystemNative_ForkAndExecProcess
|
A small update before my vacation: master...sandreenko:Arm64OSX is a combination of Jit changes that are on reviews right now and initial VM work. It passes tests where we don't need marshaling (when we call only with primitive types, no pointers or structs) but fails with marshaling because VM keeps calculating sizes in stack slots and corrupts arguments. To see the issue run
but then
when instead of int for the first 17 arguments we should see The full log for the problem stub is attached. |
@sandreenko Is the Arm64OSX branch representative of your current status. I would like to pull your changes into the SDK and see if it fixes any of the issues we are seeing. |
I am working in the same branch master...sandreenko:Arm64OSX, it passes tests with small arguments, like
and profiler tests:
but it misses 16-byte struct passed on registers changes, so it is not ready. |
With #45467 being merged we have small stack arguments passing support on Apple Arm64, it fixes the following tests from pri0:
I will publish results for pri1 later, I have not seen any regressions, but I suppose there could be some missed cases. If we ever need to port this support back here are the PRs: #45467 (Enable Arm64 Mac OS ABI.) |
I extracted HFA(float) support #45780 as a separate issue for a clearer discussion. |
Closing in favor of #45780 |
Looking more closely, the 3 tasks above aren't fully covered by #45780 |
Closing this meta, the last item is covered by #46456 |
osx-arm64 has a slightly different calling convention than the arm specified conventions
The obvious things that stood out to me was
R18
/X18
/W18
reservedTasks from @sandreenko:
Support small stack arguments passing in managed <-> native calls;
Support small stack arguments passing via reflection (VM changes);
Support 16-byte struct passing starting with even register (like x1,x2);
category:correctness
theme:calling-convention
skill-level:expert
cost:large
The text was updated successfully, but these errors were encountered: