Skip to content

Move generic delegates vtable generation into projections#1411

Merged
manodasanW merged 7 commits intostaging/AOTfrom
manodasanw/delegateoptimization
Dec 16, 2023
Merged

Move generic delegates vtable generation into projections#1411
manodasanW merged 7 commits intostaging/AOTfrom
manodasanw/delegateoptimization

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

2 participants