mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-06 05:48:40 +00:00
build inline lines accels
This commit is contained in:
@@ -4397,6 +4397,25 @@ THREAD_POOL_TASK_FUNC(lnk_convert_line_tables_to_rdi_task)
|
|||||||
ProfEnd();
|
ProfEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal
|
||||||
|
THREAD_POOL_TASK_FUNC(lnk_build_inlinee_lines_accels_task)
|
||||||
|
{
|
||||||
|
ProfBeginFunction();
|
||||||
|
Temp scratch = scratch_begin(&arena, 1);
|
||||||
|
|
||||||
|
LNK_ConvertUnitToRDITask *task = raw_task;
|
||||||
|
CV_DebugS debug_s = task->debug_s_arr[task_id];
|
||||||
|
|
||||||
|
String8List raw_inlinee_lines = cv_sub_section_from_debug_s(debug_s, CV_C13SubSectionKind_InlineeLines);
|
||||||
|
CV_C13InlineeLinesParsedList inlinee_lines = cv_c13_inlinee_lines_from_sub_sections(arena, raw_inlinee_lines);
|
||||||
|
CV_InlineeLinesAccel *inlinee_lines_accel = cv_c13_make_inlinee_lines_accel(arena, inlinee_lines);
|
||||||
|
|
||||||
|
task->inlinee_lines_accel_arr[task_id] = inlinee_lines_accel;
|
||||||
|
|
||||||
|
scratch_end(scratch);
|
||||||
|
ProfEnd();
|
||||||
|
}
|
||||||
|
|
||||||
internal
|
internal
|
||||||
THREAD_POOL_TASK_FUNC(lnk_convert_symbols_to_rdi_task)
|
THREAD_POOL_TASK_FUNC(lnk_convert_symbols_to_rdi_task)
|
||||||
{
|
{
|
||||||
@@ -4917,7 +4936,7 @@ THREAD_POOL_TASK_FUNC(lnk_convert_symbols_to_rdi_task)
|
|||||||
} break;
|
} break;
|
||||||
case CV_SymKind_INLINESITE: {
|
case CV_SymKind_INLINESITE: {
|
||||||
CV_SymInlineSite *sym_inline_site = (CV_SymInlineSite *) symbol.data.str;
|
CV_SymInlineSite *sym_inline_site = (CV_SymInlineSite *) symbol.data.str;
|
||||||
String8 binary_annots = str8((U8 *) (sym_inline_site + 1), symbol.data.size - sizeof(*sym_inline_site));
|
String8 binary_annots = str8_skip(symbol.data, sizeof(*sym_inline_site));
|
||||||
|
|
||||||
U64 parent_voff = 0;
|
U64 parent_voff = 0;
|
||||||
if (scope_stack != 0) {
|
if (scope_stack != 0) {
|
||||||
@@ -4972,7 +4991,7 @@ THREAD_POOL_TASK_FUNC(lnk_convert_symbols_to_rdi_task)
|
|||||||
|
|
||||||
inline_site->convert_ref.ud0 = binary_annots_parsed.lines;
|
inline_site->convert_ref.ud0 = binary_annots_parsed.lines;
|
||||||
inline_site->convert_ref.ud1 = binary_annots_parsed.lines_count;
|
inline_site->convert_ref.ud1 = binary_annots_parsed.lines_count;
|
||||||
inline_site->convert_ref.ud2 = task_id;
|
inline_site->convert_ref.ud2 = symbols_input.obj_idx;
|
||||||
|
|
||||||
// fill out scope
|
// fill out scope
|
||||||
RDIB_Scope *scope = rdib_scope_chunk_list_push(arena, &task->scopes[worker_id], task->symbol_chunk_cap);
|
RDIB_Scope *scope = rdib_scope_chunk_list_push(arena, &task->scopes[worker_id], task->symbol_chunk_cap);
|
||||||
@@ -5208,6 +5227,7 @@ lnk_build_rad_debug_info(TP_Context *tp,
|
|||||||
udt_name_buckets = lnk_udt_name_hash_table_from_debug_t(tp, tp_arena, types[CV_TypeIndexSource_TPI], &udt_name_buckets_cap);
|
udt_name_buckets = lnk_udt_name_hash_table_from_debug_t(tp, tp_arena, types[CV_TypeIndexSource_TPI], &udt_name_buckets_cap);
|
||||||
ProfEnd();
|
ProfEnd();
|
||||||
|
|
||||||
|
|
||||||
ProfBegin("Convert CodeView types to RDIB Types");
|
ProfBegin("Convert CodeView types to RDIB Types");
|
||||||
LNK_ConvertTypesToRDI task = {0};
|
LNK_ConvertTypesToRDI task = {0};
|
||||||
task.types = types;
|
task.types = types;
|
||||||
@@ -5349,6 +5369,11 @@ lnk_build_rad_debug_info(TP_Context *tp,
|
|||||||
tp_for_parallel(tp, tp_arena, obj_count, lnk_convert_line_tables_to_rdi_task, &task);
|
tp_for_parallel(tp, tp_arena, obj_count, lnk_convert_line_tables_to_rdi_task, &task);
|
||||||
ProfEnd();
|
ProfEnd();
|
||||||
|
|
||||||
|
ProfBegin("Build Inlinee Lines Accels");
|
||||||
|
task.inlinee_lines_accel_arr = push_array(scratch.arena, CV_InlineeLinesAccel *, obj_count);
|
||||||
|
tp_for_parallel(tp, tp_arena, obj_count, lnk_build_inlinee_lines_accels_task, &task);
|
||||||
|
ProfEnd();
|
||||||
|
|
||||||
ProfBegin("Convert Symbols");
|
ProfBegin("Convert Symbols");
|
||||||
tp_for_parallel(tp, tp_arena, total_symbol_input_count, lnk_convert_symbols_to_rdi_task, &task);
|
tp_for_parallel(tp, tp_arena, total_symbol_input_count, lnk_convert_symbols_to_rdi_task, &task);
|
||||||
ProfEnd();
|
ProfEnd();
|
||||||
|
|||||||
Reference in New Issue
Block a user