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, 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, 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.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§