mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-07 16:18:52 +00:00
Use PtrMap temporarily
This commit is contained in:
+3
-3
@@ -1651,7 +1651,7 @@ gb_internal isize type_info_index(CheckerInfo *info, TypeInfoPair pair, bool err
|
|||||||
mutex_lock(&info->minimum_dependency_type_info_mutex);
|
mutex_lock(&info->minimum_dependency_type_info_mutex);
|
||||||
|
|
||||||
isize entry_index = -1;
|
isize entry_index = -1;
|
||||||
uintptr hash = cast(uintptr)pair.hash;
|
u64 hash = pair.hash;
|
||||||
isize *found_entry_index = map_get(&info->minimum_dependency_type_info_index_map, hash);
|
isize *found_entry_index = map_get(&info->minimum_dependency_type_info_index_map, hash);
|
||||||
if (found_entry_index) {
|
if (found_entry_index) {
|
||||||
entry_index = *found_entry_index;
|
entry_index = *found_entry_index;
|
||||||
@@ -6744,12 +6744,12 @@ gb_internal void check_parsed_files(Checker *c) {
|
|||||||
|
|
||||||
for_array(i, c->info.type_info_types) {
|
for_array(i, c->info.type_info_types) {
|
||||||
auto const &tt = c->info.type_info_types[i];
|
auto const &tt = c->info.type_info_types[i];
|
||||||
bool exists = map_set_if_not_previously_exists(&c->info.minimum_dependency_type_info_index_map, cast(uintptr)tt.hash, i);
|
bool exists = map_set_if_not_previously_exists(&c->info.minimum_dependency_type_info_index_map, tt.hash, i);
|
||||||
if (!exists) {
|
if (!exists) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
for (auto const &entry : c->info.minimum_dependency_type_info_index_map) {
|
for (auto const &entry : c->info.minimum_dependency_type_info_index_map) {
|
||||||
if (entry.key != cast(uintptr)tt.hash) {
|
if (entry.key != tt.hash) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
auto const &other = c->info.type_info_types[entry.value];
|
auto const &other = c->info.type_info_types[entry.value];
|
||||||
|
|||||||
+1
-1
@@ -429,7 +429,7 @@ struct CheckerInfo {
|
|||||||
Entity * entry_point;
|
Entity * entry_point;
|
||||||
PtrSet<Entity *> minimum_dependency_set;
|
PtrSet<Entity *> minimum_dependency_set;
|
||||||
BlockingMutex minimum_dependency_type_info_mutex;
|
BlockingMutex minimum_dependency_type_info_mutex;
|
||||||
PtrMap</*type info hash*/uintptr, /*min dep index*/isize> minimum_dependency_type_info_index_map;
|
PtrMap</*type info hash*/u64, /*min dep index*/isize> minimum_dependency_type_info_index_map;
|
||||||
TypeSet min_dep_type_info_set;
|
TypeSet min_dep_type_info_set;
|
||||||
Array<TypeInfoPair> type_info_types; // sorted after filled
|
Array<TypeInfoPair> type_info_types; // sorted after filled
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -387,7 +387,7 @@ gb_global Arena string_intern_arena = {};
|
|||||||
|
|
||||||
gb_internal char const *string_intern(char const *text, isize len) {
|
gb_internal char const *string_intern(char const *text, isize len) {
|
||||||
u64 hash = gb_fnv64a(text, len);
|
u64 hash = gb_fnv64a(text, len);
|
||||||
uintptr key = cast(uintptr)(hash ? hash : 1);
|
u64 key = hash ? hash : 1;
|
||||||
StringIntern **found = map_get(&string_intern_map, key);
|
StringIntern **found = map_get(&string_intern_map, key);
|
||||||
if (found) {
|
if (found) {
|
||||||
for (StringIntern *it = *found; it != nullptr; it = it->next) {
|
for (StringIntern *it = *found; it != nullptr; it = it->next) {
|
||||||
|
|||||||
Reference in New Issue
Block a user