Rollup merge of #66694 - RalfJung:panic-comments, r=Dylan-DPC
Add some comments to panic runtime
This commit is contained in:
commit
30599d765b
@ -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() }
|
||||
|
@ -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))]
|
||||
|
Loading…
x
Reference in New Issue
Block a user