pub fn closure_prepare<M: MemorySize>(
ctx: FunctionEnvMut<'_, WasiEnv>,
backing_function: u32,
closure: u32,
argument_types_ptr: WasmPtr<u8, M>,
argument_types_length: u32,
result_types_ptr: WasmPtr<u8, M>,
result_types_length: u32,
environment: WasmPtr<u8, M>,
) -> Result<Errno, WasiError>
Expand description
Prepare a closure so that it can be called with a given signature.
When the closure is called after closure_prepare
, the arguments will be decoded and passed to the backing function together with a pointer to the environment.
The backing function needs to conform to the following signature: uint8_t* values - a pointer to a buffer containing the arguments. uint8_t* results - a pointer to a buffer where the results will be written. void* environment - the environment that was passed to closure_prepare
backing_function
is a pointer (index into __indirect_function_table
) to the backing function
closure
is a pointer (index into __indirect_function_table
) to the closure that was obtained via closure_allocate
.
argument_types_ptr
is a pointer to the argument types as a list of WasmValueType
s
argument_types_length
is the number of arguments
result_types_ptr
is a pointer to the result types as a list of WasmValueType
s
result_types_length
is the number of results
environment
is the closure environment that will be passed to the backing function alongside the decoded arguments and results