diff --git a/src/lib_raddbgi_make/raddbgi_make.c b/src/lib_raddbgi_make/raddbgi_make.c index 12adc08e..4c10a067 100644 --- a/src/lib_raddbgi_make/raddbgi_make.c +++ b/src/lib_raddbgi_make/raddbgi_make.c @@ -1341,16 +1341,16 @@ rdim_bake_string_chunk_list_sorted_from_unsorted(RDIM_Arena *arena, RDIM_BakeStr //- rjf: bake string chunk list maps -RDI_PROC RDIM_BakeStringChunkListMap * -rdim_bake_string_chunk_list_map_make(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top) +RDI_PROC RDIM_BakeStringMapLoose * +rdim_bake_string_map_loose_make(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top) { - RDIM_BakeStringChunkListMap *map = rdim_push_array(arena, RDIM_BakeStringChunkListMap, 1); + RDIM_BakeStringMapLoose *map = rdim_push_array(arena, RDIM_BakeStringMapLoose, 1); map->slots = rdim_push_array(arena, RDIM_BakeStringChunkList *, top->slots_count); return map; } RDI_PROC void -rdim_bake_string_chunk_list_map_insert(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *map_topology, RDIM_BakeStringChunkListMap *map, RDI_U64 chunk_cap, RDIM_String8 string) +rdim_bake_string_map_loose_insert(RDIM_Arena *arena, RDIM_BakeStringMapTopology *map_topology, RDIM_BakeStringMapLoose *map, RDI_U64 chunk_cap, RDIM_String8 string) { RDI_U64 hash = rdi_hash(string.RDIM_String8_BaseMember, string.RDIM_String8_SizeMember); RDI_U64 slot_idx = hash%map_topology->slots_count; @@ -1381,7 +1381,7 @@ rdim_bake_string_chunk_list_map_insert(RDIM_Arena *arena, RDIM_BakeStringChunkLi } RDI_PROC void -rdim_bake_string_chunk_list_map_join_in_place(RDIM_BakeStringChunkListMapTopology *map_topology, RDIM_BakeStringChunkListMap *dst, RDIM_BakeStringChunkListMap *src) +rdim_bake_string_map_loose_join_in_place(RDIM_BakeStringMapTopology *map_topology, RDIM_BakeStringMapLoose *dst, RDIM_BakeStringMapLoose *src) { for(RDI_U64 idx = 0; idx < map_topology->slots_count; idx += 1) { @@ -1397,10 +1397,10 @@ rdim_bake_string_chunk_list_map_join_in_place(RDIM_BakeStringChunkListMapTopolog rdim_memzero_struct(src); } -RDI_PROC RDIM_BakeStringChunkListMapBaseIndices -rdim_bake_string_chunk_list_base_indices_from_map(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *map_topology, RDIM_BakeStringChunkListMap *map) +RDI_PROC RDIM_BakeStringMapBaseIndices +rdim_bake_string_map_base_indices_from_map_loose(RDIM_Arena *arena, RDIM_BakeStringMapTopology *map_topology, RDIM_BakeStringMapLoose *map) { - RDIM_BakeStringChunkListMapBaseIndices indices = {0}; + RDIM_BakeStringMapBaseIndices indices = {0}; indices.slots_base_idxs = rdim_push_array(arena, RDI_U64, map_topology->slots_count+1); RDI_U64 total_count = 0; for(RDI_U64 idx = 0; idx < map_topology->slots_count; idx += 1) @@ -1417,10 +1417,10 @@ rdim_bake_string_chunk_list_base_indices_from_map(RDIM_Arena *arena, RDIM_BakeSt //- rjf: finalized bake string map -RDI_PROC RDIM_BakeStringMapFinal -rdim_bake_string_map_final_from_chunk_list_map(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *map_topology, RDIM_BakeStringChunkListMapBaseIndices *map_base_indices, RDIM_BakeStringChunkListMap *map) +RDI_PROC RDIM_BakeStringMapTight +rdim_bake_string_map_tight_from_loose(RDIM_Arena *arena, RDIM_BakeStringMapTopology *map_topology, RDIM_BakeStringMapBaseIndices *map_base_indices, RDIM_BakeStringMapLoose *map) { - RDIM_BakeStringMapFinal m = {0}; + RDIM_BakeStringMapTight m = {0}; m.slots_count = map_topology->slots_count; m.slots = rdim_push_array(arena, RDIM_BakeStringChunkList, m.slots_count); m.slots_base_idxs = map_base_indices->slots_base_idxs; @@ -1436,7 +1436,7 @@ rdim_bake_string_map_final_from_chunk_list_map(RDIM_Arena *arena, RDIM_BakeStrin } RDI_PROC RDI_U64 -rdim_bake_idx_from_string(RDIM_BakeStringMapFinal *map, RDIM_String8 string) +rdim_bake_idx_from_string(RDIM_BakeStringMapTight *map, RDIM_String8 string) { RDI_U64 hash = rdi_hash(string.RDIM_String8_BaseMember, string.RDIM_String8_SizeMember); RDI_U64 slot_idx = hash%map->slots_count; @@ -1455,64 +1455,6 @@ rdim_bake_idx_from_string(RDIM_BakeStringMapFinal *map, RDIM_String8 string) return idx; } -//- rjf: bake string map reading/writing - -RDI_PROC RDI_U32 -rdim_bake_idx_from_string_OLD(RDIM_BakeStringMap *map, RDIM_String8 string) -{ - RDI_U64 hash = rdi_hash(string.RDIM_String8_BaseMember, string.RDIM_String8_SizeMember); - RDI_U64 slot_idx = hash%map->slots_count; - - // rjf: find existing node - RDIM_BakeStringNode *node = 0; - for(RDIM_BakeStringNode *n = map->slots[slot_idx]; n != 0; n = n->hash_next) - { - if(n->v.hash == hash && rdim_str8_match(n->v.string, string, 0)) - { - node = n; - break; - } - } - - // rjf: node -> index - RDI_U32 result = node ? node->idx : 0; - return result; -} - -RDI_PROC RDI_U32 -rdim_bake_string_map_insert(RDIM_Arena *arena, RDIM_BakeStringMap *map, RDIM_String8 string) -{ - RDI_U64 hash = rdi_hash(string.RDIM_String8_BaseMember, string.RDIM_String8_SizeMember); - RDI_U64 slot_idx = hash%map->slots_count; - - // rjf: find existing node - RDIM_BakeStringNode *node = 0; - for(RDIM_BakeStringNode *n = map->slots[slot_idx]; n != 0; n = n->hash_next) - { - if(n->v.hash == hash && rdim_str8_match(n->v.string, string, 0)) - { - node = n; - break; - } - } - - // rjf: no node -> make new node - if(node == 0) - { - node = rdim_push_array(arena, RDIM_BakeStringNode, 1); - node->v.string = string; - node->v.hash = hash; - node->idx = map->count; - map->count += 1; - RDIM_SLLQueuePush_N(map->order_first, map->order_last, node, order_next); - RDIM_SLLStackPush_N(map->slots[slot_idx], node, hash_next); - } - - // rjf: node -> index - RDI_U32 result = node->idx; - return result; -} - //- rjf: bake idx run map reading/writing RDI_PROC RDI_U64 @@ -1835,97 +1777,97 @@ rdim_bake_section_list_concat_in_place(RDIM_BakeSectionList *dst, RDIM_BakeSecti //- rjf: basic bake string gathering passes RDI_PROC void -rdim_bake_string_chunk_list_map_push_top_level_info(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_TopLevelInfo *tli) +rdim_bake_string_map_loose_push_top_level_info(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_TopLevelInfo *tli) { - rdim_bake_string_chunk_list_map_insert(arena, top, map, 1, tli->exe_name); + rdim_bake_string_map_loose_insert(arena, top, map, 1, tli->exe_name); } RDI_PROC void -rdim_bake_string_chunk_list_map_push_binary_sections(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_BinarySectionList *secs) +rdim_bake_string_map_loose_push_binary_sections(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_BinarySectionList *secs) { for(RDIM_BinarySectionNode *n = secs->first; n != 0; n = n->next) { - rdim_bake_string_chunk_list_map_insert(arena, top, map, 1, n->v.name); + rdim_bake_string_map_loose_insert(arena, top, map, 1, n->v.name); } } RDI_PROC void -rdim_bake_string_chunk_list_map_push_path_tree(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_BakePathTree *path_tree) +rdim_bake_string_map_loose_push_path_tree(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_BakePathTree *path_tree) { for(RDIM_BakePathNode *n = path_tree->first; n != 0; n = n->next_order) { - rdim_bake_string_chunk_list_map_insert(arena, top, map, 1, n->name); + rdim_bake_string_map_loose_insert(arena, top, map, 1, n->name); } } //- rjf: chunk-granularity bake string gathering passes RDI_PROC void -rdim_bake_string_chunk_list_map_push_src_file_slice(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_SrcFile *v, RDI_U64 count) +rdim_bake_string_map_loose_push_src_file_slice(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_SrcFile *v, RDI_U64 count) { for(RDI_U64 idx = 0; idx < count; idx += 1) { - rdim_bake_string_chunk_list_map_insert(arena, top, map, 1, v[idx].normal_full_path); + rdim_bake_string_map_loose_insert(arena, top, map, 1, v[idx].normal_full_path); } } RDI_PROC void -rdim_bake_string_chunk_list_map_push_unit_slice(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_Unit *v, RDI_U64 count) +rdim_bake_string_map_loose_push_unit_slice(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_Unit *v, RDI_U64 count) { for(RDI_U64 idx = 0; idx < count; idx += 1) { - rdim_bake_string_chunk_list_map_insert(arena, top, map, 4, v[idx].unit_name); - rdim_bake_string_chunk_list_map_insert(arena, top, map, 4, v[idx].compiler_name); - rdim_bake_string_chunk_list_map_insert(arena, top, map, 4, v[idx].source_file); - rdim_bake_string_chunk_list_map_insert(arena, top, map, 4, v[idx].object_file); - rdim_bake_string_chunk_list_map_insert(arena, top, map, 4, v[idx].archive_file); - rdim_bake_string_chunk_list_map_insert(arena, top, map, 4, v[idx].build_path); + rdim_bake_string_map_loose_insert(arena, top, map, 4, v[idx].unit_name); + rdim_bake_string_map_loose_insert(arena, top, map, 4, v[idx].compiler_name); + rdim_bake_string_map_loose_insert(arena, top, map, 4, v[idx].source_file); + rdim_bake_string_map_loose_insert(arena, top, map, 4, v[idx].object_file); + rdim_bake_string_map_loose_insert(arena, top, map, 4, v[idx].archive_file); + rdim_bake_string_map_loose_insert(arena, top, map, 4, v[idx].build_path); } } RDI_PROC void -rdim_bake_string_chunk_list_map_push_type_slice(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_Type *v, RDI_U64 count) +rdim_bake_string_map_loose_push_type_slice(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_Type *v, RDI_U64 count) { for(RDI_U64 idx = 0; idx < count; idx += 1) { - rdim_bake_string_chunk_list_map_insert(arena, top, map, 4, v[idx].name); + rdim_bake_string_map_loose_insert(arena, top, map, 4, v[idx].name); } } RDI_PROC void -rdim_bake_string_chunk_list_map_push_udt_slice(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_UDT *v, RDI_U64 count) +rdim_bake_string_map_loose_push_udt_slice(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_UDT *v, RDI_U64 count) { for(RDI_U64 idx = 0; idx < count; idx += 1) { for(RDIM_UDTMember *mem = v[idx].first_member; mem != 0; mem = mem->next) { - rdim_bake_string_chunk_list_map_insert(arena, top, map, 4, mem->name); + rdim_bake_string_map_loose_insert(arena, top, map, 4, mem->name); } for(RDIM_UDTEnumVal *mem = v[idx].first_enum_val; mem != 0; mem = mem->next) { - rdim_bake_string_chunk_list_map_insert(arena, top, map, 4, mem->name); + rdim_bake_string_map_loose_insert(arena, top, map, 4, mem->name); } } } RDI_PROC void -rdim_bake_string_chunk_list_map_push_symbol_slice(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_Symbol *v, RDI_U64 count) +rdim_bake_string_map_loose_push_symbol_slice(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_Symbol *v, RDI_U64 count) { for(RDI_U64 idx = 0; idx < count; idx += 1) { - rdim_bake_string_chunk_list_map_insert(arena, top, map, 4, v[idx].name); - rdim_bake_string_chunk_list_map_insert(arena, top, map, 4, v[idx].link_name); + rdim_bake_string_map_loose_insert(arena, top, map, 4, v[idx].name); + rdim_bake_string_map_loose_insert(arena, top, map, 4, v[idx].link_name); } } RDI_PROC void -rdim_bake_string_chunk_list_map_push_scope_slice(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_Scope *v, RDI_U64 count) +rdim_bake_string_map_loose_push_scope_slice(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_Scope *v, RDI_U64 count) { for(RDI_U64 idx = 0; idx < count; idx += 1) { for(RDIM_Local *local = v[idx].first_local; local != 0; local = local->next) { - rdim_bake_string_chunk_list_map_insert(arena, top, map, 4, local->name); + rdim_bake_string_map_loose_insert(arena, top, map, 4, local->name); } } } @@ -1933,194 +1875,59 @@ rdim_bake_string_chunk_list_map_push_scope_slice(RDIM_Arena *arena, RDIM_BakeStr //- rjf: list-granularity bake string gathering passes RDI_PROC void -rdim_bake_string_chunk_list_map_push_src_files(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_SrcFileChunkList *list) +rdim_bake_string_map_loose_push_src_files(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_SrcFileChunkList *list) { for(RDIM_SrcFileChunkNode *n = list->first; n != 0; n = n->next) { - rdim_bake_string_chunk_list_map_push_src_file_slice(arena, top, map, n->v, n->count); + rdim_bake_string_map_loose_push_src_file_slice(arena, top, map, n->v, n->count); } } RDI_PROC void -rdim_bake_string_chunk_list_map_push_units(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_UnitChunkList *list) +rdim_bake_string_map_loose_push_units(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_UnitChunkList *list) { for(RDIM_UnitChunkNode *n = list->first; n != 0; n = n->next) { - rdim_bake_string_chunk_list_map_push_unit_slice(arena, top, map, n->v, n->count); + rdim_bake_string_map_loose_push_unit_slice(arena, top, map, n->v, n->count); } } RDI_PROC void -rdim_bake_string_chunk_list_map_push_types(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_TypeChunkList *list) +rdim_bake_string_map_loose_push_types(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_TypeChunkList *list) { for(RDIM_TypeChunkNode *n = list->first; n != 0; n = n->next) { - rdim_bake_string_chunk_list_map_push_type_slice(arena, top, map, n->v, n->count); + rdim_bake_string_map_loose_push_type_slice(arena, top, map, n->v, n->count); } } RDI_PROC void -rdim_bake_string_chunk_list_map_push_udts(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_UDTChunkList *list) +rdim_bake_string_map_loose_push_udts(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_UDTChunkList *list) { for(RDIM_UDTChunkNode *n = list->first; n != 0; n = n->next) { - rdim_bake_string_chunk_list_map_push_udt_slice(arena, top, map, n->v, n->count); + rdim_bake_string_map_loose_push_udt_slice(arena, top, map, n->v, n->count); } } RDI_PROC void -rdim_bake_string_chunk_list_map_push_symbols(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_SymbolChunkList *list) +rdim_bake_string_map_loose_push_symbols(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_SymbolChunkList *list) { for(RDIM_SymbolChunkNode *n = list->first; n != 0; n = n->next) { - rdim_bake_string_chunk_list_map_push_symbol_slice(arena, top, map, n->v, n->count); + rdim_bake_string_map_loose_push_symbol_slice(arena, top, map, n->v, n->count); } } RDI_PROC void -rdim_bake_string_chunk_list_map_push_scopes(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_ScopeChunkList *list) +rdim_bake_string_map_loose_push_scopes(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_ScopeChunkList *list) { for(RDIM_ScopeChunkNode *n = list->first; n != 0; n = n->next) { - rdim_bake_string_chunk_list_map_push_scope_slice(arena, top, map, n->v, n->count); + rdim_bake_string_map_loose_push_scope_slice(arena, top, map, n->v, n->count); } } -//- rjf: bake string map from params - -RDI_PROC RDIM_BakeStringMap * -rdim_bake_string_map_from_params(RDIM_Arena *arena, RDIM_BakePathTree *path_tree, RDIM_BakeParams *params) -{ - //- rjf: set up map - RDIM_BakeStringMap *strings = rdim_push_array(arena, RDIM_BakeStringMap, 1); - strings->slots_count = params->procedures.total_count*2 + params->global_variables.total_count*2 + params->thread_variables.total_count*2 + params->types.total_count*2; - strings->slots = rdim_push_array(arena, RDIM_BakeStringNode *, strings->slots_count); - rdim_bake_string_map_insert(arena, strings, rdim_str8_lit("")); - - //- rjf: bake exe name - rdim_bake_string_map_insert(arena, strings, params->top_level_info.exe_name); - - //- rjf: bake binary section names - for(RDIM_BinarySectionNode *n = params->binary_sections.first; n != 0; n = n->next) - { - rdim_bake_string_map_insert(arena, strings, n->v.name); - } - - //- rjf: bake source file normalized full paths - for(RDIM_SrcFileChunkNode *n = params->src_files.first; n != 0; n = n->next) - { - for(RDI_U64 idx = 0; idx < n->count; idx += 1) - { - rdim_bake_string_map_insert(arena, strings, n->v[idx].normal_full_path); - } - } - - //- rjf: bake file path parts - for(RDIM_BakePathNode *n = path_tree->first; n != 0; n = n->next_order) - { - rdim_bake_string_map_insert(arena, strings, n->name); - } - - //- rjf: bake unit strings - RDIM_ProfScope("bake unit strings") - { - for(RDIM_UnitChunkNode *n = params->units.first; n != 0; n = n->next) - { - for(RDI_U64 idx = 0; idx < n->count; idx += 1) - { - rdim_bake_string_map_insert(arena, strings, n->v[idx].unit_name); - rdim_bake_string_map_insert(arena, strings, n->v[idx].compiler_name); - rdim_bake_string_map_insert(arena, strings, n->v[idx].source_file); - rdim_bake_string_map_insert(arena, strings, n->v[idx].object_file); - rdim_bake_string_map_insert(arena, strings, n->v[idx].archive_file); - rdim_bake_string_map_insert(arena, strings, n->v[idx].build_path); - } - } - } - - //- rjf: bake type strings - RDIM_ProfScope("bake type strings") - { - for(RDIM_TypeChunkNode *n = params->types.first; n != 0; n = n->next) - { - for(RDI_U64 idx = 0; idx < n->count; idx += 1) - { - rdim_bake_string_map_insert(arena, strings, n->v[idx].name); - } - } - } - - //- rjf: bake udt member names - RDIM_ProfScope("bake udt member names") - { - for(RDIM_UDTChunkNode *n = params->udts.first; n != 0; n = n->next) - { - for(RDI_U64 idx = 0; idx < n->count; idx += 1) - { - for(RDIM_UDTMember *mem = n->v[idx].first_member; mem != 0; mem = mem->next) - { - rdim_bake_string_map_insert(arena, strings, mem->name); - } - for(RDIM_UDTEnumVal *mem = n->v[idx].first_enum_val; mem != 0; mem = mem->next) - { - rdim_bake_string_map_insert(arena, strings, mem->name); - } - } - } - } - - //- rjf: bake src file names - RDIM_ProfScope("bake src file names") - { - for(RDIM_SrcFileChunkNode *n = params->src_files.first; n != 0; n = n->next) - { - for(RDI_U64 idx = 0; idx < n->count; idx += 1) - { - rdim_bake_string_map_insert(arena, strings, n->v[idx].normal_full_path); - } - } - } - - //- rjf: bake symbol names - RDIM_ProfScope("bake symbol names") - { - RDIM_SymbolChunkList *symbol_lists[] = - { - ¶ms->global_variables, - ¶ms->thread_variables, - ¶ms->procedures, - }; - for(RDI_U64 list_idx = 0; list_idx < sizeof(symbol_lists)/sizeof(symbol_lists[0]); list_idx += 1) - { - for(RDIM_SymbolChunkNode *n = symbol_lists[list_idx]->first; n != 0; n = n->next) - { - for(RDI_U64 idx = 0; idx < n->count; idx += 1) - { - rdim_bake_string_map_insert(arena, strings, n->v[idx].name); - rdim_bake_string_map_insert(arena, strings, n->v[idx].link_name); - } - } - } - } - - //- rjf: bake scope names - RDIM_ProfScope("bake scope names") - { - for(RDIM_ScopeChunkNode *n = params->scopes.first; n != 0; n = n->next) - { - for(RDI_U64 idx = 0; idx < n->count; idx += 1) - { - for(RDIM_Local *local = n->v[idx].first_local; local != 0; local = local->next) - { - rdim_bake_string_map_insert(arena, strings, local->name); - } - } - } - } - - return strings; -} - //- rjf: bake name map building RDI_PROC RDIM_BakeNameMap * @@ -2327,7 +2134,7 @@ rdim_bake_path_tree_from_params(RDIM_Arena *arena, RDIM_BakeParams *params) //- rjf: top-level info RDI_PROC RDIM_BakeSectionList -rdim_bake_top_level_info_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeParams *params) +rdim_bake_top_level_info_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeParams *params) { RDIM_BakeSectionList sections = {0}; RDI_TopLevelInfo *dst_tli = rdim_push_array(arena, RDI_TopLevelInfo, 1); @@ -2343,7 +2150,7 @@ rdim_bake_top_level_info_section_list_from_params(RDIM_Arena *arena, RDIM_BakeSt //- rjf: binary sections RDI_PROC RDIM_BakeSectionList -rdim_bake_binary_section_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeParams *params) +rdim_bake_binary_section_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeParams *params) { RDIM_BakeSectionList sections = {0}; RDIM_BinarySectionList *src_list = ¶ms->binary_sections; @@ -2491,7 +2298,7 @@ rdim_bake_section_list_from_unit(RDIM_Arena *arena, RDIM_Unit *unit) } RDI_PROC RDIM_BakeSectionList -rdim_bake_unit_top_level_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakePathTree *path_tree, RDIM_BakeParams *params) +rdim_bake_unit_top_level_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakePathTree *path_tree, RDIM_BakeParams *params) { RDIM_BakeSectionList sections = {0}; RDI_Unit *dst_base = rdim_push_array(arena, RDI_Unit, params->units.total_count+1); @@ -2715,7 +2522,7 @@ rdim_bake_unit_vmap_section_list_from_params(RDIM_Arena *arena, RDIM_BakeParams //- rjf: source files RDI_PROC RDIM_BakeSectionList -rdim_bake_src_file_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakePathTree *path_tree, RDIM_BakeParams *params) +rdim_bake_src_file_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakePathTree *path_tree, RDIM_BakeParams *params) { RDIM_BakeSectionList sections = {0}; @@ -2901,7 +2708,7 @@ rdim_bake_src_file_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMa //- rjf: type nodes RDI_PROC RDIM_BakeSectionList -rdim_bake_type_node_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeParams *params) +rdim_bake_type_node_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeParams *params) { //- rjf: build all type nodes RDI_TypeNode *type_nodes = push_array(arena, RDI_TypeNode, params->types.total_count+1); @@ -2974,7 +2781,7 @@ rdim_bake_type_node_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringM //- rjf: UDTs RDI_PROC RDIM_BakeSectionList -rdim_bake_udt_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeParams *params) +rdim_bake_udt_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeParams *params) { //- rjf: build tables RDI_UDT * udts = push_array(arena, RDI_UDT, params->udts.total_count+1); @@ -3044,7 +2851,7 @@ rdim_bake_udt_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFina //- rjf: global variables RDI_PROC RDIM_BakeSectionList -rdim_bake_global_variable_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeParams *params) +rdim_bake_global_variable_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeParams *params) { //- rjf: build all global variables RDI_GlobalVariable *global_variables = push_array(arena, RDI_GlobalVariable, params->global_variables.total_count+1); @@ -3165,7 +2972,7 @@ rdim_bake_global_vmap_section_list_from_params(RDIM_Arena *arena, RDIM_BakeParam //- rjf: thread variables RDI_PROC RDIM_BakeSectionList -rdim_bake_thread_variable_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeParams *params) +rdim_bake_thread_variable_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeParams *params) { //- rjf: build all thread variables RDI_ThreadVariable *thread_variables = push_array(arena, RDI_ThreadVariable, params->thread_variables.total_count+1); @@ -3207,7 +3014,7 @@ rdim_bake_thread_variable_section_list_from_params(RDIM_Arena *arena, RDIM_BakeS //- rjf: procedures RDI_PROC RDIM_BakeSectionList -rdim_bake_procedure_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeParams *params) +rdim_bake_procedure_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeParams *params) { //- rjf: build all procedures RDI_Procedure *procedures = push_array(arena, RDI_Procedure, params->procedures.total_count+1); @@ -3250,7 +3057,7 @@ rdim_bake_procedure_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringM //- rjf: scopes RDI_PROC RDIM_BakeSectionList -rdim_bake_scope_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeParams *params) +rdim_bake_scope_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeParams *params) { RDIM_Temp scratch = rdim_scratch_begin(&arena, 1); @@ -3479,7 +3286,7 @@ rdim_bake_scope_vmap_section_list_from_params(RDIM_Arena *arena, RDIM_BakeParams //- rjf: name maps RDI_PROC RDIM_BakeSectionList -rdim_bake_top_level_name_map_section_list_from_params_maps(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeParams *params, RDIM_BakeNameMap *name_maps[RDI_NameMapKind_COUNT]) +rdim_bake_top_level_name_map_section_list_from_params_maps(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeParams *params, RDIM_BakeNameMap *name_maps[RDI_NameMapKind_COUNT]) { RDIM_BakeSectionList sections = {0}; @@ -3519,7 +3326,7 @@ rdim_bake_top_level_name_map_section_list_from_params_maps(RDIM_Arena *arena, RD } RDI_PROC RDIM_BakeSectionList -rdim_bake_name_map_section_list_from_params_kind_map(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeParams *params, RDI_NameMapKind k, RDIM_BakeNameMap *map) +rdim_bake_name_map_section_list_from_params_kind_map(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeParams *params, RDI_NameMapKind k, RDIM_BakeNameMap *map) { RDIM_BakeSectionList sections = {0}; if(map != 0 && map->name_count != 0) @@ -3625,7 +3432,7 @@ rdim_bake_name_map_section_list_from_params_kind_map(RDIM_Arena *arena, RDIM_Bak //- rjf: file paths RDI_PROC RDIM_BakeSectionList -rdim_bake_file_path_section_list_from_path_tree(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakePathTree *path_tree) +rdim_bake_file_path_section_list_from_path_tree(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakePathTree *path_tree) { RDI_U32 dst_nodes_count = path_tree->count; RDI_FilePathNode *dst_nodes = rdim_push_array(arena, RDI_FilePathNode, dst_nodes_count); @@ -3660,7 +3467,7 @@ rdim_bake_file_path_section_list_from_path_tree(RDIM_Arena *arena, RDIM_BakeStri //- rjf: strings RDI_PROC RDIM_BakeSectionList -rdim_bake_string_section_list_from_string_map(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings) +rdim_bake_string_section_list_from_string_map(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings) { RDIM_BakeSectionList sections = {0}; RDI_U32 *str_offs = rdim_push_array_no_zero(arena, RDI_U32, strings->total_count + 1); diff --git a/src/lib_raddbgi_make/raddbgi_make.h b/src/lib_raddbgi_make/raddbgi_make.h index d28f7e55..6759c331 100644 --- a/src/lib_raddbgi_make/raddbgi_make.h +++ b/src/lib_raddbgi_make/raddbgi_make.h @@ -860,26 +860,26 @@ struct RDIM_BakeStringChunkList RDI_U64 total_count; }; -typedef struct RDIM_BakeStringChunkListMapTopology RDIM_BakeStringChunkListMapTopology; -struct RDIM_BakeStringChunkListMapTopology +typedef struct RDIM_BakeStringMapTopology RDIM_BakeStringMapTopology; +struct RDIM_BakeStringMapTopology { RDI_U64 slots_count; }; -typedef struct RDIM_BakeStringChunkListMapBaseIndices RDIM_BakeStringChunkListMapBaseIndices; -struct RDIM_BakeStringChunkListMapBaseIndices +typedef struct RDIM_BakeStringMapBaseIndices RDIM_BakeStringMapBaseIndices; +struct RDIM_BakeStringMapBaseIndices { RDI_U64 *slots_base_idxs; }; -typedef struct RDIM_BakeStringChunkListMap RDIM_BakeStringChunkListMap; -struct RDIM_BakeStringChunkListMap +typedef struct RDIM_BakeStringMapLoose RDIM_BakeStringMapLoose; +struct RDIM_BakeStringMapLoose { RDIM_BakeStringChunkList **slots; }; -typedef struct RDIM_BakeStringMapFinal RDIM_BakeStringMapFinal; -struct RDIM_BakeStringMapFinal +typedef struct RDIM_BakeStringMapTight RDIM_BakeStringMapTight; +struct RDIM_BakeStringMapTight { RDIM_BakeStringChunkList *slots; RDI_U64 *slots_base_idxs; @@ -887,25 +887,6 @@ struct RDIM_BakeStringMapFinal RDI_U64 total_count; }; -typedef struct RDIM_BakeStringNode RDIM_BakeStringNode; -struct RDIM_BakeStringNode -{ - RDIM_BakeStringNode *hash_next; - RDIM_BakeStringNode *order_next; - RDIM_BakeString v; - RDI_U32 idx; -}; - -typedef struct RDIM_BakeStringMap RDIM_BakeStringMap; -struct RDIM_BakeStringMap -{ - RDIM_BakeStringNode *order_first; - RDIM_BakeStringNode *order_last; - RDIM_BakeStringNode **slots; - RDI_U64 slots_count; - RDI_U32 count; -}; - //- rjf: index runs typedef struct RDIM_BakeIdxRunNode RDIM_BakeIdxRunNode; @@ -1147,18 +1128,14 @@ RDI_PROC void rdim_bake_string_chunk_list_concat_in_place(RDIM_BakeStringChunkLi RDI_PROC RDIM_BakeStringChunkList rdim_bake_string_chunk_list_sorted_from_unsorted(RDIM_Arena *arena, RDIM_BakeStringChunkList *src); //- rjf: bake string chunk list maps -RDI_PROC RDIM_BakeStringChunkListMap *rdim_bake_string_chunk_list_map_make(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top); -RDI_PROC void rdim_bake_string_chunk_list_map_insert(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *map_topology, RDIM_BakeStringChunkListMap *map, RDI_U64 chunk_cap, RDIM_String8 string); -RDI_PROC void rdim_bake_string_chunk_list_map_join_in_place(RDIM_BakeStringChunkListMapTopology *map_topology, RDIM_BakeStringChunkListMap *dst, RDIM_BakeStringChunkListMap *src); -RDI_PROC RDIM_BakeStringChunkListMapBaseIndices rdim_bake_string_chunk_list_base_indices_from_map(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *map_topology, RDIM_BakeStringChunkListMap *map); +RDI_PROC RDIM_BakeStringMapLoose *rdim_bake_string_map_loose_make(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top); +RDI_PROC void rdim_bake_string_map_loose_insert(RDIM_Arena *arena, RDIM_BakeStringMapTopology *map_topology, RDIM_BakeStringMapLoose *map, RDI_U64 chunk_cap, RDIM_String8 string); +RDI_PROC void rdim_bake_string_map_loose_join_in_place(RDIM_BakeStringMapTopology *map_topology, RDIM_BakeStringMapLoose *dst, RDIM_BakeStringMapLoose *src); +RDI_PROC RDIM_BakeStringMapBaseIndices rdim_bake_string_map_base_indices_from_map_loose(RDIM_Arena *arena, RDIM_BakeStringMapTopology *map_topology, RDIM_BakeStringMapLoose *map); //- rjf: finalized bake string map -RDI_PROC RDIM_BakeStringMapFinal rdim_bake_string_map_final_from_chunk_list_map(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *map_topology, RDIM_BakeStringChunkListMapBaseIndices *map_base_indices, RDIM_BakeStringChunkListMap *map); -RDI_PROC RDI_U64 rdim_bake_idx_from_string(RDIM_BakeStringMapFinal *map, RDIM_String8 string); - -//- rjf: bake string map reading/writing -RDI_PROC RDI_U32 rdim_bake_idx_from_string_OLD(RDIM_BakeStringMap *map, RDIM_String8 string); -RDI_PROC RDI_U32 rdim_bake_string_map_insert(RDIM_Arena *arena, RDIM_BakeStringMap *map, RDIM_String8 string); +RDI_PROC RDIM_BakeStringMapTight rdim_bake_string_map_tight_from_loose(RDIM_Arena *arena, RDIM_BakeStringMapTopology *map_topology, RDIM_BakeStringMapBaseIndices *map_base_indices, RDIM_BakeStringMapLoose *map); +RDI_PROC RDI_U64 rdim_bake_idx_from_string(RDIM_BakeStringMapTight *map, RDIM_String8 string); //- rjf: bake idx run map reading/writing RDI_PROC RDI_U64 rdim_hash_from_idx_run(RDI_U32 *idx_run, RDI_U32 count); @@ -1184,28 +1161,25 @@ RDI_PROC void rdim_bake_section_list_concat_in_place(RDIM_BakeSectionList *dst, //~ rjf: [Baking] Build Artifacts -> Interned/Deduplicated Data Structures //- rjf: basic bake string gathering passes -RDI_PROC void rdim_bake_string_chunk_list_map_push_top_level_info(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_TopLevelInfo *tli); -RDI_PROC void rdim_bake_string_chunk_list_map_push_binary_sections(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_BinarySectionList *secs); -RDI_PROC void rdim_bake_string_chunk_list_map_push_path_tree(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_BakePathTree *path_tree); +RDI_PROC void rdim_bake_string_map_loose_push_top_level_info(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_TopLevelInfo *tli); +RDI_PROC void rdim_bake_string_map_loose_push_binary_sections(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_BinarySectionList *secs); +RDI_PROC void rdim_bake_string_map_loose_push_path_tree(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_BakePathTree *path_tree); //- rjf: slice-granularity bake string gathering passes -RDI_PROC void rdim_bake_string_chunk_list_map_push_src_file_slice(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_SrcFile *v, RDI_U64 count); -RDI_PROC void rdim_bake_string_chunk_list_map_push_unit_slice(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_Unit *v, RDI_U64 count); -RDI_PROC void rdim_bake_string_chunk_list_map_push_type_slice(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_Type *v, RDI_U64 count); -RDI_PROC void rdim_bake_string_chunk_list_map_push_udt_slice(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_UDT *v, RDI_U64 count); -RDI_PROC void rdim_bake_string_chunk_list_map_push_symbol_slice(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_Symbol *v, RDI_U64 count); -RDI_PROC void rdim_bake_string_chunk_list_map_push_scope_slice(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_Scope *v, RDI_U64 count); +RDI_PROC void rdim_bake_string_map_loose_push_src_file_slice(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_SrcFile *v, RDI_U64 count); +RDI_PROC void rdim_bake_string_map_loose_push_unit_slice(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_Unit *v, RDI_U64 count); +RDI_PROC void rdim_bake_string_map_loose_push_type_slice(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_Type *v, RDI_U64 count); +RDI_PROC void rdim_bake_string_map_loose_push_udt_slice(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_UDT *v, RDI_U64 count); +RDI_PROC void rdim_bake_string_map_loose_push_symbol_slice(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_Symbol *v, RDI_U64 count); +RDI_PROC void rdim_bake_string_map_loose_push_scope_slice(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_Scope *v, RDI_U64 count); //- rjf: list-granularity bake string gathering passes -RDI_PROC void rdim_bake_string_chunk_list_map_push_src_files(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_SrcFileChunkList *list); -RDI_PROC void rdim_bake_string_chunk_list_map_push_units(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_UnitChunkList *list); -RDI_PROC void rdim_bake_string_chunk_list_map_push_types(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_TypeChunkList *list); -RDI_PROC void rdim_bake_string_chunk_list_map_push_udts(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_UDTChunkList *list); -RDI_PROC void rdim_bake_string_chunk_list_map_push_symbols(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_SymbolChunkList *list); -RDI_PROC void rdim_bake_string_chunk_list_map_push_scopes(RDIM_Arena *arena, RDIM_BakeStringChunkListMapTopology *top, RDIM_BakeStringChunkListMap *map, RDIM_ScopeChunkList *list); - -//- rjf: bake string map building -RDI_PROC RDIM_BakeStringMap *rdim_bake_string_map_from_params(RDIM_Arena *arena, RDIM_BakePathTree *path_tree, RDIM_BakeParams *params); +RDI_PROC void rdim_bake_string_map_loose_push_src_files(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_SrcFileChunkList *list); +RDI_PROC void rdim_bake_string_map_loose_push_units(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_UnitChunkList *list); +RDI_PROC void rdim_bake_string_map_loose_push_types(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_TypeChunkList *list); +RDI_PROC void rdim_bake_string_map_loose_push_udts(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_UDTChunkList *list); +RDI_PROC void rdim_bake_string_map_loose_push_symbols(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_SymbolChunkList *list); +RDI_PROC void rdim_bake_string_map_loose_push_scopes(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_ScopeChunkList *list); //- rjf: bake name map building RDI_PROC RDIM_BakeNameMap *rdim_bake_name_map_from_kind_params(RDIM_Arena *arena, RDI_NameMapKind kind, RDIM_BakeParams *params); @@ -1220,54 +1194,54 @@ RDI_PROC RDIM_BakePathTree *rdim_bake_path_tree_from_params(RDIM_Arena *arena, R //~ rjf: [Baking] Build Artifacts -> Data Section Lists //- rjf: top-level info -RDI_PROC RDIM_BakeSectionList rdim_bake_top_level_info_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeParams *params); +RDI_PROC RDIM_BakeSectionList rdim_bake_top_level_info_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeParams *params); //- rjf: binary sections -RDI_PROC RDIM_BakeSectionList rdim_bake_binary_section_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeParams *params); +RDI_PROC RDIM_BakeSectionList rdim_bake_binary_section_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeParams *params); //- rjf: units RDI_PROC RDIM_BakeSectionList rdim_bake_section_list_from_unit(RDIM_Arena *arena, RDIM_Unit *unit); -RDI_PROC RDIM_BakeSectionList rdim_bake_unit_top_level_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakePathTree *path_tree, RDIM_BakeParams *params); +RDI_PROC RDIM_BakeSectionList rdim_bake_unit_top_level_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakePathTree *path_tree, RDIM_BakeParams *params); //- rjf: unit vmap RDI_PROC RDIM_BakeSectionList rdim_bake_unit_vmap_section_list_from_params(RDIM_Arena *arena, RDIM_BakeParams *params); //- rjf: source files -RDI_PROC RDIM_BakeSectionList rdim_bake_src_file_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakePathTree *path_tree, RDIM_BakeParams *params); +RDI_PROC RDIM_BakeSectionList rdim_bake_src_file_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakePathTree *path_tree, RDIM_BakeParams *params); //- rjf: type nodes -RDI_PROC RDIM_BakeSectionList rdim_bake_type_node_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeParams *params); +RDI_PROC RDIM_BakeSectionList rdim_bake_type_node_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeParams *params); //- rjf: UDTs -RDI_PROC RDIM_BakeSectionList rdim_bake_udt_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeParams *params); +RDI_PROC RDIM_BakeSectionList rdim_bake_udt_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeParams *params); //- rjf: global variables -RDI_PROC RDIM_BakeSectionList rdim_bake_global_variable_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeParams *params); +RDI_PROC RDIM_BakeSectionList rdim_bake_global_variable_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeParams *params); //- rjf: global vmap RDI_PROC RDIM_BakeSectionList rdim_bake_global_vmap_section_list_from_params(RDIM_Arena *arena, RDIM_BakeParams *params); //- rjf: thread variables -RDI_PROC RDIM_BakeSectionList rdim_bake_thread_variable_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeParams *params); +RDI_PROC RDIM_BakeSectionList rdim_bake_thread_variable_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeParams *params); //- rjf: procedures -RDI_PROC RDIM_BakeSectionList rdim_bake_procedure_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeParams *params); +RDI_PROC RDIM_BakeSectionList rdim_bake_procedure_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeParams *params); //- rjf: scopes -RDI_PROC RDIM_BakeSectionList rdim_bake_scope_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeParams *params); +RDI_PROC RDIM_BakeSectionList rdim_bake_scope_section_list_from_params(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeParams *params); //- rjf: scope vmap RDI_PROC RDIM_BakeSectionList rdim_bake_scope_vmap_section_list_from_params(RDIM_Arena *arena, RDIM_BakeParams *params); //- rjf: name maps -RDI_PROC RDIM_BakeSectionList rdim_bake_top_level_name_map_section_list_from_params_maps(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeParams *params, RDIM_BakeNameMap *name_maps[RDI_NameMapKind_COUNT]); -RDI_PROC RDIM_BakeSectionList rdim_bake_name_map_section_list_from_params_kind_map(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeParams *params, RDI_NameMapKind k, RDIM_BakeNameMap *map); +RDI_PROC RDIM_BakeSectionList rdim_bake_top_level_name_map_section_list_from_params_maps(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeParams *params, RDIM_BakeNameMap *name_maps[RDI_NameMapKind_COUNT]); +RDI_PROC RDIM_BakeSectionList rdim_bake_name_map_section_list_from_params_kind_map(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeParams *params, RDI_NameMapKind k, RDIM_BakeNameMap *map); //- rjf: file paths -RDI_PROC RDIM_BakeSectionList rdim_bake_file_path_section_list_from_path_tree(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings, RDIM_BakePathTree *path_tree); +RDI_PROC RDIM_BakeSectionList rdim_bake_file_path_section_list_from_path_tree(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakePathTree *path_tree); //- rjf: strings -RDI_PROC RDIM_BakeSectionList rdim_bake_string_section_list_from_string_map(RDIM_Arena *arena, RDIM_BakeStringMapFinal *strings); +RDI_PROC RDIM_BakeSectionList rdim_bake_string_section_list_from_string_map(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings); //- rjf: index runs RDI_PROC RDIM_BakeSectionList rdim_bake_idx_run_section_list_from_idx_run_map(RDIM_Arena *arena, RDIM_BakeIdxRunMap *idx_runs); diff --git a/src/raddbgi_from_pdb/raddbgi_from_pdb.c b/src/raddbgi_from_pdb/raddbgi_from_pdb.c index 747ced64..da0fe2c0 100644 --- a/src/raddbgi_from_pdb/raddbgi_from_pdb.c +++ b/src/raddbgi_from_pdb/raddbgi_from_pdb.c @@ -3476,14 +3476,14 @@ p2r_convert(Arena *arena, P2R_User2Convert *in) internal TS_TASK_FUNCTION_DEF(p2r_bake_src_files_strings_task__entry_point) { P2R_BakeSrcFilesStringsIn *in = (P2R_BakeSrcFilesStringsIn *)p; - ProfScope("bake src file strings") rdim_bake_string_chunk_list_map_push_src_files(arena, in->top, in->maps[thread_idx], in->list); + ProfScope("bake src file strings") rdim_bake_string_map_loose_push_src_files(arena, in->top, in->maps[thread_idx], in->list); return 0; } internal TS_TASK_FUNCTION_DEF(p2r_bake_units_strings_task__entry_point) { P2R_BakeUnitsStringsIn *in = (P2R_BakeUnitsStringsIn *)p; - ProfScope("bake unit strings") rdim_bake_string_chunk_list_map_push_units(arena, in->top, in->maps[thread_idx], in->list); + ProfScope("bake unit strings") rdim_bake_string_map_loose_push_units(arena, in->top, in->maps[thread_idx], in->list); return 0; } @@ -3494,7 +3494,7 @@ internal TS_TASK_FUNCTION_DEF(p2r_bake_types_strings_task__entry_point) { for(P2R_BakeTypesStringsInNode *n = in->first; n != 0; n = n->next) { - rdim_bake_string_chunk_list_map_push_type_slice(arena, in->top, in->maps[thread_idx], n->v, n->count); + rdim_bake_string_map_loose_push_type_slice(arena, in->top, in->maps[thread_idx], n->v, n->count); } } return 0; @@ -3507,7 +3507,7 @@ internal TS_TASK_FUNCTION_DEF(p2r_bake_udts_strings_task__entry_point) { for(P2R_BakeUDTsStringsInNode *n = in->first; n != 0; n = n->next) { - rdim_bake_string_chunk_list_map_push_udt_slice(arena, in->top, in->maps[thread_idx], n->v, n->count); + rdim_bake_string_map_loose_push_udt_slice(arena, in->top, in->maps[thread_idx], n->v, n->count); } } return 0; @@ -3520,7 +3520,7 @@ internal TS_TASK_FUNCTION_DEF(p2r_bake_symbols_strings_task__entry_point) { for(P2R_BakeSymbolsStringsInNode *n = in->first; n != 0; n = n->next) { - rdim_bake_string_chunk_list_map_push_symbol_slice(arena, in->top, in->maps[thread_idx], n->v, n->count); + rdim_bake_string_map_loose_push_symbol_slice(arena, in->top, in->maps[thread_idx], n->v, n->count); } } return 0; @@ -3533,7 +3533,7 @@ internal TS_TASK_FUNCTION_DEF(p2r_bake_scopes_strings_task__entry_point) { for(P2R_BakeScopesStringsInNode *n = in->first; n != 0; n = n->next) { - rdim_bake_string_chunk_list_map_push_scope_slice(arena, in->top, in->maps[thread_idx], n->v, n->count); + rdim_bake_string_map_loose_push_scope_slice(arena, in->top, in->maps[thread_idx], n->v, n->count); } } return 0; @@ -3594,14 +3594,6 @@ internal TS_TASK_FUNCTION_DEF(p2r_bake_string_map_sort_task__entry_point) //- rjf: pass 1: interner/deduper map builds -internal TS_TASK_FUNCTION_DEF(p2r_build_bake_string_map_task__entry_point) -{ - P2R_BuildBakeStringMapIn *in = (P2R_BuildBakeStringMapIn *)p; - RDIM_BakeStringMap *strings = 0; - ProfScope("build interned string map") strings = rdim_bake_string_map_from_params(arena, in->path_tree, in->params); - return strings; -} - internal TS_TASK_FUNCTION_DEF(p2r_build_bake_name_map_task__entry_point) { P2R_BuildBakeNameMapIn *in = (P2R_BuildBakeNameMapIn *)p; @@ -3775,23 +3767,28 @@ p2r_bake(Arena *arena, P2R_Convert2Bake *in) } //- rjf: kick off string map building tasks - RDIM_BakeStringChunkListMapTopology bake_string_chunk_list_map_topology = {(params->procedures.total_count*1 + - params->global_variables.total_count*1 + - params->thread_variables.total_count*1 + - params->types.total_count/2)}; - RDIM_BakeStringChunkListMap **bake_string_chunk_list_maps__in_progress = push_array(scratch.arena, RDIM_BakeStringChunkListMap *, ts_thread_count()); + RDIM_BakeStringMapTopology bake_string_map_topology = {(params->procedures.total_count*1 + + params->global_variables.total_count*1 + + params->thread_variables.total_count*1 + + params->types.total_count/2)}; + RDIM_BakeStringMapLoose **bake_string_maps__in_progress = push_array(scratch.arena, RDIM_BakeStringMapLoose *, ts_thread_count()); for(U64 idx = 0; idx < ts_thread_count(); idx += 1) { - bake_string_chunk_list_maps__in_progress[idx] = rdim_bake_string_chunk_list_map_make(arena, &bake_string_chunk_list_map_topology); + bake_string_maps__in_progress[idx] = rdim_bake_string_map_loose_make(arena, &bake_string_map_topology); } TS_TicketList bake_string_map_build_tickets = {0}; { + // rjf: basics + rdim_bake_string_map_loose_push_top_level_info(arena, &bake_string_map_topology, bake_string_maps__in_progress[0], ¶ms->top_level_info); + rdim_bake_string_map_loose_push_binary_sections(arena, &bake_string_map_topology, bake_string_maps__in_progress[0], ¶ms->binary_sections); + rdim_bake_string_map_loose_push_path_tree(arena, &bake_string_map_topology, bake_string_maps__in_progress[0], path_tree); + // rjf: src files ProfScope("kick off src files string map build task") { P2R_BakeSrcFilesStringsIn *in = push_array(scratch.arena, P2R_BakeSrcFilesStringsIn, 1); - in->top = &bake_string_chunk_list_map_topology; - in->maps = bake_string_chunk_list_maps__in_progress; + in->top = &bake_string_map_topology; + in->maps = bake_string_maps__in_progress; in->list = ¶ms->src_files; ts_ticket_list_push(scratch.arena, &bake_string_map_build_tickets, ts_kickoff(p2r_bake_src_files_strings_task__entry_point, 0, in)); } @@ -3800,8 +3797,8 @@ p2r_bake(Arena *arena, P2R_Convert2Bake *in) ProfScope("kick off units string map build task") { P2R_BakeUnitsStringsIn *in = push_array(scratch.arena, P2R_BakeUnitsStringsIn, 1); - in->top = &bake_string_chunk_list_map_topology; - in->maps = bake_string_chunk_list_maps__in_progress; + in->top = &bake_string_map_topology; + in->maps = bake_string_maps__in_progress; in->list = ¶ms->units; ts_ticket_list_push(scratch.arena, &bake_string_map_build_tickets, ts_kickoff(p2r_bake_units_strings_task__entry_point, 0, in)); } @@ -3816,8 +3813,8 @@ p2r_bake(Arena *arena, P2R_Convert2Bake *in) for(U64 task_idx = 0; task_idx < tasks_per_this_chunk; task_idx += 1) { P2R_BakeTypesStringsIn *in = push_array(scratch.arena, P2R_BakeTypesStringsIn, 1); - in->top = &bake_string_chunk_list_map_topology; - in->maps = bake_string_chunk_list_maps__in_progress; + in->top = &bake_string_map_topology; + in->maps = bake_string_maps__in_progress; P2R_BakeTypesStringsInNode *n = push_array(scratch.arena, P2R_BakeTypesStringsInNode, 1); SLLQueuePush(in->first, in->last, n); n->v = chunk->v + task_idx*items_per_task; @@ -3837,8 +3834,8 @@ p2r_bake(Arena *arena, P2R_Convert2Bake *in) for(U64 task_idx = 0; task_idx < tasks_per_this_chunk; task_idx += 1) { P2R_BakeUDTsStringsIn *in = push_array(scratch.arena, P2R_BakeUDTsStringsIn, 1); - in->top = &bake_string_chunk_list_map_topology; - in->maps = bake_string_chunk_list_maps__in_progress; + in->top = &bake_string_map_topology; + in->maps = bake_string_maps__in_progress; P2R_BakeUDTsStringsInNode *n = push_array(scratch.arena, P2R_BakeUDTsStringsInNode, 1); SLLQueuePush(in->first, in->last, n); n->v = chunk->v + task_idx*items_per_task; @@ -3866,8 +3863,8 @@ p2r_bake(Arena *arena, P2R_Convert2Bake *in) for(U64 task_idx = 0; task_idx < tasks_per_this_chunk; task_idx += 1) { P2R_BakeSymbolsStringsIn *in = push_array(scratch.arena, P2R_BakeSymbolsStringsIn, 1); - in->top = &bake_string_chunk_list_map_topology; - in->maps = bake_string_chunk_list_maps__in_progress; + in->top = &bake_string_map_topology; + in->maps = bake_string_maps__in_progress; P2R_BakeSymbolsStringsInNode *n = push_array(scratch.arena, P2R_BakeSymbolsStringsInNode, 1); SLLQueuePush(in->first, in->last, n); n->v = chunk->v + task_idx*items_per_task; @@ -3888,8 +3885,8 @@ p2r_bake(Arena *arena, P2R_Convert2Bake *in) for(U64 task_idx = 0; task_idx < tasks_per_this_chunk; task_idx += 1) { P2R_BakeScopesStringsIn *in = push_array(scratch.arena, P2R_BakeScopesStringsIn, 1); - in->top = &bake_string_chunk_list_map_topology; - in->maps = bake_string_chunk_list_maps__in_progress; + in->top = &bake_string_map_topology; + in->maps = bake_string_maps__in_progress; P2R_BakeScopesStringsInNode *n = push_array(scratch.arena, P2R_BakeScopesStringsInNode, 1); SLLQueuePush(in->first, in->last, n); n->v = chunk->v + task_idx*items_per_task; @@ -3922,21 +3919,21 @@ p2r_bake(Arena *arena, P2R_Convert2Bake *in) } //- rjf: produce joined string map - RDIM_BakeStringChunkListMap *unsorted_bake_string_chunk_list_map = rdim_bake_string_chunk_list_map_make(arena, &bake_string_chunk_list_map_topology); + RDIM_BakeStringMapLoose *unsorted_bake_string_map = rdim_bake_string_map_loose_make(arena, &bake_string_map_topology); ProfScope("produce joined string map") { U64 slots_per_task = 16384; - U64 num_tasks = (bake_string_chunk_list_map_topology.slots_count+slots_per_task-1)/slots_per_task; + U64 num_tasks = (bake_string_map_topology.slots_count+slots_per_task-1)/slots_per_task; TS_Ticket *task_tickets = push_array(scratch.arena, TS_Ticket, num_tasks); // rjf: kickoff tasks for(U64 task_idx = 0; task_idx < num_tasks; task_idx += 1) { P2R_JoinBakeStringMapSlotsIn *in = push_array(scratch.arena, P2R_JoinBakeStringMapSlotsIn, 1); - in->top = &bake_string_chunk_list_map_topology; - in->src_maps = bake_string_chunk_list_maps__in_progress; + in->top = &bake_string_map_topology; + in->src_maps = bake_string_maps__in_progress; in->src_maps_count = ts_thread_count(); - in->dst_map = unsorted_bake_string_chunk_list_map; + in->dst_map = unsorted_bake_string_map; in->slot_idx_range = r1u64(task_idx*slots_per_task, task_idx*slots_per_task + slots_per_task); in->slot_idx_range.max = Min(in->slot_idx_range.max, in->top->slots_count); task_tickets[task_idx] = ts_kickoff(p2r_bake_string_map_join_task__entry_point, 0, in); @@ -3951,22 +3948,22 @@ p2r_bake(Arena *arena, P2R_Convert2Bake *in) //- rjf: kick off string map sorting tasks TS_TicketList sort_bake_string_map_task_tickets = {0}; - RDIM_BakeStringChunkListMap *sorted_bake_string_chunk_list_map__in_progress = rdim_bake_string_chunk_list_map_make(arena, &bake_string_chunk_list_map_topology); + RDIM_BakeStringMapLoose *sorted_bake_string_map__in_progress = rdim_bake_string_map_loose_make(arena, &bake_string_map_topology); { U64 slots_per_task = 4096; - U64 num_tasks = (bake_string_chunk_list_map_topology.slots_count+slots_per_task-1)/slots_per_task; + U64 num_tasks = (bake_string_map_topology.slots_count+slots_per_task-1)/slots_per_task; for(U64 task_idx = 0; task_idx < num_tasks; task_idx += 1) { P2R_SortBakeStringMapSlotsIn *in = push_array(scratch.arena, P2R_SortBakeStringMapSlotsIn, 1); { - in->top = &bake_string_chunk_list_map_topology; - in->src_map = unsorted_bake_string_chunk_list_map; - in->dst_map = sorted_bake_string_chunk_list_map__in_progress; + in->top = &bake_string_map_topology; + in->src_map = unsorted_bake_string_map; + in->dst_map = sorted_bake_string_map__in_progress; in->slot_idx = task_idx*slots_per_task; in->slot_count = slots_per_task; - if(in->slot_idx+in->slot_count > bake_string_chunk_list_map_topology.slots_count) + if(in->slot_idx+in->slot_count > bake_string_map_topology.slots_count) { - in->slot_count = bake_string_chunk_list_map_topology.slots_count - in->slot_idx; + in->slot_count = bake_string_map_topology.slots_count - in->slot_idx; } } ts_ticket_list_push(scratch.arena, &sort_bake_string_map_task_tickets, ts_kickoff(p2r_bake_string_map_sort_task__entry_point, 0, in)); @@ -3981,14 +3978,14 @@ p2r_bake(Arena *arena, P2R_Convert2Bake *in) ts_join(n->v, max_U64); } } - RDIM_BakeStringChunkListMap *sorted_bake_string_chunk_list_map = sorted_bake_string_chunk_list_map__in_progress; + RDIM_BakeStringMapLoose *sorted_bake_string_map = sorted_bake_string_map__in_progress; //- rjf: build finalized string map ProfBegin("build finalized string map base indices"); - RDIM_BakeStringChunkListMapBaseIndices bake_string_chunk_list_map_base_idxes = rdim_bake_string_chunk_list_base_indices_from_map(arena, &bake_string_chunk_list_map_topology, sorted_bake_string_chunk_list_map); + RDIM_BakeStringMapBaseIndices bake_string_map_base_idxes = rdim_bake_string_map_base_indices_from_map_loose(arena, &bake_string_map_topology, sorted_bake_string_map); ProfEnd(); ProfBegin("build finalized string map"); - RDIM_BakeStringMapFinal bake_strings = rdim_bake_string_map_final_from_chunk_list_map(arena, &bake_string_chunk_list_map_topology, &bake_string_chunk_list_map_base_idxes, sorted_bake_string_chunk_list_map); + RDIM_BakeStringMapTight bake_strings = rdim_bake_string_map_tight_from_loose(arena, &bake_string_map_topology, &bake_string_map_base_idxes, sorted_bake_string_map); ProfEnd(); //- rjf: kick off pass 2 tasks diff --git a/src/raddbgi_from_pdb/raddbgi_from_pdb.h b/src/raddbgi_from_pdb/raddbgi_from_pdb.h index 860dde62..7b1ae67e 100644 --- a/src/raddbgi_from_pdb/raddbgi_from_pdb.h +++ b/src/raddbgi_from_pdb/raddbgi_from_pdb.h @@ -248,16 +248,16 @@ struct P2R_SymbolStreamConvertOut typedef struct P2R_BakeSrcFilesStringsIn P2R_BakeSrcFilesStringsIn; struct P2R_BakeSrcFilesStringsIn { - RDIM_BakeStringChunkListMapTopology *top; - RDIM_BakeStringChunkListMap **maps; + RDIM_BakeStringMapTopology *top; + RDIM_BakeStringMapLoose **maps; RDIM_SrcFileChunkList *list; }; typedef struct P2R_BakeUnitsStringsIn P2R_BakeUnitsStringsIn; struct P2R_BakeUnitsStringsIn { - RDIM_BakeStringChunkListMapTopology *top; - RDIM_BakeStringChunkListMap **maps; + RDIM_BakeStringMapTopology *top; + RDIM_BakeStringMapLoose **maps; RDIM_UnitChunkList *list; }; @@ -272,8 +272,8 @@ struct P2R_BakeTypesStringsInNode typedef struct P2R_BakeTypesStringsIn P2R_BakeTypesStringsIn; struct P2R_BakeTypesStringsIn { - RDIM_BakeStringChunkListMapTopology *top; - RDIM_BakeStringChunkListMap **maps; + RDIM_BakeStringMapTopology *top; + RDIM_BakeStringMapLoose **maps; P2R_BakeTypesStringsInNode *first; P2R_BakeTypesStringsInNode *last; }; @@ -289,8 +289,8 @@ struct P2R_BakeUDTsStringsInNode typedef struct P2R_BakeUDTsStringsIn P2R_BakeUDTsStringsIn; struct P2R_BakeUDTsStringsIn { - RDIM_BakeStringChunkListMapTopology *top; - RDIM_BakeStringChunkListMap **maps; + RDIM_BakeStringMapTopology *top; + RDIM_BakeStringMapLoose **maps; P2R_BakeUDTsStringsInNode *first; P2R_BakeUDTsStringsInNode *last; }; @@ -306,8 +306,8 @@ struct P2R_BakeSymbolsStringsInNode typedef struct P2R_BakeSymbolsStringsIn P2R_BakeSymbolsStringsIn; struct P2R_BakeSymbolsStringsIn { - RDIM_BakeStringChunkListMapTopology *top; - RDIM_BakeStringChunkListMap **maps; + RDIM_BakeStringMapTopology *top; + RDIM_BakeStringMapLoose **maps; P2R_BakeSymbolsStringsInNode *first; P2R_BakeSymbolsStringsInNode *last; }; @@ -323,8 +323,8 @@ struct P2R_BakeScopesStringsInNode typedef struct P2R_BakeScopesStringsIn P2R_BakeScopesStringsIn; struct P2R_BakeScopesStringsIn { - RDIM_BakeStringChunkListMapTopology *top; - RDIM_BakeStringChunkListMap **maps; + RDIM_BakeStringMapTopology *top; + RDIM_BakeStringMapLoose **maps; P2R_BakeScopesStringsInNode *first; P2R_BakeScopesStringsInNode *last; }; @@ -334,10 +334,10 @@ struct P2R_BakeScopesStringsIn typedef struct P2R_JoinBakeStringMapSlotsIn P2R_JoinBakeStringMapSlotsIn; struct P2R_JoinBakeStringMapSlotsIn { - RDIM_BakeStringChunkListMapTopology *top; - RDIM_BakeStringChunkListMap **src_maps; + RDIM_BakeStringMapTopology *top; + RDIM_BakeStringMapLoose **src_maps; U64 src_maps_count; - RDIM_BakeStringChunkListMap *dst_map; + RDIM_BakeStringMapLoose *dst_map; Rng1U64 slot_idx_range; }; @@ -346,9 +346,9 @@ struct P2R_JoinBakeStringMapSlotsIn typedef struct P2R_SortBakeStringMapSlotsIn P2R_SortBakeStringMapSlotsIn; struct P2R_SortBakeStringMapSlotsIn { - RDIM_BakeStringChunkListMapTopology *top; - RDIM_BakeStringChunkListMap *src_map; - RDIM_BakeStringChunkListMap *dst_map; + RDIM_BakeStringMapTopology *top; + RDIM_BakeStringMapLoose *src_map; + RDIM_BakeStringMapLoose *dst_map; U64 slot_idx; U64 slot_count; }; @@ -374,7 +374,7 @@ struct P2R_BuildBakeNameMapIn typedef struct P2R_BakeUnitsTopLevelIn P2R_BakeUnitsTopLevelIn; struct P2R_BakeUnitsTopLevelIn { - RDIM_BakeStringMapFinal *strings; + RDIM_BakeStringMapTight *strings; RDIM_BakePathTree *path_tree; RDIM_BakeParams *params; }; @@ -394,7 +394,7 @@ struct P2R_BakeUnitVMapIn typedef struct P2R_BakeSrcFilesIn P2R_BakeSrcFilesIn; struct P2R_BakeSrcFilesIn { - RDIM_BakeStringMapFinal *strings; + RDIM_BakeStringMapTight *strings; RDIM_BakePathTree *path_tree; RDIM_BakeParams *params; }; @@ -402,14 +402,14 @@ struct P2R_BakeSrcFilesIn typedef struct P2R_BakeUDTsIn P2R_BakeUDTsIn; struct P2R_BakeUDTsIn { - RDIM_BakeStringMapFinal *strings; + RDIM_BakeStringMapTight *strings; RDIM_BakeParams *params; }; typedef struct P2R_BakeGlobalVariablesIn P2R_BakeGlobalVariablesIn; struct P2R_BakeGlobalVariablesIn { - RDIM_BakeStringMapFinal *strings; + RDIM_BakeStringMapTight *strings; RDIM_BakeParams *params; }; @@ -422,21 +422,21 @@ struct P2R_BakeGlobalVMapIn typedef struct P2R_BakeThreadVariablesIn P2R_BakeThreadVariablesIn; struct P2R_BakeThreadVariablesIn { - RDIM_BakeStringMapFinal *strings; + RDIM_BakeStringMapTight *strings; RDIM_BakeParams *params; }; typedef struct P2R_BakeProceduresIn P2R_BakeProceduresIn; struct P2R_BakeProceduresIn { - RDIM_BakeStringMapFinal *strings; + RDIM_BakeStringMapTight *strings; RDIM_BakeParams *params; }; typedef struct P2R_BakeScopesIn P2R_BakeScopesIn; struct P2R_BakeScopesIn { - RDIM_BakeStringMapFinal *strings; + RDIM_BakeStringMapTight *strings; RDIM_BakeParams *params; }; @@ -449,20 +449,20 @@ struct P2R_BakeScopeVMapIn typedef struct P2R_BakeFilePathsIn P2R_BakeFilePathsIn; struct P2R_BakeFilePathsIn { - RDIM_BakeStringMapFinal *strings; + RDIM_BakeStringMapTight *strings; RDIM_BakePathTree *path_tree; }; typedef struct P2R_BakeStringsIn P2R_BakeStringsIn; struct P2R_BakeStringsIn { - RDIM_BakeStringMapFinal *strings; + RDIM_BakeStringMapTight *strings; }; typedef struct P2R_BakeTypeNodesIn P2R_BakeTypeNodesIn; struct P2R_BakeTypeNodesIn { - RDIM_BakeStringMapFinal *strings; + RDIM_BakeStringMapTight *strings; RDIM_BakeIdxRunMap *idx_runs; RDIM_BakeParams *params; }; @@ -470,7 +470,7 @@ struct P2R_BakeTypeNodesIn typedef struct P2R_BakeNameMapIn P2R_BakeNameMapIn; struct P2R_BakeNameMapIn { - RDIM_BakeStringMapFinal *strings; + RDIM_BakeStringMapTight *strings; RDIM_BakeIdxRunMap *idx_runs; RDIM_BakeParams *params; RDI_NameMapKind kind; @@ -575,7 +575,6 @@ internal TS_TASK_FUNCTION_DEF(p2r_bake_string_map_join_task__entry_point); internal TS_TASK_FUNCTION_DEF(p2r_bake_string_map_sort_task__entry_point); //- rjf: pass 1: interner/deduper map builds -internal TS_TASK_FUNCTION_DEF(p2r_build_bake_string_map_task__entry_point); internal TS_TASK_FUNCTION_DEF(p2r_build_bake_name_map_task__entry_point); //- rjf: pass 2: string-map-dependent debug info stream builds