-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
Start using UnmanagedCallersOnly in CoreLib #39082
Conversation
I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label. |
This is crashing in IL linker with:
I have opened dotnet/linker#1345 |
4b6b8ba
to
0c3b58a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Neat.
@jkotas Is this something we want to run some benchmarks on? At least so we all have a general idea on the benefit of doing this work or at the very least to get a baseline of what we may expect for wins. |
The public entrypoints for what I am touching in this PR are pretty bulky methods. I do not expect to see measurable throughput wins. I expect to see delegate allocation and JITing of the reverse delegate interop interop to disappear with this change. I will check that it is what is happening once it actually builds. My primary motivation for this change was to validate that the feature actually works end-to-end and shake stress bugs if there are any |
0c3b58a
to
1bc958e
Compare
@vargaz Also, PInvokeTable generator has problems with this change, but I should be able to fix that. |
c00f307
to
692ea29
Compare
I have reverted the Icu change for now to see whether there is anything else that breaks. (The full change is at https://github.com/jkotas/runtime/tree/unmanaged-callers-only-full.) |
I have verified that this does actually happen. |
tools-local/tasks/mobile.tasks/WasmAppBuilder/PInvokeTableGenerator.cs
Outdated
Show resolved
Hide resolved
x86 failing with:
|
How does UnmanagedCallersOnly fail on mono ? Does it fail on wasm or on desktop ? |
@vargaz, I think it failed on arm64 (desktop). Here are the job runs with ICU interop change. It was this change
|
Yes, this was the failure. You can reproduce it on Linux by checking out https://github.com/jkotas/runtime/tree/unmanaged-callers-only-full and running globalization tests. |
276057c
to
4294a7b
Compare
4294a7b
to
bb39901
Compare
Should be fixed by #39517 |
Thanks. Does #39517 fix it on wasm as well? |
bb39901
to
6dec18b
Compare
The new Mono failure pattern is:
|
6dec18b
to
7a9ccd1
Compare
Can't reproduce that failure. |
CoreCLR test failure is:
|
Blocked on #39604 |
- Fix CoreCLR assert on x86 - Use workaround for Mono
7a9ccd1
to
b57f39b
Compare
All failures are due to #39082 |
I have extended the Wasm workaround to apply to all Mono targets to work around this. @vargaz You should be able to reproduce this by changing |
Can't reproduce the mono failures. |
I have submitted #39695 . It should reproduce the failures. |
- Fix CoreCLR assert on x86 - Use workaround for Mono
No description provided.