mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-15 01:28:07 +00:00
finish almost all new baking for new symbols/location-info, just missing locals
This commit is contained in:
@@ -1279,19 +1279,6 @@ struct RDIM_LineRec
|
|||||||
|
|
||||||
//- rjf: baking results
|
//- rjf: baking results
|
||||||
|
|
||||||
typedef struct RDIM_ChecksumBakeResult RDIM_ChecksumBakeResult;
|
|
||||||
struct RDIM_ChecksumBakeResult
|
|
||||||
{
|
|
||||||
RDI_MD5 *md5s;
|
|
||||||
RDI_U64 md5s_count;
|
|
||||||
RDI_SHA1 *sha1s;
|
|
||||||
RDI_U64 sha1s_count;
|
|
||||||
RDI_SHA256 *sha256s;
|
|
||||||
RDI_U64 sha256s_count;
|
|
||||||
RDI_U64 *timestamps;
|
|
||||||
RDI_U64 timestamps_count;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct RDIM_LocationBakeResult RDIM_LocationBakeResult;
|
typedef struct RDIM_LocationBakeResult RDIM_LocationBakeResult;
|
||||||
struct RDIM_LocationBakeResult
|
struct RDIM_LocationBakeResult
|
||||||
{
|
{
|
||||||
@@ -1313,12 +1300,6 @@ struct RDIM_GlobalVariableBakeResult
|
|||||||
RDI_U64 global_variables_count;
|
RDI_U64 global_variables_count;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct RDIM_GlobalVMapBakeResult RDIM_GlobalVMapBakeResult;
|
|
||||||
struct RDIM_GlobalVMapBakeResult
|
|
||||||
{
|
|
||||||
RDIM_BakeVMap vmap;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct RDIM_ThreadVariableBakeResult RDIM_ThreadVariableBakeResult;
|
typedef struct RDIM_ThreadVariableBakeResult RDIM_ThreadVariableBakeResult;
|
||||||
struct RDIM_ThreadVariableBakeResult
|
struct RDIM_ThreadVariableBakeResult
|
||||||
{
|
{
|
||||||
@@ -1344,22 +1325,6 @@ struct RDIM_ProcedureBakeResult
|
|||||||
RDI_U64 procedures_count;
|
RDI_U64 procedures_count;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct RDIM_TopLevelNameMapBakeResult RDIM_TopLevelNameMapBakeResult;
|
|
||||||
struct RDIM_TopLevelNameMapBakeResult
|
|
||||||
{
|
|
||||||
RDI_NameMap *name_maps;
|
|
||||||
RDI_U64 name_maps_count;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct RDIM_NameMapBakeResult RDIM_NameMapBakeResult;
|
|
||||||
struct RDIM_NameMapBakeResult
|
|
||||||
{
|
|
||||||
RDI_NameMapBucket *buckets;
|
|
||||||
RDI_U64 buckets_count;
|
|
||||||
RDI_NameMapNode *nodes;
|
|
||||||
RDI_U64 nodes_count;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct RDIM_SerializedSection RDIM_SerializedSection;
|
typedef struct RDIM_SerializedSection RDIM_SerializedSection;
|
||||||
struct RDIM_SerializedSection
|
struct RDIM_SerializedSection
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -286,12 +286,12 @@ rdim_bake(Arena *arena, RDIM_BakeParams *params)
|
|||||||
//
|
//
|
||||||
RDIM_BakeVMap *baked_scope_vmap = 0;
|
RDIM_BakeVMap *baked_scope_vmap = 0;
|
||||||
RDIM_BakeVMap *baked_unit_vmap = 0;
|
RDIM_BakeVMap *baked_unit_vmap = 0;
|
||||||
RDIM_GlobalVMapBakeResult *baked_global_vmap = 0;
|
RDIM_BakeVMap *baked_global_vmap = 0;
|
||||||
if(lane_idx() == 0)
|
if(lane_idx() == 0)
|
||||||
{
|
{
|
||||||
baked_scope_vmap = push_array(scratch.arena, RDIM_BakeVMap, 1);
|
baked_scope_vmap = push_array(scratch.arena, RDIM_BakeVMap, 1);
|
||||||
baked_unit_vmap = push_array(scratch.arena, RDIM_BakeVMap, 1);
|
baked_unit_vmap = push_array(scratch.arena, RDIM_BakeVMap, 1);
|
||||||
baked_global_vmap = push_array(scratch.arena, RDIM_GlobalVMapBakeResult, 1);
|
baked_global_vmap = push_array(scratch.arena, RDIM_BakeVMap, 1);
|
||||||
}
|
}
|
||||||
lane_sync_u64(&baked_scope_vmap, 0);
|
lane_sync_u64(&baked_scope_vmap, 0);
|
||||||
lane_sync_u64(&baked_unit_vmap, 0);
|
lane_sync_u64(&baked_unit_vmap, 0);
|
||||||
@@ -599,7 +599,7 @@ rdim_bake(Arena *arena, RDIM_BakeParams *params)
|
|||||||
vmap_tasks[] =
|
vmap_tasks[] =
|
||||||
{
|
{
|
||||||
{str8_lit_comp("scopes"), scope_vmap_records, scope_vmap_records_count, &baked_scope_vmap->vmap, &baked_scope_vmap->count},
|
{str8_lit_comp("scopes"), scope_vmap_records, scope_vmap_records_count, &baked_scope_vmap->vmap, &baked_scope_vmap->count},
|
||||||
{str8_lit_comp("globals"), global_vmap_records, global_vmap_records_count, &baked_global_vmap->vmap.vmap, &baked_global_vmap->vmap.count},
|
{str8_lit_comp("globals"), global_vmap_records, global_vmap_records_count, &baked_global_vmap->vmap, &baked_global_vmap->count},
|
||||||
{str8_lit_comp("units"), unit_vmap_records, unit_vmap_records_count, &baked_unit_vmap->vmap, &baked_unit_vmap->count},
|
{str8_lit_comp("units"), unit_vmap_records, unit_vmap_records_count, &baked_unit_vmap->vmap, &baked_unit_vmap->count},
|
||||||
};
|
};
|
||||||
ProfScope("sort & bake all vmaps")
|
ProfScope("sort & bake all vmaps")
|
||||||
@@ -1851,8 +1851,17 @@ rdim_bake(Arena *arena, RDIM_BakeParams *params)
|
|||||||
//////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////
|
||||||
//- rjf: @rdim_bake_stage bake name maps
|
//- rjf: @rdim_bake_stage bake name maps
|
||||||
//
|
//
|
||||||
RDIM_TopLevelNameMapBakeResult *baked_top_level_name_maps = 0;
|
typedef struct BakedNameMaps BakedNameMaps;
|
||||||
RDIM_NameMapBakeResult *baked_name_maps = 0;
|
struct BakedNameMaps
|
||||||
|
{
|
||||||
|
RDI_NameMap *name_maps;
|
||||||
|
RDI_U64 name_maps_count;
|
||||||
|
RDI_NameMapBucket *buckets;
|
||||||
|
RDI_U64 buckets_count;
|
||||||
|
RDI_NameMapNode *nodes;
|
||||||
|
RDI_U64 nodes_count;
|
||||||
|
};
|
||||||
|
BakedNameMaps *baked_name_maps = 0;
|
||||||
ProfScope("bake name maps")
|
ProfScope("bake name maps")
|
||||||
{
|
{
|
||||||
// rjf: count unique names in all name maps; lay out baked nodes
|
// rjf: count unique names in all name maps; lay out baked nodes
|
||||||
@@ -1925,27 +1934,25 @@ rdim_bake(Arena *arena, RDIM_BakeParams *params)
|
|||||||
// rjf: setup
|
// rjf: setup
|
||||||
ProfScope("setup") if(lane_idx() == 0)
|
ProfScope("setup") if(lane_idx() == 0)
|
||||||
{
|
{
|
||||||
baked_top_level_name_maps = push_array(scratch.arena, RDIM_TopLevelNameMapBakeResult, 1);
|
baked_name_maps = push_array(scratch.arena, BakedNameMaps, 1);
|
||||||
baked_top_level_name_maps->name_maps_count = RDI_NameMapKind_COUNT;
|
baked_name_maps->name_maps_count = RDI_NameMapKind_COUNT;
|
||||||
baked_top_level_name_maps->name_maps = push_array(arena, RDI_NameMap, baked_top_level_name_maps->name_maps_count);
|
baked_name_maps->name_maps = push_array(arena, RDI_NameMap, baked_name_maps->name_maps_count);
|
||||||
baked_name_maps = push_array(scratch.arena, RDIM_NameMapBakeResult, 1);
|
|
||||||
RDI_U32 bucket_off = 0;
|
RDI_U32 bucket_off = 0;
|
||||||
RDI_U32 node_off = 0;
|
RDI_U32 node_off = 0;
|
||||||
for EachNonZeroEnumVal(RDI_NameMapKind, k)
|
for EachNonZeroEnumVal(RDI_NameMapKind, k)
|
||||||
{
|
{
|
||||||
baked_top_level_name_maps->name_maps[k].bucket_base_idx = bucket_off;
|
baked_name_maps->name_maps[k].bucket_base_idx = bucket_off;
|
||||||
baked_top_level_name_maps->name_maps[k].node_base_idx = node_off;
|
baked_name_maps->name_maps[k].node_base_idx = node_off;
|
||||||
baked_top_level_name_maps->name_maps[k].bucket_count = (RDI_U32)bake_name_maps_tops[k].slots_count; // TODO(rjf): @u64_to_u32
|
baked_name_maps->name_maps[k].bucket_count = (RDI_U32)bake_name_maps_tops[k].slots_count; // TODO(rjf): @u64_to_u32
|
||||||
baked_top_level_name_maps->name_maps[k].node_count = (RDI_U32)name_map_node_counts[k]; // TODO(rjf): @u64_to_u32
|
baked_name_maps->name_maps[k].node_count = (RDI_U32)name_map_node_counts[k]; // TODO(rjf): @u64_to_u32
|
||||||
bucket_off += baked_top_level_name_maps->name_maps[k].bucket_count;
|
bucket_off += baked_name_maps->name_maps[k].bucket_count;
|
||||||
node_off += baked_top_level_name_maps->name_maps[k].node_count;
|
node_off += baked_name_maps->name_maps[k].node_count;
|
||||||
}
|
}
|
||||||
baked_name_maps->buckets_count = bucket_off;
|
baked_name_maps->buckets_count = bucket_off;
|
||||||
baked_name_maps->buckets = push_array(arena, RDI_NameMapBucket, baked_name_maps->buckets_count);
|
baked_name_maps->buckets = push_array(arena, RDI_NameMapBucket, baked_name_maps->buckets_count);
|
||||||
baked_name_maps->nodes_count = total_name_map_node_count;
|
baked_name_maps->nodes_count = total_name_map_node_count;
|
||||||
baked_name_maps->nodes = push_array(arena, RDI_NameMapNode, baked_name_maps->nodes_count);
|
baked_name_maps->nodes = push_array(arena, RDI_NameMapNode, baked_name_maps->nodes_count);
|
||||||
}
|
}
|
||||||
lane_sync_u64(&baked_top_level_name_maps, 0);
|
|
||||||
lane_sync_u64(&baked_name_maps, 0);
|
lane_sync_u64(&baked_name_maps, 0);
|
||||||
|
|
||||||
// rjf: wide fill baked name maps
|
// rjf: wide fill baked name maps
|
||||||
@@ -1958,7 +1965,7 @@ rdim_bake(Arena *arena, RDIM_BakeParams *params)
|
|||||||
RDIM_BakeNameMapTopology *top = &bake_name_maps_tops[k];
|
RDIM_BakeNameMapTopology *top = &bake_name_maps_tops[k];
|
||||||
U64 slots_count = top->slots_count;
|
U64 slots_count = top->slots_count;
|
||||||
RDIM_BakeNameMap *src_map = bake_name_maps[k];
|
RDIM_BakeNameMap *src_map = bake_name_maps[k];
|
||||||
RDI_NameMap *dst_map = &baked_top_level_name_maps->name_maps[k];
|
RDI_NameMap *dst_map = &baked_name_maps->name_maps[k];
|
||||||
RDI_NameMapBucket *dst_buckets = baked_name_maps->buckets + dst_map->bucket_base_idx;
|
RDI_NameMapBucket *dst_buckets = baked_name_maps->buckets + dst_map->bucket_base_idx;
|
||||||
RDI_NameMapNode *dst_nodes = baked_name_maps->nodes + dst_map->node_base_idx;
|
RDI_NameMapNode *dst_nodes = baked_name_maps->nodes + dst_map->node_base_idx;
|
||||||
Rng1U64 slot_range = lane_range(slots_count);
|
Rng1U64 slot_range = lane_range(slots_count);
|
||||||
@@ -2404,13 +2411,25 @@ rdim_bake(Arena *arena, RDIM_BakeParams *params)
|
|||||||
//////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////
|
||||||
//- rjf: @rdim_bake_stage bake checksums
|
//- rjf: @rdim_bake_stage bake checksums
|
||||||
//
|
//
|
||||||
RDIM_ChecksumBakeResult *baked_checksums = 0;
|
typedef struct BakedChecksums BakedChecksums;
|
||||||
|
struct BakedChecksums
|
||||||
|
{
|
||||||
|
RDI_MD5 *md5s;
|
||||||
|
RDI_U64 md5s_count;
|
||||||
|
RDI_SHA1 *sha1s;
|
||||||
|
RDI_U64 sha1s_count;
|
||||||
|
RDI_SHA256 *sha256s;
|
||||||
|
RDI_U64 sha256s_count;
|
||||||
|
RDI_U64 *timestamps;
|
||||||
|
RDI_U64 timestamps_count;
|
||||||
|
};
|
||||||
|
BakedChecksums *baked_checksums = 0;
|
||||||
ProfScope("bake checksums")
|
ProfScope("bake checksums")
|
||||||
{
|
{
|
||||||
// rjf: allocate
|
// rjf: allocate
|
||||||
if(lane_idx() == 0)
|
if(lane_idx() == 0)
|
||||||
{
|
{
|
||||||
baked_checksums = push_array(scratch.arena, RDIM_ChecksumBakeResult, 1);
|
baked_checksums = push_array(scratch.arena, BakedChecksums, 1);
|
||||||
baked_checksums->md5s_count = src_map_layout->total_checksum_counts[RDI_ChecksumKind_MD5] + 1;
|
baked_checksums->md5s_count = src_map_layout->total_checksum_counts[RDI_ChecksumKind_MD5] + 1;
|
||||||
baked_checksums->sha1s_count = src_map_layout->total_checksum_counts[RDI_ChecksumKind_SHA1] + 1;
|
baked_checksums->sha1s_count = src_map_layout->total_checksum_counts[RDI_ChecksumKind_SHA1] + 1;
|
||||||
baked_checksums->sha256s_count = src_map_layout->total_checksum_counts[RDI_ChecksumKind_SHA256] + 1;
|
baked_checksums->sha256s_count = src_map_layout->total_checksum_counts[RDI_ChecksumKind_SHA256] + 1;
|
||||||
@@ -3111,7 +3130,6 @@ rdim_bake(Arena *arena, RDIM_BakeParams *params)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////
|
||||||
//- rjf: @rdim_bake_stage compute layout for constant data
|
//- rjf: @rdim_bake_stage compute layout for constant data
|
||||||
//
|
//
|
||||||
@@ -3471,6 +3489,12 @@ rdim_bake(Arena *arena, RDIM_BakeParams *params)
|
|||||||
//////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////
|
||||||
//- rjf: @rdim_bake_stage bake symbols (NEW)
|
//- rjf: @rdim_bake_stage bake symbols (NEW)
|
||||||
//
|
//
|
||||||
|
RDI_U8 *baked_location_bytecode_data = 0;
|
||||||
|
RDI_U8 *baked_location_constant_data = 0;
|
||||||
|
RDI_LocationSetElement *baked_location_set_elements = 0;
|
||||||
|
U64 baked_location_bytecode_data_size = 0;
|
||||||
|
U64 baked_location_constant_data_size = 0;
|
||||||
|
U64 baked_location_set_elements_count = 0;
|
||||||
ProfScope("bake symbols")
|
ProfScope("bake symbols")
|
||||||
{
|
{
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
@@ -3584,6 +3608,12 @@ rdim_bake(Arena *arena, RDIM_BakeParams *params)
|
|||||||
lane_sync_u64(&loc_bytecode_data, 0);
|
lane_sync_u64(&loc_bytecode_data, 0);
|
||||||
lane_sync_u64(&loc_constant_data, 0);
|
lane_sync_u64(&loc_constant_data, 0);
|
||||||
lane_sync_u64(&loc_set_elements, 0);
|
lane_sync_u64(&loc_set_elements, 0);
|
||||||
|
baked_location_bytecode_data = loc_bytecode_data;
|
||||||
|
baked_location_bytecode_data_size = total_bytecode_data_count;
|
||||||
|
baked_location_constant_data = loc_constant_data;
|
||||||
|
baked_location_constant_data_size = total_constant_data_count;
|
||||||
|
baked_location_set_elements = loc_set_elements;
|
||||||
|
baked_location_set_elements_count = total_set_element_count;
|
||||||
|
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
//- rjf: bake flat symbol tables
|
//- rjf: bake flat symbol tables
|
||||||
@@ -3865,21 +3895,21 @@ rdim_bake(Arena *arena, RDIM_BakeParams *params)
|
|||||||
Map(ScopeVMap, baked_scope_vmap->vmap, baked_scope_vmap->count);
|
Map(ScopeVMap, baked_scope_vmap->vmap, baked_scope_vmap->count);
|
||||||
Map(InlineSites, baked_inline_sites, baked_inline_sites_count);
|
Map(InlineSites, baked_inline_sites, baked_inline_sites_count);
|
||||||
Map(GlobalVariableSymbols, baked_global_variables, baked_global_variables_count);
|
Map(GlobalVariableSymbols, baked_global_variables, baked_global_variables_count);
|
||||||
// Map(GlobalVMap, );
|
Map(GlobalVMap, baked_global_vmap->vmap, baked_global_vmap->count);
|
||||||
Map(ThreadVariableSymbols, baked_thread_variables, baked_thread_variables_count);
|
Map(ThreadVariableSymbols, baked_thread_variables, baked_thread_variables_count);
|
||||||
Map(ConstantSymbols, baked_constants, baked_constants_count);
|
Map(ConstantSymbols, baked_constants, baked_constants_count);
|
||||||
Map(ProcedureSymbols, baked_procedures, baked_procedures_count);
|
Map(ProcedureSymbols, baked_procedures, baked_procedures_count);
|
||||||
// Map(LocalVariableSymbols, );
|
// Map(LocalVariableSymbols, );
|
||||||
// Map(LocationsBytecodeData, );
|
Map(LocationsBytecodeData, baked_location_bytecode_data, baked_location_bytecode_data_size);
|
||||||
// Map(LocationsConstantData, );
|
Map(LocationsConstantData, baked_location_constant_data, baked_location_constant_data_size);
|
||||||
// Map(LocationsSetElements, );
|
Map(LocationsSetElements, baked_location_set_elements, baked_location_set_elements_count);
|
||||||
// Map(MD5Checksums, );
|
Map(MD5Checksums, baked_checksums->md5s, baked_checksums->md5s_count);
|
||||||
// Map(SHA1Checksums, );
|
Map(SHA1Checksums, baked_checksums->sha1s, baked_checksums->sha1s_count);
|
||||||
// Map(SHA256Checksums, );
|
Map(SHA256Checksums, baked_checksums->sha256s, baked_checksums->sha256s_count);
|
||||||
// Map(Timestamps, );
|
Map(Timestamps, baked_checksums->timestamps, baked_checksums->timestamps_count);
|
||||||
// Map(NameMaps, );
|
Map(NameMaps, baked_name_maps->name_maps, baked_name_maps->name_maps_count);
|
||||||
// Map(NameMapBuckets, );
|
Map(NameMapBuckets, baked_name_maps->buckets, baked_name_maps->buckets_count);
|
||||||
// Map(NameMapNodes, );
|
Map(NameMapNodes, baked_name_maps->nodes, baked_name_maps->nodes_count);
|
||||||
#undef Map
|
#undef Map
|
||||||
}
|
}
|
||||||
lane_sync();
|
lane_sync();
|
||||||
|
|||||||
Reference in New Issue
Block a user