Skip to main content

fluentbase_runtime/syscall_handler/host/
output_size.rs

1/// Builtin to query the size of the current return_data buffer.
2use crate::RuntimeContext;
3use rwasm::{StoreTr, TrapCode, Value};
4
5/// Writes the length of `ctx.execution_result.return_data` into `result[0]`.
6pub fn syscall_output_size_handler(
7    caller: &mut impl StoreTr<RuntimeContext>,
8    _params: &[Value],
9    result: &mut [Value],
10) -> Result<(), TrapCode> {
11    let output_size = syscall_output_size_impl(caller.data());
12    result[0] = Value::I32(output_size as i32);
13    Ok(())
14}
15
16pub fn syscall_output_size_impl(ctx: &RuntimeContext) -> u32 {
17    ctx.execution_result.return_data.len() as u32
18}