Skip to content

Commit

Permalink
Use more type hashes where possible
Browse files Browse the repository at this point in the history
  • Loading branch information
gingerBill committed Feb 24, 2025
1 parent 83f1c87 commit de70e6f
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 7 deletions.
14 changes: 7 additions & 7 deletions src/llvm_backend.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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

Expand All @@ -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

Expand Down
17 changes: 17 additions & 0 deletions src/name_canonicalization.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

0 comments on commit de70e6f

Please sign in to comment.