pub struct FunctionStencil {
    pub version_marker: VersionMarker,
    pub signature: Signature,
    pub sized_stack_slots: StackSlots,
    pub dynamic_stack_slots: DynamicStackSlots,
    pub global_values: PrimaryMap<GlobalValue, GlobalValueData>,
    pub tables: PrimaryMap<Table, TableData>,
    pub jump_tables: JumpTables,
    pub dfg: DataFlowGraph,
    pub layout: Layout,
    pub srclocs: SecondaryMap<Inst, RelSourceLoc>,
    pub stack_limit: Option<GlobalValue>,
}
Expand description

Function fields needed when compiling a function.

Additionally, these fields can be the same for two functions that would be compiled the same way, and finalized by applying FunctionParameters onto their CompiledCodeStencil.

Fields§

§version_marker: VersionMarker

A version marker used to ensure that serialized clif ir is never deserialized with a different version of Cranelift.

§signature: Signature

Signature of this function.

§sized_stack_slots: StackSlots

Sized stack slots allocated in this function.

§dynamic_stack_slots: DynamicStackSlots

Dynamic stack slots allocated in this function.

§global_values: PrimaryMap<GlobalValue, GlobalValueData>

Global values 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: SecondaryMap<Inst, RelSourceLoc>

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§

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

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

Creates a dynamic stack slot in the function, to be used by dynamic_stack_load, dynamic_stack_store and dynamic_stack_addr instructions.

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

Declares a global value accessible to the function.

Find the global dyn_scale value associated with given DynamicType

Find the global dyn_scale for the given stack slot.

Get a concrete Type from a user defined DynamicType.

Declares a table accessible to the function.

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.

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.

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§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.