From 802ebcaab7865e1840da01717a06c8db1c7bcea9 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 16 Jul 2020 13:56:48 -0500 Subject: [PATCH] Changed implementation of imap from BST to hash table --- include/bh.h | 112 +++++++++++++++++++++++++++++++------------------ onyx | Bin 233568 -> 238288 bytes src/onyxwasm.c | 23 ++-------- 3 files changed, 75 insertions(+), 60 deletions(-) diff --git a/include/bh.h b/include/bh.h index 482ef217..e443f27b 100644 --- a/include/bh.h +++ b/include/bh.h @@ -637,17 +637,26 @@ b32 bh_table_iter_next(bh_table_iterator* it); typedef u64 bh_imap_entry_t; +typedef struct bh__imap_lookup_result { + i64 hash_index; + i64 entry_prev; + i64 entry_index; +} bh__imap_lookup_result; + typedef struct bh__imap_entry { bh_imap_entry_t key, value; + i64 next; } bh__imap_entry; typedef struct bh_imap { bh_allocator allocator; + + bh_arr(i64) hashes; bh_arr(bh__imap_entry) entries; } bh_imap; -void bh_imap_init(bh_imap* imap, bh_allocator alloc); +void bh_imap_init(bh_imap* imap, bh_allocator alloc, i32 hash_count); void bh_imap_free(bh_imap* imap); void bh_imap_put(bh_imap* imap, bh_imap_entry_t key, bh_imap_entry_t value); b32 bh_imap_has(bh_imap* imap, bh_imap_entry_t key); @@ -2047,82 +2056,105 @@ step_to_next: // IMAP IMPLEMENTATION //------------------------------------------------------------------------------------- #ifndef BH_NO_IMAP -void bh_imap_init(bh_imap* imap, bh_allocator alloc) { +void bh_imap_init(bh_imap* imap, bh_allocator alloc, i32 hash_count) { imap->allocator = alloc; + + imap->hashes = NULL; imap->entries = NULL; + bh_arr_new(alloc, imap->hashes, hash_count); bh_arr_new(alloc, imap->entries, 4); + + fori(count, 0, hash_count - 1) bh_arr_push(imap->hashes, -1); } void bh_imap_free(bh_imap* imap) { + bh_arr_free(imap->hashes); bh_arr_free(imap->entries); + + imap->hashes = NULL; imap->entries = NULL; } -b32 bh__imap_get_index(bh_imap* imap, bh_imap_entry_t key, i32* pos) { - i32 low = 0; - i32 high = bh_arr_length(imap->entries); - i32 middle = 0; - bh__imap_entry tmp; - - while (high > low) { - middle = (high + low) / 2; - tmp = imap->entries[middle]; - - if (tmp.key == key) { - if (pos) *pos = middle; - return 1; - } else if (tmp.key < key) { - low = middle + 1; - middle++; - } else if (tmp.key > key) { - high = middle; +bh__imap_lookup_result bh__imap_lookup(bh_imap* imap, bh_imap_entry_t key) { + bh__imap_lookup_result lr = { -1, -1, -1 }; + + u64 hash = 0xcbf29ce484222325ull ^ key; + u64 n = bh_arr_capacity(imap->hashes); + + lr.hash_index = hash % n; + lr.entry_index = imap->hashes[lr.hash_index]; + while (lr.entry_index >= 0) { + if (imap->entries[lr.entry_index].key == key) { + return lr; } + + lr.entry_prev = lr.entry_index; + lr.entry_index = imap->entries[lr.entry_index].next; } - if (pos) *pos = middle; - return 0; + return lr; } void bh_imap_put(bh_imap* imap, bh_imap_entry_t key, bh_imap_entry_t value) { - i32 middle = 0; - b32 found_existing = bh__imap_get_index(imap, key, &middle); + bh__imap_lookup_result lr = bh__imap_lookup(imap, key); - if (found_existing) { - imap->entries[middle].value = value; - } else { - bh_arr_insertn(imap->entries, middle, 1); - imap->entries[middle].key = key; - imap->entries[middle].value = value; + if (lr.entry_index >= 0) { + imap->entries[lr.entry_index].value = value; + return; } + + bh__imap_entry entry; + entry.key = key; + entry.value = value; + entry.next = imap->hashes[lr.hash_index]; + bh_arr_push(imap->entries, entry); + + imap->hashes[lr.hash_index] = bh_arr_length(imap->entries) - 1; } b32 bh_imap_has(bh_imap* imap, bh_imap_entry_t key) { - return bh__imap_get_index(imap, key, NULL); + bh__imap_lookup_result lr = bh__imap_lookup(imap, key); + return lr.entry_index >= 0; } bh_imap_entry_t bh_imap_get(bh_imap* imap, bh_imap_entry_t key) { - i32 middle = 0; - b32 found_existing = bh__imap_get_index(imap, key, &middle); - - if (found_existing) { - return imap->entries[middle].value; + bh__imap_lookup_result lr = bh__imap_lookup(imap, key); + if (lr.entry_index >= 0) { + return imap->entries[lr.entry_index].value; } else { return 0; } } void bh_imap_delete(bh_imap* imap, bh_imap_entry_t key) { - i32 middle = 0; - b32 found_existing = bh__imap_get_index(imap, key, &middle); + bh__imap_lookup_result lr = bh__imap_lookup(imap, key); + if (lr.entry_index < 0) return; + + if (lr.entry_prev < 0) { + imap->hashes[lr.hash_index] = imap->entries[lr.entry_index].next; + } else { + imap->entries[lr.entry_prev].next = imap->entries[lr.entry_index].next; + } - if (found_existing) { - bh_arr_deleten(imap->entries, middle, 1); + // If it's that last thing in the array, just pop off the end + if (lr.entry_index == bh_arr_length(imap->entries) - 1) { + bh_arr_pop(imap->entries); + return; + } + + bh_arr_fastdelete(imap->entries, lr.entry_index); + bh__imap_lookup_result last = bh__imap_lookup(imap, imap->entries[lr.entry_index].key); + if (last.entry_prev >= 0) { + imap->entries[last.entry_prev].next = lr.entry_index; + } else { + imap->hashes[last.hash_index] = lr.entry_index; } } void bh_imap_clear(bh_imap* imap) { // NOTE: Does not clear out an of the data that was in the map + bh_arr_each(i64, hash, imap->hashes) *hash = -1; bh_arr_set_length(imap->entries, 0); } diff --git a/onyx b/onyx index 791a5a192ba0d7047a7baf0f5a01f8c9578418b2..b0040d8f5d0f8640a3a9fa98239db9bc3e0e5321 100755 GIT binary patch delta 64489 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%0Di^>p$vi%87T)J4sO8J<*(pT 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 JxXbN+{|``G4V?f0 delta 63043 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

v>SwTQu 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 PPrP1|XM2y|ZTI^Bforeigns) { - // AstKind import_kind = (*foreign)->import->kind; - - // if (import_kind == Ast_Kind_Function) { - // module->next_func_idx++; - // bh_imap_put(&module->func_map, (u64) (*foreign)->import, module->next_import_func_idx++); - // } - // else if (import_kind == Ast_Kind_Global) { - // module->next_global_idx++; - // bh_imap_put(&module->global_map, (u64) (*foreign)->import, module->next_import_global_idx++); - // } - - // compile_foreign(module, *foreign); - // } - bh_arr_each(AstFunction *, function, program->functions) { if ((*function)->base.flags & Ast_Flag_Foreign) { bh_imap_put(&module->func_map, (u64) *function, module->next_func_idx++); -- 2.25.1