Skip to content

Conversation

@manodasanW
Copy link
Member

As part of the previous AOT changes, the generic delegate vtable generation was handled by the AOT optimizer using a lookup table. But this turned out that each of the projections got a lookup table when that wasn't the intention as it is supposed to be for consumers of projections. This lookup table in projections also made those types not trimming friendly. Given delegates have a known set of interfaces that they implement unlike classes which needs to deal with covariance, this PR moves the delegate vtable generation into the projection.

With this PR, when a delegate is being used by a projection, it would make sure the generic instantiation class for the delegate has been initialized and its vtable entries have been added so that on lookup they are found. The AOT optimizer will continue to handle cases where delegates are passed as object and the projection isn't aware of that.

@manodasanW manodasanW merged commit 444238b into staging/AOT Dec 16, 2023
@manodasanW manodasanW deleted the manodasanw/delegateoptimization branch December 16, 2023 02:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants