Struct cranelift_codegen::ir::function::Function[][src]

pub struct Function {
    pub name: ExternalName,
    pub signature: Signature,
    pub stack_slots: StackSlots,
    pub stack_limit: Option<GlobalValue>,
    pub global_values: PrimaryMap<GlobalValue, GlobalValueData>,
    pub heaps: PrimaryMap<Heap, HeapData>,
    pub jump_tables: JumpTables,
    pub dfg: DataFlowGraph,
    pub layout: Layout,
    pub encodings: InstEncodings,
    pub locations: ValueLocations,
    pub offsets: EbbOffsets,
    pub srclocs: SourceLocs,
}

A function.

Functions can be cloned, but it is not a very fast operation. The clone will have all the same entity numbers as the original.

Fields

Name of this function. Mostly used by .clif files.

Signature of this function.

Stack slots allocated in this function.

If not None, represents the address that the stack pointer should be checked against.

Global values referenced.

Heaps referenced.

Jump tables used in this function.

Data flow graph containing the primary definition of all instructions, EBBs and values.

Layout of EBBs and instructions in the function body.

Encoding recipe and bits for the legal instructions. Illegal instructions have the Encoding::default() value.

Location assigned to every value.

Code offsets of the EBB headers.

This information is only transiently available after the binemit::relax_branches function computes it, and it can easily be recomputed by calling that function. It is not included in the textual IR format.

Source locations.

Track the original source location for each instruction. The source locations are not interpreted by Cranelift, only preserved.

Methods

impl Function
[src]

Create a function with the given name and signature.

Clear all data structures in this function.

Create a new empty, anonymous function with a Fast calling convention.

Creates a jump table in the function, to be used by br_table instructions.

Inserts an entry in a previously declared jump table.

Creates a stack slot in the function, to be used by stack_load, stack_store and stack_addr instructions.

Sets the stack limit for the function.

Returns previous one if any.

Adds a signature which can later be used to declare an external function import.

Declare an external function import.

Declares a global value accessible to the function.

Declares a heap accessible to the function.

Return an object that can display this function with correct ISA-specific annotations.

Find a presumed unique special-purpose function parameter value.

Returns the value of the last purpose parameter, or None if no such parameter exists.

Important traits for InstOffsetIter<'a>

Get an iterator over the instructions in ebb, including offsets and encoded instruction sizes.

The iterator returns (offset, inst, size) tuples, where offset if the offset in bytes from the beginning of the function to the instruction, and size is the size of the instruction in bytes, or 0 for unencoded instructions.

This function can only be used after the code layout has been computed by the binemit::relax_branches() function.

Wrapper around encode which assigns inst the resulting encoding.

Wrapper around TargetIsa::encode for encoding an existing instruction in the Function.

Trait Implementations

impl Clone for Function
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl Display for Function
[src]

Formats the value using the given formatter. Read more

impl Debug for Function
[src]

Formats the value using the given formatter. Read more

Auto Trait Implementations

impl Send for Function

impl Sync for Function