mirror of
https://github.com/fluencelabs/wasmer
synced 2025-06-12 16:41:21 +00:00
Use WasmExternType for VarArgs
This commit is contained in:
@ -329,6 +329,7 @@ impl EmscriptenGlobals {
|
||||
}
|
||||
|
||||
pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject {
|
||||
use crate::varargs::VarArgs;
|
||||
let mut imports = ImportObject::new();
|
||||
let mut env_namespace = Namespace::new();
|
||||
let mut asm_namespace = Namespace::new();
|
||||
@ -400,58 +401,58 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject
|
||||
"nullFunc_viiiiii" => func!(crate::nullfunc::nullfunc_viiiiii, [u32] -> []),
|
||||
|
||||
// Syscalls
|
||||
"___syscall1" => func!(crate::syscalls::___syscall1, [i32, i32] -> []),
|
||||
"___syscall3" => func!(crate::syscalls::___syscall3, [i32, i32] -> [i32]),
|
||||
"___syscall4" => func!(crate::syscalls::___syscall4, [i32, i32] -> [i32]),
|
||||
"___syscall5" => func!(crate::syscalls::___syscall5, [i32, i32] -> [i32]),
|
||||
"___syscall6" => func!(crate::syscalls::___syscall6, [i32, i32] -> [i32]),
|
||||
"___syscall1" => func!(crate::syscalls::___syscall1, [i32, VarArgs] -> []),
|
||||
"___syscall3" => func!(crate::syscalls::___syscall3, [i32, VarArgs] -> [i32]),
|
||||
"___syscall4" => func!(crate::syscalls::___syscall4, [i32, VarArgs] -> [i32]),
|
||||
"___syscall5" => func!(crate::syscalls::___syscall5, [i32, VarArgs] -> [i32]),
|
||||
"___syscall6" => func!(crate::syscalls::___syscall6, [i32, VarArgs] -> [i32]),
|
||||
"___syscall10" => func!(crate::syscalls::___syscall10, [i32, i32] -> [i32]),
|
||||
"___syscall12" => func!(crate::syscalls::___syscall12, [i32, i32] -> [i32]),
|
||||
"___syscall12" => func!(crate::syscalls::___syscall12, [i32, VarArgs] -> [i32]),
|
||||
"___syscall15" => func!(crate::syscalls::___syscall15, [i32, i32] -> [i32]),
|
||||
"___syscall20" => func!(crate::syscalls::___syscall20, [i32, i32] -> [i32]),
|
||||
"___syscall39" => func!(crate::syscalls::___syscall39, [i32, i32] -> [i32]),
|
||||
"___syscall39" => func!(crate::syscalls::___syscall39, [i32, VarArgs] -> [i32]),
|
||||
"___syscall38" => func!(crate::syscalls::___syscall38, [i32, i32] -> [i32]),
|
||||
"___syscall40" => func!(crate::syscalls::___syscall40, [i32, i32] -> [i32]),
|
||||
"___syscall54" => func!(crate::syscalls::___syscall54, [i32, i32] -> [i32]),
|
||||
"___syscall57" => func!(crate::syscalls::___syscall57, [i32, i32] -> [i32]),
|
||||
"___syscall40" => func!(crate::syscalls::___syscall40, [i32, VarArgs] -> [i32]),
|
||||
"___syscall54" => func!(crate::syscalls::___syscall54, [i32, VarArgs] -> [i32]),
|
||||
"___syscall57" => func!(crate::syscalls::___syscall57, [i32, VarArgs] -> [i32]),
|
||||
"___syscall60" => func!(crate::syscalls::___syscall60, [i32, i32] -> [i32]),
|
||||
"___syscall63" => func!(crate::syscalls::___syscall63, [i32, i32] -> [i32]),
|
||||
"___syscall63" => func!(crate::syscalls::___syscall63, [i32, VarArgs] -> [i32]),
|
||||
"___syscall64" => func!(crate::syscalls::___syscall64, [i32, i32] -> [i32]),
|
||||
"___syscall66" => func!(crate::syscalls::___syscall66, [i32, i32] -> [i32]),
|
||||
"___syscall75" => func!(crate::syscalls::___syscall75, [i32, i32] -> [i32]),
|
||||
"___syscall85" => func!(crate::syscalls::___syscall85, [i32, i32] -> [i32]),
|
||||
"___syscall91" => func!(crate::syscalls::___syscall91, [i32, i32] -> [i32]),
|
||||
"___syscall97" => func!(crate::syscalls::___syscall97, [i32, i32] -> [i32]),
|
||||
"___syscall102" => func!(crate::syscalls::___syscall102, [i32, i32] -> [i32]),
|
||||
"___syscall102" => func!(crate::syscalls::___syscall102, [i32, VarArgs] -> [i32]),
|
||||
"___syscall110" => func!(crate::syscalls::___syscall110, [i32, i32] -> [i32]),
|
||||
"___syscall114" => func!(crate::syscalls::___syscall114, [i32, i32] -> [i32]),
|
||||
"___syscall122" => func!(crate::syscalls::___syscall122, [i32, i32] -> [i32]),
|
||||
"___syscall140" => func!(crate::syscalls::___syscall140, [i32, i32] -> [i32]),
|
||||
"___syscall142" => func!(crate::syscalls::___syscall142, [i32, i32] -> [i32]),
|
||||
"___syscall145" => func!(crate::syscalls::___syscall145, [i32, i32] -> [i32]),
|
||||
"___syscall146" => func!(crate::syscalls::___syscall146, [i32, i32] -> [i32]),
|
||||
"___syscall114" => func!(crate::syscalls::___syscall114, [i32, VarArgs] -> [i32]),
|
||||
"___syscall122" => func!(crate::syscalls::___syscall122, [i32, VarArgs] -> [i32]),
|
||||
"___syscall140" => func!(crate::syscalls::___syscall140, [i32, VarArgs] -> [i32]),
|
||||
"___syscall142" => func!(crate::syscalls::___syscall142, [i32, VarArgs] -> [i32]),
|
||||
"___syscall145" => func!(crate::syscalls::___syscall145, [i32, VarArgs] -> [i32]),
|
||||
"___syscall146" => func!(crate::syscalls::___syscall146, [i32, VarArgs] -> [i32]),
|
||||
"___syscall168" => func!(crate::syscalls::___syscall168, [i32, i32] -> [i32]),
|
||||
"___syscall180" => func!(crate::syscalls::___syscall180, [i32, i32] -> [i32]),
|
||||
"___syscall181" => func!(crate::syscalls::___syscall181, [i32, i32] -> [i32]),
|
||||
"___syscall180" => func!(crate::syscalls::___syscall180, [i32, VarArgs] -> [i32]),
|
||||
"___syscall181" => func!(crate::syscalls::___syscall181, [i32, VarArgs] -> [i32]),
|
||||
"___syscall191" => func!(crate::syscalls::___syscall191, [i32, i32] -> [i32]),
|
||||
"___syscall192" => func!(crate::syscalls::___syscall192, [i32, i32] -> [i32]),
|
||||
"___syscall192" => func!(crate::syscalls::___syscall192, [i32, VarArgs] -> [i32]),
|
||||
"___syscall194" => func!(crate::syscalls::___syscall194, [i32, i32] -> [i32]),
|
||||
"___syscall195" => func!(crate::syscalls::___syscall195, [i32, i32] -> [i32]),
|
||||
"___syscall195" => func!(crate::syscalls::___syscall195, [i32, VarArgs] -> [i32]),
|
||||
"___syscall196" => func!(crate::syscalls::___syscall196, [i32, i32] -> [i32]),
|
||||
"___syscall197" => func!(crate::syscalls::___syscall197, [i32, i32] -> [i32]),
|
||||
"___syscall197" => func!(crate::syscalls::___syscall197, [i32, VarArgs] -> [i32]),
|
||||
"___syscall199" => func!(crate::syscalls::___syscall199, [i32, i32] -> [i32]),
|
||||
"___syscall201" => func!(crate::syscalls::___syscall201, [i32, i32] -> [i32]),
|
||||
"___syscall202" => func!(crate::syscalls::___syscall202, [i32, i32] -> [i32]),
|
||||
"___syscall212" => func!(crate::syscalls::___syscall212, [i32, i32] -> [i32]),
|
||||
"___syscall212" => func!(crate::syscalls::___syscall212, [i32, VarArgs] -> [i32]),
|
||||
"___syscall220" => func!(crate::syscalls::___syscall220, [i32, i32] -> [i32]),
|
||||
"___syscall221" => func!(crate::syscalls::___syscall221, [i32, i32] -> [i32]),
|
||||
"___syscall221" => func!(crate::syscalls::___syscall221, [i32, VarArgs] -> [i32]),
|
||||
"___syscall268" => func!(crate::syscalls::___syscall268, [i32, i32] -> [i32]),
|
||||
"___syscall272" => func!(crate::syscalls::___syscall272, [i32, i32] -> [i32]),
|
||||
"___syscall295" => func!(crate::syscalls::___syscall295, [i32, i32] -> [i32]),
|
||||
"___syscall300" => func!(crate::syscalls::___syscall300, [i32, i32] -> [i32]),
|
||||
"___syscall330" => func!(crate::syscalls::___syscall330, [i32, i32] -> [i32]),
|
||||
"___syscall330" => func!(crate::syscalls::___syscall330, [i32, VarArgs] -> [i32]),
|
||||
"___syscall334" => func!(crate::syscalls::___syscall334, [i32, i32] -> [i32]),
|
||||
"___syscall340" => func!(crate::syscalls::___syscall340, [i32, i32] -> [i32]),
|
||||
"___syscall340" => func!(crate::syscalls::___syscall340, [i32, VarArgs] -> [i32]),
|
||||
|
||||
// Process
|
||||
"abort" => func!(crate::process::em_abort, [u32] -> []),
|
||||
|
@ -1,7 +1,11 @@
|
||||
use std::mem;
|
||||
use wasmer_runtime_core::vm::Ctx;
|
||||
use wasmer_runtime_core::{
|
||||
vm::Ctx,
|
||||
types::{Type, WasmExternType},
|
||||
};
|
||||
|
||||
#[repr(transparent)]
|
||||
#[derive(Copy, Clone)]
|
||||
pub struct VarArgs {
|
||||
pub pointer: u32, // assuming 32bit wasm
|
||||
}
|
||||
@ -13,3 +17,7 @@ impl VarArgs {
|
||||
unsafe { (ptr as *const T).read() }
|
||||
}
|
||||
}
|
||||
|
||||
unsafe impl WasmExternType for VarArgs {
|
||||
const TYPE: Type = Type::I32;
|
||||
}
|
Reference in New Issue
Block a user