mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-13 07:32:23 -07:00
raddbgi_from_pdb: name map baking, small fixes with new baking strategy
This commit is contained in:
@@ -998,8 +998,8 @@ rdim_bake_section_count_from_params(RDIM_BakeParams *params)
|
||||
section_count += params->src_files.total_count; // PER-SOURCE-FILE line map numbers
|
||||
section_count += params->src_files.total_count; // PER-SOURCE-FILE line map ranges
|
||||
section_count += params->src_files.total_count; // PER-SOURCE-FILE line map voffs
|
||||
section_count += RDI_NameMapKind_COUNT; // PER-NAME-MAP buckets section
|
||||
section_count += RDI_NameMapKind_COUNT; // PER-NAME-MAP nodes section
|
||||
section_count += RDI_NameMapKind_COUNT-1; // PER-NAME-MAP buckets section
|
||||
section_count += RDI_NameMapKind_COUNT-1; // PER-NAME-MAP nodes section
|
||||
}
|
||||
return section_count;
|
||||
}
|
||||
@@ -1054,12 +1054,12 @@ rdim_bake_section_idx_from_params_tag_idx(RDIM_BakeParams *params, RDI_DataSecti
|
||||
case RDI_DataSectionTag_NameMapBuckets:
|
||||
if(idx != 0)
|
||||
{
|
||||
result = RDI_DataSectionTag_PRIMARY_COUNT + 3*params->units.total_count + 3*params->src_files.total_count + 0*RDI_NameMapKind_COUNT + (idx-1)%RDI_NameMapKind_COUNT;
|
||||
result = RDI_DataSectionTag_PRIMARY_COUNT + 3*params->units.total_count + 3*params->src_files.total_count + 0*(RDI_NameMapKind_COUNT-1) + (idx-1)%(RDI_NameMapKind_COUNT-1);
|
||||
}break;
|
||||
case RDI_DataSectionTag_NameMapNodes:
|
||||
if(idx != 0)
|
||||
{
|
||||
result = RDI_DataSectionTag_PRIMARY_COUNT + 3*params->units.total_count + 3*params->src_files.total_count + 1*RDI_NameMapKind_COUNT + (idx-1)%RDI_NameMapKind_COUNT;
|
||||
result = RDI_DataSectionTag_PRIMARY_COUNT + 3*params->units.total_count + 3*params->src_files.total_count + 1*(RDI_NameMapKind_COUNT-1) + (idx-1)%(RDI_NameMapKind_COUNT-1);
|
||||
}break;
|
||||
}
|
||||
return result;
|
||||
@@ -1693,6 +1693,7 @@ rdim_bake_string_map_from_params(RDIM_Arena *arena, RDIM_BakeParams *params)
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1716,15 +1717,111 @@ rdim_bake_string_map_from_params(RDIM_Arena *arena, RDIM_BakeParams *params)
|
||||
return strings;
|
||||
}
|
||||
|
||||
//- 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)
|
||||
{
|
||||
RDIM_BakeNameMap map = {0};
|
||||
switch(kind)
|
||||
{
|
||||
default:{}break;
|
||||
case RDI_NameMapKind_GlobalVariables:
|
||||
{
|
||||
map.slots_count = params->global_variables.total_count*2;
|
||||
map.slots = rdim_push_array(arena, RDIM_BakeNameMapNode *, map.slots_count);
|
||||
for(RDIM_SymbolChunkNode *n = params->global_variables.first; n != 0; n = n->next)
|
||||
{
|
||||
for(RDI_U64 idx = 0; idx < n->count; idx += 1)
|
||||
{
|
||||
RDI_U32 symbol_idx = (RDI_U32)rdim_idx_from_symbol(&n->v[idx]); // TODO(rjf): @u64_to_u32
|
||||
rdim_bake_name_map_push(arena, &map, n->v[idx].name, symbol_idx);
|
||||
}
|
||||
}
|
||||
}break;
|
||||
case RDI_NameMapKind_ThreadVariables:
|
||||
{
|
||||
map.slots_count = params->thread_variables.total_count*2;
|
||||
map.slots = rdim_push_array(arena, RDIM_BakeNameMapNode *, map.slots_count);
|
||||
for(RDIM_SymbolChunkNode *n = params->thread_variables.first; n != 0; n = n->next)
|
||||
{
|
||||
for(RDI_U64 idx = 0; idx < n->count; idx += 1)
|
||||
{
|
||||
RDI_U32 symbol_idx = (RDI_U32)rdim_idx_from_symbol(&n->v[idx]); // TODO(rjf): @u64_to_u32
|
||||
rdim_bake_name_map_push(arena, &map, n->v[idx].name, symbol_idx);
|
||||
}
|
||||
}
|
||||
}break;
|
||||
case RDI_NameMapKind_Procedures:
|
||||
{
|
||||
map.slots_count = params->procedures.total_count*2;
|
||||
map.slots = rdim_push_array(arena, RDIM_BakeNameMapNode *, map.slots_count);
|
||||
for(RDIM_SymbolChunkNode *n = params->procedures.first; n != 0; n = n->next)
|
||||
{
|
||||
for(RDI_U64 idx = 0; idx < n->count; idx += 1)
|
||||
{
|
||||
RDI_U32 symbol_idx = (RDI_U32)rdim_idx_from_symbol(&n->v[idx]); // TODO(rjf): @u64_to_u32
|
||||
rdim_bake_name_map_push(arena, &map, n->v[idx].name, symbol_idx);
|
||||
}
|
||||
}
|
||||
}break;
|
||||
case RDI_NameMapKind_Types:
|
||||
{
|
||||
map.slots_count = params->types.total_count;
|
||||
map.slots = rdim_push_array(arena, RDIM_BakeNameMapNode *, map.slots_count);
|
||||
for(RDIM_TypeChunkNode *n = params->types.first; n != 0; n = n->next)
|
||||
{
|
||||
for(RDI_U64 idx = 0; idx < n->count; idx += 1)
|
||||
{
|
||||
RDI_U32 type_idx = (RDI_U32)rdim_idx_from_type(&n->v[idx]); // TODO(rjf): @u64_to_u32
|
||||
rdim_bake_name_map_push(arena, &map, n->v[idx].name, type_idx);
|
||||
}
|
||||
}
|
||||
}break;
|
||||
case RDI_NameMapKind_LinkNameProcedures:
|
||||
{
|
||||
map.slots_count = params->procedures.total_count*2;
|
||||
map.slots = rdim_push_array(arena, RDIM_BakeNameMapNode *, map.slots_count);
|
||||
for(RDIM_SymbolChunkNode *n = params->procedures.first; n != 0; n = n->next)
|
||||
{
|
||||
for(RDI_U64 idx = 0; idx < n->count; idx += 1)
|
||||
{
|
||||
if(n->v[idx].link_name.size == 0) {continue;}
|
||||
RDI_U32 symbol_idx = (RDI_U32)rdim_idx_from_symbol(&n->v[idx]); // TODO(rjf): @u64_to_u32
|
||||
rdim_bake_name_map_push(arena, &map, n->v[idx].link_name, symbol_idx);
|
||||
}
|
||||
}
|
||||
}break;
|
||||
case RDI_NameMapKind_NormalSourcePaths:
|
||||
{
|
||||
map.slots_count = params->src_files.total_count*2;
|
||||
map.slots = rdim_push_array(arena, RDIM_BakeNameMapNode *, map.slots_count);
|
||||
for(RDIM_SrcFileChunkNode *n = params->src_files.first; n != 0; n = n->next)
|
||||
{
|
||||
for(RDI_U64 idx = 0; idx < n->count; idx += 1)
|
||||
{
|
||||
RDI_U32 src_file_idx = (RDI_U32)rdim_idx_from_src_file(&n->v[idx]); // TODO(rjf): @u64_to_u32
|
||||
rdim_bake_name_map_push(arena, &map, n->v[idx].normal_full_path, src_file_idx);
|
||||
}
|
||||
}
|
||||
}break;
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
//- rjf: idx run map building
|
||||
|
||||
RDI_PROC RDIM_BakeIdxRunMap
|
||||
rdim_bake_idx_run_map_from_params(RDIM_Arena *arena, RDIM_BakeParams *params)
|
||||
{
|
||||
//- rjf: set up map
|
||||
RDIM_BakeIdxRunMap idx_runs = {0};
|
||||
idx_runs.slots_count = params->procedures.total_count*2 + params->global_variables.total_count*2 + params->thread_variables.total_count*2 + params->types.total_count*2;
|
||||
idx_runs.slots = rdim_push_array(arena, RDIM_BakeIdxRunNode *, idx_runs.slots_count);
|
||||
rdim_bake_idx_run_map_insert(arena, &idx_runs, 0, 0);
|
||||
|
||||
|
||||
|
||||
return idx_runs;
|
||||
}
|
||||
|
||||
@@ -1738,21 +1835,6 @@ rdim_bake_path_tree_from_params(RDIM_Arena *arena, RDIM_BakeParams *params)
|
||||
return tree;
|
||||
}
|
||||
|
||||
//- 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)
|
||||
{
|
||||
RDIM_BakeNameMap map = {0};
|
||||
map.slots_count = params->procedures.total_count*2 + params->global_variables.total_count*2 + params->thread_variables.total_count*2 + params->types.total_count*2;
|
||||
map.slots = rdim_push_array(arena, RDIM_BakeNameMapNode *, map.slots_count);
|
||||
switch(kind)
|
||||
{
|
||||
default:{}break;
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: [Baking] Build Artifacts -> Data Section Lists
|
||||
|
||||
|
||||
@@ -1171,15 +1171,15 @@ RDI_PROC void rdim_bake_section_list_concat_in_place(RDIM_BakeSectionList *dst,
|
||||
//- rjf: bake string map building
|
||||
RDI_PROC RDIM_BakeStringMap rdim_bake_string_map_from_params(RDIM_Arena *arena, RDIM_BakeParams *params);
|
||||
|
||||
//- 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);
|
||||
|
||||
//- rjf: bake idx run map building
|
||||
RDI_PROC RDIM_BakeIdxRunMap rdim_bake_idx_run_map_from_params(RDIM_Arena *arena, RDIM_BakeParams *params);
|
||||
|
||||
//- rjf: bake path tree building
|
||||
RDI_PROC RDIM_BakePathTree rdim_bake_path_tree_from_params(RDIM_Arena *arena, RDIM_BakeParams *params);
|
||||
|
||||
//- 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);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: [Baking] Build Artifacts -> Data Section Lists
|
||||
|
||||
|
||||
@@ -3380,144 +3380,161 @@ internal P2R_Bake2Serialize *
|
||||
p2r_bake(Arena *arena, P2R_Convert2Bake *in)
|
||||
{
|
||||
RDIM_BakeParams *params = &in->bake_params;
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: build interned string map
|
||||
//
|
||||
RDIM_BakeStringMap strings = rdim_bake_string_map_from_params(arena, params);
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: build interned idx run map
|
||||
//
|
||||
RDIM_BakeIdxRunMap idx_runs = rdim_bake_idx_run_map_from_params(arena, params);
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: build interned path tree
|
||||
//
|
||||
RDIM_BakePathTree path_tree = rdim_bake_path_tree_from_params(arena, params);
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: build name maps
|
||||
//
|
||||
RDIM_BakeNameMap name_maps[RDI_NameMapKind_COUNT] = {0};
|
||||
{
|
||||
for(RDI_NameMapKind k = (RDI_NameMapKind)0; k < RDI_NameMapKind_COUNT; k = (RDI_NameMapKind)(k+1))
|
||||
{
|
||||
name_maps[k] = rdim_bake_name_map_from_kind_params(arena, k, params);
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: build all sections
|
||||
//
|
||||
RDIM_BakeSectionList sections = {0};
|
||||
|
||||
//- rjf: build interned string map
|
||||
RDIM_BakeStringMap strings = {0};
|
||||
ProfScope("build interned string map")
|
||||
{
|
||||
//- rjf: top-level info
|
||||
strings = rdim_bake_string_map_from_params(arena, params);
|
||||
}
|
||||
|
||||
//- rjf: build name maps
|
||||
RDIM_BakeNameMap name_maps[RDI_NameMapKind_COUNT] = {0};
|
||||
ProfScope("build name maps")
|
||||
{
|
||||
for(RDI_NameMapKind k = (RDI_NameMapKind)(RDI_NameMapKind_NULL+1);
|
||||
k < RDI_NameMapKind_COUNT;
|
||||
k = (RDI_NameMapKind)(k+1))
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_top_level_info_section_list_from_params(arena, &strings, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: binary sections
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_binary_section_section_list_from_params(arena, &strings, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: units
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_unit_section_list_from_params(arena, &strings, &path_tree, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: unit vmap
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_unit_vmap_section_list_from_params(arena, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: source files
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_src_file_section_list_from_params(arena, &strings, &path_tree, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: type nodes
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_type_node_section_list_from_params(arena, &strings, &idx_runs, &path_tree, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: UDTs
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_udt_section_list_from_params(arena, &strings, &path_tree, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: global variables
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_global_variable_section_list_from_params(arena, &strings, &path_tree, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: global vmap
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_global_vmap_section_list_from_params(arena, &strings, &path_tree, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: thread variables
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_thread_variable_section_list_from_params(arena, &strings, &path_tree, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: procedures
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_procedure_section_list_from_params(arena, &strings, &path_tree, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: scopes
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_scope_section_list_from_params(arena, &strings, &path_tree, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: scope vmap
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_scope_vmap_section_list_from_params(arena, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: name maps
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_name_map_section_list_from_params_maps(arena, &strings, &idx_runs, params, name_maps);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: file paths
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_file_path_section_list_from_path_tree(arena, &strings, &path_tree);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: strings
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_string_section_list_from_string_map(arena, &strings);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: index runs
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_idx_run_section_list_from_idx_run_map(arena, &idx_runs);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
ProfScope("build name map %i", k) name_maps[k] = rdim_bake_name_map_from_kind_params(arena, k, params);
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: top-level info
|
||||
ProfScope("top level info")
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_top_level_info_section_list_from_params(arena, &strings, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: binary sections
|
||||
ProfScope("binary sections")
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_binary_section_section_list_from_params(arena, &strings, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: build interned path tree
|
||||
RDIM_BakePathTree path_tree = {0};
|
||||
ProfScope("build interned path tree")
|
||||
{
|
||||
path_tree = rdim_bake_path_tree_from_params(arena, params);
|
||||
}
|
||||
|
||||
//- rjf: units
|
||||
ProfScope("units")
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_unit_section_list_from_params(arena, &strings, &path_tree, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: unit vmap
|
||||
ProfScope("unit vmap")
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_unit_vmap_section_list_from_params(arena, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: source files
|
||||
ProfScope("source files")
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_src_file_section_list_from_params(arena, &strings, &path_tree, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: build interned idx run map
|
||||
RDIM_BakeIdxRunMap idx_runs = {0};
|
||||
ProfScope("build interned idx run map")
|
||||
{
|
||||
idx_runs = rdim_bake_idx_run_map_from_params(arena, params);
|
||||
}
|
||||
|
||||
//- rjf: type nodes
|
||||
ProfScope("type nodes")
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_type_node_section_list_from_params(arena, &strings, &idx_runs, &path_tree, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: UDTs
|
||||
ProfScope("UDTs")
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_udt_section_list_from_params(arena, &strings, &path_tree, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: global variables
|
||||
ProfScope("global variables")
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_global_variable_section_list_from_params(arena, &strings, &path_tree, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: global vmap
|
||||
ProfScope("global vmap")
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_global_vmap_section_list_from_params(arena, &strings, &path_tree, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: thread variables
|
||||
ProfScope("thread variables")
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_thread_variable_section_list_from_params(arena, &strings, &path_tree, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: procedures
|
||||
ProfScope("procedures")
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_procedure_section_list_from_params(arena, &strings, &path_tree, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: scopes
|
||||
ProfScope("scopes")
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_scope_section_list_from_params(arena, &strings, &path_tree, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: scope vmap
|
||||
ProfScope("scope vmap")
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_scope_vmap_section_list_from_params(arena, params);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: name maps
|
||||
ProfScope("name map")
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_name_map_section_list_from_params_maps(arena, &strings, &idx_runs, params, name_maps);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: file paths
|
||||
ProfScope("file paths")
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_file_path_section_list_from_path_tree(arena, &strings, &path_tree);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: strings
|
||||
ProfScope("strings")
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_string_section_list_from_string_map(arena, &strings);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: index runs
|
||||
ProfScope("idx runs")
|
||||
{
|
||||
RDIM_BakeSectionList s = rdim_bake_idx_run_section_list_from_idx_run_map(arena, &idx_runs);
|
||||
rdim_bake_section_list_concat_in_place(§ions, &s);
|
||||
}
|
||||
|
||||
//- rjf: fill & return
|
||||
//
|
||||
P2R_Bake2Serialize *out = push_array(arena, P2R_Bake2Serialize, 1);
|
||||
out->sections = sections;
|
||||
return out;
|
||||
|
||||
Reference in New Issue
Block a user