From 3d6851c57a3ecda9cea67e8d9184e20f3c890481 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Tue, 23 Jun 2026 16:07:53 -0700 Subject: [PATCH] rdi_from_Dwarf: count dependency counts correctly when using cached type content hashes --- src/rdi_from_dwarf/rdi_from_dwarf.c | 8 ++++++-- src/rdi_from_dwarf/rdi_from_dwarf.h | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/rdi_from_dwarf/rdi_from_dwarf.c b/src/rdi_from_dwarf/rdi_from_dwarf.c index c8f88b84..a9661251 100644 --- a/src/rdi_from_dwarf/rdi_from_dwarf.c +++ b/src/rdi_from_dwarf/rdi_from_dwarf.c @@ -1623,6 +1623,7 @@ d2r_convert(Arena *arena, D2R_ConvertParams *params) { //- rjf: try to find an already-computed hash for this task U64 already_computed_hash = 0; + U64 already_computed_dependency_count = 0; B32 found_already_computed_hash = 0; { U64 off_hash = u64_hash_from_str8(str8_struct(&top_task->start_off)); @@ -1634,6 +1635,7 @@ d2r_convert(Arena *arena, D2R_ConvertParams *params) { found_already_computed_hash = 1; already_computed_hash = n->dst_hash; + already_computed_dependency_count = n->dependency_count; break; } } @@ -1643,6 +1645,7 @@ d2r_convert(Arena *arena, D2R_ConvertParams *params) if(found_already_computed_hash) { top_task->hash = already_computed_hash; + top_task->dependency_count = already_computed_dependency_count; } //- rjf: determine if we're done with this hash @@ -1791,8 +1794,9 @@ d2r_convert(Arena *arena, D2R_ConvertParams *params) U64 info_off_hash = u64_hash_from_str8(str8_struct(&top_task->start_off)); U64 info_off_slot_idx = info_off_hash%unit_deduped_tag_maps[top_task->unit_idx].slots_count; D2R_UnitDedupedTagNode *n = push_array(scratch.arena, D2R_UnitDedupedTagNode, 1); - n->src_info_off = top_task->start_off; - n->dst_hash = top_task->hash; + n->src_info_off = top_task->start_off; + n->dst_hash = top_task->hash; + n->dependency_count = top_task->dependency_count; for(B32 inserted = 0; !inserted;) { U64 slot_head_val = ins_atomic_u64_eval(&unit_deduped_tag_maps[origin_unit_idx].slots[info_off_slot_idx]); diff --git a/src/rdi_from_dwarf/rdi_from_dwarf.h b/src/rdi_from_dwarf/rdi_from_dwarf.h index 85bb78ad..83e0adb2 100644 --- a/src/rdi_from_dwarf/rdi_from_dwarf.h +++ b/src/rdi_from_dwarf/rdi_from_dwarf.h @@ -45,6 +45,7 @@ struct D2R_UnitDedupedTagNode D2R_UnitDedupedTagNode *next; U64 src_info_off; U64 dst_hash; + U64 dependency_count; }; typedef struct D2R_UnitDedupedTagMap D2R_UnitDedupedTagMap;