use std::boxed::Box;
use std::collections::HashMap;
use unc_vm_types::entity::PrimaryMap;
use unc_vm_types::{FunctionIndex, ImportIndex, ModuleInfo, SignatureIndex};
pub(crate) type WasmTypes =
PrimaryMap<SignatureIndex, (Box<[wasmparser::ValType]>, Box<[wasmparser::ValType]>)>;
#[derive(Debug)]
pub struct ModuleTranslationState {
pub(crate) wasm_types: WasmTypes,
pub import_map: HashMap<FunctionIndex, String>,
}
impl ModuleTranslationState {
pub fn new() -> Self {
Self { wasm_types: PrimaryMap::new(), import_map: HashMap::new() }
}
#[tracing::instrument(target = "unc_vm", level = "trace", skip_all)]
pub fn build_import_map(&mut self, module: &ModuleInfo) {
for key in module.imports.keys() {
let value = &module.imports[key];
match value {
ImportIndex::Function(index) => {
self.import_map.insert(*index, key.1.clone());
}
_ => {
}
}
}
}
}