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/8.0-staging] [mono] [imt] Don't increment vt_slot for non-virtual generic methods #94469

Merged

Conversation

github-actions[bot]
Copy link
Contributor

@github-actions github-actions bot commented Nov 7, 2023

Backport of #94437 to release/8.0-staging

/cc @lambdageek

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.

Customers utilizing EF Core 8.0 on mobile and WebAssembly platforms are able to run their apps without crashing.

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.

@lambdageek lambdageek added the Servicing-consider Issue for next servicing release review label Nov 7, 2023
@lambdageek lambdageek added this to the 8.0.x milestone Nov 7, 2023
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.
@github-actions github-actions bot force-pushed the backport/pr-94437-to-release/8.0-staging branch from fb0ed2b to cff2d11 Compare November 7, 2023 17:20
@rbhanda rbhanda modified the milestones: 8.0.x, 8.0.2 Nov 7, 2023
@rbhanda rbhanda added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Nov 7, 2023
@lambdageek lambdageek merged commit 141b386 into release/8.0-staging Nov 8, 2023
@akoeplinger akoeplinger deleted the backport/pr-94437-to-release/8.0-staging branch November 14, 2023 13:53
@carlossanlop carlossanlop modified the milestones: 8.0.2, 8.0.1 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