Uh oh!
There was an error while loading. Please reload this page.
Replace Rc with Lrc for shared data - #48586
Conversation
nikomatsakis
commented
Feb 27, 2018
cc @rust-lang/compiler - I think this step seems pretty clearly desirable. |
michaelwoerister
commented
Feb 27, 2018
I'll take a closer look tomorrow! |
nikomatsakis
commented
Feb 27, 2018
nikomatsakis
commented
Feb 27, 2018
@michaelwoerister -- hope that's ok, just feeling a bit overwhelmed with reviews right now :) |
michaelwoerister
left a comment
There was a problem hiding this comment.
Thanks for the PR, @Zoxc! This looks good to me. I'd still like to wait for feedback about the change in libproc_macro but otherwise this has my r+.
We should make sure to add at least one build that compiles with parallel queries enabled to our CI. I'll open an issue for that.
It would also be interesting to see the performance impact of switching to atomic reference counting. We can do a try-build once the PR is merged.
There was a problem hiding this comment.
@rust-lang/compiler @alexcrichton, is it safe to modify these definitions? Or are they part of a public interface?
There was a problem hiding this comment.
Nah these are unstable and just private fields, so should be all good!
There was a problem hiding this comment.
Great, thanks for the quick feedback!
There was a problem hiding this comment.
This is IMO problematic because it will eventually be observable in user code - you should impl !Send and !Sync on SourceFile to hide the difference before we forget and stabilize it.
There was a problem hiding this comment.
There probably also other types this applies to in libproc_macro.
There was a problem hiding this comment.
These should probably just use &SyntaxExtension.
michaelwoerister
commented
Feb 28, 2018
@rust-lang/infra: Upping the priority since this patch has such a big risk of bitrotting. @bors p=10 |
kennytm
commented
Feb 28, 2018
|
4e2efcf to
5539554Comparemichaelwoerister
commented
Mar 2, 2018
@bors r+ |
bors
commented
Mar 2, 2018
📌 Commit 5539554 has been approved by |
bors
commented
Mar 2, 2018
🔒 Merge conflict |
@Zoxc, you can just r=me after resolving such merge conflicts. |
Zoxc
commented
Mar 2, 2018
@bors r=michaelwoerister |
bors
commented
Mar 2, 2018
💔 Test failed - status-appveyor |
Manishearth
commented
Mar 2, 2018
@bors retry timeout smashes something |
bors
commented
Mar 2, 2018
⌛ Testing commit fce7201 with merge c57c60edd9b07424c98a8bbcf4d8ce0a495e0c72... |
bors
commented
Mar 3, 2018
💔 Test failed - status-appveyor |
Manishearth
commented
Mar 3, 2018
@bors retry appveyor timeout again smashes another thing |
bors
commented
Mar 3, 2018
Replace Rc with Lrc for shared data This replaces `Rc`s reachable from `TyCtxt` with `Lrc`. This has no effect unless `cfg(parallel_queries)` is set. It also contains a fix for the `Decodable` impl for `Arc`. r? @nikomatsakis
bors
commented
Mar 3, 2018
☀️ Test successful - status-appveyor, status-travis |
michaelwoerister
commented
Mar 5, 2018
🎉 |
bstrie
commented
Mar 8, 2018
🎉 smashes something |
This replaces
Rcs reachable fromTyCtxtwithLrc. This has no effect unlesscfg(parallel_queries)is set. It also contains a fix for theDecodableimpl forArc.r? @nikomatsakis