Module panicking
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"
Modules
Enums
Functions
- __rust_drop_panic 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.
- __rust_foreign_exception This function is called by the panic runtime if it catches an exception object which does not correspond to a Rust panic.
- __rust_panic_cleanup
-
__rust_start_panic
PanicPayloadlazily performs allocation only when needed (this avoids allocations when using the "abort" panic runtime). - begin_panic 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.
- catch_unwind Invoke a closure, capturing the cause of an unwinding panic if one occurs.
- default_hook The default panic handler.
-
panic_handler
Entry point of panics from the core crate (
panic_impllang item). - panic_with_hook Central point for dispatching panics.
- panicking Determines whether the current thread is unwinding because of panic.
- payload_as_str
-
resume_unwind
This is the entry point for
resume_unwind. It just forwards the payload to the panic runtime. -
rust_panic
A function with a fixed suffix (through
rustc_std_internal_symbol) on which to slap yer breakpoints. - set_hook Registers a custom panic hook, replacing the previously registered hook.
- take_hook Unregisters the current panic hook and returns it, registering the default hook in its place.
-
update_hook
Atomic combination of
take_hookandset_hook. Use this to replace the panic handler with a new panic handler that does something and then executes the old handler.