stub out globals, thread-locals, types views; eliminate unnecssary uniquifier u64 in expand tree hash keys - simplify eval watch views to using a single eval view for the entire view, rather than allocating one per root expression. expand keys are now simply comprised of parent hash * child num

This commit is contained in:
Ryan Fleury
2024-01-31 10:39:18 -08:00
parent 8aac3f7bda
commit 14db7dbab4
11 changed files with 229 additions and 301 deletions
+14 -16
View File
@@ -204,11 +204,10 @@ df_state_delta_history_wind(DF_StateDeltaHistory *hist, Side side)
//- rjf: keys
internal DF_ExpandKey
df_expand_key_make(U64 uniquifier, U64 parent_hash, U64 child_num)
df_expand_key_make(U64 parent_hash, U64 child_num)
{
DF_ExpandKey key;
{
key.uniquifier = uniquifier;
key.parent_hash = parent_hash;
key.child_num = child_num;
}
@@ -233,7 +232,6 @@ df_hash_from_expand_key(DF_ExpandKey key)
{
U64 data[] =
{
key.uniquifier,
key.child_num,
};
U64 hash = df_hash_from_seed_string(key.parent_hash, str8((U8 *)data, sizeof(data)));
@@ -5262,7 +5260,7 @@ df_append_viz_blocks_for_parent__rec(Arena *arena, DBGI_Scope *scope, DF_EvalVie
memblock->eval = udt_eval;
memblock->cfg_table = *cfg_table;
memblock->parent_key = key;
memblock->key = df_expand_key_make(key.uniquifier, df_hash_from_expand_key(key), 0);
memblock->key = df_expand_key_make(df_hash_from_expand_key(key), 0);
memblock->visual_idx_range = r1u64(0, filtered_data_members.count);
memblock->semantic_idx_range = r1u64(0, filtered_data_members.count);
memblock->depth = depth+1;
@@ -5289,7 +5287,7 @@ df_append_viz_blocks_for_parent__rec(Arena *arena, DBGI_Scope *scope, DF_EvalVie
// rjf: build inheriting cfg table
DF_CfgTable child_cfg = *cfg_table;
{
String8 view_rule_string = df_eval_view_rule_from_key(eval_view, df_expand_key_make(key.uniquifier, df_hash_from_expand_key(key), child_num));
String8 view_rule_string = df_eval_view_rule_from_key(eval_view, df_expand_key_make(df_hash_from_expand_key(key), child_num));
child_cfg = df_cfg_table_from_inheritance(arena, cfg_table);
if(view_rule_string.size != 0)
{
@@ -5320,7 +5318,7 @@ df_append_viz_blocks_for_parent__rec(Arena *arena, DBGI_Scope *scope, DF_EvalVie
next_memblock->eval = udt_eval;
next_memblock->cfg_table = *cfg_table;
next_memblock->parent_key = key;
next_memblock->key = df_expand_key_make(key.uniquifier, df_hash_from_expand_key(key), 0);
next_memblock->key = df_expand_key_make(df_hash_from_expand_key(key), 0);
next_memblock->visual_idx_range = r1u64(child_idx+1, filtered_data_members.count);
next_memblock->semantic_idx_range= r1u64(child_idx+1, filtered_data_members.count);
next_memblock->depth = depth+1;
@@ -5381,7 +5379,7 @@ df_append_viz_blocks_for_parent__rec(Arena *arena, DBGI_Scope *scope, DF_EvalVie
linkblock->link_member_off = link_member->off;
linkblock->cfg_table = *cfg_table;
linkblock->parent_key = key;
linkblock->key = df_expand_key_make(key.uniquifier, df_hash_from_expand_key(key), 0);
linkblock->key = df_expand_key_make(df_hash_from_expand_key(key), 0);
linkblock->visual_idx_range = r1u64(0, link_bases.count);
linkblock->semantic_idx_range = r1u64(0, link_bases.count);
linkblock->depth = depth+1;
@@ -5408,7 +5406,7 @@ df_append_viz_blocks_for_parent__rec(Arena *arena, DBGI_Scope *scope, DF_EvalVie
// rjf: build inheriting cfg table
DF_CfgTable child_cfg = *cfg_table;
{
String8 view_rule_string = df_eval_view_rule_from_key(eval_view, df_expand_key_make(key.uniquifier, df_hash_from_expand_key(key), child_num));
String8 view_rule_string = df_eval_view_rule_from_key(eval_view, df_expand_key_make(df_hash_from_expand_key(key), child_num));
child_cfg = df_cfg_table_from_inheritance(arena, cfg_table);
if(view_rule_string.size != 0)
{
@@ -5441,7 +5439,7 @@ df_append_viz_blocks_for_parent__rec(Arena *arena, DBGI_Scope *scope, DF_EvalVie
next_linkblock->link_member_off = link_member->off;
next_linkblock->cfg_table = *cfg_table;
next_linkblock->parent_key = key;
next_linkblock->key = df_expand_key_make(key.uniquifier, df_hash_from_expand_key(key), 0);
next_linkblock->key = df_expand_key_make(df_hash_from_expand_key(key), 0);
next_linkblock->visual_idx_range = r1u64(child_idx+1, link_bases.count);
next_linkblock->semantic_idx_range = r1u64(child_idx+1, link_bases.count);
next_linkblock->depth = depth+1;
@@ -5473,7 +5471,7 @@ df_append_viz_blocks_for_parent__rec(Arena *arena, DBGI_Scope *scope, DF_EvalVie
elemblock->eval = arr_eval;
elemblock->cfg_table = *cfg_table;
elemblock->parent_key = key;
elemblock->key = df_expand_key_make(key.uniquifier, df_hash_from_expand_key(key), 0);
elemblock->key = df_expand_key_make(df_hash_from_expand_key(key), 0);
elemblock->visual_idx_range = r1u64(0, array_count);
elemblock->semantic_idx_range = r1u64(0, array_count);
elemblock->depth = depth+1;
@@ -5500,7 +5498,7 @@ df_append_viz_blocks_for_parent__rec(Arena *arena, DBGI_Scope *scope, DF_EvalVie
// rjf: build inheriting cfg table
DF_CfgTable child_cfg = *cfg_table;
{
String8 view_rule_string = df_eval_view_rule_from_key(eval_view, df_expand_key_make(key.uniquifier, df_hash_from_expand_key(key), child_num));
String8 view_rule_string = df_eval_view_rule_from_key(eval_view, df_expand_key_make(df_hash_from_expand_key(key), child_num));
child_cfg = df_cfg_table_from_inheritance(arena, cfg_table);
if(view_rule_string.size != 0)
{
@@ -5528,7 +5526,7 @@ df_append_viz_blocks_for_parent__rec(Arena *arena, DBGI_Scope *scope, DF_EvalVie
next_elemblock->eval = arr_eval;
next_elemblock->cfg_table = *cfg_table;
next_elemblock->parent_key = key;
next_elemblock->key = df_expand_key_make(key.uniquifier, df_hash_from_expand_key(key), 0);
next_elemblock->key = df_expand_key_make(df_hash_from_expand_key(key), 0);
next_elemblock->visual_idx_range = r1u64(child_idx+1, array_count);
next_elemblock->semantic_idx_range = r1u64(child_idx+1, array_count);
next_elemblock->depth = depth+1;
@@ -5546,7 +5544,7 @@ df_append_viz_blocks_for_parent__rec(Arena *arena, DBGI_Scope *scope, DF_EvalVie
ProfScope("build viz blocks for ptr-to-ptrs")
{
String8 subexpr = push_str8f(arena, "*(%S)", string);
df_append_viz_blocks_for_parent__rec(arena, scope, eval_view, ctrl_ctx, parse_ctx, key, df_expand_key_make(key.uniquifier, df_hash_from_expand_key(key), 1), subexpr, ptr_eval, cfg_table, depth+1, list_out);
df_append_viz_blocks_for_parent__rec(arena, scope, eval_view, ctrl_ctx, parse_ctx, key, df_expand_key_make(df_hash_from_expand_key(key), 1), subexpr, ptr_eval, cfg_table, depth+1, list_out);
}
scratch_end(scratch);
@@ -5554,13 +5552,13 @@ df_append_viz_blocks_for_parent__rec(Arena *arena, DBGI_Scope *scope, DF_EvalVie
}
internal DF_EvalVizBlockList
df_eval_viz_block_list_from_eval_view_expr(Arena *arena, DBGI_Scope *scope, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_EvalView *eval_view, String8 expr)
df_eval_viz_block_list_from_eval_view_expr_num(Arena *arena, DBGI_Scope *scope, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_EvalView *eval_view, String8 expr, U64 num)
{
ProfBeginFunction();
DF_EvalVizBlockList blocks = {0};
{
DF_ExpandKey start_parent_key = df_expand_key_make((U64)eval_view, 0, 0);
DF_ExpandKey start_key = df_expand_key_make((U64)eval_view, 5381, 1);
DF_ExpandKey start_parent_key = df_expand_key_make(5381, 0);
DF_ExpandKey start_key = df_expand_key_from_eval_view_root_expr_num(eval_view, expr, num);
DF_Eval eval = df_eval_from_string(arena, scope, ctrl_ctx, parse_ctx, expr);
U64 expr_comma_pos = str8_find_needle(expr, 0, str8_lit(","), 0);
String8List default_view_rules = {0};
+2 -3
View File
@@ -35,7 +35,6 @@ struct DF_HandleList
typedef struct DF_ExpandKey DF_ExpandKey;
struct DF_ExpandKey
{
U64 uniquifier;
U64 parent_hash;
U64 child_num;
};
@@ -1282,7 +1281,7 @@ internal void df_state_delta_history_wind(DF_StateDeltaHistory *hist, Side side)
//~ rjf: Sparse Tree Expansion State Data Structure
//- rjf: keys
internal DF_ExpandKey df_expand_key_make(U64 uniquifier, U64 parent_hash, U64 child_num);
internal DF_ExpandKey df_expand_key_make(U64 parent_hash, U64 child_num);
internal DF_ExpandKey df_expand_key_zero(void);
internal B32 df_expand_key_match(DF_ExpandKey a, DF_ExpandKey b);
@@ -1601,7 +1600,7 @@ internal DF_EvalLinkBaseArray df_eval_link_base_array_from_chunk_list(Arena *are
//- rjf: watch tree visualization
internal void df_append_viz_blocks_for_parent__rec(Arena *arena, DBGI_Scope *scope, DF_EvalView *view, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_ExpandKey parent_key, DF_ExpandKey key, String8 string, DF_Eval eval, DF_CfgTable *cfg_table, S32 depth, DF_EvalVizBlockList *list_out);
internal DF_EvalVizBlockList df_eval_viz_block_list_from_eval_view_expr(Arena *arena, DBGI_Scope *scope, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_EvalView *eval_view, String8 expr);
internal DF_EvalVizBlockList df_eval_viz_block_list_from_eval_view_expr_num(Arena *arena, DBGI_Scope *scope, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_EvalView *eval_view, String8 expr, U64 num);
internal void df_eval_viz_block_list_concat__in_place(DF_EvalVizBlockList *dst, DF_EvalVizBlockList *to_push);
////////////////////////////////
+4 -1
View File
@@ -366,7 +366,10 @@ DF_CoreCmdTable:// | | |
{Code 1 Null Nil 0 0 0 0 0 0 FileOutline "code" "Code" "Opens the code view for an already-loaded file." "" }
{Watch 0 Null Nil 0 0 0 0 0 0 Binoculars "watch" "Watch" "Opens a watch view." "" }
{Locals 0 Null Nil 0 0 0 0 0 0 Binoculars "locals" "Locals" "Opens a locals view." "" }
{Registers 0 Null Nil 0 0 0 0 0 0 Binoculars "registers" "Registers" "Opens a registers view for the currently selected thread." "" }
{Registers 0 Null Nil 0 0 0 0 0 0 Binoculars "registers" "Registers" "Opens a registers view." "" }
{Globals 0 Null Nil 0 0 0 0 0 0 Binoculars "globals" "Globals" "Opens a globals view." "" }
{ThreadLocals 0 Null Nil 0 0 0 0 0 0 Binoculars "thread_locals" "Thread Locals" "Opens a thread locals view." "" }
{Types 0 Null Nil 0 0 0 0 0 0 Binoculars "types" "Types" "Opens a types view." "" }
{Output 0 Null Nil 0 0 0 0 0 0 List "output" "Output" "Opens an output view." "" }
{Memory 0 Null Nil 0 0 0 0 0 0 Grid "memory" "Memory" "Opens a memory view." "" }
{Disassembly 0 Null Nil 0 0 0 0 0 0 Glasses "disassembly" "Disassembly" "Opens the disassembly view." "disasm" }
+4 -1
View File
@@ -190,7 +190,10 @@ DF_CmdSpecInfo df_g_core_cmd_kind_spec_info_table[] =
{ str8_lit_comp("code"), str8_lit_comp("Opens the code view for an already-loaded file."), str8_lit_comp(""), str8_lit_comp("Code"), (DF_CmdSpecFlag_OmitFromLists*1), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_FileOutline},
{ str8_lit_comp("watch"), str8_lit_comp("Opens a watch view."), str8_lit_comp(""), str8_lit_comp("Watch"), (DF_CmdSpecFlag_OmitFromLists*0), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_Binoculars},
{ str8_lit_comp("locals"), str8_lit_comp("Opens a locals view."), str8_lit_comp(""), str8_lit_comp("Locals"), (DF_CmdSpecFlag_OmitFromLists*0), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_Binoculars},
{ str8_lit_comp("registers"), str8_lit_comp("Opens a registers view for the currently selected thread."), str8_lit_comp(""), str8_lit_comp("Registers"), (DF_CmdSpecFlag_OmitFromLists*0), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_Binoculars},
{ str8_lit_comp("registers"), str8_lit_comp("Opens a registers view."), str8_lit_comp(""), str8_lit_comp("Registers"), (DF_CmdSpecFlag_OmitFromLists*0), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_Binoculars},
{ str8_lit_comp("globals"), str8_lit_comp("Opens a globals view."), str8_lit_comp(""), str8_lit_comp("Globals"), (DF_CmdSpecFlag_OmitFromLists*0), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_Binoculars},
{ str8_lit_comp("thread_locals"), str8_lit_comp("Opens a thread locals view."), str8_lit_comp(""), str8_lit_comp("Thread Locals"), (DF_CmdSpecFlag_OmitFromLists*0), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_Binoculars},
{ str8_lit_comp("types"), str8_lit_comp("Opens a types view."), str8_lit_comp(""), str8_lit_comp("Types"), (DF_CmdSpecFlag_OmitFromLists*0), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_Binoculars},
{ str8_lit_comp("output"), str8_lit_comp("Opens an output view."), str8_lit_comp(""), str8_lit_comp("Output"), (DF_CmdSpecFlag_OmitFromLists*0), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_List},
{ str8_lit_comp("memory"), str8_lit_comp("Opens a memory view."), str8_lit_comp(""), str8_lit_comp("Memory"), (DF_CmdSpecFlag_OmitFromLists*0), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_Grid},
{ str8_lit_comp("disassembly"), str8_lit_comp("Opens the disassembly view."), str8_lit_comp("disasm"), str8_lit_comp("Disassembly"), (DF_CmdSpecFlag_OmitFromLists*0), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_Glasses},
+3
View File
@@ -243,6 +243,9 @@ DF_CoreCmdKind_Code,
DF_CoreCmdKind_Watch,
DF_CoreCmdKind_Locals,
DF_CoreCmdKind_Registers,
DF_CoreCmdKind_Globals,
DF_CoreCmdKind_ThreadLocals,
DF_CoreCmdKind_Types,
DF_CoreCmdKind_Output,
DF_CoreCmdKind_Memory,
DF_CoreCmdKind_Disassembly,