pub struct Module(/* private fields */);
Expand description
A compiled PolkaVM program module.
Implementations§
Source§impl Module
impl Module
pub fn get_debug_string(&self, offset: u32) -> Result<&str, ProgramParseError>
Sourcepub fn new(
engine: &Engine,
config: &ModuleConfig,
bytes: ArcBytes,
) -> Result<Self, Error>
pub fn new( engine: &Engine, config: &ModuleConfig, bytes: ArcBytes, ) -> Result<Self, Error>
Creates a new module by deserializing the program from the given bytes
.
Sourcepub fn from_blob(
engine: &Engine,
config: &ModuleConfig,
blob: ProgramBlob,
) -> Result<Self, Error>
pub fn from_blob( engine: &Engine, config: &ModuleConfig, blob: ProgramBlob, ) -> Result<Self, Error>
Creates a new module from a deserialized program blob
.
Sourcepub fn from_cache(
engine: &Engine,
config: &ModuleConfig,
blob: &ProgramBlob,
) -> Option<Self>
pub fn from_cache( engine: &Engine, config: &ModuleConfig, blob: &ProgramBlob, ) -> Option<Self>
Fetches a cached module for the given blob
.
Sourcepub fn instantiate(&self) -> Result<RawInstance, Error>
pub fn instantiate(&self) -> Result<RawInstance, Error>
Instantiates a new module.
Sourcepub fn memory_map(&self) -> &MemoryMap
pub fn memory_map(&self) -> &MemoryMap
The program’s memory map.
Sourcepub fn default_sp(&self) -> RegValue
pub fn default_sp(&self) -> RegValue
The default stack pointer for the module.
Sourcepub fn exports(&self) -> impl Iterator<Item = ProgramExport<&[u8]>> + Clone
pub fn exports(&self) -> impl Iterator<Item = ProgramExport<&[u8]>> + Clone
Returns the module’s exports.
Sourcepub fn machine_code(&self) -> Option<&[u8]>
pub fn machine_code(&self) -> Option<&[u8]>
The raw machine code of the compiled module.
Will return None
when running under an interpreter.
Mostly only useful for debugging.
Sourcepub fn machine_code_origin(&self) -> Option<u64>
pub fn machine_code_origin(&self) -> Option<u64>
The address at which the raw machine code will be loaded.
Will return None
unless compiled for the Linux sandbox.
Mostly only useful for debugging.
Sourcepub fn program_counter_to_machine_code_offset(
&self,
) -> Option<&[(ProgramCounter, u32)]>
pub fn program_counter_to_machine_code_offset( &self, ) -> Option<&[(ProgramCounter, u32)]>
A slice which contains pairs of PolkaVM bytecode offsets and native machine code offsets.
This makes it possible to map a position within the guest program into the exact range of native machine code instructions.
The returned slice has as many elements as there were instructions in the original guest program, plus one extra to make it possible to figure out the length of the machine code corresponding to the very last instruction.
This slice is guaranteed to be sorted, so you can binary search through it.
Will return None
when running under an interpreter.
Mostly only useful for debugging.
Sourcepub fn calculate_gas_cost_for(&self, code_offset: ProgramCounter) -> Option<Gas>
pub fn calculate_gas_cost_for(&self, code_offset: ProgramCounter) -> Option<Gas>
Calculates the gas cost for a given basic block starting at code_offset
.
Will return None
if the given code_offset
is invalid.
Mostly only useful for debugging.