Implementation of various bits and pieces of the
panic! macro and
associated runtime pieces.
Specifically, this module contains the implementation of:
- Panic hooks
- Executing a panic up to doing the actual implementation
- Shims around “try”
This function is called by the panic runtime if FFI code catches a Rust panic but doesn’t rethrow it. We don’t support this case since it messes with our panic count.
This function is called by the panic runtime if it catches an exception object which does not correspond to a Rust panic.
payloadis passed through another layer of raw pointers as
&mut dyn Traitis not FFI-safe.
BoxMeUplazily performs allocation only when needed (this avoids allocations when using the “abort” panic runtime).
This is the entry point of panicking for the non-format-string variants of panic!() and assert!(). In particular, this is the only entry point that supports arbitrary payloads, not just format strings.
Entry point of panics from the libcore crate (
Determines whether the current thread is unwinding because of panic.
An unmangled function (through
rustc_std_internal_symbol) on which to slap yer breakpoints.
Central point for dispatching panics.
This is the entry point for
resume_unwind. It just forwards the payload to the panic runtime.
Registers a custom panic hook, replacing any that was previously registered.
Unregisters the current panic hook, returning it.
Invoke a closure, capturing the cause of an unwinding panic if one occurs.