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

Reinstate fast_reject for overlap checking #32748

Merged
merged 1 commit into from
Apr 7, 2016

Conversation

aturon
Copy link
Member

@aturon aturon commented Apr 5, 2016

The initial implementation of specialization did not use the
fast_reject mechanism when checking for overlap, which caused a
serious performance regression in some cases.

This commit modifies the specialization graph to use simplified types
for fast rejection when possible, and along the way refactors the logic
for building the specialization graph.

Closes #32499

r? @nikomatsakis

The initial implementation of specialization did not use the
`fast_reject` mechanism when checking for overlap, which caused a
serious performance regression in some cases.

This commit modifies the specialization graph to use simplified types
for fast rejection when possible, and along the way refactors the logic
for building the specialization graph.

Closes rust-lang#32499
@aturon
Copy link
Member Author

aturon commented Apr 5, 2016

Note: I've confirmed locally that this resolves the coherence slowdown for winapi.

@nikomatsakis
Copy link
Contributor

It'd be nice to have a regression test added to https://github.com/nrc/rustc-perf

@nikomatsakis
Copy link
Contributor

@bors r+

@bors
Copy link
Contributor

bors commented Apr 5, 2016

📌 Commit 9ba3d5e has been approved by nikomatsakis

Manishearth added a commit to Manishearth/rust that referenced this pull request Apr 6, 2016
Reinstate fast_reject for overlap checking

The initial implementation of specialization did not use the
`fast_reject` mechanism when checking for overlap, which caused a
serious performance regression in some cases.

This commit modifies the specialization graph to use simplified types
for fast rejection when possible, and along the way refactors the logic
for building the specialization graph.

Closes rust-lang#32499

r? @nikomatsakis
Manishearth added a commit to Manishearth/rust that referenced this pull request Apr 7, 2016
Reinstate fast_reject for overlap checking

The initial implementation of specialization did not use the
`fast_reject` mechanism when checking for overlap, which caused a
serious performance regression in some cases.

This commit modifies the specialization graph to use simplified types
for fast rejection when possible, and along the way refactors the logic
for building the specialization graph.

Closes rust-lang#32499

r? @nikomatsakis
bors added a commit that referenced this pull request Apr 7, 2016
Rollup of 11 pull requests

- Successful merges: #32016, #32583, #32699, #32729, #32731, #32738, #32741, #32745, #32748, #32757, #32786
- Failed merges: #32773
Manishearth added a commit to Manishearth/rust that referenced this pull request Apr 7, 2016
Reinstate fast_reject for overlap checking

The initial implementation of specialization did not use the
`fast_reject` mechanism when checking for overlap, which caused a
serious performance regression in some cases.

This commit modifies the specialization graph to use simplified types
for fast rejection when possible, and along the way refactors the logic
for building the specialization graph.

Closes rust-lang#32499

r? @nikomatsakis
bors added a commit that referenced this pull request Apr 7, 2016
Rollup of 7 pull requests

- Successful merges: #32674, #32699, #32711, #32745, #32748, #32757, #32789
- Failed merges:
@bors bors merged commit 9ba3d5e into rust-lang:master Apr 7, 2016
@nikomatsakis nikomatsakis added the beta-nominated Nominated for backporting to the compiler in the beta channel. label Apr 21, 2016
@nikomatsakis
Copy link
Contributor

Nominating for regression because:

  • it can be a MAJOR problem
  • it affects winapi

@nikomatsakis nikomatsakis added the beta-accepted Accepted for backporting to the compiler in the beta channel. label Apr 21, 2016
@nikomatsakis
Copy link
Contributor

Accepting for beta based on prior criteria.

@alexcrichton
Copy link
Member

I'm not sure if this backport was intended for 1.8, but it's missed that train unfortunately. Beta was branched off of b622c3e, however, which includes this commit, so I'm going to remove the beta-nominated tag as our way of indicating "backport done" is "beta-accepted" only, and the "backport" is done as this just made its way naturally into 1.9

@alexcrichton alexcrichton removed the beta-nominated Nominated for backporting to the compiler in the beta channel. label May 4, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
beta-accepted Accepted for backporting to the compiler in the beta channel.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants