diff --git a/crates/turbo-tasks/src/native_function.rs b/crates/turbo-tasks/src/native_function.rs index 658b0c8549874..453a4aa63acfd 100644 --- a/crates/turbo-tasks/src/native_function.rs +++ b/crates/turbo-tasks/src/native_function.rs @@ -70,7 +70,7 @@ impl NativeFunction { } } - pub fn register(&'static self, global_name: &str) { + pub fn register(&'static self, global_name: &'static str) { register_function(global_name, self); } } diff --git a/crates/turbo-tasks/src/registry.rs b/crates/turbo-tasks/src/registry.rs index d722728dd9e0c..b120b99e149b8 100644 --- a/crates/turbo-tasks/src/registry.rs +++ b/crates/turbo-tasks/src/registry.rs @@ -11,42 +11,43 @@ use crate::{ }; static FUNCTION_ID_FACTORY: IdFactory = IdFactory::new(); -static FUNCTIONS_BY_NAME: Lazy> = Lazy::new(DashMap::new); +static FUNCTIONS_BY_NAME: Lazy> = Lazy::new(DashMap::new); static FUNCTIONS_BY_VALUE: Lazy> = Lazy::new(DashMap::new); -static FUNCTIONS: Lazy> = Lazy::new(NoMoveVec::new); +static FUNCTIONS: Lazy> = + Lazy::new(NoMoveVec::new); static VALUE_TYPE_ID_FACTORY: IdFactory = IdFactory::new(); -static VALUE_TYPES_BY_NAME: Lazy> = Lazy::new(DashMap::new); +static VALUE_TYPES_BY_NAME: Lazy> = Lazy::new(DashMap::new); static VALUE_TYPES_BY_VALUE: Lazy> = Lazy::new(DashMap::new); -static VALUE_TYPES: Lazy> = Lazy::new(NoMoveVec::new); +static VALUE_TYPES: Lazy> = Lazy::new(NoMoveVec::new); static TRAIT_TYPE_ID_FACTORY: IdFactory = IdFactory::new(); -static TRAIT_TYPES_BY_NAME: Lazy> = Lazy::new(DashMap::new); +static TRAIT_TYPES_BY_NAME: Lazy> = Lazy::new(DashMap::new); static TRAIT_TYPES_BY_VALUE: Lazy> = Lazy::new(DashMap::new); -static TRAIT_TYPES: Lazy> = Lazy::new(NoMoveVec::new); +static TRAIT_TYPES: Lazy> = Lazy::new(NoMoveVec::new); fn register_thing< K: From + Deref + Sync + Send + Copy, V: Clone + Hash + Ord + Eq + Sync + Send + Copy, const INITIAL_CAPACITY_BITS: u32, >( - global_name: &str, + global_name: &'static str, value: V, id_factory: &IdFactory, - store: &NoMoveVec<(V, String), INITIAL_CAPACITY_BITS>, - map_by_name: &DashMap, + store: &NoMoveVec<(V, &'static str), INITIAL_CAPACITY_BITS>, + map_by_name: &DashMap<&'static str, K>, map_by_value: &DashMap, ) { if let Entry::Vacant(e) = map_by_value.entry(value) { let new_id = id_factory.get(); // SAFETY: this is a fresh id unsafe { - store.insert(*new_id, (value, global_name.to_string())); + store.insert(*new_id, (value, global_name)); } - map_by_name.insert(global_name.to_string(), new_id); + map_by_name.insert(global_name, new_id); e.insert(new_id); } } @@ -65,7 +66,7 @@ fn get_thing_id< } } -pub fn register_function(global_name: &str, func: &'static NativeFunction) { +pub fn register_function(global_name: &'static str, func: &'static NativeFunction) { register_thing( global_name, func, @@ -89,10 +90,10 @@ pub fn get_function(id: FunctionId) -> &'static NativeFunction { } pub fn get_function_global_name(id: FunctionId) -> &'static str { - &FUNCTIONS.get(*id).unwrap().1 + FUNCTIONS.get(*id).unwrap().1 } -pub fn register_value_type(global_name: &str, ty: &'static ValueType) { +pub fn register_value_type(global_name: &'static str, ty: &'static ValueType) { register_thing( global_name, ty, @@ -116,10 +117,10 @@ pub fn get_value_type(id: ValueTypeId) -> &'static ValueType { } pub fn get_value_type_global_name(id: ValueTypeId) -> &'static str { - &VALUE_TYPES.get(*id).unwrap().1 + VALUE_TYPES.get(*id).unwrap().1 } -pub fn register_trait_type(global_name: &str, ty: &'static TraitType) { +pub fn register_trait_type(global_name: &'static str, ty: &'static TraitType) { register_thing( global_name, ty, @@ -143,5 +144,5 @@ pub fn get_trait(id: TraitTypeId) -> &'static TraitType { } pub fn get_trait_type_global_name(id: TraitTypeId) -> &'static str { - &TRAIT_TYPES.get(*id).unwrap().1 + TRAIT_TYPES.get(*id).unwrap().1 } diff --git a/crates/turbo-tasks/src/value_type.rs b/crates/turbo-tasks/src/value_type.rs index 1a637f935ddd9..14a5d57ea4f77 100644 --- a/crates/turbo-tasks/src/value_type.rs +++ b/crates/turbo-tasks/src/value_type.rs @@ -192,7 +192,7 @@ impl ValueType { self.traits.iter().copied() } - pub fn register(&'static self, global_name: &str) { + pub fn register(&'static self, global_name: &'static str) { register_value_type(global_name, self) } } @@ -251,7 +251,7 @@ impl TraitType { self.default_trait_methods.insert(name, native_fn); } - pub fn register(&'static self, global_name: &str) { + pub fn register(&'static self, global_name: &'static str) { register_trait_type(global_name, self); } }