This allows LLVM to inline the happy path, such that catching unwinding is zero-cost when no panic occurs. This also allows us to match the code generated by C++ try/catch.
23 lines
470 B
Rust
23 lines
470 B
Rust
//! Unwinding for *hermit* target.
|
|
//!
|
|
//! Right now we don't support this, so this is just stubs.
|
|
|
|
use alloc::boxed::Box;
|
|
use core::any::Any;
|
|
use core::ptr;
|
|
|
|
pub type Payload = *mut u8;
|
|
|
|
pub unsafe fn cleanup(_ptr: *mut u8) -> Box<dyn Any + Send> {
|
|
extern "C" {
|
|
pub fn __rust_abort() -> !;
|
|
}
|
|
__rust_abort();
|
|
}
|
|
|
|
pub unsafe fn panic(_data: Box<dyn Any + Send>) -> u32 {
|
|
extern "C" {
|
|
pub fn __rust_abort() -> !;
|
|
}
|
|
__rust_abort();
|
|
}
|