Cranelift: Remove ABICallee trait (#4701)
* Cranelift: Remove `ABICallee` trait It has only one implementation: the `ABICalleeImpl` struct. By using that directly we can avoid unnecessary layers of generics and abstractions as well as a couple `Box`es that were previously putting the single implementation into a `Box<dyn>`. * Cranelift: Rename `ABICalleeImpl` to `AbiCallee` * Fix comments as per review * Rename `AbiCallee` to `Callee`
This commit is contained in:
@@ -30,7 +30,6 @@ use regalloc2::{
|
||||
RegClass, VReg,
|
||||
};
|
||||
|
||||
use alloc::boxed::Box;
|
||||
use alloc::vec::Vec;
|
||||
use cranelift_entity::{entity_impl, Keys, PrimaryMap};
|
||||
use std::collections::hash_map::Entry;
|
||||
@@ -159,7 +158,7 @@ pub struct VCode<I: VCodeInst> {
|
||||
block_order: BlockLoweringOrder,
|
||||
|
||||
/// ABI object.
|
||||
abi: Box<dyn ABICallee<I = I>>,
|
||||
abi: Callee<I::ABIMachineSpec>,
|
||||
|
||||
/// Constant information used during code emission. This should be
|
||||
/// immutable across function compilations within the same module.
|
||||
@@ -280,7 +279,7 @@ pub enum VCodeBuildDirection {
|
||||
impl<I: VCodeInst> VCodeBuilder<I> {
|
||||
/// Create a new VCodeBuilder.
|
||||
pub fn new(
|
||||
abi: Box<dyn ABICallee<I = I>>,
|
||||
abi: Callee<I::ABIMachineSpec>,
|
||||
emit_info: I::Info,
|
||||
block_order: BlockLoweringOrder,
|
||||
constants: VCodeConstants,
|
||||
@@ -301,8 +300,8 @@ impl<I: VCodeInst> VCodeBuilder<I> {
|
||||
}
|
||||
|
||||
/// Access the ABI object.
|
||||
pub fn abi(&mut self) -> &mut dyn ABICallee<I = I> {
|
||||
&mut *self.vcode.abi
|
||||
pub fn abi(&mut self) -> &mut Callee<I::ABIMachineSpec> {
|
||||
&mut self.vcode.abi
|
||||
}
|
||||
|
||||
/// Access to the BlockLoweringOrder object.
|
||||
@@ -626,7 +625,7 @@ fn is_reftype(ty: Type) -> bool {
|
||||
impl<I: VCodeInst> VCode<I> {
|
||||
/// New empty VCode.
|
||||
fn new(
|
||||
abi: Box<dyn ABICallee<I = I>>,
|
||||
abi: Callee<I::ABIMachineSpec>,
|
||||
emit_info: I::Info,
|
||||
block_order: BlockLoweringOrder,
|
||||
constants: VCodeConstants,
|
||||
@@ -797,7 +796,7 @@ impl<I: VCodeInst> VCode<I> {
|
||||
let mut cur_srcloc = None;
|
||||
let mut last_offset = None;
|
||||
let mut inst_offsets = vec![];
|
||||
let mut state = I::State::new(&*self.abi);
|
||||
let mut state = I::State::new(&self.abi);
|
||||
|
||||
let mut disasm = String::new();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user