polkavm

Struct Module

Source
pub struct Module(/* private fields */);
Expand description

A compiled PolkaVM program module.

Implementations§

Source§

impl Module

Source

pub fn get_debug_string(&self, offset: u32) -> Result<&str, ProgramParseError>

Source

pub fn new( engine: &Engine, config: &ModuleConfig, bytes: ArcBytes, ) -> Result<Self, Error>

Creates a new module by deserializing the program from the given bytes.

Source

pub fn from_blob( engine: &Engine, config: &ModuleConfig, blob: ProgramBlob, ) -> Result<Self, Error>

Creates a new module from a deserialized program blob.

Source

pub fn is_64_bit(&self) -> bool

Returns whether the module is 64-bit.

Source

pub fn from_cache( engine: &Engine, config: &ModuleConfig, blob: &ProgramBlob, ) -> Option<Self>

Fetches a cached module for the given blob.

Source

pub fn instantiate(&self) -> Result<RawInstance, Error>

Instantiates a new module.

Source

pub fn memory_map(&self) -> &MemoryMap

The program’s memory map.

Source

pub fn default_sp(&self) -> RegValue

The default stack pointer for the module.

Source

pub fn exports(&self) -> impl Iterator<Item = ProgramExport<&[u8]>> + Clone

Returns the module’s exports.

Source

pub fn imports(&self) -> Imports<'_>

Returns the module’s imports.

Source

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.

Source

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.

Source

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.

Source

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.

Trait Implementations§

Source§

impl Clone for Module

Source§

fn clone(&self) -> Module

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Drop for Module

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl Freeze for Module

§

impl !RefUnwindSafe for Module

§

impl Send for Module

§

impl Sync for Module

§

impl Unpin for Module

§

impl !UnwindSafe for Module

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.