From b76a5be18f69b79ddad8a6b72faf8ae9f2bb5e6d Mon Sep 17 00:00:00 2001 From: Adam Perry Date: Sat, 4 Jan 2020 00:49:18 -0800 Subject: [PATCH] Clean up comments in panicking infra. --- src/libstd/panicking.rs | 19 ++++++++----------- 1 file 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 @@ fn fill(&mut self) -> &mut String { 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 @@ fn get(&mut self) -> &(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 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(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 { @@ -409,6 +401,11 @@ fn new(inner: A) -> PanicPayload { unsafe impl BoxMeUp for PanicPayload { 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, None => process::abort(), -- GitLab