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