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

Projects
None yet
4 participants
@aturon
Copy link
Member

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

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 #32499
@aturon

This comment has been minimized.

Copy link
Member Author

aturon commented Apr 5, 2016

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

@nikomatsakis

This comment has been minimized.

Copy link
Contributor

nikomatsakis commented Apr 5, 2016

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

@nikomatsakis

This comment has been minimized.

Copy link
Contributor

nikomatsakis commented Apr 5, 2016

@bors r+

@bors

This comment has been minimized.

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

Rollup merge of rust-lang#32748 - aturon:simplified-spec, r=nikomatsakis
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 6, 2016

Auto merge of #32759 - Manishearth:rollup, r=Manishearth
Rollup of 13 pull requests

- Successful merges: #31762, #32538, #32634, #32649, #32668, #32679, #32699, #32731, #32732, #32741, #32745, #32748, #32757
- Failed merges:

Manishearth added a commit to Manishearth/rust that referenced this pull request Apr 6, 2016

Rollup merge of rust-lang#32748 - aturon:simplified-spec, r=nikomatsakis
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 6, 2016

Auto merge of #32759 - Manishearth:rollup, r=Manishearth
Rollup of 13 pull requests

- Successful merges: #31762, #32538, #32634, #32649, #32668, #32679, #32699, #32731, #32732, #32741, #32745, #32748, #32757
- Failed merges:

Manishearth added a commit to Manishearth/rust that referenced this pull request Apr 6, 2016

Rollup merge of rust-lang#32748 - aturon:simplified-spec, r=nikomatsakis
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 6, 2016

Auto merge of #32759 - Manishearth:rollup, r=Manishearth
Rollup of 13 pull requests

- Successful merges: #31762, #32538, #32634, #32649, #32668, #32679, #32699, #32731, #32732, #32741, #32745, #32748, #32757
- Failed merges:

Manishearth added a commit to Manishearth/rust that referenced this pull request Apr 7, 2016

Rollup merge of rust-lang#32748 - aturon:simplified-spec, r=nikomatsakis
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

Auto merge of #32787 - Manishearth:rollup, r=Manishearth
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

Rollup merge of rust-lang#32748 - aturon:simplified-spec, r=nikomatsakis
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

Auto merge of #32787 - Manishearth:rollup, r=Manishearth
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

Rollup merge of rust-lang#32748 - aturon:simplified-spec, r=nikomatsakis
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

Auto merge of #32794 - Manishearth:rollup, r=Manishearth
Rollup of 7 pull requests

- Successful merges: #32674, #32699, #32711, #32745, #32748, #32757, #32789
- Failed merges:

Manishearth added a commit to Manishearth/rust that referenced this pull request Apr 7, 2016

Rollup merge of rust-lang#32748 - aturon:simplified-spec, r=nikomatsakis
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

Auto merge of #32794 - Manishearth:rollup, r=Manishearth
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

This comment has been minimized.

Copy link
Contributor

nikomatsakis commented Apr 21, 2016

Nominating for regression because:

  • it can be a MAJOR problem
  • it affects winapi
@nikomatsakis

This comment has been minimized.

Copy link
Contributor

nikomatsakis commented Apr 21, 2016

Accepting for beta based on prior criteria.

@alexcrichton

This comment has been minimized.

Copy link
Member

alexcrichton commented May 4, 2016

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.