mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-04 04:48:40 +00:00
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:
+14
-16
@@ -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};
|
||||
|
||||
@@ -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);
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
@@ -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" }
|
||||
|
||||
@@ -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},
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user