Skip to content

Reinstate fast_reject for overlap checking - #32748

Merged
bors merged 1 commit into
rust-lang:masterfrom
aturon:simplified-spec
Apr 7, 2016
Merged

Reinstate fast_reject for overlap checking#32748
bors merged 1 commit into
rust-lang:masterfrom
aturon:simplified-spec

Conversation

@aturon

Copy link
Copy Markdown
Contributor

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

Copy link
Copy Markdown
ContributorAuthor

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

@nikomatsakis

Copy link
Copy Markdown
Contributor

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

@nikomatsakis

Copy link
Copy Markdown
Contributor

@bors r+

@bors

bors commented Apr 5, 2016

Copy link
Copy Markdown
Collaborator

📌 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.
Closesrust-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.
Closesrust-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
@ManishearthManishearth mentioned this pull request Apr 7, 2016
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.
Closesrust-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:masterApr 7, 2016
@nikomatsakisnikomatsakis added the beta-nominated Nominated for backporting to the compiler in the beta channel. label Apr 21, 2016
@nikomatsakis

Copy link
Copy Markdown
Contributor

Nominating for regression because:

  • it can be a MAJOR problem
  • it affects winapi

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

Copy link
Copy Markdown
Contributor

Accepting for beta based on prior criteria.

@alexcrichton

Copy link
Copy Markdown
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

@alexcrichtonalexcrichton removed the beta-nominated Nominated for backporting to the compiler in the beta channel. label May 4, 2016
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

beta-acceptedAccepted for backporting to the compiler in the beta channel.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@aturon@nikomatsakis@bors@alexcrichton