Skip to main content

fluentbase_runtime/syscall_handler/host/
exit.rs

1use crate::RuntimeContext;
2use fluentbase_types::ExitCode;
3use rwasm::{StoreTr, TrapCode, Value};
4
5pub fn syscall_exit_handler(
6    caller: &mut impl StoreTr<RuntimeContext>,
7    params: &[Value],
8    _result: &mut [Value],
9) -> Result<(), TrapCode> {
10    let exit_code = params[0].i32().unwrap();
11    syscall_exit_impl(caller.data_mut(), ExitCode::from(exit_code)).unwrap_err();
12    Err(TrapCode::ExecutionHalted)
13}
14
15pub fn syscall_exit_impl(ctx: &mut RuntimeContext, exit_code: ExitCode) -> Result<(), ExitCode> {
16    ctx.execution_result.exit_code = exit_code.into_i32();
17    Err(ExitCode::Ok)
18}