Struct sc_executor_wasmtime::RuntimeBlob

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

A program blob containing a Substrate runtime.

Implementations§

source§

impl RuntimeBlob

source

pub fn uncompress_if_needed(wasm_code: &[u8]) -> Result<RuntimeBlob, WasmError>

Create RuntimeBlob from the given WASM or PolkaVM compressed program blob.

See sp_maybe_compressed_blob for details about decompression.

source

pub fn new(raw_blob: &[u8]) -> Result<RuntimeBlob, WasmError>

Create RuntimeBlob from the given WASM or PolkaVM program blob.

Returns Err if the blob cannot be deserialized.

Will only accept a PolkaVM program if the SUBSTRATE_ENABLE_POLKAVM environment variable is set to 1.

source

pub fn inject_stack_depth_metering( self, stack_depth_limit: u32, ) -> Result<RuntimeBlob, WasmError>

Run a pass that instrument this module so as to introduce a deterministic stack height limit.

It will introduce a global mutable counter. The instrumentation will increase the counter according to the “cost” of the callee. If the cost exceeds the stack_depth_limit constant, the instrumentation will trap. The counter will be decreased as soon as the the callee returns.

The stack cost of a function is computed based on how much locals there are and the maximum depth of the wasm operand stack.

Only valid for WASM programs; will return an error if the blob is a PolkaVM program.

source

pub fn convert_memory_import_into_export(&mut self) -> Result<(), WasmError>

Converts a WASM memory import into a memory section and exports it.

Does nothing if there’s no memory import.

May return an error in case the WASM module is invalid.

Only valid for WASM programs; will return an error if the blob is a PolkaVM program.

source

pub fn setup_memory_according_to_heap_alloc_strategy( &mut self, heap_alloc_strategy: HeapAllocStrategy, ) -> Result<(), WasmError>

Modifies the blob’s memory section according to the given heap_alloc_strategy.

Will return an error in case there is no memory section present, or if the memory section is empty.

Only valid for WASM programs; will return an error if the blob is a PolkaVM program.

source

pub fn custom_section_contents(&self, section_name: &str) -> Option<&[u8]>

Scans the wasm blob for the first section with the name that matches the given. Returns the contents of the custom section if found or None otherwise.

Only valid for WASM programs; will return an error if the blob is a PolkaVM program.

source

pub fn serialize(self) -> Vec<u8>

Consumes this runtime blob and serializes it.

source

pub fn as_polkavm_blob(&self) -> Option<&ProgramBlob<'_>>

Gets a reference to the inner PolkaVM program blob, if this is a PolkaVM program.

Trait Implementations§

source§

impl Clone for RuntimeBlob

source§

fn clone(&self) -> RuntimeBlob

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§

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> DynClone for T
where T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T, Outer> IsWrappedBy<Outer> for T
where Outer: AsRef<T> + AsMut<T> + From<T>, T: From<Outer>,

source§

fn from_ref(outer: &Outer) -> &T

Get a reference to the inner from the outer.

source§

fn from_mut(outer: &mut Outer) -> &mut T

Get a mutable reference to the inner from the outer.

source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
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.
source§

impl<S, T> UncheckedInto<T> for S
where T: UncheckedFrom<S>,

source§

fn unchecked_into(self) -> T

The counterpart to unchecked_from.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> JsonSchemaMaybe for T

source§

impl<T> MaybeRefUnwindSafe for T
where T: RefUnwindSafe,