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 Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> DynClone for Twhere T: Clone,

source§

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

source§

impl<T> From<T> for T

const: unstable · 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 Twhere U: From<T>,

const: unstable · 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, Outer> IsWrappedBy<Outer> for Twhere 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.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

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

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere 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 Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

source§

fn unchecked_into(self) -> T

The counterpart to unchecked_from.
§

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

§

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
§

impl<T> JsonSchemaMaybe for T

source§

impl<T> MaybeRefUnwindSafe for Twhere T: RefUnwindSafe,