-
Notifications
You must be signed in to change notification settings - Fork 12.7k
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
[WIP] traits/fulfill: track GenericArgs
s instead of InferTy
s in stalled_on
.
#70181
Conversation
244a9d7
to
e63c410
Compare
I'm doing a perf run with just this first commit, to assess the impact of having to match on
@bors try @rust-timer queue |
Awaiting bors try build completion |
⌛ Trying commit e63c410 with merge fc63e0e7ac01afe8ebf2cbb38466eb80c1d42922... |
☀️ Try build successful - checks-azure |
Queued fc63e0e7ac01afe8ebf2cbb38466eb80c1d42922 with parent f4c675c, future comparison URL. |
Finished benchmarking try commit fc63e0e7ac01afe8ebf2cbb38466eb80c1d42922, comparison URL. |
Perf seems mostly improved I'd say, but it's a bit of a wash. |
@Centril most of the perf improvements around 1% I've seen lately look dubious and unrelated (i.e. likely noise), so I focus on the regressions and try to find a relevant one. Besides, it should be impossible for this PR to make anything faster, so there's that.
I think the efficient approach moving forward would be to make an rust/src/librustc_infer/infer/mod.rs Lines 1631 to 1655 in 1057dc9
I'm closing this PR to serve as a tombstone for the inefficient approach. |
t: ty::PolyTraitRef<'tcx>, | ||
) -> Vec<ty::InferTy> { | ||
t.skip_binder() // ok b/c this check doesn't care about regions | ||
ty: ty::PolyTraitRef<'tcx>, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oops, I should've renamed this to trait_ref
.
…omatsakis traits/fulfill: allow `stalled_on` to track `ty::Const::Infer(_)` (unused yet). This PR addresses the representation side of rust-lang#70180, but only *actually collects* `ty::Infer`s via `Ty::walk` into `stalled_on` (collecting `ty::ConstKind::Infer`s requires rust-lang#70164). However, it should be enough to handle rust-lang#70107's needs (WF obligations are stalled only on the outermost type/const being an inference variable, no `walk`-ing is involved). This is my second attempt, see rust-lang#70181 for the previous one, which unacceptably regressed perf. r? @nikomatsakis cc @nnethercote
…omatsakis traits/fulfill: allow `stalled_on` to track `ty::Const::Infer(_)` (unused yet). This PR addresses the representation side of rust-lang#70180, but only *actually collects* `ty::Infer`s via `Ty::walk` into `stalled_on` (collecting `ty::ConstKind::Infer`s requires rust-lang#70164). However, it should be enough to handle rust-lang#70107's needs (WF obligations are stalled only on the outermost type/const being an inference variable, no `walk`-ing is involved). This is my second attempt, see rust-lang#70181 for the previous one, which unacceptably regressed perf. r? @nikomatsakis cc @nnethercote
…omatsakis traits/fulfill: allow `stalled_on` to track `ty::Const::Infer(_)` (unused yet). This PR addresses the representation side of rust-lang#70180, but only *actually collects* `ty::Infer`s via `Ty::walk` into `stalled_on` (collecting `ty::ConstKind::Infer`s requires rust-lang#70164). However, it should be enough to handle rust-lang#70107's needs (WF obligations are stalled only on the outermost type/const being an inference variable, no `walk`-ing is involved). This is my second attempt, see rust-lang#70181 for the previous one, which unacceptably regressed perf. r? @nikomatsakis cc @nnethercote
EDIT: superseded by #70213 for performance reasons.
This PR addresses the representation side of #70180, but only actually collects
ty::Infer
s viaTy::walk
intostalled_on
(collectingty::ConstKind::Infer
s requires #70164).However, it should be enough to handle #70107's needs (WF obligations are stalled only on the outermost type/const being an inference variable, no
walk
-ing is involved).This PR will make step-by-step changes in order to check the perf impact of each.
r? @nikomatsakis cc @nnethercote