1 use crate::vmcontext::{VMFunctionImport, VMGlobalImport, VMMemoryImport, VMTableImport}; 2 use wasmtime_environ::entity::{BoxedSlice, PrimaryMap}; 3 use wasmtime_environ::wasm::{FuncIndex, GlobalIndex, MemoryIndex, TableIndex}; 4 5 /// Resolved import pointers. 6 #[derive(Clone)] 7 pub struct Imports { 8 /// Resolved addresses for imported functions. 9 pub functions: BoxedSlice<FuncIndex, VMFunctionImport>, 10 11 /// Resolved addresses for imported tables. 12 pub tables: BoxedSlice<TableIndex, VMTableImport>, 13 14 /// Resolved addresses for imported memories. 15 pub memories: BoxedSlice<MemoryIndex, VMMemoryImport>, 16 17 /// Resolved addresses for imported globals. 18 pub globals: BoxedSlice<GlobalIndex, VMGlobalImport>, 19 } 20 21 impl Imports { 22 /// Construct a new `Imports` instance. new( function_imports: PrimaryMap<FuncIndex, VMFunctionImport>, table_imports: PrimaryMap<TableIndex, VMTableImport>, memory_imports: PrimaryMap<MemoryIndex, VMMemoryImport>, global_imports: PrimaryMap<GlobalIndex, VMGlobalImport>, ) -> Self23 pub fn new( 24 function_imports: PrimaryMap<FuncIndex, VMFunctionImport>, 25 table_imports: PrimaryMap<TableIndex, VMTableImport>, 26 memory_imports: PrimaryMap<MemoryIndex, VMMemoryImport>, 27 global_imports: PrimaryMap<GlobalIndex, VMGlobalImport>, 28 ) -> Self { 29 Self { 30 functions: function_imports.into_boxed_slice(), 31 tables: table_imports.into_boxed_slice(), 32 memories: memory_imports.into_boxed_slice(), 33 globals: global_imports.into_boxed_slice(), 34 } 35 } 36 37 /// Construct a new `Imports` instance with no imports. none() -> Self38 pub fn none() -> Self { 39 Self { 40 functions: PrimaryMap::new().into_boxed_slice(), 41 tables: PrimaryMap::new().into_boxed_slice(), 42 memories: PrimaryMap::new().into_boxed_slice(), 43 globals: PrimaryMap::new().into_boxed_slice(), 44 } 45 } 46 } 47