use crate::vmcontext::{VMFunctionImport, VMGlobalImport, VMMemoryImport, VMTableImport}; use wasmtime_environ::entity::{BoxedSlice, PrimaryMap}; use wasmtime_environ::wasm::{FuncIndex, GlobalIndex, MemoryIndex, TableIndex}; /// Resolved import pointers. #[derive(Clone)] pub struct Imports { /// Resolved addresses for imported functions. pub functions: BoxedSlice, /// Resolved addresses for imported tables. pub tables: BoxedSlice, /// Resolved addresses for imported memories. pub memories: BoxedSlice, /// Resolved addresses for imported globals. pub globals: BoxedSlice, } impl Imports { /// Construct a new `Imports` instance. pub fn new( function_imports: PrimaryMap, table_imports: PrimaryMap, memory_imports: PrimaryMap, global_imports: PrimaryMap, ) -> Self { Self { functions: function_imports.into_boxed_slice(), tables: table_imports.into_boxed_slice(), memories: memory_imports.into_boxed_slice(), globals: global_imports.into_boxed_slice(), } } /// Construct a new `Imports` instance with no imports. pub fn none() -> Self { Self { functions: PrimaryMap::new().into_boxed_slice(), tables: PrimaryMap::new().into_boxed_slice(), memories: PrimaryMap::new().into_boxed_slice(), globals: PrimaryMap::new().into_boxed_slice(), } } }