clone_cw_multi_test/wasm_emulation/
instance.rs

1use cosmwasm_vm::internals::compile;
2use cosmwasm_vm::internals::{instance_from_module, make_compiling_engine};
3use cosmwasm_vm::{Backend, BackendApi, Instance, InstanceOptions, Querier, Storage, VmResult};
4use wasmer::{Engine, Module, Store};
5
6pub fn create_module(code: &[u8]) -> VmResult<(Engine, Module)> {
7    let engine = make_compiling_engine(None);
8    let module = compile(&engine, code)?;
9    Ok((engine, module))
10}
11
12/// This is the only Instance constructor that can be called from outside of cosmwasm-vm,
13/// e.g. in test code that needs a customized variant of cosmwasm_vm::testing::mock_instance*.
14pub fn instance_from_reused_module<A, S, Q>(
15    (engine, module): (Engine, Module),
16    backend: Backend<A, S, Q>,
17    options: InstanceOptions,
18) -> VmResult<Instance<A, S, Q>>
19where
20    A: BackendApi + 'static,
21    S: Storage + 'static,
22    Q: Querier + 'static,
23{
24    let store = Store::new(engine);
25    instance_from_module(store, &module, backend, options.gas_limit, None)
26}