cranelift_codegen

Trait MachInstEmitState

source
pub trait MachInstEmitState<I: VCodeInst>:
    Default
    + Clone
    + Debug {
    // Required methods
    fn new(abi: &Callee<I::ABIMachineSpec>, ctrl_plane: ControlPlane) -> Self;
    fn pre_safepoint(
        &mut self,
        stack_map: Option<StackMap>,
        user_stack_map: Option<UserStackMap>,
    );
    fn ctrl_plane_mut(&mut self) -> &mut ControlPlane;
    fn take_ctrl_plane(self) -> ControlPlane;
    fn frame_layout(&self) -> &FrameLayout;

    // Provided method
    fn on_new_block(&mut self) { ... }
}
Expand description

A trait describing the emission state carried between MachInsts when emitting a function body.

Required Methods§

source

fn new(abi: &Callee<I::ABIMachineSpec>, ctrl_plane: ControlPlane) -> Self

Create a new emission state given the ABI object.

source

fn pre_safepoint( &mut self, stack_map: Option<StackMap>, user_stack_map: Option<UserStackMap>, )

Update the emission state before emitting an instruction that is a safepoint.

source

fn ctrl_plane_mut(&mut self) -> &mut ControlPlane

The emission state holds ownership of a control plane, so it doesn’t have to be passed around explicitly too much. ctrl_plane_mut may be used if temporary access to the control plane is needed by some other function that doesn’t have access to the emission state.

source

fn take_ctrl_plane(self) -> ControlPlane

Used to continue using a control plane after the emission state is not needed anymore.

source

fn frame_layout(&self) -> &FrameLayout

The [FrameLayout] for the function currently being compiled.

Provided Methods§

source

fn on_new_block(&mut self)

A hook that triggers when first emitting a new block. It is guaranteed to be called before any instructions are emitted.

Object Safety§

This trait is not object safe.

Implementors§