32 lines
1.1 KiB
Rust
32 lines
1.1 KiB
Rust
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(crate) wasm_types: WasmTypes,
|
|
}
|
|
|
|
impl ModuleTranslationState {
|
|
/// Creates a new empty ModuleTranslationState.
|
|
pub fn new() -> Self {
|
|
Self {
|
|
wasm_types: PrimaryMap::new(),
|
|
}
|
|
}
|
|
}
|