-
Notifications
You must be signed in to change notification settings - Fork 10.5k
[CoroutineAccessors] Key table membership off availability. #77265
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
Merged
nate-chandler
merged 12 commits into
swiftlang:main
from
nate-chandler:general-coro/20241024/1
Oct 31, 2024
Merged
[CoroutineAccessors] Key table membership off availability. #77265
nate-chandler
merged 12 commits into
swiftlang:main
from
nate-chandler:general-coro/20241024/1
Oct 31, 2024
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
89d3d08
to
2bcd778
Compare
Expect yield_once_2 for callee-allocated coroutines.
In preparation for putting read2 and modify2 into witness tables and only including read and modify in them when appropriate, export these types, mark the module resilient, but mark the types frozen. This keeps the test passing as written.
Test that the provided vtables are complete via CHECK-NEXT.
For FileCheck that vary on this basis.
When the CoroutineAccessors feature is enabled, `begin_apply` instructions produce an additional result representing the allocation done by the callee. Fix a couple of cases where this additional result was not being handled.
In preparation to make it more involved.
Adding a synthesis routine for modify2 separate from that for modify was inadverently omitted during the initial inadverently. Fix that here.
Whether read2/modify2 are required will not always be identical to whether read/modify are required. Add separate prediates for the former. For now, duplicate the latter's implementation.
Every required accessors should be visited. Results in the new accessors appearing in vtables and wtables.
If read2/modify2 exist, prefer them as part of the access strategy for reading/writing/read-writing.
If the feature is enabled, base the requirement for the underscored accessors on the availability of the non-underscored accessors. If the (non-underscored) accessor's was available earlier than the feature, interpret that to mean that the underscored version was available in that earlier version, and require the underscored version. The goal is to ensure that the ABI is preserved, so long as the simplest migration is done (namely, deleting the underscores from the old accessors). For modify2, cache the required-ness in the same way that it is cached for modify.
2bcd778
to
b87b42c
Compare
@swift-ci please test |
@swift-ci please test source compatibility |
1 similar comment
@swift-ci please test source compatibility |
@swift-ci please test windows platform |
@swift-ci please test windows platform |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Visit the new accessors when they're required (which always requires the new feature, among other things), adding them to witness and virtual tables. For
modify2
, cache the required-ness in the same way that it is cached formodify
.Base the existence of the requirement for the underscored accessors on the availability of the non-underscored accessors. If the (non-underscored) accessor's was available earlier than the feature, interpret that to mean that the underscored version was available in that earlier version, and require the underscored version. The goal is to ensure that the ABI is preserved, so long as the simplest migration is done (namely, deleting the underscores from the old accessors).