-
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
Store SHOULD_CAPTURE as AtomicU8 #120528
Store SHOULD_CAPTURE as AtomicU8 #120528
Conversation
r? @cuviper (rustbot has picked a reviewer for you, use r? to override) |
Some targets don't have efficient byte atomics, so this may be worse for performance. I think for a single static variable, this small storage optimization is probably not worth it. Did you have more motivation here, or is it "just because"? |
This is a follow up to #118798, I don't exactly have a reason, but it's just nice to save these small amounts of memory on all compiled Rust programs. |
For an example, we had this discussion about @Nilstrieb did you consider that in your other review? |
I definitely read (and even participated in, lol) that discussion, but forgot about it and did not consider the performance impact of the PR, thanks for pointing that out! I doubt the performance in #118798 (or here) really matters - but it's not like the size of the atomic matters either. |
Yeah, I suppose panics and backtraces should be on the cold path anyway, and even then the more frequent case in this PR is just going to be the load. It's probably fine. @bors r+ rollup |
…, r=cuviper Store SHOULD_CAPTURE as AtomicU8 `BacktraceStyle` easily fits into a u8, so `SHOULD_CAPTURE`, which is just `Atomic<Option<BacktraceStyle>>`, should be stored as `AtomicU8`
…, r=cuviper Store SHOULD_CAPTURE as AtomicU8 `BacktraceStyle` easily fits into a u8, so `SHOULD_CAPTURE`, which is just `Atomic<Option<BacktraceStyle>>`, should be stored as `AtomicU8`
…iaskrgr Rollup of 9 pull requests Successful merges: - rust-lang#120484 (Avoid ICE when is_val_statically_known is not of a supported type) - rust-lang#120516 (pattern_analysis: cleanup manual impls) - rust-lang#120517 (never patterns: It is correct to lower `!` to `_`.) - rust-lang#120523 (Improve `io::Read::read_buf_exact` error case) - rust-lang#120528 (Store SHOULD_CAPTURE as AtomicU8) - rust-lang#120529 (Update data layouts in custom target tests for LLVM 18) - rust-lang#120530 (Be less confident when `dyn` suggestion is not checked for object safety) - rust-lang#120531 (Remove a bunch of `has_errors` checks that have no meaningful or the wrong effect) - rust-lang#120533 (Correct paths for hexagon-unknown-none-elf platform doc) r? `@ghost` `@rustbot` modify labels: rollup
…iaskrgr Rollup of 9 pull requests Successful merges: - rust-lang#120484 (Avoid ICE when is_val_statically_known is not of a supported type) - rust-lang#120516 (pattern_analysis: cleanup manual impls) - rust-lang#120517 (never patterns: It is correct to lower `!` to `_`.) - rust-lang#120523 (Improve `io::Read::read_buf_exact` error case) - rust-lang#120528 (Store SHOULD_CAPTURE as AtomicU8) - rust-lang#120529 (Update data layouts in custom target tests for LLVM 18) - rust-lang#120530 (Be less confident when `dyn` suggestion is not checked for object safety) - rust-lang#120531 (Remove a bunch of `has_errors` checks that have no meaningful or the wrong effect) - rust-lang#120533 (Correct paths for hexagon-unknown-none-elf platform doc) r? `@ghost` `@rustbot` modify labels: rollup
…iaskrgr Rollup of 9 pull requests Successful merges: - rust-lang#120484 (Avoid ICE when is_val_statically_known is not of a supported type) - rust-lang#120516 (pattern_analysis: cleanup manual impls) - rust-lang#120517 (never patterns: It is correct to lower `!` to `_`.) - rust-lang#120523 (Improve `io::Read::read_buf_exact` error case) - rust-lang#120528 (Store SHOULD_CAPTURE as AtomicU8) - rust-lang#120529 (Update data layouts in custom target tests for LLVM 18) - rust-lang#120530 (Be less confident when `dyn` suggestion is not checked for object safety) - rust-lang#120531 (Remove a bunch of `has_errors` checks that have no meaningful or the wrong effect) - rust-lang#120533 (Correct paths for hexagon-unknown-none-elf platform doc) r? `@ghost` `@rustbot` modify labels: rollup
…iaskrgr Rollup of 8 pull requests Successful merges: - rust-lang#120484 (Avoid ICE when is_val_statically_known is not of a supported type) - rust-lang#120516 (pattern_analysis: cleanup manual impls) - rust-lang#120517 (never patterns: It is correct to lower `!` to `_`.) - rust-lang#120523 (Improve `io::Read::read_buf_exact` error case) - rust-lang#120528 (Store SHOULD_CAPTURE as AtomicU8) - rust-lang#120529 (Update data layouts in custom target tests for LLVM 18) - rust-lang#120531 (Remove a bunch of `has_errors` checks that have no meaningful or the wrong effect) - rust-lang#120533 (Correct paths for hexagon-unknown-none-elf platform doc) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of rust-lang#120528 - GnomedDev:atomicu8-backtrace-style, r=cuviper Store SHOULD_CAPTURE as AtomicU8 `BacktraceStyle` easily fits into a u8, so `SHOULD_CAPTURE`, which is just `Atomic<Option<BacktraceStyle>>`, should be stored as `AtomicU8`
BacktraceStyle
easily fits into a u8, soSHOULD_CAPTURE
, which is justAtomic<Option<BacktraceStyle>>
, should be stored asAtomicU8