-
Notifications
You must be signed in to change notification settings - Fork 5k
[Mono] Split QCall table declarations from their implementations #57639
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
Comments
Tagging subscribers to this area: @directhex Issue DetailsFor icalls, Mono can optionally be compiled wihout the big icall table in This allows the native linker to tree-shake the native code and remove unused icalls. (Otherwise every icall looks like it is referenced from the big native function pointer array that is defined based on the contents of icall-def-netcore). As we migrate to using QCalls more, we should enhance that infrastructure to also allow the qcall tables to be created based on use, too.
|
An example of adding a new qcall to mono is #57610 |
@lambdageek Do you think this can be completed in the 7 timeframe? |
I don't think so. We also didn't migrate very many icalls to qcalls in 7, so there's not much impact from doing this in the next release |
For icalls, Mono can optionally be compiled wihout the big icall table in
icall-def-netcore.h
. Instead, the icall table is defined by a special IL Linker step based on the icalls that are actually reachable from managed code.This allows the native linker to tree-shake the native code and remove unused icalls. (Otherwise every icall looks like it is referenced from the big native function pointer array that is defined based on the contents of icall-def-netcore).
As we migrate to using QCalls more, we should enhance that infrastructure to also allow the qcall tables to be created based on use, too.
The text was updated successfully, but these errors were encountered: