diff options
| author | Pietro Albini <pietro@pietroalbini.org> | 2019-11-25 15:05:26 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-11-25 15:05:26 +0100 |
| commit | 30599d765b1474eb93598f57a6fcd790a98be2db (patch) | |
| tree | 69c7372aebea99d9ed44eef75a1241022319d2e1 | |
| parent | 11b8e166e852a0a326a0aca97d4a296f533466e0 (diff) | |
| parent | 6440b9425384d2f8f11c4fe281fe99f79b92afb6 (diff) | |
| download | rust-30599d765b1474eb93598f57a6fcd790a98be2db.tar.gz rust-30599d765b1474eb93598f57a6fcd790a98be2db.zip | |
Rollup merge of #66694 - RalfJung:panic-comments, r=Dylan-DPC
Add some comments to panic runtime
| -rw-r--r-- | src/libcore/panicking.rs | 7 | ||||
| -rw-r--r-- | src/libstd/panicking.rs | 6 |
2 files changed, 7 insertions, 6 deletions
diff --git a/src/libcore/panicking.rs b/src/libcore/panicking.rs index 8a6ab99c65a..4833194be37 100644 --- a/src/libcore/panicking.rs +++ b/src/libcore/panicking.rs @@ -6,8 +6,7 @@ //! interface for panicking is: //! //! ``` -//! # use std::fmt; -//! fn panic_impl(fmt: fmt::Arguments, file_line_col: &(&'static str, u32, u32)) -> ! +//! fn panic_impl(pi: &core::panic::PanicInfo<'_>) -> ! //! # { loop {} } //! ``` //! @@ -35,7 +34,7 @@ use crate::panic::{Location, PanicInfo}; // never inline unless panic_immediate_abort to avoid code // bloat at the call sites as much as possible #[cfg_attr(not(feature="panic_immediate_abort"),inline(never))] -#[lang = "panic"] +#[lang = "panic"] // needed by codegen for panic on overflow and other `Assert` MIR terminators pub fn panic(expr: &str, location: &Location<'_>) -> ! { if cfg!(feature = "panic_immediate_abort") { unsafe { super::intrinsics::abort() } @@ -52,7 +51,7 @@ pub fn panic(expr: &str, location: &Location<'_>) -> ! { #[cold] #[cfg_attr(not(feature="panic_immediate_abort"),inline(never))] -#[lang = "panic_bounds_check"] +#[lang = "panic_bounds_check"] // needed by codegen for panic on OOB array/slice access fn panic_bounds_check(location: &Location<'_>, index: usize, len: usize) -> ! { if cfg!(feature = "panic_immediate_abort") { unsafe { super::intrinsics::abort() } diff --git a/src/libstd/panicking.rs b/src/libstd/panicking.rs index f76969146fd..6819a4a04d7 100644 --- a/src/libstd/panicking.rs +++ b/src/libstd/panicking.rs @@ -44,6 +44,8 @@ extern { data: *mut u8, data_ptr: *mut usize, vtable_ptr: *mut usize) -> u32; + + /// `payload` is actually a `*mut &mut dyn BoxMeUp` but that would cause FFI warnings. #[unwind(allowed)] fn __rust_start_panic(payload: usize) -> u32; } @@ -294,7 +296,7 @@ pub fn panicking() -> bool { update_panic_count(0) != 0 } -/// Entry point of panic from the libcore crate. +/// Entry point of panic from the libcore crate (`panic_impl` lang item). #[cfg(not(test))] #[panic_handler] #[unwind(allowed)] @@ -380,7 +382,7 @@ fn continue_panic_fmt(info: &PanicInfo<'_>) -> ! { #[unstable(feature = "libstd_sys_internals", reason = "used by the panic! macro", issue = "0")] -#[cfg_attr(not(test), lang = "begin_panic")] +#[cfg_attr(not(test), lang = "begin_panic")] // lang item for CTFE panic support // never inline unless panic_immediate_abort to avoid code // bloat at the call sites as much as possible #[cfg_attr(not(feature="panic_immediate_abort"),inline(never))] |
