diff options
| author | Adam Perry <adam.n.perry@gmail.com> | 2020-01-04 00:49:18 -0800 |
|---|---|---|
| committer | Adam Perry <adam.n.perry@gmail.com> | 2020-01-04 10:02:17 -0800 |
| commit | b76a5be18f69b79ddad8a6b72faf8ae9f2bb5e6d (patch) | |
| tree | cb7179aadc7cd0d6bfb71fbbaae393e13ce627fa /src/libstd | |
| parent | 612c4c6c900a6e2d39df1019a794a8aa3ddf6e17 (diff) | |
| download | rust-b76a5be18f69b79ddad8a6b72faf8ae9f2bb5e6d.tar.gz rust-b76a5be18f69b79ddad8a6b72faf8ae9f2bb5e6d.zip | |
Clean up comments in panicking infra.
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/panicking.rs | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/src/libstd/panicking.rs b/src/libstd/panicking.rs index e3ce7a33a6f..599ccc809be 100644 --- a/src/libstd/panicking.rs +++ b/src/libstd/panicking.rs @@ -354,6 +354,9 @@ pub fn begin_panic_handler(info: &PanicInfo<'_>) -> ! { unsafe impl<'a> BoxMeUp for PanicPayload<'a> { fn take_box(&mut self) -> *mut (dyn Any + Send) { + // We do two allocations here, unfortunately. But (a) they're required with the current + // scheme, and (b) we don't handle panic + OOM properly anyway (see comment in + // begin_panic below). let contents = mem::take(self.fill()); Box::into_raw(Box::new(contents)) } @@ -363,11 +366,6 @@ pub fn begin_panic_handler(info: &PanicInfo<'_>) -> ! { } } - // We do two allocations here, unfortunately. But (a) they're - // required with the current scheme, and (b) we don't handle - // panic + OOM properly anyway (see comment in begin_panic - // below). - let loc = info.location().unwrap(); // The current implementation always returns Some let msg = info.message().unwrap(); // The current implementation always returns Some rust_panic_with_hook(&mut PanicPayload::new(msg), info.message(), loc); @@ -389,12 +387,6 @@ pub fn begin_panic<M: Any + Send>(msg: M, #[cfg(bootstrap)] _: &(&str, u32, u32) unsafe { intrinsics::abort() } } - // Note that this should be the only allocation performed in this code path. - // Currently this means that panic!() on OOM will invoke this code path, - // but then again we're not really ready for panic on OOM anyway. If - // we do start doing this, then we should propagate this allocation to - // be performed in the parent of this thread instead of the thread that's - // panicking. rust_panic_with_hook(&mut PanicPayload::new(msg), None, Location::caller()); struct PanicPayload<A> { @@ -409,6 +401,11 @@ pub fn begin_panic<M: Any + Send>(msg: M, #[cfg(bootstrap)] _: &(&str, u32, u32) unsafe impl<A: Send + 'static> BoxMeUp for PanicPayload<A> { fn take_box(&mut self) -> *mut (dyn Any + Send) { + // Note that this should be the only allocation performed in this code path. Currently + // this means that panic!() on OOM will invoke this code path, but then again we're not + // really ready for panic on OOM anyway. If we do start doing this, then we should + // propagate this allocation to be performed in the parent of this thread instead of the + // thread that's panicking. let data = match self.inner.take() { Some(a) => Box::new(a) as Box<dyn Any + Send>, None => process::abort(), |
