export CodeView types as aliases to its builtin counter-parts,

This commit is contained in:
Nikita Smith
2025-03-27 13:47:47 -07:00
parent 53c889e5d3
commit 49ba163077
7 changed files with 175 additions and 54 deletions
+60 -9
View File
@@ -444,7 +444,8 @@ rdim_rng1u64_list_push(RDIM_Arena *arena, RDIM_Rng1U64List *list, RDIM_Rng1U64 r
RDI_PROC RDI_TypeKind
rdim_short_type_from_data_model(RDIM_DataModel data_model)
{
switch (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;
@@ -459,7 +460,8 @@ 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)
{
switch (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;
@@ -474,7 +476,8 @@ 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)
{
switch (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;
@@ -489,7 +492,8 @@ 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)
{
switch (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;
@@ -504,7 +508,8 @@ 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)
{
switch (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;
@@ -519,7 +524,8 @@ 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)
{
switch (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;
@@ -534,7 +540,8 @@ 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)
{
switch (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;
@@ -549,7 +556,8 @@ 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)
{
switch (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;
@@ -564,7 +572,8 @@ 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)
{
switch (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;
@@ -1298,6 +1307,48 @@ rdim_count_from_location_block_chunk_list(RDIM_String8List *list)
////////////////////////////////
RDI_PROC RDIM_Type *
rdim_builtin_type_from_kind(RDIM_TypeChunkList list, RDI_TypeKind type_kind)
{
RDI_U64 type_idx = 0;
if (type_kind != RDI_TypeKind_NULL) {
type_idx = (type_kind - RDI_TypeKind_FirstBuiltIn) + 1;
}
RDIM_Type *builtin = &list.first->v[type_idx];
return builtin;
}
RDI_PROC RDIM_TypeChunkList
rdim_init_type_chunk_list(RDIM_Arena *arena, RDI_Arch arch)
{
RDIM_TypeChunkList list = {0};
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)
{
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);
}
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;
}
////////////////////////////////
RDI_PROC void
rdim_assign_type_index(RDIM_Type *type, U64 *type_indices, U64 *curr_type_idx)
{
+5
View File
@@ -1459,6 +1459,11 @@ RDI_PROC void rdim_location_set_push_case(RDIM_Arena *arena, RDIM_ScopeChunkList
RDI_PROC RDI_LocationBlock * rdim_location_block_chunk_list_push_array(RDIM_Arena *arena, RDIM_String8List *list, RDI_U32 count);
RDI_PROC RDI_U32 rdim_count_from_location_block_chunk_list(RDIM_String8List *list);
////////////////////////////////
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