diff options
| author | Henry Gressmann <mail@henrygressmann.de> | 2024-03-12 18:48:45 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-12 18:48:45 +0100 |
| commit | 398b2af4ea37be98093bdf7ac185a468c62c4aef (patch) | |
| tree | f21db1a58bcd4ddbe6661db59f71fe5a8b483bc3 /benchmarks/benches/util | |
| parent | acb91b800d3668e9fb6dbb5838e2593764a0457e (diff) | |
test: make tests work on more targets (#11)
- Tests can now be run on more targets (Fixes #7)
- Nightly version has been updated to fix broken builds in some cases (Fixes #8)
Diffstat (limited to 'benchmarks/benches/util')
| -rw-r--r-- | benchmarks/benches/util/mod.rs | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/benchmarks/benches/util/mod.rs b/benchmarks/benches/util/mod.rs new file mode 100644 index 0000000..f75ce66 --- /dev/null +++ b/benchmarks/benches/util/mod.rs @@ -0,0 +1,47 @@ +#![allow(dead_code)] + +use tinywasm::{parser::Parser, types::TinyWasmModule}; + +pub fn parse_wasm(wasm: &[u8]) -> TinyWasmModule { + let parser = Parser::new(); + parser.parse_module_bytes(wasm).expect("parse_module_bytes") +} + +pub fn wasm_to_twasm(wasm: &[u8]) -> Vec<u8> { + let parser = Parser::new(); + let res = parser.parse_module_bytes(wasm).expect("parse_module_bytes"); + res.serialize_twasm().to_vec() +} + +#[inline] +pub fn twasm_to_module(twasm: &[u8]) -> tinywasm::Module { + unsafe { TinyWasmModule::from_twasm_unchecked(twasm) }.into() +} + +pub fn tinywasm(twasm: &[u8]) -> (tinywasm::Store, tinywasm::ModuleInstance) { + use tinywasm::*; + let module = twasm_to_module(twasm); + let mut store = Store::default(); + let imports = Imports::default(); + let instance = ModuleInstance::instantiate(&mut store, module, Some(imports)).expect("instantiate"); + (store, instance) +} + +pub fn wasmi(wasm: &[u8]) -> (wasmi::Module, wasmi::Store<()>, wasmi::Linker<()>) { + use wasmi::*; + let engine = Engine::default(); + let module = wasmi::Module::new(&engine, wasm).expect("wasmi::Module::new"); + let store = Store::new(&engine, ()); + let linker = <Linker<()>>::new(&engine); + (module, store, linker) +} + +pub fn wasmer(wasm: &[u8]) -> (wasmer::Store, wasmer::Instance) { + use wasmer::*; + let compiler = Singlepass::default(); + let mut store = Store::new(compiler); + let import_object = imports! {}; + let module = Module::new(&store, wasm).expect("wasmer::Module::new"); + let instance = Instance::new(&mut store, &module, &import_object).expect("Instance::new"); + (store, instance) +} |
