Struct Function

Source
pub struct Function {
    pub name: RefString,
    pub t: RefType,
    pub findex: RefFun,
    pub regs: Vec<RefType>,
    pub ops: Vec<Opcode>,
    pub debug_info: Option<Vec<(usize, usize)>>,
    pub assigns: Option<Vec<(RefString, usize)>>,
    pub parent: Option<RefType>,
}
Expand description

A function definition with its code.

Fields§

§name: RefString

Functions have no name per se, this is the name of the field or method they are attached to

§t: RefType§findex: RefFun§regs: Vec<RefType>

The types of the registers used by this function

§ops: Vec<Opcode>

Instructions

§debug_info: Option<Vec<(usize, usize)>>

Debug File and line information for each instruction

§assigns: Option<Vec<(RefString, usize)>>

Debug Information about some variables names for some instructions

§parent: Option<RefType>

Parent type (Obj/Struct) this function is a member of. This does not mean it’s a method

Implementations§

Source§

impl Function

Source

pub fn is_from_std(&self, code: &Bytecode) -> bool

return true if the function is from the standard library

Source

pub fn find_fun_refs( &self, ) -> impl Iterator<Item = (usize, &Opcode, RefFun)> + '_

Find any outbound references to other functions in a function

Source

pub fn find_last_closure_assign( &self, code: &Bytecode, reg: Reg, pos: usize, ) -> Option<RefFun>

Starting from a position in a function, finds the last time a register has been assigned a closure

Source§

impl Function

Source

pub fn display_fmt<'a, Fmt: BytecodeFmt + 'a>( &'a self, bcfmt: Fmt, ctx: &'a Bytecode, ) -> impl Display + 'a

Source

pub fn display<'a, Fmt: BytecodeFmt + Default + 'a>( &'a self, ctx: &'a Bytecode, ) -> impl Display + 'a

Source§

impl Function

Source

pub fn display_header_fmt<'a, Fmt: BytecodeFmt + 'a>( &'a self, bcfmt: Fmt, ctx: &'a Bytecode, ) -> impl Display + 'a

Source

pub fn display_header<'a, Fmt: BytecodeFmt + Default + 'a>( &'a self, ctx: &'a Bytecode, ) -> impl Display + 'a

Source§

impl Function

Source

pub fn regtype(&self, reg: Reg) -> RefType

Get the type of a register

Source

pub fn name(&self, code: &Bytecode) -> Str

Convenience method to resolve the function name

Source

pub fn ty<'a>(&self, code: &'a Bytecode) -> &'a TypeFun

Get the function signature type

Source

pub fn args<'a>(&self, code: &'a Bytecode) -> &'a [RefType]

Convenience method to resolve the function args

Source

pub fn ret<'a>(&self, code: &'a Bytecode) -> &'a Type

Convenience method to resolve the function return type

Source

pub fn arg_name(&self, code: &Bytecode, pos: usize) -> Option<Str>

Uses the assigns to find the name of an argument

Source

pub fn var_name(&self, code: &Bytecode, pos: usize) -> Option<Str>

Uses the assigns to find the name of a variable

Source

pub fn is_method(&self) -> bool

A function is a method if the first argument has the same type as the parent type

Trait Implementations§

Source§

impl Clone for Function

Source§

fn clone(&self) -> Function

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 Function

Source§

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

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

impl Display for Function

Source§

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

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

impl Index<Reg> for Function

Source§

fn index(&self, index: Reg) -> &Self::Output

Get the type of a register

Source§

type Output = RefType

The returned type after indexing.

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.