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

WebAssembly to Cranelift IR function translator.

A FuncTranslator is used to translate a binary WebAssembly function into Cranelift IR guided by a FuncEnvironment object. A single translator instance can be reused to translate multiple functions which will reduce heap allocation traffic.

Implementations§

source§

impl FuncTranslator

source

pub fn new() -> Self

Create a new translator.

source

pub fn context(&mut self) -> &mut FunctionBuilderContext

Returns the underlying FunctionBuilderContext that this translator uses.

source

pub fn translate<FE: FuncEnvironment + ?Sized>( &mut self, validator: &mut FuncValidator<impl WasmModuleResources>, code: &[u8], code_offset: usize, func: &mut Function, environ: &mut FE ) -> WasmResult<()>

Translate a binary WebAssembly function.

The code slice contains the binary WebAssembly function code as it appears in the code section of a WebAssembly module, not including the initial size of the function code. The slice is expected to contain two parts:

  • The declaration of locals, and
  • The function body as an expression.

See the WebAssembly specification.

The Cranelift IR function func should be completely empty except for the func.signature and func.name fields. The signature may contain special-purpose arguments which are not regarded as WebAssembly local variables. Any signature arguments marked as ArgumentPurpose::Normal are made accessible as WebAssembly local variables.

source

pub fn translate_body<FE: FuncEnvironment + ?Sized>( &mut self, validator: &mut FuncValidator<impl WasmModuleResources>, body: FunctionBody<'_>, func: &mut Function, environ: &mut FE ) -> WasmResult<()>

Translate a binary WebAssembly function from a FunctionBody.

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,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. 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 Twhere 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, U> TryFrom<U> for Twhere 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 Twhere 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.