FuncBody

Struct FuncBody 

Source
pub struct FuncBody { /* private fields */ }
Expand description

Function body definition.

Implementations§

Source§

impl FuncBody

Source

pub fn new(locals: Vec<Local>, opcodes: Opcodes) -> Self

New function body with given locals and opcodes

Source

pub fn empty() -> Self

List of individual opcodes

Source

pub fn locals(&self) -> &[Local]

Locals declared in function body.

Source

pub fn code(&self) -> &Opcodes

Opcode sequence of the function body. Minimal opcode sequence is just &[Opcode::End]

Source

pub fn locals_mut(&mut self) -> &mut Vec<Local>

Locals declared in function body (mutable).

Source

pub fn code_mut(&mut self) -> &mut Opcodes

Opcode sequence of the function body (mutable).

Examples found in repository?
examples/inject.rs (line 41)
28fn main() {
29    let args = env::args().collect::<Vec<_>>();
30    if args.len() != 3 {
31        println!("Usage: {} input_file.wasm output_file.wasm", args[0]);
32        return;
33    }
34
35    let mut module = sophon_wasm::deserialize_file(&args[1]).unwrap();
36
37    for section in module.sections_mut() {
38        match section {
39            &mut elements::Section::Code(ref mut code_section) => {
40                for ref mut func_body in code_section.bodies_mut() {
41                    inject_nop(func_body.code_mut());
42                }
43            },
44            _ => { }
45        }
46    }
47
48    let mut build = builder::from_module(module);
49    let import_sig = build.push_signature(
50        builder::signature()
51            .param().i32()
52            .param().i32()
53            .return_type().i32()
54            .build_sig()
55    );
56    let build = build.import()
57        .module("env")
58        .field("log")
59        .external().func(import_sig)
60        .build();
61
62    sophon_wasm::serialize_to_file(&args[2], build.build()).unwrap();
63}

Trait Implementations§

Source§

impl Clone for FuncBody

Source§

fn clone(&self) -> FuncBody

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for FuncBody

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Deserialize for FuncBody

Source§

type Error = Error

Serialization error produced by deserialization routine.
Source§

fn deserialize<R: Read>(reader: &mut R) -> Result<Self, Self::Error>

Deserialize type from serial i/o
Source§

impl Serialize for FuncBody

Source§

type Error = Error

Serialization error produced by serialization routine.
Source§

fn serialize<W: Write>(self, writer: &mut W) -> Result<(), Self::Error>

Serialize type to serial i/o

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

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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,

Source§

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

Source§

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

Source§

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<T> Erased for T