Struct cranelift_codegen::ir::function::Function [−][src]
pub struct Function {
pub version_marker: VersionMarker,
pub name: ExternalName,
pub signature: Signature,
pub stack_slots: StackSlots,
pub global_values: PrimaryMap<GlobalValue, GlobalValueData>,
pub heaps: PrimaryMap<Heap, HeapData>,
pub tables: PrimaryMap<Table, TableData>,
pub jump_tables: JumpTables,
pub dfg: DataFlowGraph,
pub layout: Layout,
pub srclocs: SourceLocs,
pub stack_limit: Option<GlobalValue>,
}
Expand description
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
version_marker: VersionMarker
A version marker used to ensure that serialized clif ir is never deserialized with a different version of Cranelift.
name: ExternalName
Name of this function. Mostly used by .clif
files.
signature: Signature
Signature of this function.
stack_slots: StackSlots
Stack slots allocated in this function.
global_values: PrimaryMap<GlobalValue, GlobalValueData>
Global values referenced.
heaps: PrimaryMap<Heap, HeapData>
Heaps referenced.
tables: PrimaryMap<Table, TableData>
Tables referenced.
jump_tables: JumpTables
Jump tables used in this function.
dfg: DataFlowGraph
Data flow graph containing the primary definition of all instructions, blocks and values.
layout: Layout
Layout of blocks and instructions in the function body.
srclocs: SourceLocs
Source locations.
Track the original source location for each instruction. The source locations are not interpreted by Cranelift, only preserved.
stack_limit: Option<GlobalValue>
An optional global value which represents an expression evaluating to
the stack limit for this function. This GlobalValue
will be
interpreted in the prologue, if necessary, to insert a stack check to
ensure that a trap happens if the stack pointer goes below the
threshold specified here.
Implementations
Create a function with the given name and signature.
Creates a jump table in the function, to be used by br_table
instructions.
Creates a stack slot in the function, to be used by stack_load
, stack_store
and
stack_addr
instructions.
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.
Declares a table accessible to the function.
Return an object that can display this function with correct ISA-specific annotations.
pub fn display_with<'a>(
&'a self,
annotations: DisplayFunctionAnnotations<'a>
) -> DisplayFunction<'a>
pub fn display_with<'a>(
&'a self,
annotations: DisplayFunctionAnnotations<'a>
) -> DisplayFunction<'a>
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.
Starts collection of debug information.
Changes the destination of a jump or branch instruction. Does nothing if called with a non-jump or non-branch instruction.
Note that this method ignores multi-destination branches like br_table
.
Rewrite the branch destination to new_dest
if the destination matches old_dest
.
Does nothing if called with a non-jump or non-branch instruction.
Unlike change_branch_destination, this method rewrite the destinations of
multi-destination branches like br_table
.
Checks that the specified block can be encoded as a basic block.
On error, returns the first invalid instruction and an error message.
Returns true if the function is function that doesn’t call any other functions. This is not to be confused with a “leaf function” in Windows terminology.
Replace the dst
instruction’s data with the src
instruction’s data
and then remove src
.
src
and its result values should not be used at all, as any uses would
be left dangling after calling this method.
src
and dst
must have the same number of resulting values, and
src
’s i^th value must have the same type as dst
’s i^th value.
Size occupied by all stack slots associated with this function.
Does not include any padding necessary due to offsets
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Function
impl UnwindSafe for Function
Blanket Implementations
Mutably borrows from an owned value. Read more