eliminate watch view fill kind; extend rtti & eval type system with 'external' pointers, for e.g. meta-space vaddr u64s pointing into an address space; begin sketching out paths for mutational rows in watch collections, use to add 'add target' fastpath in targets collection evaluations

This commit is contained in:
Ryan Fleury
2024-09-23 10:57:43 -07:00
parent ebaad35813
commit f728614e0b
13 changed files with 873 additions and 819 deletions
+17 -1
View File
@@ -7902,6 +7902,10 @@ EV_VIEW_RULE_BLOCK_PROD_FUNCTION_DEF(rd_collection_block_prod)
Temp scratch = scratch_begin(&arena, 1);
RD_EntityList targets = rd_query_cached_entity_list_with_kind(RD_EntityKind_Target);
EV_ViewRuleList top_level_view_rules = {0};
EV_Key addnew_key = ev_key_make(ev_hash_from_key(key), 1);
EV_Block *addnew_block = ev_block_begin(arena, EV_BlockKind_Canvas, key, addnew_key, depth);
addnew_block->visual_idx_range = addnew_block->semantic_idx_range = r1u64(0, 1);
ev_block_end(out, addnew_block);
for(RD_EntityNode *n = targets.first; n != 0; n = n->next)
{
RD_Entity *target = n->entity;
@@ -8255,7 +8259,19 @@ rd_append_value_strings_from_eval(Arena *arena, EV_StringFlags flags, U32 defaul
if(eval.space.kind == RD_EvalSpaceKind_MetaEntity ||
eval.space.kind == RD_EvalSpaceKind_MetaCtrlEntity)
{
no_addr = 1;
E_TypeKind kind = e_type_kind_from_key(eval.type_key);
if(kind != E_TypeKind_Ptr)
{
no_addr = 1;
}
else
{
E_Type *type = e_type_from_key(scratch.arena, eval.type_key);
if(!(type->flags & E_TypeFlag_External))
{
no_addr = 1;
}
}
}
//- rjf: member evaluations -> display member info
+2 -5
View File
@@ -158,11 +158,6 @@ struct RD_SettingVal
S32 s32;
};
////////////////////////////////
//~ rjf: View Hook Function Types
typedef struct RD_View RD_View;
////////////////////////////////
//~ rjf: View Rule Info Types
@@ -186,6 +181,8 @@ typedef RD_VIEW_RULE_UI_FUNCTION_SIG(RD_ViewRuleUIFunctionType);
////////////////////////////////
//~ rjf: View Types
typedef struct RD_View RD_View;
typedef struct RD_ArenaExt RD_ArenaExt;
struct RD_ArenaExt
{
+807 -772
View File
File diff suppressed because it is too large Load Diff
+1 -20
View File
@@ -81,22 +81,6 @@ struct RD_WatchViewColumn
B32 dequote_string;
};
typedef enum RD_WatchViewFillKind
{
RD_WatchViewFillKind_Watch,
RD_WatchViewFillKind_Breakpoints,
RD_WatchViewFillKind_WatchPins,
RD_WatchViewFillKind_CallStack,
RD_WatchViewFillKind_Registers,
RD_WatchViewFillKind_Locals,
RD_WatchViewFillKind_Globals,
RD_WatchViewFillKind_ThreadLocals,
RD_WatchViewFillKind_Types,
RD_WatchViewFillKind_Procedures,
RD_WatchViewFillKind_COUNT
}
RD_WatchViewFillKind;
typedef struct RD_WatchViewPoint RD_WatchViewPoint;
struct RD_WatchViewPoint
{
@@ -123,9 +107,6 @@ struct RD_WatchViewState
{
B32 initialized;
// rjf: fill kinds (way that the contents of the watch view are computed)
RD_WatchViewFillKind fill_kind;
// rjf: column state
Arena *column_arena;
RD_WatchViewColumn *first_column;
@@ -176,7 +157,7 @@ internal RD_WatchViewColumn *rd_watch_view_column_alloc_(RD_WatchViewState *wv,
internal void rd_watch_view_column_release(RD_WatchViewState *wv, RD_WatchViewColumn *col);
//- rjf: watch view main hooks
internal void rd_watch_view_init(RD_WatchViewState *ewv, RD_WatchViewFillKind fill_kind);
internal void rd_watch_view_init(RD_WatchViewState *ewv);
internal void rd_watch_view_build(RD_WatchViewState *ewv, String8 root_expr, String8 root_view_rule, B32 modifiable, U32 default_radix, Rng2F32 rect);
#endif // RADDBG_VIEWS_H