From 8f03fb0cc565af2613dd28db43b080f7a7b35562 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Fri, 7 Jun 2024 11:17:11 -0700 Subject: [PATCH] eliminate base node idx from per-node info; nodes can be stored all relative to their name map's base indices, and this is naturally applied on lookup, no need to bake it in --- src/lib_rdi_make/rdi_make.c | 8 +++----- src/lib_rdi_make/rdi_make.h | 2 +- src/rdi_from_pdb/rdi_from_pdb.c | 5 +---- src/rdi_from_pdb/rdi_from_pdb.h | 1 - 4 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/lib_rdi_make/rdi_make.c b/src/lib_rdi_make/rdi_make.c index 4e507fd2..b8dee044 100644 --- a/src/lib_rdi_make/rdi_make.c +++ b/src/lib_rdi_make/rdi_make.c @@ -2187,7 +2187,7 @@ rdim_bake_path_tree_from_params(RDIM_Arena *arena, RDIM_BakeParams *params) //- rjf: partial/joinable baking functions RDI_PROC RDIM_NameMapBakeResult -rdim_bake_name_map(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeNameMap *src, RDI_U64 base_node_idx) +rdim_bake_name_map(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeNameMap *src) { RDIM_NameMapBakeResult result = {0}; if(src->name_count != 0) @@ -2232,7 +2232,7 @@ rdim_bake_name_map(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_Bak RDI_NameMapNode *node_ptr = baked_nodes; for(RDI_U32 i = 0; i < baked_buckets_count; i += 1, bucket_ptr += 1) { - bucket_ptr->first_node = (RDI_U32)(node_ptr - baked_nodes); + bucket_ptr->first_node = (RDI_U32)((RDI_U64)(node_ptr - baked_nodes)); bucket_ptr->node_count = sbuckets[i].count; for(RDIM_NameMapSemiNode *snode = sbuckets[i].first; snode != 0; @@ -3426,20 +3426,18 @@ rdim_bake_name_maps_top_level(RDIM_Arena *arena, RDIM_BakeStringMapTight *string { RDI_NameMap *dst_maps = rdim_push_array(arena, RDI_NameMap, RDI_NameMapKind_COUNT); { - RDI_U64 dst_map_idx = 0; RDI_U64 dst_map_bucket_idx = 0; RDI_U64 dst_map_node_idx = 0; for(RDI_NameMapKind k = (RDI_NameMapKind)(RDI_NameMapKind_NULL+1); k < RDI_NameMapKind_COUNT; k = (RDI_NameMapKind)(k+1)) { - RDI_NameMap *dst_map = &dst_maps[dst_map_idx]; + RDI_NameMap *dst_map = &dst_maps[k]; RDIM_BakeNameMap *src_map = name_maps[k]; dst_map->bucket_base_idx = (RDI_U32)dst_map_bucket_idx; // TODO(rjf): @u64_to_u32 dst_map->node_base_idx = (RDI_U32)dst_map_node_idx; // TODO(rjf): @u64_to_u32 dst_map->bucket_count = (RDI_U32)src_map->name_count; // TODO(rjf): @u64_to_u32 dst_map->node_count = (RDI_U32)src_map->name_count; // TODO(rjf): @u64_to_u32 - dst_map_idx += 1; dst_map_bucket_idx += dst_map->bucket_count; dst_map_node_idx += dst_map->node_count; } diff --git a/src/lib_rdi_make/rdi_make.h b/src/lib_rdi_make/rdi_make.h index 328a9793..da4d0ee2 100644 --- a/src/lib_rdi_make/rdi_make.h +++ b/src/lib_rdi_make/rdi_make.h @@ -1474,7 +1474,7 @@ RDI_PROC RDIM_BakePathTree *rdim_bake_path_tree_from_params(RDIM_Arena *arena, R //~ rjf: [Baking] Build Artifacts -> Baked Versions //- rjf: partial/joinable baking functions -RDI_PROC RDIM_NameMapBakeResult rdim_bake_name_map(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeNameMap *src, RDI_U64 base_node_idx); +RDI_PROC RDIM_NameMapBakeResult rdim_bake_name_map(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeNameMap *src); //- rjf: partial bakes -> final bake functions RDI_PROC RDIM_NameMapBakeResult rdim_name_map_bake_results_combine(RDIM_Arena *arena, RDIM_NameMapBakeResult *results, RDI_U64 results_count); diff --git a/src/rdi_from_pdb/rdi_from_pdb.c b/src/rdi_from_pdb/rdi_from_pdb.c index 41591105..e5141165 100644 --- a/src/rdi_from_pdb/rdi_from_pdb.c +++ b/src/rdi_from_pdb/rdi_from_pdb.c @@ -3812,7 +3812,7 @@ internal TS_TASK_FUNCTION_DEF(p2r_bake_name_map_task__entry_point) { P2R_BakeNameMapIn *in = (P2R_BakeNameMapIn *)p; RDIM_NameMapBakeResult *out = push_array(arena, RDIM_NameMapBakeResult, 1); - ProfScope("bake name map %i", in->kind) *out = rdim_bake_name_map(arena, in->strings, in->idx_runs, in->map, in->base_node_idx); + ProfScope("bake name map %i", in->kind) *out = rdim_bake_name_map(arena, in->strings, in->idx_runs, in->map); return out; } @@ -4195,7 +4195,6 @@ p2r_bake(Arena *arena, P2R_Convert2Bake *in) TS_Ticket bake_type_nodes_ticket = ts_kickoff(p2r_bake_type_nodes_task__entry_point, 0, &bake_type_nodes_in); TS_Ticket bake_name_maps_tickets[RDI_NameMapKind_COUNT] = {0}; { - U64 base_node_idx = 0; for(EachNonZeroEnumVal(RDI_NameMapKind, k)) { if(name_maps[k] == 0 || name_maps[k]->name_count == 0) @@ -4206,10 +4205,8 @@ p2r_bake(Arena *arena, P2R_Convert2Bake *in) in->strings = &bake_strings; in->idx_runs = idx_runs; in->map = name_maps[k]; - in->base_node_idx = base_node_idx; in->kind = k; bake_name_maps_tickets[k] = ts_kickoff(p2r_bake_name_map_task__entry_point, 0, in); - base_node_idx += name_maps[k]->name_count; } } P2R_BakeIdxRunsIn bake_idx_runs_in = {idx_runs}; diff --git a/src/rdi_from_pdb/rdi_from_pdb.h b/src/rdi_from_pdb/rdi_from_pdb.h index bcbf6cd3..9e92e208 100644 --- a/src/rdi_from_pdb/rdi_from_pdb.h +++ b/src/rdi_from_pdb/rdi_from_pdb.h @@ -502,7 +502,6 @@ struct P2R_BakeNameMapIn RDIM_BakeStringMapTight *strings; RDIM_BakeIdxRunMap *idx_runs; RDIM_BakeNameMap *map; - U64 base_node_idx; RDI_NameMapKind kind; };