From 6beb9951e6d2ea7febb4d3ab54cdf06c34a346fb Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Thu, 22 Feb 2024 16:54:39 -0800 Subject: [PATCH] adjust default task sizes in raddbgi_from_pdb --- src/msf/msf.c | 11 +++++++---- src/msf/msf.h | 25 +++++++++++++++---------- src/raddbgi_from_pdb/raddbgi_from_pdb.c | 6 +++--- 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/msf/msf.c b/src/msf/msf.c index f93461dd..70f7533f 100644 --- a/src/msf/msf.c +++ b/src/msf/msf.c @@ -2,7 +2,7 @@ // Licensed under the MIT license (https://opensource.org/license/mit/) //////////////////////////////// -//~ MSF Parser Function +//~ rjf: MSF Parser Functions internal MSF_Parsed* msf_parsed_from_data(Arena *arena, String8 msf_data) @@ -199,7 +199,8 @@ msf_parsed_from_data(Arena *arena, String8 msf_data) U32 entry_cursor = all_stream_entries_off; U32 index_cursor = all_indices_off; String8 *stream_ptr = streams; - for (U32 i = 0; i < stream_count; i += 1){ + for (U32 i = 0; i < stream_count; i += 1) + { // read stream size U32 stream_size_raw = *(U32*)(directory_buf + entry_cursor); if (stream_size_raw == 0xffffffff){ @@ -274,9 +275,11 @@ msf_parsed_from_data(Arena *arena, String8 msf_data) } internal String8 -msf_data_from_stream(MSF_Parsed *msf, MSF_StreamNumber sn){ +msf_data_from_stream(MSF_Parsed *msf, MSF_StreamNumber sn) +{ String8 result = {0}; - if (sn < msf->stream_count){ + if(sn < msf->stream_count) + { result = msf->streams[sn]; } return(result); diff --git a/src/msf/msf.h b/src/msf/msf.h index 7184e195..77f7eebf 100644 --- a/src/msf/msf.h +++ b/src/msf/msf.h @@ -5,7 +5,7 @@ #define MSF_H //////////////////////////////// -//~ MSF Format Types +//~ rjf: MSF Format Types #define MSF_INVALID_STREAM_NUMBER 0xFFFF typedef U16 MSF_StreamNumber; @@ -17,23 +17,27 @@ static char msf_msf70_magic[] = "Microsoft C/C++ MSF 7.00\r\n\032DS\0\0"; #define MSF_MSF70_MAGIC_SIZE 32 #define MSF_MAX_MAGIC_SIZE 44 -typedef struct MSF_Header20{ +typedef struct MSF_Header20 MSF_Header20; +struct MSF_Header20 +{ U32 block_size; U16 free_block_map_block; U16 block_count; U32 directory_size; U32 unknown; U16 directory_map; -} MSF_Header20; +}; -typedef struct MSF_Header70{ +typedef struct MSF_Header70 MSF_Header70; +struct MSF_Header70 +{ U32 block_size; U32 free_block_map_block; U32 block_count; U32 directory_size; U32 unknown; U32 directory_super_map; -} MSF_Header70; +}; // magic(20) + header(20) = 44 + 20 = 64 // magic(70) + header(70) = 32 + 24 = 56 @@ -41,18 +45,19 @@ typedef struct MSF_Header70{ #define MSF_MIN_SIZE 64 //////////////////////////////// -//~ MSF Parser Helper Types +//~ rjf: MSF Parser Helper Types -typedef struct MSF_Parsed{ +typedef struct MSF_Parsed MSF_Parsed; +struct MSF_Parsed +{ String8 *streams; U64 stream_count; - U64 block_size; U64 block_count; -} MSF_Parsed; +}; //////////////////////////////// -//~ MSF Parser Function +//~ rjf: MSF Parser Functions internal MSF_Parsed* msf_parsed_from_data(Arena *arena, String8 msf_data); internal String8 msf_data_from_stream(MSF_Parsed *msf, MSF_StreamNumber sn); diff --git a/src/raddbgi_from_pdb/raddbgi_from_pdb.c b/src/raddbgi_from_pdb/raddbgi_from_pdb.c index 35c82ba5..76101eb4 100644 --- a/src/raddbgi_from_pdb/raddbgi_from_pdb.c +++ b/src/raddbgi_from_pdb/raddbgi_from_pdb.c @@ -2921,7 +2921,7 @@ p2r_convert(Arena *arena, P2R_User2Convert *in) itype_fwd_map = push_array(arena, CV_TypeId, (U64)itype_opl); //- rjf: kick off tasks to fill forward resolution map - U64 task_size_itypes = 4096; + U64 task_size_itypes = 1024; U64 tasks_count = ((U64)itype_opl+(task_size_itypes-1))/task_size_itypes; P2R_ITypeFwdMapFillIn *tasks_inputs = push_array(scratch.arena, P2R_ITypeFwdMapFillIn, tasks_count); TS_Ticket *tasks_tickets = push_array(scratch.arena, TS_Ticket, tasks_count); @@ -2960,7 +2960,7 @@ p2r_convert(Arena *arena, P2R_User2Convert *in) itype_chains = push_array(arena, P2R_TypeIdChain *, (U64)itype_opl); //- rjf: kick off tasks to fill itype chain table - U64 task_size_itypes = 4096; + U64 task_size_itypes = 1024; U64 tasks_count = ((U64)itype_opl+(task_size_itypes-1))/task_size_itypes; P2R_ITypeChainBuildIn *tasks_inputs = push_array(scratch.arena, P2R_ITypeChainBuildIn, tasks_count); TS_Ticket *tasks_tickets = push_array(scratch.arena, TS_Ticket, tasks_count); @@ -3461,7 +3461,7 @@ p2r_convert(Arena *arena, P2R_User2Convert *in) //////////////////////////// //- rjf: kick off all symbol conversion tasks // - U64 global_stream_subdivision_tasks_count = (sym->sym_ranges.count+65535)/65536; + U64 global_stream_subdivision_tasks_count = (sym->sym_ranges.count+16383)/16384; U64 global_stream_syms_per_task = sym->sym_ranges.count/global_stream_subdivision_tasks_count; U64 tasks_count = comp_unit_count + global_stream_subdivision_tasks_count; P2R_SymbolStreamConvertIn *tasks_inputs = push_array(scratch.arena, P2R_SymbolStreamConvertIn, tasks_count);