-
Notifications
You must be signed in to change notification settings - Fork 10.5k
Replace materializeForSet with the modify coroutine #18840
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
Conversation
@swift-ci Please smoke test OS X. |
c08b927
to
70aa1bc
Compare
@swift-ci Please smoke test. |
70aa1bc
to
96bc6dd
Compare
@swift-ci Please smoke test. |
96bc6dd
to
abe0d30
Compare
@swift-ci Please smoke test. |
abe0d30
to
c389f8b
Compare
@swift-ci Please test. |
Build failed |
Build failed |
46ae169
to
de5e875
Compare
@swift-ci Please test. |
Build failed |
Build failed |
Preliminary code size numbers look good: https://gist.github.com/rjmccall/385ca49b3c5dc9ec01ba3af05fcd6e67 |
753216f
to
411fc9f
Compare
@swift-ci Please test. |
Build failed |
Build failed |
@swift-ci Please test source compatibility. |
@swift-ci Please test performance. |
@swift-ci Please benchmark. |
@swift-ci please smoke benchmark staging |
!!! Couldn't read commit file !!! |
Four failures: the Linux build failure and compatibility-suite failures in Chatto, IBAnimatable, and ProcedureKit. The Chatto regression is hopefully being fixed by @slavapestov's #18978, and ProcedureKit is fixed by #18981. So that's progress. |
Build comment file:Optimized (O)Regression (9)
Improvement (7)
No Changes (458)
Unoptimized (Onone)Regression (55)
Improvement (32)
No Changes (387)
Hardware Overview
|
@swift-ci Please test. |
1 similar comment
@swift-ci Please test. |
Build failed |
Build failed |
@swift-ci Please test. |
Build failed |
@swift-ci Please test OS X. |
@swift-ci Please test source compatibility. |
1 similar comment
@swift-ci Please test source compatibility. |
For the most part, code should be working with the as-declared abstraction pattern of the storage, because that's the pattern produced by its accessors. However, in the special case of an accessor synthesized on demand to satisfy a protocol conformance, that accessor will use the native abstraction pattern of the declaration, and so the witness thunk that uses that accessor must use that pattern when generating its access. This doesn't matter today because the only on-demand synthesized accessor is materializeForSet, and witnesses for materializeForSet don't actually call the synthetic materializeForSet --- in fact, nothing does. But the modify accessor uses the otherwise-standard pattern where the witness modify calls the concrete modify, and that modify currently uses the native abstraction pattern.
As always, most of the work here went into working around the AST representations of parameter and argument lists.
Most of this patch is just removing special cases for materializeForSet or other fairly mechanical replacements. Unfortunately, the rest is still a fairly big change, and not one that can be easily split apart because of the quite reasonable reliance on metaprogramming throughout the compiler. And, of course, there are a bunch of test updates that have to be sync'ed with the actual change to code-generation. This is SR-7134.
b2f51c6
to
b80618f
Compare
@swift-ci Please test. |
@swift-ci Please test source compatibility. |
@swift-ci Please test. |
1 similar comment
@swift-ci Please test. |
Please? |
@swift-ci Please test. |
Build failed |
@swift-ci Please test OS X. |
@swift-ci Please smoke benchmark staging. |
!!! Couldn't read commit file !!! |
@swift-ci Please smoke benchmark staging. |
Build comment file:Performance: -O
Performance: -Osize
How to read the dataThe tables contain differences in performance which are larger than 8% and differences in code size which are larger than 1%.If you see any unexpected regressions, you should consider fixing the regressions before you merge the PR. Noise: Sometimes the performance results (not code size!) contain false alarms. Unexpected regressions which are marked with '(?)' are probably noise. If you see regressions which you cannot explain you can try to run the benchmarks again. If regressions still show up, please consult with the performance team (@eeckstein). Hardware Overview
|
Internal performance analysis checks out. Looks good; merging. |
Most of this patch is just removing special cases for
materializeForSet
or other fairly mechanical replacements. Unfortunately, the rest is still a fairly big change, and not one that can be easily split apart because of the quite reasonable reliance on metaprogramming throughout the compiler. And, of course, there are a bunch of test updates that have to be sync'ed with the actual change to code-generation.This is SR-7134.