wasmer_compiler_singlepass/
address_map.rs

1use wasmer_compiler::FunctionBodyData;
2use wasmer_compiler::types::address_map::{FunctionAddressMap, InstructionAddressMap};
3use wasmer_types::SourceLoc;
4
5pub fn get_function_address_map(
6    instructions: Vec<InstructionAddressMap>,
7    data: &FunctionBodyData,
8    body_len: usize,
9) -> FunctionAddressMap {
10    // Generate source loc for a function start/end to identify boundary within module.
11    // It will wrap around if byte code is larger than 4 GB.
12    let start_srcloc = SourceLoc::new(data.module_offset as u32);
13    let end_srcloc = SourceLoc::new((data.module_offset + data.data.len()) as u32);
14
15    FunctionAddressMap {
16        instructions,
17        start_srcloc,
18        end_srcloc,
19        body_offset: 0,
20        body_len,
21    }
22}