pub struct RuntimeBlob { /* private fields */ }
Expand description

A bunch of information collected from a WebAssembly module.

Implementations§

source§

impl RuntimeBlob

source

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

Create RuntimeBlob from the given wasm code. Will attempt to decompress the code before deserializing it.

See sp_maybe_compressed_blob for details about decompression.

source

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

Create RuntimeBlob from the given wasm code.

Returns Err if the wasm code cannot be deserialized.

source

pub fn declared_globals_count(&self) -> u32

The number of globals defined in locally in this module.

source

pub fn imported_globals_count(&self) -> u32

The number of imports of globals.

source

pub fn expose_mutable_globals(&mut self)

Perform an instrumentation that makes sure that the mutable globals are exported.

source

pub fn inject_stack_depth_metering( self, stack_depth_limit: u32 ) -> Result<Self, 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.

source

pub fn entry_point_exists(&self, entry_point: &str) -> bool

Perform an instrumentation that makes sure that a specific function entry_point is exported

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.

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.

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.

source

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

Consumes this runtime blob and serializes it.

source

pub fn into_inner(self) -> Module

Destructure this structure into the underlying parity-wasm Module.

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.

§

impl<T> Instrument for T

§

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

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

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.

§

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

§

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

Get a reference to the inner from the outer.

§

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

Get a mutable reference to the inner from the outer.

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.
§

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

§

fn unchecked_into(self) -> T

The counterpart to unchecked_from.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> JsonSchemaMaybe for T

source§

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