Rollup merge of #78621 - solson:inline, r=m-ou-se
Inline Default::default() for atomics
Functions like `AtomicUsize::default()` are not cross-crate inlineable before this PR ([see assembly output here](https://play.rust-lang.org/?version=stable&mode=release&edition=2018&gist=e353321766418f759c69fb141d3732f8)), which can lead to unexpected performance issues when initializing a large array using this function, e.g. as seen [here](d513996a85/src/histogram.rs (L53)
) which should turn into a simple loop writing zeroes but doesn't.
r? @m-ou-se
This commit is contained in:
commit
97678b8358
@ -155,6 +155,7 @@ pub struct AtomicBool {
|
|||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
impl Default for AtomicBool {
|
impl Default for AtomicBool {
|
||||||
/// Creates an `AtomicBool` initialized to `false`.
|
/// Creates an `AtomicBool` initialized to `false`.
|
||||||
|
#[inline]
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self::new(false)
|
Self::new(false)
|
||||||
}
|
}
|
||||||
@ -1212,6 +1213,7 @@ macro_rules! atomic_int {
|
|||||||
|
|
||||||
#[$stable]
|
#[$stable]
|
||||||
impl Default for $atomic_type {
|
impl Default for $atomic_type {
|
||||||
|
#[inline]
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self::new(Default::default())
|
Self::new(Default::default())
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user