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§
sourcefn new(abi: &Callee<I::ABIMachineSpec>, ctrl_plane: ControlPlane) -> Self
fn new(abi: &Callee<I::ABIMachineSpec>, ctrl_plane: ControlPlane) -> Self
Create a new emission state given the ABI object.
sourcefn pre_safepoint(
&mut self,
stack_map: Option<StackMap>,
user_stack_map: Option<UserStackMap>,
)
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.
sourcefn ctrl_plane_mut(&mut self) -> &mut ControlPlane
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.
sourcefn take_ctrl_plane(self) -> ControlPlane
fn take_ctrl_plane(self) -> ControlPlane
Used to continue using a control plane after the emission state is not needed anymore.
sourcefn frame_layout(&self) -> &FrameLayout
fn frame_layout(&self) -> &FrameLayout
The [FrameLayout
] for the function currently being compiled.
Provided Methods§
sourcefn on_new_block(&mut self)
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.