1 //! Utility module to create trampolines in/out WebAssembly module. 2 3 mod func; 4 mod global; 5 mod memory; 6 mod table; 7 8 pub use self::func::*; 9 pub use self::global::*; 10 pub(crate) use memory::MemoryCreatorProxy; 11 12 use self::memory::create_memory; 13 use self::table::create_table; 14 use crate::prelude::*; 15 use crate::runtime::vm::SharedMemory; 16 use crate::store::StoreOpaque; 17 use crate::{MemoryType, TableType}; 18 use wasmtime_environ::{MemoryIndex, TableIndex}; 19 20 pub fn generate_memory_export( 21 store: &mut StoreOpaque, 22 m: &MemoryType, 23 preallocation: Option<&SharedMemory>, 24 ) -> Result<crate::runtime::vm::ExportMemory> { 25 let instance = create_memory(store, m, preallocation)?; 26 Ok(store 27 .instance_mut(instance) 28 .get_exported_memory(MemoryIndex::from_u32(0))) 29 } 30 31 pub fn generate_table_export( 32 store: &mut StoreOpaque, 33 t: &TableType, 34 ) -> Result<crate::runtime::vm::ExportTable> { 35 let instance = create_table(store, t)?; 36 Ok(store 37 .instance_mut(instance) 38 .get_exported_table(TableIndex::from_u32(0))) 39 } 40