Skip to content
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

[release/6.0-staging] [mono] [imt] Don't increment vt_slot for non-virtual generic methods #94478

Merged
merged 4 commits into from
Nov 13, 2023

Conversation

lambdageek
Copy link
Member

Backport of #94437 to release/6.0-staging

Customer Impact

Customers using code that includes rich inheritance hierarchies of interfaces along with static methods in interfaces are able to call interface methods correctly.

Testing

CI and manual testing

Risk

Low.

IMPORTANT: If this backport is for a servicing release, please verify that:

  • The PR target branch is release/X.0-staging, not release/X.0.

  • If the change touches code that ships in a NuGet package, you have added the necessary package authoring and gotten it explicitly reviewed.

Interfaces can have static generic methods, for example.  They don't
have a vt_slot.

When building an IMT slot, we need to collect all the interface
methods that map to a particular IMT slot along with their
implementing vtable entries.  To do that, vt_slot starts at the
interface offset of a particular interface and keeps incrementing as
we iterate over the methods of the interface.  It is crtitical that
vt_slot is accurate - otherwise we may dispatch the interface call to
the wrong virtual method.
the extra_interfaces argument was used to implement additional
interfaces on cross-domain transparent proxy objects.
@carlossanlop
Copy link
Member

Friendly reminder: If you'd like this to be included in the December release, please merge it before Tuesday November 14th EOD (Code Complete).

@lewing
Copy link
Member

lewing commented Nov 10, 2023

This was approved in tactics for 8 and 7 on the next ship train the 6 took longer.

@lambdageek lambdageek added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Nov 13, 2023
@lambdageek
Copy link
Member Author

Approved by tactics via email

@lambdageek
Copy link
Member Author

All the build failures are known

@lambdageek lambdageek merged commit 6f3f5dc into dotnet:release/6.0-staging Nov 13, 2023
@carlossanlop carlossanlop modified the milestones: 6.0.x, 6.0.26 Nov 16, 2023
@github-actions github-actions bot locked and limited conversation to collaborators Dec 16, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-VM-meta-mono Servicing-approved Approved for servicing release
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants