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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
//! Data structures to provide transformation of the source // addresses of a WebAssembly module into the native code. use cranelift_codegen::ir; use serde::{Deserialize, Serialize}; /// Single source location to generated address mapping. #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] pub struct InstructionAddressMap { /// Original source location. pub srcloc: ir::SourceLoc, /// Generated instructions offset. pub code_offset: usize, /// Generated instructions length. pub code_len: usize, } /// Function and its instructions addresses mappings. #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Default)] pub struct FunctionAddressMap { /// Instructions maps. /// The array is sorted by the InstructionAddressMap::code_offset field. pub instructions: Vec<InstructionAddressMap>, /// Function start source location (normally declaration). pub start_srcloc: ir::SourceLoc, /// Function end source location. pub end_srcloc: ir::SourceLoc, /// Generated function body offset if applicable, otherwise 0. pub body_offset: usize, /// Generated function body length. pub body_len: usize, } /// Memory definition offset in the VMContext structure. #[derive(Debug, Clone)] pub enum ModuleMemoryOffset { /// Not available. None, /// Offset to the defined memory. Defined(u32), /// Offset to the imported memory. Imported(u32), }