diff --git a/src/checker.cpp b/src/checker.cpp index be3ce1a77..770e0d473 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -58,11 +58,8 @@ gb_internal void scope_reset(Scope *scope) { rw_mutex_unlock(&scope->mutex); } -gb_internal void scope_reserve(Scope *scope, isize capacity) { - isize cap = 2*capacity; - if (cap > scope->elements.hashes.count) { - string_map_rehash(&scope->elements, capacity); - } +gb_internal void scope_reserve(Scope *scope, isize count) { + string_map_reserve(&scope->elements, 2*count); } gb_internal void entity_graph_node_set_destroy(EntityGraphNodeSet *s) { @@ -4699,7 +4696,7 @@ gb_internal void check_collect_entities_all(Checker *c) { map_init(&wd->untyped); } - for (auto const &entry : c->info.files.entries) { + for (auto const &entry : c->info.files) { AstFile *f = entry.value; thread_pool_add_task(check_collect_entities_all_worker_proc, f); } @@ -4739,7 +4736,7 @@ gb_internal void check_export_entities(Checker *c) { wd->ctx = make_checker_context(c); } - for (auto const &entry : c->info.packages.entries) { + for (auto const &entry : c->info.packages) { AstPackage *pkg = entry.value; thread_pool_add_task(check_export_entities_worker_proc, pkg); } diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index aa49fd055..148511028 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1625,6 +1625,7 @@ gb_internal bool lb_llvm_object_generation(lbGenerator *gen, bool do_threading) String filepath_ll = lb_filepath_ll_for_module(m); String filepath_obj = lb_filepath_obj_for_module(m); + gb_printf_err("%.*s\n", LIT(filepath_obj)); array_add(&gen->output_object_paths, filepath_obj); array_add(&gen->output_temp_paths, filepath_ll); diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index 15cb3f2be..c4f6ccc91 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -148,6 +148,7 @@ gb_internal bool lb_init_generator(lbGenerator *gen, Checker *c) { map_set(&gen->modules, cast(void *)pkg, m); lb_init_module(m, c); #else + // NOTE(bill): Probably per file is not a good idea, so leave this for later for (AstFile *file : pkg->files) { auto m = gb_alloc_item(permanent_allocator(), lbModule); m->file = file; diff --git a/src/string_map.cpp b/src/string_map.cpp index facd00bb0..f7ecc4acc 100644 --- a/src/string_map.cpp +++ b/src/string_map.cpp @@ -35,8 +35,6 @@ struct StringMapEntry { template struct StringMap { - using K = String; - using V = T; Slice hashes; Array > entries; }; @@ -53,15 +51,14 @@ template gb_internal T & string_map_must_get (StringMap template gb_internal T & string_map_must_get (StringMap *h, String const &key); template gb_internal T & string_map_must_get (StringMap *h, StringHashKey const &key); -template gb_internal void string_map_set (StringMap *h, StringHashKey const &key, T const &value); -template gb_internal void string_map_set (StringMap *h, String const &key, T const &value); template gb_internal void string_map_set (StringMap *h, char const *key, T const &value); +template gb_internal void string_map_set (StringMap *h, String const &key, T const &value); +template gb_internal void string_map_set (StringMap *h, StringHashKey const &key, T const &value); -template gb_internal void string_map_remove (StringMap *h, StringHashKey const &key); +// template gb_internal void string_map_remove (StringMap *h, StringHashKey const &key); template gb_internal void string_map_clear (StringMap *h); template gb_internal void string_map_grow (StringMap *h); -template gb_internal void string_map_rehash (StringMap *h, isize new_count); -template gb_internal void string_map_reserve (StringMap *h, isize cap); +template gb_internal void string_map_reserve (StringMap *h, isize new_count); gb_internal gbAllocator string_map_allocator(void) { return heap_allocator(); @@ -137,7 +134,7 @@ gb_internal b32 string_map__full(StringMap *h) { template gb_inline void string_map_grow(StringMap *h) { isize new_count = gb_max(h->hashes.count<<1, 16); - string_map_rehash(h, new_count); + string_map_reserve(h, new_count); } @@ -172,12 +169,6 @@ gb_internal void string_map_reserve(StringMap *h, isize cap) { string_map_reset_entries(h); } - -template -gb_internal void string_map_rehash(StringMap *h, isize new_count) { - string_map_reserve(h, new_count); -} - template gb_internal T *string_map_get(StringMap *h, StringHashKey const &key) { MapFindResult fr = {MAP_SENTINEL, MAP_SENTINEL, MAP_SENTINEL}; @@ -259,34 +250,34 @@ gb_internal gb_inline void string_map_set(StringMap *h, char const *key, T co } -template -gb_internal void string_map__erase(StringMap *h, MapFindResult const &fr) { - MapFindResult last; - if (fr.entry_prev == MAP_SENTINEL) { - h->hashes.data[fr.hash_index] = h->entries.data[fr.entry_index].next; - } else { - h->entries.data[fr.entry_prev].next = h->entries.data[fr.entry_index].next; - } - if (fr.entry_index == h->entries.count-1) { - array_pop(&h->entries); - return; - } - h->entries.data[fr.entry_index] = h->entries.data[h->entries.count-1]; - last = string_map__find(h, h->entries.data[fr.entry_index].key); - if (last.entry_prev != MAP_SENTINEL) { - h->entries.data[last.entry_prev].next = fr.entry_index; - } else { - h->hashes.data[last.hash_index] = fr.entry_index; - } -} +// template +// gb_internal void string_map__erase(StringMap *h, MapFindResult const &fr) { +// MapFindResult last; +// if (fr.entry_prev == MAP_SENTINEL) { +// h->hashes.data[fr.hash_index] = h->entries.data[fr.entry_index].next; +// } else { +// h->entries.data[fr.entry_prev].next = h->entries.data[fr.entry_index].next; +// } +// if (fr.entry_index == h->entries.count-1) { +// array_pop(&h->entries); +// return; +// } +// h->entries.data[fr.entry_index] = h->entries.data[h->entries.count-1]; +// last = string_map__find(h, h->entries.data[fr.entry_index].key); +// if (last.entry_prev != MAP_SENTINEL) { +// h->entries.data[last.entry_prev].next = fr.entry_index; +// } else { +// h->hashes.data[last.hash_index] = fr.entry_index; +// } +// } -template -gb_internal void string_map_remove(StringMap *h, StringHashKey const &key) { - MapFindResult fr = string_map__find(h, key); - if (fr.entry_index != MAP_SENTINEL) { - string_map__erase(h, fr); - } -} +// template +// gb_internal void string_map_remove(StringMap *h, StringHashKey const &key) { +// MapFindResult fr = string_map__find(h, key); +// if (fr.entry_index != MAP_SENTINEL) { +// string_map__erase(h, fr); +// } +// } template gb_internal gb_inline void string_map_clear(StringMap *h) {