mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-13 07:32:23 -07:00
extend task system with thread count, so usage code can easily create per-thread state; pass thread idx into task entry points
This commit is contained in:
+1
-1
@@ -74,7 +74,7 @@ commands =
|
||||
},
|
||||
.rjf_f4 =
|
||||
{
|
||||
.win = "build raddbgi_from_pdb && pushd build && raddbgi_from_pdb.exe --exe:raddbg.exe --pdb:raddbg.pdb --out:raddbg.raddbg --dump:table_diagnostics && popd",
|
||||
.win = "build raddbgi_from_pdb release telemetry && pushd build && raddbgi_from_pdb.exe --exe:raddbg.exe --pdb:raddbg.pdb --out:raddbg.raddbgi --capture && popd",
|
||||
.linux = "",
|
||||
.out = "*compilation*",
|
||||
.footer_panel = true,
|
||||
|
||||
@@ -460,8 +460,7 @@ p2r_location_over_lvar_addr_range(Arena *arena, RDIM_ScopeChunkList *scopes, RDI
|
||||
////////////////////////////////
|
||||
//~ rjf: Initial Parsing & Preparation Pass Tasks
|
||||
|
||||
internal void *
|
||||
p2r_exe_hash_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_exe_hash_task__entry_point)
|
||||
{
|
||||
P2R_EXEHashIn *in = (P2R_EXEHashIn *)p;
|
||||
U64 *out = push_array(arena, U64, 1);
|
||||
@@ -469,8 +468,7 @@ p2r_exe_hash_task__entry_point(Arena *arena, void *p)
|
||||
return out;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_tpi_hash_parse_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_tpi_hash_parse_task__entry_point)
|
||||
{
|
||||
P2R_TPIHashParseIn *in = (P2R_TPIHashParseIn *)p;
|
||||
void *out = 0;
|
||||
@@ -478,8 +476,7 @@ p2r_tpi_hash_parse_task__entry_point(Arena *arena, void *p)
|
||||
return out;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_tpi_leaf_parse_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_tpi_leaf_parse_task__entry_point)
|
||||
{
|
||||
P2R_TPILeafParseIn *in = (P2R_TPILeafParseIn *)p;
|
||||
void *out = 0;
|
||||
@@ -487,8 +484,7 @@ p2r_tpi_leaf_parse_task__entry_point(Arena *arena, void *p)
|
||||
return out;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_symbol_stream_parse_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_symbol_stream_parse_task__entry_point)
|
||||
{
|
||||
P2R_SymbolStreamParseIn *in = (P2R_SymbolStreamParseIn *)p;
|
||||
void *out = 0;
|
||||
@@ -496,8 +492,7 @@ p2r_symbol_stream_parse_task__entry_point(Arena *arena, void *p)
|
||||
return out;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_c13_stream_parse_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_c13_stream_parse_task__entry_point)
|
||||
{
|
||||
P2R_C13StreamParseIn *in = (P2R_C13StreamParseIn *)p;
|
||||
void *out = 0;
|
||||
@@ -505,8 +500,7 @@ p2r_c13_stream_parse_task__entry_point(Arena *arena, void *p)
|
||||
return out;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_comp_unit_parse_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_comp_unit_parse_task__entry_point)
|
||||
{
|
||||
P2R_CompUnitParseIn *in = (P2R_CompUnitParseIn *)p;
|
||||
void *out = 0;
|
||||
@@ -514,8 +508,7 @@ p2r_comp_unit_parse_task__entry_point(Arena *arena, void *p)
|
||||
return out;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_comp_unit_contributions_parse_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_comp_unit_contributions_parse_task__entry_point)
|
||||
{
|
||||
P2R_CompUnitContributionsParseIn *in = (P2R_CompUnitContributionsParseIn *)p;
|
||||
void *out = 0;
|
||||
@@ -526,8 +519,7 @@ p2r_comp_unit_contributions_parse_task__entry_point(Arena *arena, void *p)
|
||||
////////////////////////////////
|
||||
//~ rjf: Unit Conversion Tasks
|
||||
|
||||
internal void *
|
||||
p2r_units_convert_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_units_convert_task__entry_point)
|
||||
{
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
P2R_UnitConvertIn *in = (P2R_UnitConvertIn *)p;
|
||||
@@ -650,8 +642,7 @@ p2r_units_convert_task__entry_point(Arena *arena, void *p)
|
||||
////////////////////////////////
|
||||
//~ rjf: Link Name Map Building Tasks
|
||||
|
||||
internal void *
|
||||
p2r_link_name_map_build_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_link_name_map_build_task__entry_point)
|
||||
{
|
||||
P2R_LinkNameMapBuildIn *in = (P2R_LinkNameMapBuildIn *)p;
|
||||
CV_RecRange *rec_ranges_first = in->sym->sym_ranges.ranges;
|
||||
@@ -706,8 +697,7 @@ p2r_link_name_map_build_task__entry_point(Arena *arena, void *p)
|
||||
////////////////////////////////
|
||||
//~ rjf: Type Parsing/Conversion Tasks
|
||||
|
||||
internal void *
|
||||
p2r_itype_fwd_map_fill_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_itype_fwd_map_fill_task__entry_point)
|
||||
{
|
||||
P2R_ITypeFwdMapFillIn *in = (P2R_ITypeFwdMapFillIn *)p;
|
||||
ProfScope("fill itype fwd map") for(CV_TypeId itype = in->itype_first; itype < in->itype_opl; itype += 1)
|
||||
@@ -834,8 +824,7 @@ p2r_itype_fwd_map_fill_task__entry_point(Arena *arena, void *p)
|
||||
return 0;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_itype_chain_build_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_itype_chain_build_task__entry_point)
|
||||
{
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
P2R_ITypeChainBuildIn *in = (P2R_ITypeChainBuildIn *)p;
|
||||
@@ -1135,8 +1124,7 @@ p2r_itype_chain_build_task__entry_point(Arena *arena, void *p)
|
||||
////////////////////////////////
|
||||
//~ rjf: UDT Conversion Tasks
|
||||
|
||||
internal void *
|
||||
p2r_udt_convert_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_udt_convert_task__entry_point)
|
||||
{
|
||||
P2R_UDTConvertIn *in = (P2R_UDTConvertIn *)p;
|
||||
#define p2r_type_ptr_from_itype(itype) ((in->itype_type_ptrs && (itype) < in->tpi_leaf->itype_opl) ? (in->itype_type_ptrs[(in->itype_fwd_map[(itype)] ? in->itype_fwd_map[(itype)] : (itype))]) : 0)
|
||||
@@ -1760,8 +1748,7 @@ p2r_udt_convert_task__entry_point(Arena *arena, void *p)
|
||||
////////////////////////////////
|
||||
//~ rjf: Symbol Stream Conversion Path & Thread
|
||||
|
||||
internal void *
|
||||
p2r_symbol_stream_convert_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_symbol_stream_convert_task__entry_point)
|
||||
{
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
P2R_SymbolStreamConvertIn *in = (P2R_SymbolStreamConvertIn *)p;
|
||||
@@ -3486,8 +3473,7 @@ p2r_convert(Arena *arena, P2R_User2Convert *in)
|
||||
|
||||
//- rjf: bake string map building
|
||||
|
||||
internal void *
|
||||
p2r_bake_src_files_strings_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_src_files_strings_task__entry_point)
|
||||
{
|
||||
P2R_BakeSrcFilesStringsIn *in = (P2R_BakeSrcFilesStringsIn *)p;
|
||||
RDIM_BakeStringChunkListMap *map = rdim_bake_string_chunk_list_map_make(arena, in->top);
|
||||
@@ -3495,8 +3481,7 @@ p2r_bake_src_files_strings_task__entry_point(Arena *arena, void *p)
|
||||
return map;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_bake_units_strings_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_units_strings_task__entry_point)
|
||||
{
|
||||
P2R_BakeUnitsStringsIn *in = (P2R_BakeUnitsStringsIn *)p;
|
||||
RDIM_BakeStringChunkListMap *map = rdim_bake_string_chunk_list_map_make(arena, in->top);
|
||||
@@ -3504,8 +3489,7 @@ p2r_bake_units_strings_task__entry_point(Arena *arena, void *p)
|
||||
return map;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_bake_types_strings_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_types_strings_task__entry_point)
|
||||
{
|
||||
P2R_BakeTypesStringsIn *in = (P2R_BakeTypesStringsIn *)p;
|
||||
RDIM_BakeStringChunkListMap *map = rdim_bake_string_chunk_list_map_make(arena, in->top);
|
||||
@@ -3519,8 +3503,7 @@ p2r_bake_types_strings_task__entry_point(Arena *arena, void *p)
|
||||
return map;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_bake_udts_strings_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_udts_strings_task__entry_point)
|
||||
{
|
||||
P2R_BakeUDTsStringsIn *in = (P2R_BakeUDTsStringsIn *)p;
|
||||
RDIM_BakeStringChunkListMap *map = rdim_bake_string_chunk_list_map_make(arena, in->top);
|
||||
@@ -3528,8 +3511,7 @@ p2r_bake_udts_strings_task__entry_point(Arena *arena, void *p)
|
||||
return map;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_bake_symbols_strings_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_symbols_strings_task__entry_point)
|
||||
{
|
||||
P2R_BakeSymbolsStringsIn *in = (P2R_BakeSymbolsStringsIn *)p;
|
||||
RDIM_BakeStringChunkListMap *map = rdim_bake_string_chunk_list_map_make(arena, in->top);
|
||||
@@ -3537,8 +3519,7 @@ p2r_bake_symbols_strings_task__entry_point(Arena *arena, void *p)
|
||||
return map;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_bake_scopes_strings_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_scopes_strings_task__entry_point)
|
||||
{
|
||||
P2R_BakeScopesStringsIn *in = (P2R_BakeScopesStringsIn *)p;
|
||||
RDIM_BakeStringChunkListMap *map = rdim_bake_string_chunk_list_map_make(arena, in->top);
|
||||
@@ -3548,8 +3529,7 @@ p2r_bake_scopes_strings_task__entry_point(Arena *arena, void *p)
|
||||
|
||||
//- rjf: bake string map sorting
|
||||
|
||||
internal void *
|
||||
p2r_bake_string_map_sort_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_string_map_sort_task__entry_point)
|
||||
{
|
||||
P2R_SortBakeStringMapSlotsIn *in = (P2R_SortBakeStringMapSlotsIn *)p;
|
||||
ProfScope("sort bake string chunk list map range")
|
||||
@@ -3577,8 +3557,7 @@ p2r_bake_string_map_sort_task__entry_point(Arena *arena, void *p)
|
||||
|
||||
//- rjf: pass 1: interner/deduper map builds
|
||||
|
||||
internal void *
|
||||
p2r_build_bake_string_map_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_build_bake_string_map_task__entry_point)
|
||||
{
|
||||
P2R_BuildBakeStringMapIn *in = (P2R_BuildBakeStringMapIn *)p;
|
||||
RDIM_BakeStringMap *strings = 0;
|
||||
@@ -3586,8 +3565,7 @@ p2r_build_bake_string_map_task__entry_point(Arena *arena, void *p)
|
||||
return strings;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_build_bake_name_map_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_build_bake_name_map_task__entry_point)
|
||||
{
|
||||
P2R_BuildBakeNameMapIn *in = (P2R_BuildBakeNameMapIn *)p;
|
||||
RDIM_BakeNameMap *name_map = 0;
|
||||
@@ -3597,8 +3575,7 @@ p2r_build_bake_name_map_task__entry_point(Arena *arena, void *p)
|
||||
|
||||
//- rjf: pass 2: string-map-dependent debug info stream builds
|
||||
|
||||
internal void *
|
||||
p2r_bake_units_top_level_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_units_top_level_task__entry_point)
|
||||
{
|
||||
P2R_BakeUnitsTopLevelIn *in = (P2R_BakeUnitsTopLevelIn *)p;
|
||||
RDIM_BakeSectionList *s = push_array(arena, RDIM_BakeSectionList, 1);
|
||||
@@ -3606,8 +3583,7 @@ p2r_bake_units_top_level_task__entry_point(Arena *arena, void *p)
|
||||
return s;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_bake_unit_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_unit_task__entry_point)
|
||||
{
|
||||
P2R_BakeUnitIn *in = (P2R_BakeUnitIn *)p;
|
||||
RDIM_BakeSectionList *s = push_array(arena, RDIM_BakeSectionList, 1);
|
||||
@@ -3615,8 +3591,7 @@ p2r_bake_unit_task__entry_point(Arena *arena, void *p)
|
||||
return s;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_bake_unit_vmap_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_unit_vmap_task__entry_point)
|
||||
{
|
||||
P2R_BakeUnitVMapIn *in = (P2R_BakeUnitVMapIn *)p;
|
||||
RDIM_BakeSectionList *s = push_array(arena, RDIM_BakeSectionList, 1);
|
||||
@@ -3624,8 +3599,7 @@ p2r_bake_unit_vmap_task__entry_point(Arena *arena, void *p)
|
||||
return s;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_bake_src_files_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_src_files_task__entry_point)
|
||||
{
|
||||
P2R_BakeSrcFilesIn *in = (P2R_BakeSrcFilesIn *)p;
|
||||
RDIM_BakeSectionList *s = push_array(arena, RDIM_BakeSectionList, 1);
|
||||
@@ -3633,8 +3607,7 @@ p2r_bake_src_files_task__entry_point(Arena *arena, void *p)
|
||||
return s;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_bake_udts_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_udts_task__entry_point)
|
||||
{
|
||||
P2R_BakeUDTsIn *in = (P2R_BakeUDTsIn *)p;
|
||||
RDIM_BakeSectionList *s = push_array(arena, RDIM_BakeSectionList, 1);
|
||||
@@ -3642,8 +3615,7 @@ p2r_bake_udts_task__entry_point(Arena *arena, void *p)
|
||||
return s;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_bake_global_variables_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_global_variables_task__entry_point)
|
||||
{
|
||||
P2R_BakeGlobalVariablesIn *in = (P2R_BakeGlobalVariablesIn *)p;
|
||||
RDIM_BakeSectionList *s = push_array(arena, RDIM_BakeSectionList, 1);
|
||||
@@ -3651,8 +3623,7 @@ p2r_bake_global_variables_task__entry_point(Arena *arena, void *p)
|
||||
return s;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_bake_global_vmap_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_global_vmap_task__entry_point)
|
||||
{
|
||||
P2R_BakeGlobalVMapIn *in = (P2R_BakeGlobalVMapIn *)p;
|
||||
RDIM_BakeSectionList *s = push_array(arena, RDIM_BakeSectionList, 1);
|
||||
@@ -3660,8 +3631,7 @@ p2r_bake_global_vmap_task__entry_point(Arena *arena, void *p)
|
||||
return s;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_bake_thread_variables_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_thread_variables_task__entry_point)
|
||||
{
|
||||
P2R_BakeThreadVariablesIn *in = (P2R_BakeThreadVariablesIn *)p;
|
||||
RDIM_BakeSectionList *s = push_array(arena, RDIM_BakeSectionList, 1);
|
||||
@@ -3669,8 +3639,7 @@ p2r_bake_thread_variables_task__entry_point(Arena *arena, void *p)
|
||||
return s;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_bake_procedures_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_procedures_task__entry_point)
|
||||
{
|
||||
P2R_BakeProceduresIn *in = (P2R_BakeProceduresIn *)p;
|
||||
RDIM_BakeSectionList *s = push_array(arena, RDIM_BakeSectionList, 1);
|
||||
@@ -3678,8 +3647,7 @@ p2r_bake_procedures_task__entry_point(Arena *arena, void *p)
|
||||
return s;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_bake_scopes_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_scopes_task__entry_point)
|
||||
{
|
||||
P2R_BakeScopesIn *in = (P2R_BakeScopesIn *)p;
|
||||
RDIM_BakeSectionList *s = push_array(arena, RDIM_BakeSectionList, 1);
|
||||
@@ -3687,8 +3655,7 @@ p2r_bake_scopes_task__entry_point(Arena *arena, void *p)
|
||||
return s;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_bake_scope_vmap_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_scope_vmap_task__entry_point)
|
||||
{
|
||||
P2R_BakeScopeVMapIn *in = (P2R_BakeScopeVMapIn *)p;
|
||||
RDIM_BakeSectionList *s = push_array(arena, RDIM_BakeSectionList, 1);
|
||||
@@ -3696,8 +3663,7 @@ p2r_bake_scope_vmap_task__entry_point(Arena *arena, void *p)
|
||||
return s;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_bake_file_paths_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_file_paths_task__entry_point)
|
||||
{
|
||||
P2R_BakeFilePathsIn *in = (P2R_BakeFilePathsIn *)p;
|
||||
RDIM_BakeSectionList *s = push_array(arena, RDIM_BakeSectionList, 1);
|
||||
@@ -3705,8 +3671,7 @@ p2r_bake_file_paths_task__entry_point(Arena *arena, void *p)
|
||||
return s;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_bake_strings_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_strings_task__entry_point)
|
||||
{
|
||||
P2R_BakeStringsIn *in = (P2R_BakeStringsIn *)p;
|
||||
RDIM_BakeSectionList *s = push_array(arena, RDIM_BakeSectionList, 1);
|
||||
@@ -3716,8 +3681,7 @@ p2r_bake_strings_task__entry_point(Arena *arena, void *p)
|
||||
|
||||
//- rjf: pass 3: idx-run-map-dependent debug info stream builds
|
||||
|
||||
internal void *
|
||||
p2r_bake_type_nodes_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_type_nodes_task__entry_point)
|
||||
{
|
||||
P2R_BakeTypeNodesIn *in = (P2R_BakeTypeNodesIn *)p;
|
||||
RDIM_BakeSectionList *s = push_array(arena, RDIM_BakeSectionList, 1);
|
||||
@@ -3725,8 +3689,7 @@ p2r_bake_type_nodes_task__entry_point(Arena *arena, void *p)
|
||||
return s;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_bake_name_map_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_name_map_task__entry_point)
|
||||
{
|
||||
P2R_BakeNameMapIn *in = (P2R_BakeNameMapIn *)p;
|
||||
RDIM_BakeSectionList *s = push_array(arena, RDIM_BakeSectionList, 1);
|
||||
@@ -3734,8 +3697,7 @@ p2r_bake_name_map_task__entry_point(Arena *arena, void *p)
|
||||
return s;
|
||||
}
|
||||
|
||||
internal void *
|
||||
p2r_bake_idx_runs_task__entry_point(Arena *arena, void *p)
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_idx_runs_task__entry_point)
|
||||
{
|
||||
P2R_BakeIdxRunsIn *in = (P2R_BakeIdxRunsIn *)p;
|
||||
RDIM_BakeSectionList *s = push_array(arena, RDIM_BakeSectionList, 1);
|
||||
|
||||
@@ -473,39 +473,39 @@ internal void p2r_location_over_lvar_addr_range(Arena *arena, RDIM_ScopeChunkLis
|
||||
////////////////////////////////
|
||||
//~ rjf: Initial Parsing & Preparation Pass Tasks
|
||||
|
||||
internal void *p2r_exe_hash_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_tpi_hash_parse_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_tpi_leaf_parse_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_symbol_stream_parse_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_c13_stream_parse_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_comp_unit_parse_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_comp_unit_contributions_parse_task__entry_point(Arena *arena, void *p);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_exe_hash_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_tpi_hash_parse_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_tpi_leaf_parse_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_symbol_stream_parse_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_c13_stream_parse_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_comp_unit_parse_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_comp_unit_contributions_parse_task__entry_point);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Unit Conversion Tasks
|
||||
|
||||
internal void *p2r_units_convert_task__entry_point(Arena *arena, void *p);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_units_convert_task__entry_point);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Link Name Map Building Tasks
|
||||
|
||||
internal void *p2r_link_name_map_build_task__entry_point(Arena *arena, void *p);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_link_name_map_build_task__entry_point);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Type Parsing/Conversion Tasks
|
||||
|
||||
internal void *p2r_itype_fwd_map_fill_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_itype_chain_build_task__entry_point(Arena *arena, void *p);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_itype_fwd_map_fill_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_itype_chain_build_task__entry_point);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: UDT Conversion Tasks
|
||||
|
||||
internal void *p2r_udt_convert_task__entry_point(Arena *arena, void *p);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_udt_convert_task__entry_point);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Symbol Stream Conversion Tasks
|
||||
|
||||
internal void *p2r_symbol_stream_convert_task__entry_point(Arena *arena, void *p);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_symbol_stream_convert_task__entry_point);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Top-Level Conversion Entry Point
|
||||
@@ -516,39 +516,39 @@ internal P2R_Convert2Bake *p2r_convert(Arena *arena, P2R_User2Convert *in);
|
||||
//~ rjf: Baking Stage Tasks
|
||||
|
||||
//- rjf: unsorted bake string map building
|
||||
internal void *p2r_bake_src_files_strings_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_bake_units_strings_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_bake_types_strings_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_bake_udts_strings_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_bake_symbols_strings_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_bake_scopes_strings_task__entry_point(Arena *arena, void *p);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_src_files_strings_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_units_strings_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_types_strings_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_udts_strings_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_symbols_strings_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_scopes_strings_task__entry_point);
|
||||
|
||||
//- rjf: bake string map sorting
|
||||
internal void *p2r_bake_string_map_sort_task__entry_point(Arena *arena, void *p);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_string_map_sort_task__entry_point);
|
||||
|
||||
//- rjf: pass 1: interner/deduper map builds
|
||||
internal void *p2r_build_bake_string_map_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_build_bake_name_map_task__entry_point(Arena *arena, void *p);
|
||||
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
|
||||
internal void *p2r_bake_units_top_level_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_bake_unit_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_bake_unit_vmap_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_bake_src_files_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_bake_udts_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_bake_global_variables_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_bake_global_vmap_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_bake_thread_variables_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_bake_procedures_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_bake_scopes_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_bake_scope_vmap_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_bake_file_paths_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_bake_strings_task__entry_point(Arena *arena, void *p);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_units_top_level_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_unit_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_unit_vmap_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_src_files_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_udts_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_global_variables_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_global_vmap_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_thread_variables_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_procedures_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_scopes_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_scope_vmap_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_file_paths_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_strings_task__entry_point);
|
||||
|
||||
//- rjf: pass 3: idx-run-map-dependent debug info stream builds
|
||||
internal void *p2r_bake_type_nodes_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_bake_name_map_task__entry_point(Arena *arena, void *p);
|
||||
internal void *p2r_bake_idx_runs_task__entry_point(Arena *arena, void *p);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_type_nodes_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_name_map_task__entry_point);
|
||||
internal TS_TASK_FUNCTION_DEF(p2r_bake_idx_runs_task__entry_point);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Top-Level Baking Entry Point
|
||||
|
||||
@@ -49,6 +49,15 @@ ts_init(void)
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Top-Level Accessors
|
||||
|
||||
internal U64
|
||||
ts_thread_count(void)
|
||||
{
|
||||
return ts_shared->task_threads_count;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: High-Level Task Kickoff / Joining
|
||||
|
||||
@@ -190,7 +199,7 @@ ts_task_thread__entry_point(void *p)
|
||||
}
|
||||
|
||||
//- rjf: run task
|
||||
void *task_result = task_function(task_arena, task_params);
|
||||
void *task_result = task_function(task_arena, thread_idx, task_params);
|
||||
|
||||
//- rjf: store into artifact
|
||||
U64 artifact_num = task_ticket.u64[0];
|
||||
|
||||
@@ -34,7 +34,8 @@ struct TS_TicketList
|
||||
////////////////////////////////
|
||||
//~ rjf: Task Request Types
|
||||
|
||||
typedef void *TS_TaskFunctionType(Arena *arena, void *user_data);
|
||||
#define TS_TASK_FUNCTION_DEF(name) void *name(Arena *arena, U64 thread_idx, void *p)
|
||||
typedef TS_TASK_FUNCTION_DEF(TS_TaskFunctionType);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Task Artifact Cache Types
|
||||
@@ -118,6 +119,11 @@ internal void ts_ticket_list_push(Arena *arena, TS_TicketList *list, TS_Ticket t
|
||||
|
||||
internal void ts_init(void);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Top-Level Accessors
|
||||
|
||||
internal U64 ts_thread_count(void);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: High-Level Task Kickoff / Joining
|
||||
|
||||
|
||||
Reference in New Issue
Block a user