@@ -4397,6 +4397,25 @@ THREAD_POOL_TASK_FUNC(lnk_convert_line_tables_to_rdi_task)
43974397 ProfEnd ();
43984398}
43994399
4400+ internal
4401+ THREAD_POOL_TASK_FUNC (lnk_build_inlinee_lines_accels_task )
4402+ {
4403+ ProfBeginFunction ();
4404+ Temp scratch = scratch_begin (& arena , 1 );
4405+
4406+ LNK_ConvertUnitToRDITask * task = raw_task ;
4407+ CV_DebugS debug_s = task -> debug_s_arr [task_id ];
4408+
4409+ String8List raw_inlinee_lines = cv_sub_section_from_debug_s (debug_s , CV_C13SubSectionKind_InlineeLines );
4410+ CV_C13InlineeLinesParsedList inlinee_lines = cv_c13_inlinee_lines_from_sub_sections (arena , raw_inlinee_lines );
4411+ CV_InlineeLinesAccel * inlinee_lines_accel = cv_c13_make_inlinee_lines_accel (arena , inlinee_lines );
4412+
4413+ task -> inlinee_lines_accel_arr [task_id ] = inlinee_lines_accel ;
4414+
4415+ scratch_end (scratch );
4416+ ProfEnd ();
4417+ }
4418+
44004419internal
44014420THREAD_POOL_TASK_FUNC (lnk_convert_symbols_to_rdi_task )
44024421{
@@ -4917,7 +4936,7 @@ THREAD_POOL_TASK_FUNC(lnk_convert_symbols_to_rdi_task)
49174936 } break ;
49184937 case CV_SymKind_INLINESITE : {
49194938 CV_SymInlineSite * sym_inline_site = (CV_SymInlineSite * ) symbol .data .str ;
4920- String8 binary_annots = str8 (( U8 * ) ( sym_inline_site + 1 ), symbol .data . size - sizeof (* sym_inline_site ));
4939+ String8 binary_annots = str8_skip ( symbol .data , sizeof (* sym_inline_site ));
49214940
49224941 U64 parent_voff = 0 ;
49234942 if (scope_stack != 0 ) {
@@ -4972,7 +4991,7 @@ THREAD_POOL_TASK_FUNC(lnk_convert_symbols_to_rdi_task)
49724991
49734992 inline_site -> convert_ref .ud0 = binary_annots_parsed .lines ;
49744993 inline_site -> convert_ref .ud1 = binary_annots_parsed .lines_count ;
4975- inline_site -> convert_ref .ud2 = task_id ;
4994+ inline_site -> convert_ref .ud2 = symbols_input . obj_idx ;
49764995
49774996 // fill out scope
49784997 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,
52085227 udt_name_buckets = lnk_udt_name_hash_table_from_debug_t (tp , tp_arena , types [CV_TypeIndexSource_TPI ], & udt_name_buckets_cap );
52095228 ProfEnd ();
52105229
5230+
52115231 ProfBegin ("Convert CodeView types to RDIB Types" );
52125232 LNK_ConvertTypesToRDI task = {0 };
52135233 task .types = types ;
@@ -5349,6 +5369,11 @@ lnk_build_rad_debug_info(TP_Context *tp,
53495369 tp_for_parallel (tp , tp_arena , obj_count , lnk_convert_line_tables_to_rdi_task , & task );
53505370 ProfEnd ();
53515371
5372+ ProfBegin ("Build Inlinee Lines Accels" );
5373+ task .inlinee_lines_accel_arr = push_array (scratch .arena , CV_InlineeLinesAccel * , obj_count );
5374+ tp_for_parallel (tp , tp_arena , obj_count , lnk_build_inlinee_lines_accels_task , & task );
5375+ ProfEnd ();
5376+
53525377 ProfBegin ("Convert Symbols" );
53535378 tp_for_parallel (tp , tp_arena , total_symbol_input_count , lnk_convert_symbols_to_rdi_task , & task );
53545379 ProfEnd ();
0 commit comments