Struct polkavm::Module

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

A compiled PolkaVM program module.

Implementations§

source§

impl Module

source

pub fn new( engine: &Engine, config: &ModuleConfig, bytes: impl AsRef<[u8]>, ) -> 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 memory_map(&self) -> &MemoryMap

The program’s memory map.

source

pub fn lookup_export(&self, symbol: impl AsRef<[u8]>) -> Option<ExportIndex>

Searches for a given symbol exported by the module.

source

pub fn machine_code(&self) -> Option<Cow<'_, [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 nth_instruction_to_code_offset_map(&self) -> Option<&[u32]>

A map which 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 nth_basic_block_to_gas_cost_map(&self) -> Option<&[u32]>

A map with gas costs for each basic block of the program.

Will return None when not running under an interpreter or if the gas metering was not enabled. 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

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§

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

🔬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,

§

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>,

§

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>,

§

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.