-
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
Try rooting less stuff for reflectable method signatures #92994
Conversation
Tagging subscribers to this area: @agocke, @MichalStrehovsky, @jkotas Issue DetailsI don't think we need a working @Sergio0694 also noticed
|
/azp run runtime-nativeaot-outerloop |
Azure Pipelines successfully started running 1 pipeline(s). |
So the pointers are a lot trickier and I'd need to add even more special casing for them on the classlib side. It would probably not bring any meaningful savings for normal .NET apps, but bring a lot of risk that we regress something (we'd need to duplicate a bunch of intricate rules such as "method that takes a pointer to SomeEnum can also be invoked by I'm already a bit uncomfortable with this change that limits it to reference types only, but it does save 0.1% on ASP.NET scenarios. We'd get triple that if we could also do this for value types, but it doesn't look likely we can. Pointers would be noise-level savings. @jkotas no hard feelings if you say doing this for reference types is not worth it either. It does add a bit of mental overhead to Cc @dotnet/ilc-contrib |
src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/DynamicInvokeInfo.cs
Outdated
Show resolved
Hide resolved
src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/DynamicInvokeInfo.cs
Outdated
Show resolved
Hide resolved
I do not think that this mental overhead is a big deal. I see this as small change giving us small improvement. |
f29ce46
to
beb4ede
Compare
I don't think we need a working
MethodTable
for everything in the method signature.@Sergio0694 also noticed
IUnknown**
rootsIUnknown
. This doesn't address that (just reference types), but maybe non-ref pointers could be workable in a similar way (we mostly go for IntPtr?).