use crate::translation_utils::SignatureIndex; use cranelift_entity::PrimaryMap; use std::boxed::Box; /// Map of signatures to a function's parameter and return types. pub(crate) type WasmTypes = PrimaryMap, Box<[wasmparser::Type]>)>; /// Contains information decoded from the Wasm module that must be referenced /// during each Wasm function's translation. /// /// This is only for data that is maintained by `cranelift-wasm` itself, as /// opposed to being maintained by the embedder. Data that is maintained by the /// embedder is represented with `ModuleEnvironment`. #[derive(Debug)] pub struct ModuleTranslationState { /// A map containing a Wasm module's original, raw signatures. /// /// This is used for translating multi-value Wasm blocks inside functions, /// which are encoded to refer to their type signature via index. pub(crate) wasm_types: WasmTypes, } impl ModuleTranslationState { /// Creates a new empty ModuleTranslationState. pub fn new() -> Self { Self { wasm_types: PrimaryMap::new(), } } }