Skip to content

rustc(codegen): uncache def_symbol_name prefix from symbol_name. #59343

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Merged
merged 1 commit into from
Mar 30, 2019

Conversation

eddyb
Copy link
Member

@eddyb eddyb commented Mar 21, 2019

The def_symbol_name query was an optimization to avoid recomputing the common part of a symbol name, as only the hash needs to be added to it for each symbol.

However, #57967 will add a new mangling scheme, which doesn't readily support this kind of reuse - while it's plausible, it requires a lot more effort, since you'd have to "symbolically evaluate" mangling, and keep it in a form where the backreference positions can be computed correctly in the final step.

So I want to see how much time we're actually saving with this def_symbol_name optimization, nowadays.

cc @michaelwoerister

@rust-highfive
Copy link
Contributor

r? @oli-obk

(rust_highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Mar 21, 2019
@eddyb
Copy link
Member Author

eddyb commented Mar 21, 2019

@bors try

@bors
Copy link
Collaborator

bors commented Mar 21, 2019

⌛ Trying commit 3590a46 with merge 7172250...

bors added a commit that referenced this pull request Mar 21, 2019
rustc(codegen): uncache `def_symbol_name` prefix from `symbol_name`.

The `def_symbol_name` query was an optimization to avoid recomputing the common part of a symbol name, as only the hash needs to be added to it for each symbol.

However, #57967 will add a new mangling scheme, which doesn't readily support this kind of reuse - while it's plausible, it requires a lot more effort, since you'd have to "symbolically evaluate" mangling, and keep it in a form where the backreference positions can be computed correctly in the final step.

So I want to see how much time we're actually saving with this `def_symbol_name` optimization, nowadays.
@bors
Copy link
Collaborator

bors commented Mar 21, 2019

☀️ Try build successful - checks-travis
Build commit: 7172250

@eddyb
Copy link
Member Author

eddyb commented Mar 21, 2019

@rust-timer build 7172250

@rust-timer
Copy link
Collaborator

Success: Queued 7172250 with parent 48e354d, comparison URL.

@rust-timer
Copy link
Collaborator

Finished benchmarking try commit 7172250

@oli-obk
Copy link
Contributor

oli-obk commented Mar 22, 2019

Perf is randomly better or worse, but all below 1%. Max-rss seems to mostly have improvements, but that might just be noise, I don't know what the usual variances are.

impl lgtm

@michaelwoerister
Copy link
Member

Looks good to me, thanks for the PR, @eddyb!

@bors r+

@bors
Copy link
Collaborator

bors commented Mar 25, 2019

📌 Commit 3590a46 has been approved by michaelwoerister

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Mar 25, 2019
@bors
Copy link
Collaborator

bors commented Mar 26, 2019

☔ The latest upstream changes (presumably #59433) made this pull request unmergeable. Please resolve the merge conflicts.

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Mar 26, 2019
@eddyb eddyb force-pushed the rm-def-symbol-name branch from 3590a46 to 03639a2 Compare March 29, 2019 05:46
@eddyb
Copy link
Member Author

eddyb commented Mar 29, 2019

@bors r=michaelwoerister

@bors
Copy link
Collaborator

bors commented Mar 29, 2019

📌 Commit 03639a2 has been approved by michaelwoerister

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Mar 29, 2019
Centril added a commit to Centril/rust that referenced this pull request Mar 30, 2019
…woerister

rustc(codegen): uncache `def_symbol_name` prefix from `symbol_name`.

The `def_symbol_name` query was an optimization to avoid recomputing the common part of a symbol name, as only the hash needs to be added to it for each symbol.

However, rust-lang#57967 will add a new mangling scheme, which doesn't readily support this kind of reuse - while it's plausible, it requires a lot more effort, since you'd have to "symbolically evaluate" mangling, and keep it in a form where the backreference positions can be computed correctly in the final step.

So I want to see how much time we're actually saving with this `def_symbol_name` optimization, nowadays.

cc @michaelwoerister
bors added a commit that referenced this pull request Mar 30, 2019
Rollup of 5 pull requests

Successful merges:

 - #59343 (rustc(codegen): uncache `def_symbol_name` prefix from `symbol_name`.)
 - #59380 (Fix invalid DWARF for enums when using ThinLTO)
 - #59463 (skip dyn keyword lint under macros)
 - #59539 (Fix infinite recursion)
 - #59544 (manifest: only include miri on the nightly channel)

Failed merges:

r? @ghost
@bors bors merged commit 03639a2 into rust-lang:master Mar 30, 2019
@eddyb eddyb deleted the rm-def-symbol-name branch March 30, 2019 18:21
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants