1use crate::vmcontext::{VMFunctionContext, VMTrampoline};
8use crate::{VMContext, VMFunctionBody};
9
10#[allow(clippy::module_inception)]
11mod trap;
12#[cfg(not(feature = "baremetal"))]
13mod traphandlers;
14#[cfg(feature = "baremetal")]
15#[path = "traphandlers_baremetal.rs"]
16mod traphandlers;
17
18pub use trap::{Trap, UnwindReason};
19#[cfg(feature = "baremetal")]
20pub use traphandlers::install_unwinder;
21pub use traphandlers::{
22 MAX_STACK_SIZE, TrapHandlerFn, VMConfig, catch_traps, drain_stack_pool, get_stack_size,
23 on_host_stack, raise_lib_trap, raise_user_trap, set_stack_size,
24};
25pub use traphandlers::{init_traps, resume_panic};
26pub use wasmer_types::TrapCode;
27
28pub unsafe fn wasmer_call_trampoline(
34 trap_handler: Option<*const TrapHandlerFn<'static>>,
35 config: &VMConfig,
36 vmctx: VMFunctionContext,
37 trampoline: VMTrampoline,
38 callee: *const VMFunctionBody,
39 values_vec: *mut u8,
40) -> Result<(), Trap> {
41 unsafe {
42 catch_traps(trap_handler, config, move || {
43 std::mem::transmute::<
45 unsafe extern "C" fn(
46 *mut VMContext,
47 *const VMFunctionBody,
48 *mut wasmer_types::RawValue,
49 ),
50 unsafe extern "C" fn(VMFunctionContext, *const VMFunctionBody, *mut u8),
51 >(trampoline)(vmctx, callee, values_vec);
52 })
53 }
54}