-
Notifications
You must be signed in to change notification settings - Fork 12.8k
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
Remove or document uses of #[rustc_box] in library #108476
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -283,9 +283,7 @@ impl<T> Box<T> { | |
#[must_use] | ||
#[inline(always)] | ||
pub fn pin(x: T) -> Pin<Box<T>> { | ||
(#[rustc_box] | ||
Box::new(x)) | ||
.into() | ||
Box::new(x).into() | ||
} | ||
|
||
/// Allocates memory on the heap then places `x` into it, | ||
|
@@ -1242,8 +1240,8 @@ unsafe impl<#[may_dangle] T: ?Sized, A: Allocator> Drop for Box<T, A> { | |
#[stable(feature = "rust1", since = "1.0.0")] | ||
impl<T: Default> Default for Box<T> { | ||
/// Creates a `Box<T>`, with the `Default` value for T. | ||
#[inline] | ||
fn default() -> Self { | ||
#[rustc_box] | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The " But what does matter is that Initially, I was concerned that this might require One possible complaint is that this halves the size of the |
||
Box::new(T::default()) | ||
} | ||
} | ||
|
@@ -1252,6 +1250,7 @@ impl<T: Default> Default for Box<T> { | |
#[stable(feature = "rust1", since = "1.0.0")] | ||
#[rustc_const_unstable(feature = "const_default_impls", issue = "87864")] | ||
impl<T> const Default for Box<[T]> { | ||
#[inline] | ||
fn default() -> Self { | ||
let ptr: Unique<[T]> = Unique::<[T; 0]>::dangling(); | ||
Box(ptr, Global) | ||
|
@@ -1262,6 +1261,7 @@ impl<T> const Default for Box<[T]> { | |
#[stable(feature = "default_box_extra", since = "1.17.0")] | ||
#[rustc_const_unstable(feature = "const_default_impls", issue = "87864")] | ||
impl const Default for Box<str> { | ||
#[inline] | ||
fn default() -> Self { | ||
// SAFETY: This is the same as `Unique::cast<U>` but with an unsized `U = str`. | ||
let ptr: Unique<str> = unsafe { | ||
|
@@ -1616,7 +1616,6 @@ impl<T, const N: usize> From<[T; N]> for Box<[T]> { | |
/// println!("{boxed:?}"); | ||
/// ``` | ||
fn from(array: [T; N]) -> Box<[T]> { | ||
#[rustc_box] | ||
Box::new(array) | ||
Comment on lines
1618
to
1619
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same as |
||
} | ||
} | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3131,10 +3131,7 @@ impl<T, const N: usize> From<[T; N]> for Vec<T> { | |
/// ``` | ||
#[cfg(not(test))] | ||
fn from(s: [T; N]) -> Vec<T> { | ||
<[T]>::into_vec( | ||
#[rustc_box] | ||
Box::new(s), | ||
) | ||
<[T]>::into_vec(Box::new(s)) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same as other cases; in an unoptimized build, |
||
} | ||
|
||
#[cfg(test)] | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In an unoptimized build,
T
already needs to be on the stack, so this change shouldn't inhibit any in-place heap initialization.