pub trait MachInstEmitState<I: VCodeInst>: Default + Clone + Debug {
    // Required methods
    fn new(abi: &Callee<I::ABIMachineSpec>, ctrl_plane: ControlPlane) -> Self;
    fn ctrl_plane_mut(&mut self) -> &mut ControlPlane;
    fn take_ctrl_plane(self) -> ControlPlane;

    // Provided methods
    fn pre_safepoint(&mut self, _stack_map: StackMap) { ... }
    fn pre_sourceloc(&mut self, _srcloc: RelSourceLoc) { ... }
    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 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.

Provided Methods§

source

fn pre_safepoint(&mut self, _stack_map: StackMap)

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

source

fn pre_sourceloc(&mut self, _srcloc: RelSourceLoc)

Update the emission state to indicate instructions are associated with a particular RelSourceLoc.

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.

Implementors§