mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-15 00:22:23 -07:00
revert type indices change
This commit is contained in:
+205
-67
@@ -438,6 +438,153 @@ rdim_rng1u64_list_push(RDIM_Arena *arena, RDIM_Rng1U64List *list, RDIM_Rng1U64 r
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//~ Data Model
|
||||
|
||||
RDI_PROC RDI_TypeKind
|
||||
rdim_short_type_from_data_model(RDIM_DataModel data_model)
|
||||
{
|
||||
switch(data_model)
|
||||
{
|
||||
case RDIM_DataModel_Null : break;
|
||||
case RDIM_DataModel_ILP32 : return RDI_TypeKind_S16;
|
||||
case RDIM_DataModel_LLP64 : return RDI_TypeKind_S16;
|
||||
case RDIM_DataModel_LP64 : return RDI_TypeKind_S16;
|
||||
case RDIM_DataModel_ILP64 : return RDI_TypeKind_S16;
|
||||
case RDIM_DataModel_SILP64: return RDI_TypeKind_S64;
|
||||
default: InvalidPath;
|
||||
}
|
||||
return RDI_TypeKind_NULL;
|
||||
}
|
||||
|
||||
RDI_PROC RDI_TypeKind
|
||||
rdim_unsigned_short_type_from_data_model(RDIM_DataModel data_model)
|
||||
{
|
||||
switch(data_model)
|
||||
{
|
||||
case RDIM_DataModel_Null : break;
|
||||
case RDIM_DataModel_ILP32 : return RDI_TypeKind_U16;
|
||||
case RDIM_DataModel_LLP64 : return RDI_TypeKind_U16;
|
||||
case RDIM_DataModel_LP64 : return RDI_TypeKind_U16;
|
||||
case RDIM_DataModel_ILP64 : return RDI_TypeKind_U16;
|
||||
case RDIM_DataModel_SILP64: return RDI_TypeKind_U64;
|
||||
default: InvalidPath;
|
||||
}
|
||||
return RDI_TypeKind_NULL;
|
||||
}
|
||||
|
||||
RDI_PROC RDI_TypeKind
|
||||
rdim_int_type_from_data_model(RDIM_DataModel data_model)
|
||||
{
|
||||
switch(data_model)
|
||||
{
|
||||
case RDIM_DataModel_Null : break;
|
||||
case RDIM_DataModel_ILP32 : return RDI_TypeKind_S32;
|
||||
case RDIM_DataModel_LLP64 : return RDI_TypeKind_S32;
|
||||
case RDIM_DataModel_LP64 : return RDI_TypeKind_S32;
|
||||
case RDIM_DataModel_ILP64 : return RDI_TypeKind_S64;
|
||||
case RDIM_DataModel_SILP64: return RDI_TypeKind_S64;
|
||||
default: InvalidPath;
|
||||
}
|
||||
return RDI_TypeKind_NULL;
|
||||
}
|
||||
|
||||
RDI_PROC RDI_TypeKind
|
||||
rdim_unsigned_int_type_from_data_model(RDIM_DataModel data_model)
|
||||
{
|
||||
switch(data_model)
|
||||
{
|
||||
case RDIM_DataModel_Null : break;
|
||||
case RDIM_DataModel_ILP32 : return RDI_TypeKind_U32;
|
||||
case RDIM_DataModel_LLP64 : return RDI_TypeKind_U32;
|
||||
case RDIM_DataModel_LP64 : return RDI_TypeKind_U32;
|
||||
case RDIM_DataModel_ILP64 : return RDI_TypeKind_U64;
|
||||
case RDIM_DataModel_SILP64: return RDI_TypeKind_U64;
|
||||
default: InvalidPath;
|
||||
}
|
||||
return RDI_TypeKind_NULL;
|
||||
}
|
||||
|
||||
RDI_PROC RDI_TypeKind
|
||||
rdim_long_type_from_data_model(RDIM_DataModel data_model)
|
||||
{
|
||||
switch(data_model)
|
||||
{
|
||||
case RDIM_DataModel_Null : break;
|
||||
case RDIM_DataModel_ILP32 : return RDI_TypeKind_S32;
|
||||
case RDIM_DataModel_LLP64 : return RDI_TypeKind_S32;
|
||||
case RDIM_DataModel_LP64 : return RDI_TypeKind_S64;
|
||||
case RDIM_DataModel_ILP64 : return RDI_TypeKind_S64;
|
||||
case RDIM_DataModel_SILP64: return RDI_TypeKind_S64;
|
||||
default: InvalidPath;
|
||||
}
|
||||
return RDI_TypeKind_NULL;
|
||||
}
|
||||
|
||||
RDI_PROC RDI_TypeKind
|
||||
rdim_unsigned_long_type_from_data_model(RDIM_DataModel data_model)
|
||||
{
|
||||
switch(data_model)
|
||||
{
|
||||
case RDIM_DataModel_Null : break;
|
||||
case RDIM_DataModel_ILP32 : return RDI_TypeKind_U32;
|
||||
case RDIM_DataModel_LLP64 : return RDI_TypeKind_U32;
|
||||
case RDIM_DataModel_LP64 : return RDI_TypeKind_U64;
|
||||
case RDIM_DataModel_ILP64 : return RDI_TypeKind_U64;
|
||||
case RDIM_DataModel_SILP64: return RDI_TypeKind_U64;
|
||||
default: InvalidPath;
|
||||
}
|
||||
return RDI_TypeKind_NULL;
|
||||
}
|
||||
|
||||
RDI_PROC RDI_TypeKind
|
||||
rdim_long_long_type_from_data_model(RDIM_DataModel data_model)
|
||||
{
|
||||
switch(data_model)
|
||||
{
|
||||
case RDIM_DataModel_Null : break;
|
||||
case RDIM_DataModel_ILP32 : return RDI_TypeKind_S64;
|
||||
case RDIM_DataModel_LLP64 : return RDI_TypeKind_S64;
|
||||
case RDIM_DataModel_LP64 : return RDI_TypeKind_S64;
|
||||
case RDIM_DataModel_ILP64 : return RDI_TypeKind_S64;
|
||||
case RDIM_DataModel_SILP64: return RDI_TypeKind_S64;
|
||||
default: InvalidPath;
|
||||
}
|
||||
return RDI_TypeKind_NULL;
|
||||
}
|
||||
|
||||
RDI_PROC RDI_TypeKind
|
||||
rdim_unsigned_long_long_type_from_data_model(RDIM_DataModel data_model)
|
||||
{
|
||||
switch(data_model)
|
||||
{
|
||||
case RDIM_DataModel_Null : break;
|
||||
case RDIM_DataModel_ILP32 : return RDI_TypeKind_U64;
|
||||
case RDIM_DataModel_LLP64 : return RDI_TypeKind_U64;
|
||||
case RDIM_DataModel_LP64 : return RDI_TypeKind_U64;
|
||||
case RDIM_DataModel_ILP64 : return RDI_TypeKind_U64;
|
||||
case RDIM_DataModel_SILP64: return RDI_TypeKind_U64;
|
||||
default: InvalidPath;
|
||||
}
|
||||
return RDI_TypeKind_NULL;
|
||||
}
|
||||
|
||||
RDI_PROC RDI_TypeKind
|
||||
rdim_pointer_size_t_type_from_data_model(RDIM_DataModel data_model)
|
||||
{
|
||||
switch(data_model)
|
||||
{
|
||||
case RDIM_DataModel_Null : break;
|
||||
case RDIM_DataModel_ILP32 : return RDI_TypeKind_U32;
|
||||
case RDIM_DataModel_LLP64 : return RDI_TypeKind_U64;
|
||||
case RDIM_DataModel_LP64 : return RDI_TypeKind_U64;
|
||||
case RDIM_DataModel_ILP64 : return RDI_TypeKind_U64;
|
||||
case RDIM_DataModel_SILP64: return RDI_TypeKind_U64;
|
||||
default: InvalidPath;
|
||||
}
|
||||
return RDI_TypeKind_NULL;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: [Building] Binary Section List Building
|
||||
|
||||
@@ -705,14 +852,6 @@ rdim_idx_from_type(RDIM_Type *type)
|
||||
return idx;
|
||||
}
|
||||
|
||||
RDI_PROC RDI_U64
|
||||
rdim_final_idx_from_type(RDI_U64 *type_indices, RDIM_Type *type)
|
||||
{
|
||||
RDI_U64 pos = rdim_idx_from_type(type);
|
||||
RDI_U64 idx = type_indices[pos];
|
||||
return idx;
|
||||
}
|
||||
|
||||
RDI_PROC void
|
||||
rdim_type_chunk_list_concat_in_place(RDIM_TypeChunkList *dst, RDIM_TypeChunkList *to_push)
|
||||
{
|
||||
@@ -1069,9 +1208,10 @@ rdim_bytecode_concat_in_place(RDIM_EvalBytecode *left_dst, RDIM_EvalBytecode *ri
|
||||
}
|
||||
else
|
||||
{
|
||||
left_dst->last_op = right_destroyed->last_op;
|
||||
left_dst->op_count += right_destroyed->op_count;
|
||||
left_dst->encoded_size += right_destroyed->encoded_size;
|
||||
left_dst->last_op->next = right_destroyed->first_op;
|
||||
left_dst->last_op = right_destroyed->last_op;
|
||||
left_dst->op_count += right_destroyed->op_count;
|
||||
left_dst->encoded_size += right_destroyed->encoded_size;
|
||||
}
|
||||
rdim_memzero_struct(right_destroyed);
|
||||
}
|
||||
@@ -1159,45 +1299,44 @@ rdim_count_from_location_block_chunk_list(RDIM_String8List *list)
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
RDI_PROC void
|
||||
rdim_assign_type_index(RDIM_Type *type, U64 *type_indices, U64 *curr_type_idx)
|
||||
RDI_PROC RDIM_Type *
|
||||
rdim_builtin_type_from_kind(RDIM_TypeChunkList list, RDI_TypeKind type_kind)
|
||||
{
|
||||
RDI_U64 type_pos = rdim_idx_from_type(type);
|
||||
if(type_indices[type_pos] == 0)
|
||||
{
|
||||
if(type->param_types)
|
||||
{
|
||||
for(RDI_U64 param_idx = 0; param_idx < type->count; param_idx += 1)
|
||||
{
|
||||
rdim_assign_type_index(type->param_types[param_idx], type_indices, curr_type_idx);
|
||||
}
|
||||
RDI_U64 type_idx = 0;
|
||||
if (type_kind != RDI_TypeKind_NULL) {
|
||||
type_idx = (type_kind - RDI_TypeKind_FirstBuiltIn) + 1;
|
||||
}
|
||||
|
||||
if(type->direct_type)
|
||||
{
|
||||
rdim_assign_type_index(type->direct_type, type_indices, curr_type_idx);
|
||||
}
|
||||
|
||||
type_indices[type_pos] = *curr_type_idx;
|
||||
*curr_type_idx += 1;
|
||||
}
|
||||
RDIM_Type *builtin = &list.first->v[type_idx];
|
||||
return builtin;
|
||||
}
|
||||
|
||||
RDI_PROC RDI_U64 *
|
||||
rdim_make_type_indices(RDIM_Arena *arena, RDIM_TypeChunkList *types)
|
||||
RDI_PROC RDIM_TypeChunkList
|
||||
rdim_init_type_chunk_list(RDIM_Arena *arena, RDI_Arch arch)
|
||||
{
|
||||
RDI_U64 *type_indices = rdim_push_array(arena, RDI_U64, types->total_count + 1);
|
||||
RDI_U64 type_indices_count = 1;
|
||||
RDIM_TypeChunkList list = {0};
|
||||
|
||||
for(RDIM_TypeChunkNode *chunk = types->first; chunk != 0; chunk = chunk->next)
|
||||
RDI_U64 type_cap = (RDI_TypeKind_LastBuiltIn - RDI_TypeKind_FirstBuiltIn) + 2;
|
||||
|
||||
RDIM_Type *null_type = rdim_type_chunk_list_push(arena, &list, type_cap);
|
||||
|
||||
for(RDI_TypeKind type_kind = RDI_TypeKind_FirstBuiltIn; type_kind <= RDI_TypeKind_LastBuiltIn; type_kind += 1)
|
||||
{
|
||||
for(RDI_U64 i = 0; i < chunk->count; i += 1)
|
||||
{
|
||||
rdim_assign_type_index(&chunk->v[i], type_indices, &type_indices_count);
|
||||
}
|
||||
RDIM_String8 name = {0};
|
||||
name.str = rdi_string_from_type_kind(type_kind, &name.size);
|
||||
|
||||
RDIM_Type *type = rdim_type_chunk_list_push(arena, &list, type_cap);
|
||||
type->name = name;
|
||||
type->kind = type_kind;
|
||||
type->byte_size = rdi_size_from_basic_type_kind(type_kind);
|
||||
}
|
||||
|
||||
return type_indices;
|
||||
RDIM_Type *void_type = rdim_builtin_type_from_kind(list, RDI_TypeKind_Void);
|
||||
void_type->byte_size = rdi_addr_size_from_arch(arch);
|
||||
|
||||
RDIM_Type *handle_type = rdim_builtin_type_from_kind(list, RDI_TypeKind_Handle);
|
||||
handle_type->byte_size = rdi_addr_size_from_arch(arch);
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
@@ -2139,7 +2278,7 @@ rdim_bake_string_map_loose_push_scopes(RDIM_Arena *arena, RDIM_BakeStringMapTopo
|
||||
//- rjf: bake name map building
|
||||
|
||||
RDI_PROC RDIM_BakeNameMap *
|
||||
rdim_bake_name_map_from_kind_params(RDIM_Arena *arena, RDI_NameMapKind kind, RDI_U64 *type_indices, RDIM_BakeParams *params)
|
||||
rdim_bake_name_map_from_kind_params(RDIM_Arena *arena, RDI_NameMapKind kind, RDIM_BakeParams *params)
|
||||
{
|
||||
RDIM_BakeNameMap *map = rdim_push_array(arena, RDIM_BakeNameMap, 1);
|
||||
switch(kind)
|
||||
@@ -2192,7 +2331,8 @@ rdim_bake_name_map_from_kind_params(RDIM_Arena *arena, RDI_NameMapKind kind, RDI
|
||||
{
|
||||
for(RDI_U64 idx = 0; idx < n->count; idx += 1)
|
||||
{
|
||||
RDI_U32 type_idx = (RDI_U32)rdim_final_idx_from_type(type_indices, &n->v[idx]); // TODO(rjf): @u64_to_u32
|
||||
RDI_U32 type_idx = (RDI_U32)rdim_idx_from_type(&n->v[idx]); // TODO(rjf): @u64_to_u32
|
||||
if(type_idx == 0) {continue;}
|
||||
rdim_bake_name_map_push(arena, map, n->v[idx].name, type_idx);
|
||||
}
|
||||
}
|
||||
@@ -2231,7 +2371,7 @@ rdim_bake_name_map_from_kind_params(RDIM_Arena *arena, RDI_NameMapKind kind, RDI
|
||||
//- rjf: idx run map building
|
||||
|
||||
RDI_PROC RDIM_BakeIdxRunMap *
|
||||
rdim_bake_idx_run_map_from_params(RDIM_Arena *arena, RDIM_BakeNameMap *name_maps[RDI_NameMapKind_COUNT], RDI_U64 *type_indices, RDIM_BakeParams *params)
|
||||
rdim_bake_idx_run_map_from_params(RDIM_Arena *arena, RDIM_BakeNameMap *name_maps[RDI_NameMapKind_COUNT], RDIM_BakeParams *params)
|
||||
{
|
||||
//- rjf: set up map
|
||||
RDIM_BakeIdxRunMap *idx_runs = rdim_push_array(arena, RDIM_BakeIdxRunMap, 1);
|
||||
@@ -2251,7 +2391,7 @@ rdim_bake_idx_run_map_from_params(RDIM_Arena *arena, RDIM_BakeNameMap *name_maps
|
||||
RDI_U32 *param_idx_run = rdim_push_array_no_zero(arena, RDI_U32, param_idx_run_count);
|
||||
for(RDI_U32 idx = 0; idx < param_idx_run_count; idx += 1)
|
||||
{
|
||||
param_idx_run[idx] = (RDI_U32)rdim_final_idx_from_type(type_indices, type->param_types[idx]); // TODO(rjf): @u64_to_u32
|
||||
param_idx_run[idx] = (RDI_U32)rdim_idx_from_type(type->param_types[idx]); // TODO(rjf): @u64_to_u32
|
||||
}
|
||||
rdim_bake_idx_run_map_insert(arena, idx_runs, param_idx_run, param_idx_run_count);
|
||||
}
|
||||
@@ -3027,7 +3167,7 @@ rdim_bake_line_tables(RDIM_Arena *arena, RDIM_LineTableChunkList *src)
|
||||
}
|
||||
|
||||
RDI_PROC RDIM_TypeNodeBakeResult
|
||||
rdim_bake_types(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeIdxRunMap *idx_runs, RDI_U64 *type_indices, RDIM_TypeChunkList *src)
|
||||
rdim_bake_types(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_TypeChunkList *src)
|
||||
{
|
||||
RDI_TypeNode *type_nodes = push_array(arena, RDI_TypeNode, src->total_count+1);
|
||||
for(RDIM_TypeChunkNode *n = src->first; n != 0; n = n->next)
|
||||
@@ -3035,7 +3175,7 @@ rdim_bake_types(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeId
|
||||
for(RDI_U64 chunk_idx = 0; chunk_idx < n->count; chunk_idx += 1)
|
||||
{
|
||||
RDIM_Type *src = &n->v[chunk_idx];
|
||||
U64 dst_idx = rdim_final_idx_from_type(type_indices, src);
|
||||
U64 dst_idx = rdim_idx_from_type(src);
|
||||
RDI_TypeNode *dst = &type_nodes[dst_idx];
|
||||
|
||||
//- rjf: fill shared type node info
|
||||
@@ -3056,14 +3196,14 @@ rdim_bake_types(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeId
|
||||
{
|
||||
direct_byte_size = src->direct_type->byte_size;
|
||||
}
|
||||
dst->constructed.direct_type_idx = (RDI_U32)rdim_final_idx_from_type(type_indices, src->direct_type);
|
||||
dst->constructed.direct_type_idx = (RDI_U32)rdim_idx_from_type(src->direct_type);
|
||||
dst->constructed.count = src->byte_size / direct_byte_size;
|
||||
}
|
||||
|
||||
//- rjf: fill constructed type node info
|
||||
else if(RDI_TypeKind_FirstConstructed <= dst->kind && dst->kind <= RDI_TypeKind_LastConstructed)
|
||||
{
|
||||
dst->constructed.direct_type_idx = (RDI_U32)rdim_final_idx_from_type(type_indices, src->direct_type); // TODO(rjf): @u64_to_u32
|
||||
dst->constructed.direct_type_idx = (RDI_U32)rdim_idx_from_type(src->direct_type); // TODO(rjf): @u64_to_u32
|
||||
dst->constructed.count = src->count;
|
||||
if(dst->kind == RDI_TypeKind_Function || dst->kind == RDI_TypeKind_Method)
|
||||
{
|
||||
@@ -3071,7 +3211,7 @@ rdim_bake_types(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeId
|
||||
RDI_U32 *param_idx_run = rdim_push_array_no_zero(arena, RDI_U32, param_idx_run_count);
|
||||
for(RDI_U32 idx = 0; idx < param_idx_run_count; idx += 1)
|
||||
{
|
||||
param_idx_run[idx] = (RDI_U32)rdim_final_idx_from_type(type_indices, src->param_types[idx]); // TODO(rjf): @u64_to_u32
|
||||
param_idx_run[idx] = (RDI_U32)rdim_idx_from_type(src->param_types[idx]); // TODO(rjf): @u64_to_u32
|
||||
}
|
||||
dst->constructed.param_idx_run_first = rdim_bake_idx_from_idx_run(idx_runs, param_idx_run, param_idx_run_count);
|
||||
}
|
||||
@@ -3086,13 +3226,13 @@ rdim_bake_types(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeId
|
||||
{
|
||||
dst->user_defined.name_string_idx = rdim_bake_idx_from_string(strings, src->name);
|
||||
dst->user_defined.udt_idx = (RDI_U32)rdim_idx_from_udt(src->udt); // TODO(rjf): @u64_to_u32
|
||||
dst->user_defined.direct_type_idx = (RDI_U32)rdim_final_idx_from_type(type_indices, src->direct_type); // TODO(rjf): @u64_to_u32
|
||||
dst->user_defined.direct_type_idx = (RDI_U32)rdim_idx_from_type(src->direct_type); // TODO(rjf): @u64_to_u32
|
||||
}
|
||||
|
||||
//- rjf: fill bitfield info
|
||||
else if(dst->kind == RDI_TypeKind_Bitfield)
|
||||
{
|
||||
dst->bitfield.direct_type_idx = (RDI_U32)rdim_final_idx_from_type(type_indices, src->direct_type); // TODO(rjf): @u64_to_u32
|
||||
dst->bitfield.direct_type_idx = (RDI_U32)rdim_idx_from_type(src->direct_type); // TODO(rjf): @u64_to_u32
|
||||
dst->bitfield.off = src->off;
|
||||
dst->bitfield.size = src->count;
|
||||
}
|
||||
@@ -3105,7 +3245,7 @@ rdim_bake_types(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeId
|
||||
}
|
||||
|
||||
RDI_PROC RDIM_UDTBakeResult
|
||||
rdim_bake_udts(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDI_U64 *type_indices, RDIM_UDTChunkList *src)
|
||||
rdim_bake_udts(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_UDTChunkList *src)
|
||||
{
|
||||
//- rjf: build tables
|
||||
RDI_UDT * udts = push_array(arena, RDI_UDT, src->total_count+1);
|
||||
@@ -3123,7 +3263,7 @@ rdim_bake_udts(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDI_U64 *typ
|
||||
RDI_UDT *dst_udt = &udts[dst_udt_idx];
|
||||
|
||||
//- rjf: fill basics
|
||||
dst_udt->self_type_idx = (RDI_U32)rdim_final_idx_from_type(type_indices, src_udt->self_type); // TODO(rjf): @u64_to_u32
|
||||
dst_udt->self_type_idx = (RDI_U32)rdim_idx_from_type(src_udt->self_type); // TODO(rjf): @u64_to_u32
|
||||
dst_udt->file_idx = (RDI_U32)rdim_idx_from_src_file(src_udt->src_file); // TODO(rjf): @u64_to_u32
|
||||
dst_udt->line = src_udt->line;
|
||||
dst_udt->col = src_udt->col;
|
||||
@@ -3140,7 +3280,7 @@ rdim_bake_udts(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDI_U64 *typ
|
||||
RDI_Member *dst_member = &members[dst_member_idx];
|
||||
dst_member->kind = src_member->kind;
|
||||
dst_member->name_string_idx = rdim_bake_idx_from_string(strings, src_member->name);
|
||||
dst_member->type_idx = (RDI_U32)rdim_final_idx_from_type(type_indices, src_member->type); // TODO(rjf): @u64_to_u32
|
||||
dst_member->type_idx = (RDI_U32)rdim_idx_from_type(src_member->type); // TODO(rjf): @u64_to_u32
|
||||
dst_member->off = src_member->off;
|
||||
}
|
||||
}
|
||||
@@ -3178,7 +3318,7 @@ rdim_bake_udts(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDI_U64 *typ
|
||||
}
|
||||
|
||||
RDI_PROC RDIM_GlobalVariableBakeResult
|
||||
rdim_bake_global_variables(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDI_U64 *type_indices, RDIM_SymbolChunkList *src)
|
||||
rdim_bake_global_variables(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_SymbolChunkList *src)
|
||||
{
|
||||
RDI_GlobalVariable *global_variables = push_array(arena, RDI_GlobalVariable, src->total_count+1);
|
||||
RDI_U32 dst_idx = 1;
|
||||
@@ -3190,7 +3330,7 @@ rdim_bake_global_variables(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings,
|
||||
RDI_GlobalVariable *dst = &global_variables[dst_idx];
|
||||
dst->name_string_idx = rdim_bake_idx_from_string(strings, src->name);
|
||||
dst->voff = src->offset;
|
||||
dst->type_idx = (RDI_U32)rdim_final_idx_from_type(type_indices, src->type); // TODO(rjf): @u64_to_u32
|
||||
dst->type_idx = (RDI_U32)rdim_idx_from_type(src->type); // TODO(rjf): @u64_to_u32
|
||||
if(src->is_extern)
|
||||
{
|
||||
dst->link_flags |= RDI_LinkFlag_External;
|
||||
@@ -3291,7 +3431,7 @@ rdim_bake_global_vmap(RDIM_Arena *arena, RDIM_SymbolChunkList *src)
|
||||
}
|
||||
|
||||
RDI_PROC RDIM_ThreadVariableBakeResult
|
||||
rdim_bake_thread_variables(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDI_U64 *type_indices, RDIM_SymbolChunkList *src)
|
||||
rdim_bake_thread_variables(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_SymbolChunkList *src)
|
||||
{
|
||||
RDI_ThreadVariable *thread_variables = push_array(arena, RDI_ThreadVariable, src->total_count+1);
|
||||
RDI_U32 dst_idx = 1;
|
||||
@@ -3303,7 +3443,7 @@ rdim_bake_thread_variables(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings,
|
||||
RDI_ThreadVariable *dst = &thread_variables[dst_idx];
|
||||
dst->name_string_idx = rdim_bake_idx_from_string(strings, src->name);
|
||||
dst->tls_off = (RDI_U32)src->offset; // TODO(rjf): @u64_to_u32
|
||||
dst->type_idx = (RDI_U32)rdim_final_idx_from_type(type_indices, src->type);
|
||||
dst->type_idx = (RDI_U32)rdim_idx_from_type(src->type);
|
||||
if(src->is_extern)
|
||||
{
|
||||
dst->link_flags |= RDI_LinkFlag_External;
|
||||
@@ -3327,7 +3467,7 @@ rdim_bake_thread_variables(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings,
|
||||
}
|
||||
|
||||
RDI_PROC U64
|
||||
rdim_bake_location(Arena *arena, RDIM_String8List *location_data_blobs, RDIM_Location *src_location)
|
||||
rdim_bake_location(RDIM_Arena *arena, RDIM_String8List *location_data_blobs, RDIM_Location *src_location)
|
||||
{
|
||||
U64 location_data_off = location_data_blobs->total_size;
|
||||
|
||||
@@ -3420,7 +3560,6 @@ rdim_bake_locset(RDIM_Arena *arena,
|
||||
RDI_PROC RDIM_ProcedureBakeResult
|
||||
rdim_bake_procedures(RDIM_Arena *arena,
|
||||
RDIM_BakeStringMapTight *strings,
|
||||
RDI_U64 *type_indices,
|
||||
RDIM_String8List *location_blocks,
|
||||
RDIM_String8List *location_data_blobs,
|
||||
RDIM_SymbolChunkList *src)
|
||||
@@ -3453,7 +3592,7 @@ rdim_bake_procedures(RDIM_Arena *arena,
|
||||
dst->link_flags |= RDI_LinkFlag_ProcScoped;
|
||||
dst->container_idx = (RDI_U32)rdim_idx_from_symbol(src->container_symbol); // TODO(rjf): @u64_to_u32
|
||||
}
|
||||
dst->type_idx = (RDI_U32)rdim_final_idx_from_type(type_indices, src->type); // TODO(rjf): @u64_to_u32
|
||||
dst->type_idx = (RDI_U32)rdim_idx_from_type(src->type); // TODO(rjf): @u64_to_u32
|
||||
dst->root_scope_idx = (RDI_U32)rdim_idx_from_scope(src->root_scope); // TODO(rjf): @u64_to_u32
|
||||
dst->frame_base_location_first = frame_base_location_first;
|
||||
dst->frame_base_location_opl = frame_base_location_opl;
|
||||
@@ -3468,7 +3607,6 @@ rdim_bake_procedures(RDIM_Arena *arena,
|
||||
RDI_PROC RDIM_ScopeBakeResult
|
||||
rdim_bake_scopes(RDIM_Arena *arena,
|
||||
RDIM_BakeStringMapTight *strings,
|
||||
RDI_U64 *type_indices,
|
||||
RDIM_String8List *location_blocks,
|
||||
RDIM_String8List *location_data_blobs,
|
||||
RDIM_ScopeChunkList *src)
|
||||
@@ -3521,7 +3659,7 @@ rdim_bake_scopes(RDIM_Arena *arena,
|
||||
RDI_Local *dst_local = &locals[dst_local_idx];
|
||||
dst_local->kind = src_local->kind;
|
||||
dst_local->name_string_idx = rdim_bake_idx_from_string(strings, src_local->name);
|
||||
dst_local->type_idx = (RDI_U32)rdim_final_idx_from_type(type_indices, src_local->type); // TODO(rjf): @u64_to_u32
|
||||
dst_local->type_idx = (RDI_U32)rdim_idx_from_type(src_local->type); // TODO(rjf): @u64_to_u32
|
||||
dst_local->location_first = location_block_idx_first;
|
||||
dst_local->location_opl = location_block_idx_opl;
|
||||
}
|
||||
@@ -3606,7 +3744,7 @@ rdim_bake_scope_vmap(RDIM_Arena *arena, RDIM_ScopeChunkList *src)
|
||||
}
|
||||
|
||||
RDI_PROC RDIM_InlineSiteBakeResult
|
||||
rdim_bake_inline_sites(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDI_U64 *type_indices, RDIM_InlineSiteChunkList *src)
|
||||
rdim_bake_inline_sites(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_InlineSiteChunkList *src)
|
||||
{
|
||||
RDIM_InlineSiteBakeResult result = {0};
|
||||
{
|
||||
@@ -3620,8 +3758,8 @@ rdim_bake_inline_sites(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDI_
|
||||
RDI_InlineSite *dst = &result.inline_sites[dst_idx];
|
||||
RDIM_InlineSite *src = &n->v[chunk_idx];
|
||||
dst->name_string_idx = rdim_bake_idx_from_string(strings, src->name);
|
||||
dst->type_idx = (RDI_U32)rdim_final_idx_from_type(type_indices, src->type); // TODO(rjf): @u64_to_u32
|
||||
dst->owner_type_idx = (RDI_U32)rdim_final_idx_from_type(type_indices, src->owner); // TODO(rjf): @u64_to_u32
|
||||
dst->type_idx = (RDI_U32)rdim_idx_from_type(src->type); // TODO(rjf): @u64_to_u32
|
||||
dst->owner_type_idx = (RDI_U32)rdim_idx_from_type(src->owner); // TODO(rjf): @u64_to_u32
|
||||
dst->line_table_idx = (RDI_U32)rdim_idx_from_line_table(src->line_table); // TODO(rjf): @u64_to_u32
|
||||
}
|
||||
}
|
||||
|
||||
+34
-16
@@ -595,6 +595,17 @@ struct RDIM_UnitChunkList
|
||||
////////////////////////////////
|
||||
//~ rjf: Type System Node Types
|
||||
|
||||
typedef RDI_U32 RDIM_DataModel;
|
||||
enum RDIM_DataModelEnum
|
||||
{
|
||||
RDIM_DataModel_Null,
|
||||
RDIM_DataModel_ILP32,
|
||||
RDIM_DataModel_LLP64,
|
||||
RDIM_DataModel_LP64,
|
||||
RDIM_DataModel_ILP64,
|
||||
RDIM_DataModel_SILP64
|
||||
};
|
||||
|
||||
typedef struct RDIM_Type RDIM_Type;
|
||||
struct RDIM_Type
|
||||
{
|
||||
@@ -605,6 +616,7 @@ struct RDIM_Type
|
||||
RDI_U32 off;
|
||||
RDI_U32 count;
|
||||
RDIM_String8 name;
|
||||
RDIM_String8 link_name;
|
||||
RDIM_Type *direct_type;
|
||||
RDIM_Type **param_types;
|
||||
struct RDIM_UDT *udt;
|
||||
@@ -1348,6 +1360,19 @@ RDI_PROC RDIM_SortKey *rdim_sort_key_array(RDIM_Arena *arena, RDIM_SortKey *keys
|
||||
//- rjf: rng1u64 list
|
||||
RDI_PROC void rdim_rng1u64_list_push(RDIM_Arena *arena, RDIM_Rng1U64List *list, RDIM_Rng1U64 r);
|
||||
|
||||
////////////////////////////////
|
||||
//~ Data Model
|
||||
|
||||
RDI_PROC RDI_TypeKind rdim_short_type_from_data_model(RDIM_DataModel data_model);
|
||||
RDI_PROC RDI_TypeKind rdim_unsigned_short_type_from_data_model(RDIM_DataModel data_model);
|
||||
RDI_PROC RDI_TypeKind rdim_int_type_from_data_model(RDIM_DataModel data_model);
|
||||
RDI_PROC RDI_TypeKind rdim_unsigned_int_type_from_data_model(RDIM_DataModel data_model);
|
||||
RDI_PROC RDI_TypeKind rdim_long_type_from_data_model(RDIM_DataModel data_model);
|
||||
RDI_PROC RDI_TypeKind rdim_unsigned_long_type_from_data_model(RDIM_DataModel data_model);
|
||||
RDI_PROC RDI_TypeKind rdim_long_long_type_from_data_model(RDIM_DataModel data_model);
|
||||
RDI_PROC RDI_TypeKind rdim_unsigned_long_long_type_from_data_model(RDIM_DataModel data_model);
|
||||
RDI_PROC RDI_TypeKind rdim_pointer_size_t_type_from_data_model(RDIM_DataModel data_model);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: [Building] Binary Section Info Building
|
||||
|
||||
@@ -1381,7 +1406,6 @@ RDI_PROC void rdim_unit_chunk_list_concat_in_place(RDIM_UnitChunkList *dst, RDIM
|
||||
|
||||
RDI_PROC RDIM_Type *rdim_type_chunk_list_push(RDIM_Arena *arena, RDIM_TypeChunkList *list, RDI_U64 cap);
|
||||
RDI_PROC RDI_U64 rdim_idx_from_type(RDIM_Type *type);
|
||||
RDI_PROC RDI_U64 rdim_final_idx_from_type(RDI_U64 *type_indices, RDIM_Type *type);
|
||||
RDI_PROC void rdim_type_chunk_list_concat_in_place(RDIM_TypeChunkList *dst, RDIM_TypeChunkList *to_push);
|
||||
RDI_PROC RDIM_UDT *rdim_udt_chunk_list_push(RDIM_Arena *arena, RDIM_UDTChunkList *list, RDI_U64 cap);
|
||||
RDI_PROC RDI_U64 rdim_idx_from_udt(RDIM_UDT *udt);
|
||||
@@ -1439,12 +1463,6 @@ RDI_PROC RDI_U32 rdim_count_from_location_block_chunk_list(RDIM_String8List *lis
|
||||
RDI_PROC RDIM_TypeChunkList rdim_init_type_chunk_list(RDIM_Arena *arena, RDI_Arch arch);
|
||||
RDI_PROC RDIM_Type * rdim_builtin_type_from_kind(RDIM_TypeChunkList list, RDI_TypeKind type_kind);
|
||||
|
||||
////////////////////////////////
|
||||
// Type Index
|
||||
|
||||
RDI_PROC void rdim_assign_type_index(RDIM_Type *type, U64 *type_indices, U64 *curr_type_idx);
|
||||
RDI_PROC RDI_U64 * rdim_make_type_indices(RDIM_Arena *arena, RDIM_TypeChunkList *types);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: [Baking Helpers] Baked VMap Building
|
||||
|
||||
@@ -1515,10 +1533,10 @@ RDI_PROC void rdim_bake_string_map_loose_push_symbols(RDIM_Arena *arena, RDIM_Ba
|
||||
RDI_PROC void rdim_bake_string_map_loose_push_scopes(RDIM_Arena *arena, RDIM_BakeStringMapTopology *top, RDIM_BakeStringMapLoose *map, RDIM_ScopeChunkList *list);
|
||||
|
||||
//- rjf: bake name map building
|
||||
RDI_PROC RDIM_BakeNameMap *rdim_bake_name_map_from_kind_params(RDIM_Arena *arena, RDI_NameMapKind kind, RDI_U64 *type_indices, RDIM_BakeParams *params);
|
||||
RDI_PROC RDIM_BakeNameMap *rdim_bake_name_map_from_kind_params(RDIM_Arena *arena, RDI_NameMapKind kind, RDIM_BakeParams *params);
|
||||
|
||||
//- rjf: bake idx run map building
|
||||
RDI_PROC RDIM_BakeIdxRunMap *rdim_bake_idx_run_map_from_params(RDIM_Arena *arena, RDIM_BakeNameMap *name_maps[RDI_NameMapKind_COUNT], RDI_U64 *type_indices, RDIM_BakeParams *params);
|
||||
RDI_PROC RDIM_BakeIdxRunMap *rdim_bake_idx_run_map_from_params(RDIM_Arena *arena, RDIM_BakeNameMap *name_maps[RDI_NameMapKind_COUNT], RDIM_BakeParams *params);
|
||||
|
||||
//- rjf: bake path tree building
|
||||
RDI_PROC RDIM_BakePathTree *rdim_bake_path_tree_from_params(RDIM_Arena *arena, RDIM_BakeParams *params);
|
||||
@@ -1539,15 +1557,15 @@ RDI_PROC RDIM_UnitBakeResult rdim_bake_units(RDIM_Arena *arena, RDIM_
|
||||
RDI_PROC RDIM_UnitVMapBakeResult rdim_bake_unit_vmap(RDIM_Arena *arena, RDIM_UnitChunkList *units);
|
||||
RDI_PROC RDIM_SrcFileBakeResult rdim_bake_src_files(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakePathTree *path_tree, RDIM_SrcFileChunkList *src);
|
||||
RDI_PROC RDIM_LineTableBakeResult rdim_bake_line_tables(RDIM_Arena *arena, RDIM_LineTableChunkList *src);
|
||||
RDI_PROC RDIM_TypeNodeBakeResult rdim_bake_types(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeIdxRunMap *idx_runs, RDI_U64 *type_indices, RDIM_TypeChunkList *src);
|
||||
RDI_PROC RDIM_UDTBakeResult rdim_bake_udts(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDI_U64 *type_indices, RDIM_UDTChunkList *src);
|
||||
RDI_PROC RDIM_GlobalVariableBakeResult rdim_bake_global_variables(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDI_U64 *type_indices, RDIM_SymbolChunkList *src);
|
||||
RDI_PROC RDIM_TypeNodeBakeResult rdim_bake_types(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_TypeChunkList *src);
|
||||
RDI_PROC RDIM_UDTBakeResult rdim_bake_udts(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_UDTChunkList *src);
|
||||
RDI_PROC RDIM_GlobalVariableBakeResult rdim_bake_global_variables(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_SymbolChunkList *src);
|
||||
RDI_PROC RDIM_GlobalVMapBakeResult rdim_bake_global_vmap(RDIM_Arena *arena, RDIM_SymbolChunkList *src);
|
||||
RDI_PROC RDIM_ThreadVariableBakeResult rdim_bake_thread_variables(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDI_U64 *type_indices, RDIM_SymbolChunkList *src);
|
||||
RDI_PROC RDIM_ProcedureBakeResult rdim_bake_procedures(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDI_U64 *type_indices, RDIM_String8List *location_blocks, RDIM_String8List *location_data_blobs, RDIM_SymbolChunkList *src);
|
||||
RDI_PROC RDIM_ScopeBakeResult rdim_bake_scopes(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDI_U64 *type_indices, RDIM_String8List *location_blocks, RDIM_String8List *location_data_blobs, RDIM_ScopeChunkList *src);
|
||||
RDI_PROC RDIM_ThreadVariableBakeResult rdim_bake_thread_variables(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_SymbolChunkList *src);
|
||||
RDI_PROC RDIM_ProcedureBakeResult rdim_bake_procedures(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_String8List *location_blocks, RDIM_String8List *location_data_blobs, RDIM_SymbolChunkList *src);
|
||||
RDI_PROC RDIM_ScopeBakeResult rdim_bake_scopes(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_String8List *location_blocks, RDIM_String8List *location_data_blobs, RDIM_ScopeChunkList *src);
|
||||
RDI_PROC RDIM_ScopeVMapBakeResult rdim_bake_scope_vmap(RDIM_Arena *arena, RDIM_ScopeChunkList *src);
|
||||
RDI_PROC RDIM_InlineSiteBakeResult rdim_bake_inline_sites(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDI_U64 *type_indices, RDIM_InlineSiteChunkList *src);
|
||||
RDI_PROC RDIM_InlineSiteBakeResult rdim_bake_inline_sites(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_InlineSiteChunkList *src);
|
||||
RDI_PROC RDIM_TopLevelNameMapBakeResult rdim_bake_name_maps_top_level(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakeIdxRunMap *idx_runs, RDIM_BakeNameMap *name_maps[RDI_NameMapKind_COUNT]);
|
||||
RDI_PROC RDIM_FilePathBakeResult rdim_bake_file_paths(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings, RDIM_BakePathTree *path_tree);
|
||||
RDI_PROC RDIM_StringBakeResult rdim_bake_strings(RDIM_Arena *arena, RDIM_BakeStringMapTight *strings);
|
||||
|
||||
@@ -1837,9 +1837,73 @@ d2r_convert(Arena *arena, D2R_User2Convert *in)
|
||||
return bake_params;
|
||||
}
|
||||
|
||||
RDI_PROC void
|
||||
rdim_assign_type_index(RDIM_Type *type, U64 *type_indices, U64 *curr_type_idx)
|
||||
{
|
||||
RDI_U64 type_pos = rdim_idx_from_type(type);
|
||||
|
||||
if(type->kind == RDI_TypeKind_NULL)
|
||||
{
|
||||
type_indices[type_pos] = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if(type_indices[type_pos] == 0)
|
||||
{
|
||||
if(type->param_types)
|
||||
{
|
||||
for(RDI_U64 param_idx = 0; param_idx < type->count; param_idx += 1)
|
||||
{
|
||||
rdim_assign_type_index(type->param_types[param_idx], type_indices, curr_type_idx);
|
||||
}
|
||||
}
|
||||
|
||||
if(type->direct_type)
|
||||
{
|
||||
rdim_assign_type_index(type->direct_type, type_indices, curr_type_idx);
|
||||
}
|
||||
|
||||
type_indices[type_pos] = *curr_type_idx;
|
||||
*curr_type_idx += 1;
|
||||
}
|
||||
}
|
||||
|
||||
RDI_PROC RDI_U64 *
|
||||
rdim_make_type_indices(RDIM_Arena *arena, RDIM_TypeChunkList *types)
|
||||
{
|
||||
ProfBeginFunction();
|
||||
|
||||
RDI_U64 *type_indices = rdim_push_array(arena, RDI_U64, types->total_count + 1);
|
||||
RDI_U64 type_indices_count = 1;
|
||||
|
||||
for(RDIM_TypeChunkNode *chunk = types->first; chunk != 0; chunk = chunk->next)
|
||||
{
|
||||
for(RDI_U64 i = 0; i < chunk->count; i += 1)
|
||||
{
|
||||
rdim_assign_type_index(&chunk->v[i], type_indices, &type_indices_count);
|
||||
}
|
||||
}
|
||||
|
||||
ProfEnd();
|
||||
return type_indices;
|
||||
}
|
||||
|
||||
internal RDIM_BakeResults
|
||||
d2r_bake(RDIM_LocalState *state, RDIM_BakeParams *in_params)
|
||||
{
|
||||
////////////////////////////////
|
||||
// resolve incomplete types
|
||||
|
||||
rdim_local_resolve_incomplete_types(&in_params->types, &in_params->udts);
|
||||
|
||||
////////////////////////////////
|
||||
// compute type indices
|
||||
|
||||
RDI_U64 *type_indices = rdim_make_type_indices(scratch.arena, &in_params->types);
|
||||
|
||||
// using type indices create a correct type array layout
|
||||
NotImplemented;
|
||||
|
||||
return rdim_bake(state, in_params);
|
||||
}
|
||||
|
||||
|
||||
+125
-43
@@ -3402,14 +3402,137 @@ p2r_convert(Arena *arena, P2R_User2Convert *in)
|
||||
if(in->flags & P2R_ConvertFlag_Types) ProfScope("types pass 3: construct all root/stub types from TPI")
|
||||
{
|
||||
itype_type_ptrs = push_array(arena, RDIM_Type *, (U64)(itype_opl));
|
||||
for(CV_TypeId root_itype = 0; root_itype < itype_opl; root_itype += 1)
|
||||
|
||||
//////////////////////////
|
||||
//- build basic types
|
||||
//
|
||||
{
|
||||
RDIM_DataModel data_model = rdim_infer_data_model(OperatingSystem_Windows, top_level_info.arch);
|
||||
|
||||
RDI_TypeKind short_type = rdim_short_type_from_data_model(data_model);
|
||||
RDI_TypeKind ushort_type = rdim_unsigned_short_type_from_data_model(data_model);
|
||||
RDI_TypeKind int_type = rdim_int_type_from_data_model(data_model);
|
||||
RDI_TypeKind uint_type = rdim_unsigned_int_type_from_data_model(data_model);
|
||||
RDI_TypeKind long_type = rdim_long_type_from_data_model(data_model);
|
||||
RDI_TypeKind ulong_type = rdim_unsigned_long_type_from_data_model(data_model);
|
||||
RDI_TypeKind long_long_type = rdim_long_long_type_from_data_model(data_model);
|
||||
RDI_TypeKind ulong_long_type = rdim_unsigned_long_long_type_from_data_model(data_model);
|
||||
RDI_TypeKind ptr_type = rdim_pointer_size_t_type_from_data_model(data_model);
|
||||
|
||||
struct
|
||||
{
|
||||
char * name;
|
||||
RDI_TypeKind kind_rdi;
|
||||
CV_LeafKind kind_cv;
|
||||
B32 make_pointer_near;
|
||||
B32 make_pointer_32;
|
||||
B32 make_pointer_64;
|
||||
}
|
||||
table[] =
|
||||
{
|
||||
{ "" , RDI_TypeKind_NULL , CV_BasicType_NOTYPE , 0, 0, 0 },
|
||||
{ "void" , RDI_TypeKind_Void , CV_BasicType_VOID , 1, 1, 1 },
|
||||
{ "HRESULT" , RDI_TypeKind_Handle , CV_BasicType_HRESULT , 0, 1, 1 },
|
||||
{ "signed char" , RDI_TypeKind_Char8 , CV_BasicType_CHAR , 1, 1, 1 },
|
||||
{ "short" , short_type , CV_BasicType_SHORT , 1, 1, 1 },
|
||||
{ "long" , long_type , CV_BasicType_LONG , 1, 1, 1 },
|
||||
{ "long long" , long_long_type , CV_BasicType_QUAD , 1, 1, 1 },
|
||||
{ "__int128" , RDI_TypeKind_S128 , CV_BasicType_OCT , 1, 1, 1 }, // Clang type
|
||||
{ "unsigned char" , RDI_TypeKind_UChar8 , CV_BasicType_UCHAR , 1, 1, 1 },
|
||||
{ "unsigned short" , ushort_type , CV_BasicType_USHORT , 1, 1, 1 },
|
||||
{ "unsigned long" , ulong_type , CV_BasicType_ULONG , 1, 1, 1 },
|
||||
{ "unsigned long long" , ulong_long_type , CV_BasicType_UQUAD , 1, 1, 1 },
|
||||
{ "__uint128" , RDI_TypeKind_U128 , CV_BasicType_UOCT , 1, 1, 1 }, // Clang type
|
||||
{ "bool" , RDI_TypeKind_S8 , CV_BasicType_BOOL8 , 1, 1, 1 },
|
||||
{ "__bool16" , RDI_TypeKind_S16 , CV_BasicType_BOOL16 , 1, 1, 1 }, // not real C type
|
||||
{ "__bool32" , RDI_TypeKind_S32 , CV_BasicType_BOOL32 , 1, 1, 1 }, // not real C type
|
||||
{ "float" , RDI_TypeKind_F32 , CV_BasicType_FLOAT32 , 1, 1, 1 },
|
||||
{ "double" , RDI_TypeKind_F64 , CV_BasicType_FLOAT64 , 1, 1, 1 },
|
||||
{ "long double" , RDI_TypeKind_F80 , CV_BasicType_FLOAT80 , 1, 1, 1 },
|
||||
{ "__float128" , RDI_TypeKind_F128 , CV_BasicType_FLOAT128 , 1, 1, 1 }, // Clang type
|
||||
{ "__float48" , RDI_TypeKind_F48 , CV_BasicType_FLOAT48 , 1, 1, 1 }, // not real C type
|
||||
{ "__float32pp" , RDI_TypeKind_F32PP , CV_BasicType_FLOAT32PP , 1, 1, 1 }, // not real C type
|
||||
{ "_Complex float" , RDI_TypeKind_ComplexF32 , CV_BasicType_COMPLEX32 , 0, 0, 0 },
|
||||
{ "_Complex double" , RDI_TypeKind_ComplexF64 , CV_BasicType_COMPLEX64 , 0, 0, 0 },
|
||||
{ "_Complex long double" , RDI_TypeKind_ComplexF80 , CV_BasicType_COMPLEX80 , 0, 0, 0 },
|
||||
{ "_Complex __float128" , RDI_TypeKind_ComplexF128, CV_BasicType_COMPLEX128 , 0, 0, 0 },
|
||||
{ "__int8" , RDI_TypeKind_S8 , CV_BasicType_INT8 , 1, 1, 1 },
|
||||
{ "__uint8" , RDI_TypeKind_U8 , CV_BasicType_UINT8 , 1, 1, 1 },
|
||||
{ "__int16" , RDI_TypeKind_S16 , CV_BasicType_INT16 , 1, 1, 1 },
|
||||
{ "__uint16" , RDI_TypeKind_U16 , CV_BasicType_UINT16 , 1, 1, 1 },
|
||||
{ "int" , int_type , CV_BasicType_INT32 , 1, 1, 1 },
|
||||
{ "unsigned int" , uint_type , CV_BasicType_UINT32 , 1, 1, 1 },
|
||||
{ "__int64" , RDI_TypeKind_S64 , CV_BasicType_INT64 , 1, 1, 1 },
|
||||
{ "__uint64" , RDI_TypeKind_U64 , CV_BasicType_UINT64 , 1, 1, 1 },
|
||||
{ "__int128" , RDI_TypeKind_S128 , CV_BasicType_INT128 , 1, 1, 1 },
|
||||
{ "__uint128" , RDI_TypeKind_U128 , CV_BasicType_UINT128 , 1, 1, 1 },
|
||||
{ "char" , RDI_TypeKind_Char8 , CV_BasicType_RCHAR , 1, 1, 1 }, // always ASCII
|
||||
{ "wchar_t" , RDI_TypeKind_UChar16 , CV_BasicType_WCHAR , 1, 1, 1 }, // on windows always UTF-16
|
||||
{ "char8_t" , RDI_TypeKind_Char8 , CV_BasicType_CHAR8 , 1, 1, 1 }, // always UTF-8
|
||||
{ "char16_t" , RDI_TypeKind_Char16 , CV_BasicType_CHAR16 , 1, 1, 1 }, // always UTF-16
|
||||
{ "char32_t" , RDI_TypeKind_Char32 , CV_BasicType_CHAR32 , 1, 1, 1 }, // always UTF-32
|
||||
{ "__pointer" , ptr_type , CV_BasicType_PTR , 0, 0, 0 }
|
||||
};
|
||||
|
||||
for(U64 i = 0; i < ArrayCount(table); i += 1)
|
||||
{
|
||||
U64 builtin_size;
|
||||
if(table[i].kind_rdi == RDI_TypeKind_Void || table[i].kind_rdi == RDI_TypeKind_Handle)
|
||||
{
|
||||
builtin_size = arch_addr_size;
|
||||
}
|
||||
else
|
||||
{
|
||||
builtin_size = rdi_size_from_basic_type_kind(table[i].kind_rdi);
|
||||
}
|
||||
|
||||
RDIM_Type *builtin = rdim_type_chunk_list_push(arena, &all_types, tpi_leaf->itype_opl);
|
||||
builtin->kind = table[i].kind_rdi;
|
||||
builtin->name = str8_cstring(table[i].name);
|
||||
builtin->byte_size = builtin_size;
|
||||
|
||||
itype_type_ptrs[table[i].kind_cv] = builtin;
|
||||
|
||||
if(table[i].make_pointer_near)
|
||||
{
|
||||
CV_TypeIndex near_ptr_itype = table[i].kind_cv | 0x100;
|
||||
RDIM_Type *ptr_near = rdim_type_chunk_list_push(arena, &all_types, tpi_leaf->itype_opl);
|
||||
ptr_near->kind = RDI_TypeKind_Ptr;
|
||||
ptr_near->byte_size = 2;
|
||||
ptr_near->direct_type = builtin;
|
||||
|
||||
itype_type_ptrs[near_ptr_itype] = ptr_near;
|
||||
}
|
||||
if(table[i].make_pointer_32)
|
||||
{
|
||||
CV_TypeIndex ptr_32_itype = table[i].kind_cv | 0x400;
|
||||
RDIM_Type *ptr_32 = rdim_type_chunk_list_push(arena, &all_types, tpi_leaf->itype_opl);
|
||||
ptr_32->kind = RDI_TypeKind_Ptr;
|
||||
ptr_32->byte_size = 4;
|
||||
ptr_32->direct_type = builtin;
|
||||
|
||||
itype_type_ptrs[ptr_32_itype] = ptr_32;
|
||||
}
|
||||
if(table[i].make_pointer_64)
|
||||
{
|
||||
CV_TypeIndex ptr_64_itype = table[i].kind_cv | 0x600;
|
||||
RDIM_Type *ptr_64 = rdim_type_chunk_list_push(arena, &all_types, tpi_leaf->itype_opl);
|
||||
ptr_64->kind = RDI_TypeKind_Ptr;
|
||||
ptr_64->byte_size = 8;
|
||||
ptr_64->direct_type = builtin;
|
||||
|
||||
itype_type_ptrs[ptr_64_itype] = ptr_64;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(CV_TypeId root_itype = tpi->itype_first; root_itype < itype_opl; root_itype += 1)
|
||||
{
|
||||
for(P2R_TypeIdChain *itype_chain = itype_chains[root_itype];
|
||||
itype_chain != 0;
|
||||
itype_chain = itype_chain->next)
|
||||
{
|
||||
CV_TypeId itype = (root_itype != itype_chain->itype && itype_chain->itype < itype_opl && itype_fwd_map[itype_chain->itype]) ? itype_fwd_map[itype_chain->itype] : itype_chain->itype;
|
||||
B32 itype_is_basic = (itype < 0x1000);
|
||||
|
||||
//////////////////////////
|
||||
//- rjf: skip forward-reference itypes - all future resolutions will
|
||||
@@ -3429,50 +3552,9 @@ p2r_convert(Arena *arena, P2R_User2Convert *in)
|
||||
continue;
|
||||
}
|
||||
|
||||
//////////////////////////
|
||||
//- rjf: build basic type
|
||||
//
|
||||
if(itype_is_basic)
|
||||
{
|
||||
RDIM_Type *dst_type = 0;
|
||||
|
||||
// rjf: unpack itype
|
||||
CV_BasicPointerKind cv_basic_ptr_kind = CV_BasicPointerKindFromTypeId(itype);
|
||||
CV_BasicType cv_basic_type_code = CV_BasicTypeFromTypeId(itype);
|
||||
|
||||
// rjf: get basic type slot, fill if unfilled
|
||||
RDIM_Type *basic_type = itype_type_ptrs[cv_basic_type_code];
|
||||
if(basic_type == 0)
|
||||
{
|
||||
RDI_TypeKind type_kind = p2r_rdi_type_kind_from_cv_basic_type(cv_basic_type_code);
|
||||
U32 byte_size = rdi_size_from_basic_type_kind(type_kind);
|
||||
basic_type = dst_type = rdim_type_chunk_list_push(arena, &all_types, (U64)itype_opl);
|
||||
if(byte_size == 0xffffffff)
|
||||
{
|
||||
byte_size = arch_addr_size;
|
||||
}
|
||||
basic_type->kind = type_kind;
|
||||
basic_type->name = cv_type_name_from_basic_type(cv_basic_type_code);
|
||||
basic_type->byte_size = byte_size;
|
||||
}
|
||||
|
||||
// rjf: nonzero ptr kind -> form ptr type to basic tpye
|
||||
if(cv_basic_ptr_kind != 0)
|
||||
{
|
||||
dst_type = rdim_type_chunk_list_push(arena, &all_types, (U64)itype_opl);
|
||||
dst_type->kind = RDI_TypeKind_Ptr;
|
||||
dst_type->byte_size = arch_addr_size;
|
||||
dst_type->direct_type = basic_type;
|
||||
}
|
||||
|
||||
// rjf: fill this itype's slot with the finished type
|
||||
itype_type_ptrs[itype] = dst_type;
|
||||
}
|
||||
|
||||
//////////////////////////
|
||||
//- rjf: build non-basic type
|
||||
//
|
||||
if(!itype_is_basic && itype >= itype_first)
|
||||
{
|
||||
RDIM_Type *dst_type = 0;
|
||||
CV_RecRange *range = &tpi_leaf->leaf_ranges.ranges[itype-itype_first];
|
||||
|
||||
@@ -266,7 +266,7 @@ ASYNC_WORK_DEF(rdim_build_bake_name_map_work)
|
||||
Arena *arena = rdim_local_state->work_thread_arenas[thread_idx];
|
||||
RDIM_BuildBakeNameMapIn *in = (RDIM_BuildBakeNameMapIn *)input;
|
||||
RDIM_BakeNameMap *name_map = 0;
|
||||
ProfScope("build name map %i", in->k) name_map = rdim_bake_name_map_from_kind_params(arena, in->k, in->type_indices, in->params);
|
||||
ProfScope("build name map %i", in->k) name_map = rdim_bake_name_map_from_kind_params(arena, in->k, in->params);
|
||||
ProfEnd();
|
||||
return name_map;
|
||||
}
|
||||
@@ -312,7 +312,7 @@ ASYNC_WORK_DEF(rdim_bake_udts_work)
|
||||
Arena *arena = rdim_local_state->work_thread_arenas[thread_idx];
|
||||
RDIM_BakeUDTsIn *in = (RDIM_BakeUDTsIn *)input;
|
||||
RDIM_UDTBakeResult *out = push_array(arena, RDIM_UDTBakeResult, 1);
|
||||
ProfScope("bake udts") *out = rdim_bake_udts(arena, in->strings, in->type_indices, in->udts);
|
||||
ProfScope("bake udts") *out = rdim_bake_udts(arena, in->strings, in->udts);
|
||||
ProfEnd();
|
||||
return out;
|
||||
}
|
||||
@@ -323,7 +323,7 @@ ASYNC_WORK_DEF(rdim_bake_global_variables_work)
|
||||
Arena *arena = rdim_local_state->work_thread_arenas[thread_idx];
|
||||
RDIM_BakeGlobalVariablesIn *in = (RDIM_BakeGlobalVariablesIn *)input;
|
||||
RDIM_GlobalVariableBakeResult *out = push_array(arena, RDIM_GlobalVariableBakeResult, 1);
|
||||
ProfScope("bake global variables") *out = rdim_bake_global_variables(arena, in->strings, in->type_indices, in->global_variables);
|
||||
ProfScope("bake global variables") *out = rdim_bake_global_variables(arena, in->strings, in->global_variables);
|
||||
ProfEnd();
|
||||
return out;
|
||||
}
|
||||
@@ -345,7 +345,7 @@ ASYNC_WORK_DEF(rdim_bake_thread_variables_work)
|
||||
Arena *arena = rdim_local_state->work_thread_arenas[thread_idx];
|
||||
RDIM_BakeThreadVariablesIn *in = (RDIM_BakeThreadVariablesIn *)input;
|
||||
RDIM_ThreadVariableBakeResult *out = push_array(arena, RDIM_ThreadVariableBakeResult, 1);
|
||||
ProfScope("bake thread variables") *out = rdim_bake_thread_variables(arena, in->strings, in->type_indices, in->thread_variables);
|
||||
ProfScope("bake thread variables") *out = rdim_bake_thread_variables(arena, in->strings, in->thread_variables);
|
||||
ProfEnd();
|
||||
return out;
|
||||
}
|
||||
@@ -356,7 +356,7 @@ ASYNC_WORK_DEF(rdim_bake_procedures_work)
|
||||
Arena *arena = rdim_local_state->work_thread_arenas[thread_idx];
|
||||
RDIM_BakeProceduresIn *in = (RDIM_BakeProceduresIn *)input;
|
||||
RDIM_ProcedureBakeResult *out = push_array(arena, RDIM_ProcedureBakeResult, 1);
|
||||
ProfScope("bake procedures") *out = rdim_bake_procedures(arena, in->strings, in->type_indices, in->location_blocks, in->location_data_blobs, in->procedures);
|
||||
ProfScope("bake procedures") *out = rdim_bake_procedures(arena, in->strings, in->location_blocks, in->location_data_blobs, in->procedures);
|
||||
ProfEnd();
|
||||
return out;
|
||||
}
|
||||
@@ -367,7 +367,7 @@ ASYNC_WORK_DEF(rdim_bake_scopes_work)
|
||||
Arena *arena = rdim_local_state->work_thread_arenas[thread_idx];
|
||||
RDIM_BakeScopesIn *in = (RDIM_BakeScopesIn *)input;
|
||||
RDIM_ScopeBakeResult *out = push_array(arena, RDIM_ScopeBakeResult, 1);
|
||||
ProfScope("bake scopes") *out = rdim_bake_scopes(arena, in->strings, in->type_indices, in->location_blocks, in->location_data_blobs, in->scopes);
|
||||
ProfScope("bake scopes") *out = rdim_bake_scopes(arena, in->strings, in->location_blocks, in->location_data_blobs, in->scopes);
|
||||
ProfEnd();
|
||||
return out;
|
||||
}
|
||||
@@ -389,7 +389,7 @@ ASYNC_WORK_DEF(rdim_bake_inline_sites_work)
|
||||
Arena *arena = rdim_local_state->work_thread_arenas[thread_idx];
|
||||
RDIM_BakeInlineSitesIn *in = (RDIM_BakeInlineSitesIn *)input;
|
||||
RDIM_InlineSiteBakeResult *out = push_array(arena, RDIM_InlineSiteBakeResult, 1);
|
||||
ProfScope("bake inline sites") *out = rdim_bake_inline_sites(arena, in->strings, in->type_indices, in->inline_sites);
|
||||
ProfScope("bake inline sites") *out = rdim_bake_inline_sites(arena, in->strings, in->inline_sites);
|
||||
ProfEnd();
|
||||
return out;
|
||||
}
|
||||
@@ -424,7 +424,7 @@ ASYNC_WORK_DEF(rdim_bake_type_nodes_work)
|
||||
Arena *arena = rdim_local_state->work_thread_arenas[thread_idx];
|
||||
RDIM_BakeTypeNodesIn *in = (RDIM_BakeTypeNodesIn *)input;
|
||||
RDIM_TypeNodeBakeResult *out = push_array(arena, RDIM_TypeNodeBakeResult, 1);
|
||||
ProfScope("bake type nodes") *out = rdim_bake_types(arena, in->strings, in->idx_runs, in->type_indices, in->types);
|
||||
ProfScope("bake type nodes") *out = rdim_bake_types(arena, in->strings, in->idx_runs, in->types);
|
||||
ProfEnd();
|
||||
return out;
|
||||
}
|
||||
@@ -652,16 +652,6 @@ rdim_bake(RDIM_LocalState *state, RDIM_BakeParams *in_params)
|
||||
RDIM_BakeResults out = {0};
|
||||
|
||||
rdim_local_state = state;
|
||||
|
||||
////////////////////////////////
|
||||
// resolve incomplete types
|
||||
|
||||
rdim_local_resolve_incomplete_types(&in_params->types, &in_params->udts);
|
||||
|
||||
////////////////////////////////
|
||||
// compute type indices
|
||||
|
||||
RDI_U64 *type_indices = rdim_make_type_indices(scratch.arena, &in_params->types);
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: kick off line tables baking
|
||||
@@ -892,7 +882,6 @@ rdim_bake(RDIM_LocalState *state, RDIM_BakeParams *in_params)
|
||||
k = (RDI_NameMapKind)(k+1))
|
||||
{
|
||||
build_bake_name_map_in[k].k = k;
|
||||
build_bake_name_map_in[k].type_indices = type_indices;
|
||||
build_bake_name_map_in[k].params = in_params;
|
||||
build_bake_name_map_task[k] = async_task_launch(scratch.arena, rdim_build_bake_name_map_work, .input = &build_bake_name_map_in[k]);
|
||||
}
|
||||
@@ -1000,13 +989,13 @@ rdim_bake(RDIM_LocalState *state, RDIM_BakeParams *in_params)
|
||||
ASYNC_Task *bake_unit_vmap_task = async_task_launch(scratch.arena, rdim_bake_unit_vmap_work, .input = &bake_unit_vmap_in);
|
||||
RDIM_BakeSrcFilesIn bake_src_files_in = {&bake_strings, path_tree, &in_params->src_files};
|
||||
ASYNC_Task *bake_src_files_task = async_task_launch(scratch.arena, rdim_bake_src_files_work, .input = &bake_src_files_in);
|
||||
RDIM_BakeUDTsIn bake_udts_in = {&bake_strings, &in_params->udts, type_indices};
|
||||
RDIM_BakeUDTsIn bake_udts_in = {&bake_strings, &in_params->udts};
|
||||
ASYNC_Task *bake_udts_task = async_task_launch(scratch.arena, rdim_bake_udts_work, .input = &bake_udts_in);
|
||||
RDIM_BakeGlobalVMapIn bake_global_vmap_in = {&in_params->global_variables};
|
||||
ASYNC_Task *bake_global_vmap_task = async_task_launch(scratch.arena, rdim_bake_global_vmap_work, .input = &bake_global_vmap_in);
|
||||
RDIM_BakeScopeVMapIn bake_scope_vmap_in = {&in_params->scopes};
|
||||
ASYNC_Task *bake_scope_vmap_task = async_task_launch(scratch.arena, rdim_bake_scope_vmap_work, .input = &bake_scope_vmap_in);
|
||||
RDIM_BakeInlineSitesIn bake_inline_sites_in = {&bake_strings, &in_params->inline_sites, type_indices};
|
||||
RDIM_BakeInlineSitesIn bake_inline_sites_in = {&bake_strings, &in_params->inline_sites};
|
||||
ASYNC_Task *bake_inline_sites_task = async_task_launch(scratch.arena, rdim_bake_inline_sites_work, .input = &bake_inline_sites_in);
|
||||
RDIM_BakeFilePathsIn bake_file_paths_in = {&bake_strings, path_tree};
|
||||
ASYNC_Task *bake_file_paths_task = async_task_launch(scratch.arena, rdim_bake_file_paths_work, .input = &bake_file_paths_in);
|
||||
@@ -1020,20 +1009,20 @@ rdim_bake(RDIM_LocalState *state, RDIM_BakeParams *in_params)
|
||||
rdim_location_block_chunk_list_push_array(state->work_thread_arenas[0], &location_blocks, 1);
|
||||
|
||||
// TODO: export location instead of VOFF
|
||||
RDIM_BakeThreadVariablesIn bake_thread_variables_in = {&bake_strings, &in_params->thread_variables, type_indices};
|
||||
RDIM_BakeThreadVariablesIn bake_thread_variables_in = {&bake_strings, &in_params->thread_variables};
|
||||
ASYNC_Task *bake_thread_variables_task = async_task_launch(scratch.arena, rdim_bake_thread_variables_work, .input = &bake_thread_variables_in);
|
||||
ProfScope("thread variables") out.thread_variables = *async_task_join_struct(bake_thread_variables_task, RDIM_ThreadVariableBakeResult);
|
||||
|
||||
// TODO: export location instead of VOFF
|
||||
RDIM_BakeGlobalVariablesIn bake_global_variables_in = {&bake_strings, &in_params->global_variables, type_indices};
|
||||
RDIM_BakeGlobalVariablesIn bake_global_variables_in = {&bake_strings, &in_params->global_variables};
|
||||
ASYNC_Task *bake_global_variables_task = async_task_launch(scratch.arena, rdim_bake_global_variables_work, .input = &bake_global_variables_in);
|
||||
ProfScope("global variables") out.global_variables = *async_task_join_struct(bake_global_variables_task, RDIM_GlobalVariableBakeResult);
|
||||
|
||||
RDIM_BakeScopesIn bake_scopes_in = {&bake_strings, &in_params->scopes, type_indices, &location_blocks, &location_data_blobs};
|
||||
RDIM_BakeScopesIn bake_scopes_in = {&bake_strings, &in_params->scopes, &location_blocks, &location_data_blobs};
|
||||
ASYNC_Task *bake_scopes_task = async_task_launch(scratch.arena, rdim_bake_scopes_work, .input = &bake_scopes_in);
|
||||
ProfScope("scopes") out.scopes = *async_task_join_struct(bake_scopes_task, RDIM_ScopeBakeResult);
|
||||
|
||||
RDIM_BakeProceduresIn bake_procedures_in = {&bake_strings, &in_params->procedures, type_indices, &location_blocks, &location_data_blobs};
|
||||
RDIM_BakeProceduresIn bake_procedures_in = {&bake_strings, &in_params->procedures, &location_blocks, &location_data_blobs};
|
||||
ASYNC_Task *bake_procedures_task = async_task_launch(scratch.arena, rdim_bake_procedures_work, .input = &bake_procedures_in);
|
||||
ProfScope("procedures") out.procedures = *async_task_join_struct(bake_procedures_task, RDIM_ProcedureBakeResult);
|
||||
|
||||
@@ -1057,7 +1046,7 @@ rdim_bake(RDIM_LocalState *state, RDIM_BakeParams *in_params)
|
||||
RDIM_BakeIdxRunMap *idx_runs = 0;
|
||||
ProfScope("build interned idx run map")
|
||||
{
|
||||
idx_runs = rdim_bake_idx_run_map_from_params(state->work_thread_arenas[0], name_maps, type_indices, in_params);
|
||||
idx_runs = rdim_bake_idx_run_map_from_params(state->work_thread_arenas[0], name_maps, in_params);
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
@@ -1070,7 +1059,7 @@ rdim_bake(RDIM_LocalState *state, RDIM_BakeParams *in_params)
|
||||
//////////////////////////////
|
||||
//- rjf: kick off pass 3 tasks
|
||||
//
|
||||
RDIM_BakeTypeNodesIn bake_type_nodes_in = {&bake_strings, idx_runs, &in_params->types, type_indices};
|
||||
RDIM_BakeTypeNodesIn bake_type_nodes_in = {&bake_strings, idx_runs, &in_params->types};
|
||||
ASYNC_Task *bake_type_nodes_task = async_task_launch(scratch.arena, rdim_bake_type_nodes_work, .input = &bake_type_nodes_in);
|
||||
ASYNC_Task *bake_name_maps_tasks[RDI_NameMapKind_COUNT] = {0};
|
||||
{
|
||||
|
||||
@@ -173,7 +173,6 @@ typedef struct RDIM_BuildBakeNameMapIn RDIM_BuildBakeNameMapIn;
|
||||
struct RDIM_BuildBakeNameMapIn
|
||||
{
|
||||
RDI_NameMapKind k;
|
||||
RDI_U64 *type_indices;
|
||||
RDIM_BakeParams *params;
|
||||
};
|
||||
|
||||
@@ -230,7 +229,6 @@ struct RDIM_BakeUDTsIn
|
||||
{
|
||||
RDIM_BakeStringMapTight *strings;
|
||||
RDIM_UDTChunkList *udts;
|
||||
RDI_U64 *type_indices;
|
||||
};
|
||||
|
||||
typedef struct RDIM_BakeGlobalVariablesIn RDIM_BakeGlobalVariablesIn;
|
||||
@@ -238,7 +236,6 @@ struct RDIM_BakeGlobalVariablesIn
|
||||
{
|
||||
RDIM_BakeStringMapTight *strings;
|
||||
RDIM_SymbolChunkList *global_variables;
|
||||
RDI_U64 *type_indices;
|
||||
};
|
||||
|
||||
typedef struct RDIM_BakeGlobalVMapIn RDIM_BakeGlobalVMapIn;
|
||||
@@ -252,7 +249,6 @@ struct RDIM_BakeThreadVariablesIn
|
||||
{
|
||||
RDIM_BakeStringMapTight *strings;
|
||||
RDIM_SymbolChunkList *thread_variables;
|
||||
RDI_U64 *type_indices;
|
||||
};
|
||||
|
||||
typedef struct RDIM_BakeProceduresIn RDIM_BakeProceduresIn;
|
||||
@@ -260,7 +256,6 @@ struct RDIM_BakeProceduresIn
|
||||
{
|
||||
RDIM_BakeStringMapTight *strings;
|
||||
RDIM_SymbolChunkList *procedures;
|
||||
RDI_U64 *type_indices;
|
||||
RDIM_String8List *location_blocks;
|
||||
RDIM_String8List *location_data_blobs;
|
||||
};
|
||||
@@ -270,7 +265,6 @@ struct RDIM_BakeScopesIn
|
||||
{
|
||||
RDIM_BakeStringMapTight *strings;
|
||||
RDIM_ScopeChunkList *scopes;
|
||||
RDI_U64 *type_indices;
|
||||
RDIM_String8List *location_blocks;
|
||||
RDIM_String8List *location_data_blobs;
|
||||
};
|
||||
@@ -286,7 +280,6 @@ struct RDIM_BakeInlineSitesIn
|
||||
{
|
||||
RDIM_BakeStringMapTight *strings;
|
||||
RDIM_InlineSiteChunkList *inline_sites;
|
||||
RDI_U64 *type_indices;
|
||||
};
|
||||
|
||||
typedef struct RDIM_BakeFilePathsIn RDIM_BakeFilePathsIn;
|
||||
@@ -308,7 +301,6 @@ struct RDIM_BakeTypeNodesIn
|
||||
RDIM_BakeStringMapTight *strings;
|
||||
RDIM_BakeIdxRunMap *idx_runs;
|
||||
RDIM_TypeChunkList *types;
|
||||
RDI_U64 *type_indices;
|
||||
};
|
||||
|
||||
typedef struct RDIM_BakeNameMapIn RDIM_BakeNameMapIn;
|
||||
|
||||
Reference in New Issue
Block a user