mirror of
https://github.com/mii443/wasmer.git
synced 2025-12-10 14:48:27 +00:00
Fixed the asyncify call loop which was lost in the merge
This commit is contained in:
@@ -93,15 +93,31 @@ macro_rules! impl_native_traits {
|
||||
}
|
||||
rets_list.as_mut()
|
||||
};
|
||||
unsafe {
|
||||
wasmer_vm::wasmer_call_trampoline(
|
||||
store.as_store_ref().signal_handler(),
|
||||
anyfunc.vmctx,
|
||||
anyfunc.call_trampoline,
|
||||
anyfunc.func_ptr,
|
||||
args_rets.as_mut_ptr() as *mut u8,
|
||||
)
|
||||
}?;
|
||||
|
||||
let mut r;
|
||||
loop {
|
||||
r = unsafe {
|
||||
wasmer_vm::wasmer_call_trampoline(
|
||||
store.as_store_ref().signal_handler(),
|
||||
anyfunc.vmctx,
|
||||
anyfunc.call_trampoline,
|
||||
anyfunc.func_ptr,
|
||||
args_rets.as_mut_ptr() as *mut u8,
|
||||
)
|
||||
};
|
||||
let store_mut = store.as_store_mut();
|
||||
if let Some(callback) = store_mut.inner.on_called.take() {
|
||||
match callback(store_mut) {
|
||||
Ok(wasmer_types::OnCalledAction::InvokeAgain) => { continue; }
|
||||
Ok(wasmer_types::OnCalledAction::Finish) => { break; }
|
||||
Ok(wasmer_types::OnCalledAction::Trap(trap)) => { return Err(RuntimeError::user(trap)) },
|
||||
Err(trap) => { return Err(RuntimeError::user(trap)) },
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
r?;
|
||||
|
||||
let num_rets = rets_list.len();
|
||||
if !using_rets_array && num_rets > 0 {
|
||||
let src_pointer = params_list.as_ptr();
|
||||
|
||||
Reference in New Issue
Block a user