Don't unnecessarily take &self for some ModuleDeclarations methods
This commit is contained in:
@@ -29,6 +29,18 @@ impl From<FuncId> for ir::ExternalName {
|
||||
}
|
||||
}
|
||||
|
||||
impl FuncId {
|
||||
/// Get the `FuncId` for the function named by `name`.
|
||||
pub fn from_name(name: &ir::ExternalName) -> FuncId {
|
||||
if let ir::ExternalName::User { namespace, index } = *name {
|
||||
debug_assert_eq!(namespace, 0);
|
||||
FuncId::from_u32(index)
|
||||
} else {
|
||||
panic!("unexpected ExternalName kind {}", name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// A data object identifier for use in the `Module` interface.
|
||||
#[derive(Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
|
||||
pub struct DataId(u32);
|
||||
@@ -44,6 +56,18 @@ impl From<DataId> for ir::ExternalName {
|
||||
}
|
||||
}
|
||||
|
||||
impl DataId {
|
||||
/// Get the `DataId` for the data object named by `name`.
|
||||
pub fn from_name(name: &ir::ExternalName) -> DataId {
|
||||
if let ir::ExternalName::User { namespace, index } = *name {
|
||||
debug_assert_eq!(namespace, 1);
|
||||
DataId::from_u32(index)
|
||||
} else {
|
||||
panic!("unexpected ExternalName kind {}", name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Linkage refers to where an entity is defined and who can see it.
|
||||
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
|
||||
pub enum Linkage {
|
||||
@@ -214,21 +238,10 @@ impl ModuleDeclarations {
|
||||
self.functions.iter()
|
||||
}
|
||||
|
||||
/// Get the `FuncId` for the function named by `name`.
|
||||
pub fn get_function_id(&self, name: &ir::ExternalName) -> FuncId {
|
||||
if let ir::ExternalName::User { namespace, index } = *name {
|
||||
debug_assert_eq!(namespace, 0);
|
||||
FuncId::from_u32(index)
|
||||
} else {
|
||||
panic!("unexpected ExternalName kind {}", name)
|
||||
}
|
||||
}
|
||||
|
||||
/// Get the `DataId` for the data object named by `name`.
|
||||
pub fn get_data_id(&self, name: &ir::ExternalName) -> DataId {
|
||||
if let ir::ExternalName::User { namespace, index } = *name {
|
||||
debug_assert_eq!(namespace, 1);
|
||||
DataId::from_u32(index)
|
||||
/// Return whether `name` names a function, rather than a data object.
|
||||
pub fn is_function(name: &ir::ExternalName) -> bool {
|
||||
if let ir::ExternalName::User { namespace, .. } = *name {
|
||||
namespace == 0
|
||||
} else {
|
||||
panic!("unexpected ExternalName kind {}", name)
|
||||
}
|
||||
@@ -249,15 +262,6 @@ impl ModuleDeclarations {
|
||||
&self.data_objects[data_id]
|
||||
}
|
||||
|
||||
/// Return whether `name` names a function, rather than a data object.
|
||||
pub fn is_function(&self, name: &ir::ExternalName) -> bool {
|
||||
if let ir::ExternalName::User { namespace, .. } = *name {
|
||||
namespace == 0
|
||||
} else {
|
||||
panic!("unexpected ExternalName kind {}", name)
|
||||
}
|
||||
}
|
||||
|
||||
/// Declare a function in this module.
|
||||
pub fn declare_function(
|
||||
&mut self,
|
||||
|
||||
@@ -477,11 +477,11 @@ impl ObjectModule {
|
||||
fn get_symbol(&mut self, name: &ir::ExternalName) -> SymbolId {
|
||||
match *name {
|
||||
ir::ExternalName::User { .. } => {
|
||||
if self.declarations.is_function(name) {
|
||||
let id = self.declarations.get_function_id(name);
|
||||
if ModuleDeclarations::is_function(name) {
|
||||
let id = FuncId::from_name(name);
|
||||
self.functions[id].unwrap().0
|
||||
} else {
|
||||
let id = self.declarations.get_data_id(name);
|
||||
let id = DataId::from_name(name);
|
||||
self.data_objects[id].unwrap().0
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,8 +167,8 @@ impl SimpleJITModule {
|
||||
fn get_definition(&self, name: &ir::ExternalName) -> *const u8 {
|
||||
match *name {
|
||||
ir::ExternalName::User { .. } => {
|
||||
let (name, linkage) = if self.declarations.is_function(name) {
|
||||
let func_id = self.declarations.get_function_id(name);
|
||||
let (name, linkage) = if ModuleDeclarations::is_function(name) {
|
||||
let func_id = FuncId::from_name(name);
|
||||
match &self.functions[func_id] {
|
||||
Some(compiled) => return compiled.ptr,
|
||||
None => {
|
||||
@@ -177,7 +177,7 @@ impl SimpleJITModule {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
let data_id = self.declarations.get_data_id(name);
|
||||
let data_id = DataId::from_name(name);
|
||||
match &self.data_objects[data_id] {
|
||||
Some(compiled) => return compiled.ptr,
|
||||
None => {
|
||||
|
||||
Reference in New Issue
Block a user