mirror of
https://github.com/odin-lang/Odin.git
synced 2026-01-07 05:23:12 +00:00
Use more type hashes where possible
This commit is contained in:
@@ -160,11 +160,11 @@ struct lbModule {
|
||||
AstFile *file; // possibly associated
|
||||
char const *module_name;
|
||||
|
||||
PtrMap<Type *, LLVMTypeRef> types; // mutex: types_mutex
|
||||
PtrMap<u64, LLVMTypeRef> types; // mutex: types_mutex
|
||||
PtrMap<void *, lbStructFieldRemapping> struct_field_remapping; // Key: LLVMTypeRef or Type *, mutex: types_mutex
|
||||
PtrMap<Type *, LLVMTypeRef> func_raw_types; // mutex: func_raw_types_mutex
|
||||
RecursiveMutex types_mutex;
|
||||
RecursiveMutex func_raw_types_mutex;
|
||||
PtrMap<u64, LLVMTypeRef> func_raw_types; // mutex: func_raw_types_mutex
|
||||
RecursiveMutex types_mutex;
|
||||
RecursiveMutex func_raw_types_mutex;
|
||||
i32 internal_type_level;
|
||||
|
||||
RwMutex values_mutex;
|
||||
@@ -178,7 +178,7 @@ struct lbModule {
|
||||
|
||||
StringMap<LLVMValueRef> const_strings;
|
||||
|
||||
PtrMap<Type *, struct lbFunctionType *> function_type_map;
|
||||
PtrMap<u64, struct lbFunctionType *> function_type_map;
|
||||
|
||||
StringMap<lbProcedure *> gen_procs; // key is the canonicalized name
|
||||
|
||||
@@ -201,8 +201,8 @@ struct lbModule {
|
||||
StringMap<lbObjcRef> objc_classes;
|
||||
StringMap<lbObjcRef> objc_selectors;
|
||||
|
||||
PtrMap<Type *, lbAddr> map_cell_info_map; // address of runtime.Map_Info
|
||||
PtrMap<Type *, lbAddr> map_info_map; // address of runtime.Map_Cell_Info
|
||||
PtrMap<u64, lbAddr> map_cell_info_map; // address of runtime.Map_Info
|
||||
PtrMap<u64, lbAddr> map_info_map; // address of runtime.Map_Cell_Info
|
||||
|
||||
PtrMap<Ast *, lbAddr> exact_value_compound_literal_addr_map; // Key: Ast_CompoundLit
|
||||
|
||||
|
||||
@@ -109,3 +109,20 @@ gb_internal TypeInfoPair *type_set_retrieve(TypeSet *s, Type *ptr);
|
||||
|
||||
gb_internal TypeSetIterator begin(TypeSet &set) noexcept;
|
||||
gb_internal TypeSetIterator end(TypeSet &set) noexcept;
|
||||
|
||||
|
||||
template <typename V>
|
||||
gb_internal gb_inline V *map_get(PtrMap<u64, V> *h, Type *key) {
|
||||
return map_get(h, type_hash_canonical_type(key));
|
||||
}
|
||||
template <typename V>
|
||||
gb_internal gb_inline void map_set(PtrMap<u64, V> *h, Type *key, V const &value) {
|
||||
map_set(h, type_hash_canonical_type(key), value);
|
||||
}
|
||||
|
||||
template <typename V>
|
||||
gb_internal gb_inline V &map_must_get(PtrMap<u64, V> *h, Type *key) {
|
||||
V *ptr = map_get(h, type_hash_canonical_type(key));
|
||||
GB_ASSERT(ptr != nullptr);
|
||||
return *ptr;
|
||||
}
|
||||
Reference in New Issue
Block a user