mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-01 11:48:10 +00:00
re-nest enum vals & members into udts; we want to keep the building API flexible with order of member building, and we can assume ~statistically-uniform distribution across all udts, so it makes more sense to just parallelize on udts, and pay the small cost of an upfront per-lane layout.
This commit is contained in:
@@ -837,50 +837,6 @@ rdim_type_chunk_list_concat_in_place(RDIM_TypeChunkList *dst, RDIM_TypeChunkList
|
||||
RDIM_IdxedChunkListConcatInPlace(RDIM_TypeChunkNode, dst, to_push);
|
||||
}
|
||||
|
||||
//- rjf: UDT members
|
||||
|
||||
RDI_PROC RDIM_UDTMember *
|
||||
rdim_udt_member_chunk_list_push(RDIM_Arena *arena, RDIM_UDTMemberChunkList *list, RDI_U64 cap)
|
||||
{
|
||||
RDIM_IdxedChunkListPush(arena, list, RDIM_UDTMemberChunkNode, RDIM_UDTMember, cap, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
RDI_PROC RDI_U64
|
||||
rdim_idx_from_udt_member(RDIM_UDTMember *member)
|
||||
{
|
||||
RDIM_IdxedChunkListElementGetIdx(member, idx);
|
||||
return idx;
|
||||
}
|
||||
|
||||
RDI_PROC void
|
||||
rdim_udt_member_chunk_list_concat_in_place(RDIM_UDTMemberChunkList *dst, RDIM_UDTMemberChunkList *to_push)
|
||||
{
|
||||
RDIM_IdxedChunkListConcatInPlace(RDIM_UDTMemberChunkNode, dst, to_push);
|
||||
}
|
||||
|
||||
//- rjf: UDT enum values
|
||||
|
||||
RDI_PROC RDIM_UDTEnumVal *
|
||||
rdim_udt_enum_val_chunk_list_push(RDIM_Arena *arena, RDIM_UDTEnumValChunkList *list, RDI_U64 cap)
|
||||
{
|
||||
RDIM_IdxedChunkListPush(arena, list, RDIM_UDTEnumValChunkNode, RDIM_UDTEnumVal, cap, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
RDI_PROC RDI_U64
|
||||
rdim_idx_from_udt_enum_val(RDIM_UDTEnumVal *enum_val)
|
||||
{
|
||||
RDIM_IdxedChunkListElementGetIdx(enum_val, idx);
|
||||
return idx;
|
||||
}
|
||||
|
||||
RDI_PROC void
|
||||
rdim_udt_enum_val_chunk_list_concat_in_place(RDIM_UDTEnumValChunkList *dst, RDIM_UDTEnumValChunkList *to_push)
|
||||
{
|
||||
RDIM_IdxedChunkListConcatInPlace(RDIM_UDTEnumValChunkNode, dst, to_push);
|
||||
}
|
||||
|
||||
//- rjf: UDTs
|
||||
|
||||
RDI_PROC RDIM_UDT *
|
||||
|
||||
@@ -723,7 +723,6 @@ struct RDIM_TypeChunkList
|
||||
typedef struct RDIM_UDTMember RDIM_UDTMember;
|
||||
struct RDIM_UDTMember
|
||||
{
|
||||
struct RDIM_UDTMemberChunkNode *chunk;
|
||||
RDIM_UDTMember *next;
|
||||
RDI_MemberKind kind;
|
||||
RDIM_String8 name;
|
||||
@@ -731,55 +730,16 @@ struct RDIM_UDTMember
|
||||
RDI_U32 off;
|
||||
};
|
||||
|
||||
typedef struct RDIM_UDTMemberChunkNode RDIM_UDTMemberChunkNode;
|
||||
struct RDIM_UDTMemberChunkNode
|
||||
{
|
||||
RDIM_UDTMemberChunkNode *next;
|
||||
RDIM_UDTMember *v;
|
||||
RDI_U64 count;
|
||||
RDI_U64 cap;
|
||||
RDI_U64 base_idx;
|
||||
};
|
||||
|
||||
typedef struct RDIM_UDTMemberChunkList RDIM_UDTMemberChunkList;
|
||||
struct RDIM_UDTMemberChunkList
|
||||
{
|
||||
RDIM_UDTMemberChunkNode *first;
|
||||
RDIM_UDTMemberChunkNode *last;
|
||||
RDI_U64 chunk_count;
|
||||
RDI_U64 total_count;
|
||||
};
|
||||
|
||||
//- rjf: UDT enum values
|
||||
|
||||
typedef struct RDIM_UDTEnumVal RDIM_UDTEnumVal;
|
||||
struct RDIM_UDTEnumVal
|
||||
{
|
||||
struct RDIM_UDTEnumValChunkNode *chunk;
|
||||
RDIM_UDTEnumVal *next;
|
||||
RDIM_String8 name;
|
||||
RDI_U64 val;
|
||||
};
|
||||
|
||||
typedef struct RDIM_UDTEnumValChunkNode RDIM_UDTEnumValChunkNode;
|
||||
struct RDIM_UDTEnumValChunkNode
|
||||
{
|
||||
RDIM_UDTEnumValChunkNode *next;
|
||||
RDIM_UDTEnumVal *v;
|
||||
RDI_U64 count;
|
||||
RDI_U64 cap;
|
||||
RDI_U64 base_idx;
|
||||
};
|
||||
|
||||
typedef struct RDIM_UDTEnumValChunkList RDIM_UDTEnumValChunkList;
|
||||
struct RDIM_UDTEnumValChunkList
|
||||
{
|
||||
RDIM_UDTEnumValChunkNode *first;
|
||||
RDIM_UDTEnumValChunkNode *last;
|
||||
RDI_U64 chunk_count;
|
||||
RDI_U64 total_count;
|
||||
};
|
||||
|
||||
//- rjf: UDTs
|
||||
|
||||
typedef struct RDIM_UDT RDIM_UDT;
|
||||
@@ -1078,8 +1038,6 @@ struct RDIM_BakeParams
|
||||
RDIM_UnitChunkList units;
|
||||
RDIM_TypeChunkList types;
|
||||
RDIM_UDTChunkList udts;
|
||||
RDIM_UDTMemberChunkList members;
|
||||
RDIM_UDTEnumValChunkList enum_vals;
|
||||
RDIM_SrcFileChunkList src_files;
|
||||
RDIM_LineTableChunkList line_tables;
|
||||
RDIM_LocationChunkList locations;
|
||||
@@ -1718,22 +1676,10 @@ RDI_PROC RDIM_Type *rdim_type_chunk_list_push(RDIM_Arena *arena, RDIM_TypeChunkL
|
||||
RDI_PROC RDI_U64 rdim_idx_from_type(RDIM_Type *type);
|
||||
RDI_PROC void rdim_type_chunk_list_concat_in_place(RDIM_TypeChunkList *dst, RDIM_TypeChunkList *to_push);
|
||||
|
||||
//- rjf: UDT members
|
||||
RDI_PROC RDIM_UDTMember *rdim_udt_member_chunk_list_push(RDIM_Arena *arena, RDIM_UDTMemberChunkList *list, RDI_U64 cap);
|
||||
RDI_PROC RDI_U64 rdim_idx_from_udt_member(RDIM_UDTMember *member);
|
||||
RDI_PROC void rdim_udt_member_chunk_list_concat_in_place(RDIM_UDTMemberChunkList *dst, RDIM_UDTMemberChunkList *to_push);
|
||||
|
||||
//- rjf: UDT enum values
|
||||
RDI_PROC RDIM_UDTEnumVal *rdim_udt_enum_val_chunk_list_push(RDIM_Arena *arena, RDIM_UDTEnumValChunkList *list, RDI_U64 cap);
|
||||
RDI_PROC RDI_U64 rdim_idx_from_udt_enum_val(RDIM_UDTEnumVal *enum_val);
|
||||
RDI_PROC void rdim_udt_enum_val_chunk_list_concat_in_place(RDIM_UDTEnumValChunkList *dst, RDIM_UDTEnumValChunkList *to_push);
|
||||
|
||||
//- rjf: UDTs
|
||||
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);
|
||||
RDI_PROC void rdim_udt_chunk_list_concat_in_place(RDIM_UDTChunkList *dst, RDIM_UDTChunkList *to_push);
|
||||
|
||||
//- TODO(rjf): to be removed:
|
||||
RDI_PROC RDIM_UDTMember *rdim_udt_push_member(RDIM_Arena *arena, RDIM_UDTChunkList *list, RDIM_UDT *udt);
|
||||
RDI_PROC RDIM_UDTEnumVal *rdim_udt_push_enum_val(RDIM_Arena *arena, RDIM_UDTChunkList *list, RDIM_UDT *udt);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user