1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
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<SignatureIndex, (Box<[wasmparser::Type]>, 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 wasm_types: WasmTypes, } impl ModuleTranslationState { /// Creates a new empty ModuleTranslationState. pub fn new() -> Self { Self { wasm_types: PrimaryMap::new(), } } }