From 51f46cb5b83e6c7d30de5fcaa2f4c97da91a871c Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Wed, 16 Apr 2025 11:13:30 -0700 Subject: [PATCH] eliminate extra view rule channel in rd_regs/hover-eval/watch-pins/etc. --- src/raddbg/generated/raddbg.meta.c | 3 +- src/raddbg/generated/raddbg.meta.h | 5 +-- src/raddbg/raddbg.mdesk | 57 +++++++++++++++--------------- src/raddbg/raddbg_core.c | 23 +++--------- src/raddbg/raddbg_core.h | 4 +-- src/raddbg/raddbg_widgets.c | 9 ++--- 6 files changed, 38 insertions(+), 63 deletions(-) diff --git a/src/raddbg/generated/raddbg.meta.c b/src/raddbg/generated/raddbg.meta.c index f033bd3a..be65f051 100644 --- a/src/raddbg/generated/raddbg.meta.c +++ b/src/raddbg/generated/raddbg.meta.c @@ -344,7 +344,7 @@ RD_NameSchemaInfo rd_name_schema_info_table[17] = {str8_lit_comp("thread"), str8_lit_comp("x:{'label':code_string, 'id':u64, @no_expand 'active':bool, 'call_stack':query}")}, }; -Rng1U64 rd_reg_slot_range_table[42] = +Rng1U64 rd_reg_slot_range_table[41] = { {0}, {OffsetOf(RD_Regs, machine), OffsetOf(RD_Regs, machine) + sizeof(CTRL_Handle)}, @@ -373,7 +373,6 @@ Rng1U64 rd_reg_slot_range_table[42] = {OffsetOf(RD_Regs, vaddr_range), OffsetOf(RD_Regs, vaddr_range) + sizeof(Rng1U64)}, {OffsetOf(RD_Regs, voff_range), OffsetOf(RD_Regs, voff_range) + sizeof(Rng1U64)}, {OffsetOf(RD_Regs, expr), OffsetOf(RD_Regs, expr) + sizeof(String8)}, -{OffsetOf(RD_Regs, view_rule), OffsetOf(RD_Regs, view_rule) + sizeof(String8)}, {OffsetOf(RD_Regs, ui_key), OffsetOf(RD_Regs, ui_key) + sizeof(UI_Key)}, {OffsetOf(RD_Regs, off_px), OffsetOf(RD_Regs, off_px) + sizeof(Vec2F32)}, {OffsetOf(RD_Regs, lister_flags), OffsetOf(RD_Regs, lister_flags) + sizeof(RD_ListerFlags)}, diff --git a/src/raddbg/generated/raddbg.meta.h b/src/raddbg/generated/raddbg.meta.h index c3feb1ad..4829e52f 100644 --- a/src/raddbg/generated/raddbg.meta.h +++ b/src/raddbg/generated/raddbg.meta.h @@ -35,7 +35,6 @@ RD_RegSlot_Voff, RD_RegSlot_VaddrRange, RD_RegSlot_VoffRange, RD_RegSlot_Expr, -RD_RegSlot_ViewRule, RD_RegSlot_UIKey, RD_RegSlot_OffPx, RD_RegSlot_ListerFlags, @@ -562,7 +561,6 @@ U64 voff; Rng1U64 vaddr_range; Rng1U64 voff_range; String8 expr; -String8 view_rule; UI_Key ui_key; Vec2F32 off_px; RD_ListerFlags lister_flags; @@ -627,7 +625,6 @@ RD_Query query; .vaddr_range = rd_regs()->vaddr_range,\ .voff_range = rd_regs()->voff_range,\ .expr = rd_regs()->expr,\ -.view_rule = rd_regs()->view_rule,\ .ui_key = rd_regs()->ui_key,\ .off_px = rd_regs()->off_px,\ .lister_flags = rd_regs()->lister_flags,\ @@ -646,7 +643,7 @@ RD_Query query; C_LINKAGE_BEGIN extern RD_VocabInfo rd_vocab_info_table[315]; extern RD_NameSchemaInfo rd_name_schema_info_table[17]; -extern Rng1U64 rd_reg_slot_range_table[42]; +extern Rng1U64 rd_reg_slot_range_table[41]; extern String8 rd_binding_version_remap_old_name_table[8]; extern String8 rd_binding_version_remap_new_name_table[8]; extern String8 rd_icon_kind_text_table[74]; diff --git a/src/raddbg/raddbg.mdesk b/src/raddbg/raddbg.mdesk index 826a785b..94345a6a 100644 --- a/src/raddbg/raddbg.mdesk +++ b/src/raddbg/raddbg.mdesk @@ -374,43 +374,42 @@ RD_RegTable: {RD_CfgIDList cfg_list CfgList } // rjf: frame selection - {U64 unwind_count UnwindCount } - {U64 inline_depth InlineDepth } + {U64 unwind_count UnwindCount } + {U64 inline_depth InlineDepth } // rjf: code / address location info - {String8 file_path FilePath } - {TxtPt cursor Cursor } - {TxtPt mark Mark } - {U128 text_key TextKey } - {TXT_LangKind lang_kind LangKind } - {D_LineList lines Lines } - {DI_Key dbgi_key DbgiKey } - {U64 vaddr Vaddr } - {U64 voff Voff } - {Rng1U64 vaddr_range VaddrRange } - {Rng1U64 voff_range VoffRange } + {String8 file_path FilePath } + {TxtPt cursor Cursor } + {TxtPt mark Mark } + {U128 text_key TextKey } + {TXT_LangKind lang_kind LangKind } + {D_LineList lines Lines } + {DI_Key dbgi_key DbgiKey } + {U64 vaddr Vaddr } + {U64 voff Voff } + {Rng1U64 vaddr_range VaddrRange } + {Rng1U64 voff_range VoffRange } // rjf: evaluation - {String8 expr Expr } - {String8 view_rule ViewRule } + {String8 expr Expr } // rjf: ui context - {UI_Key ui_key UIKey } - {Vec2F32 off_px OffPx } - {RD_ListerFlags lister_flags ListerFlags } - {RD_RegSlot reg_slot RegSlot } + {UI_Key ui_key UIKey } + {Vec2F32 off_px OffPx } + {RD_ListerFlags lister_flags ListerFlags } + {RD_RegSlot reg_slot RegSlot } // rjf: general parameters - {U32 pid PID } - {B32 force_confirm ForceConfirm } - {B32 prefer_disasm PreferDisasm } - {B32 no_rich_tooltip NoRichTooltip } - {B32 do_implicit_root DoImplicitRoot} - {Dir2 dir2 Dir2 } - {String8 string String } - {String8 cmd_name CmdName } - {`MD_Node *` params_tree ParamsTree } - {`OS_Event *` os_event OSEvent } + {U32 pid PID } + {B32 force_confirm ForceConfirm } + {B32 prefer_disasm PreferDisasm } + {B32 no_rich_tooltip NoRichTooltip } + {B32 do_implicit_root DoImplicitRoot} + {Dir2 dir2 Dir2 } + {String8 string String } + {String8 cmd_name CmdName } + {`MD_Node *` params_tree ParamsTree } + {`OS_Event *` os_event OSEvent } } @enum RD_RegSlot: diff --git a/src/raddbg/raddbg_core.c b/src/raddbg/raddbg_core.c index 22c8ca4a..ae51f4ea 100644 --- a/src/raddbg/raddbg_core.c +++ b/src/raddbg/raddbg_core.c @@ -44,7 +44,6 @@ rd_regs_copy_contents(Arena *arena, RD_Regs *dst, RD_Regs *src) dst->lines = d_line_list_copy(arena, &src->lines); dst->dbgi_key = di_key_copy(arena, &src->dbgi_key); dst->expr = push_str8_copy(arena, src->expr); - dst->view_rule = push_str8_copy(arena, src->view_rule); dst->string = push_str8_copy(arena, src->string); dst->cmd_name = push_str8_copy(arena, src->cmd_name); dst->params_tree = md_tree_copy(arena, src->params_tree); @@ -1123,14 +1122,6 @@ rd_expr_from_cfg(RD_Cfg *cfg) return result; } -internal String8 -rd_view_rule_from_cfg(RD_Cfg *cfg) -{ - RD_Cfg *view_rule = rd_cfg_child_from_string(cfg, str8_lit("view_rule")); - String8 result = view_rule->first->string; - return result; -} - internal String8 rd_path_from_cfg(RD_Cfg *cfg) { @@ -4399,8 +4390,7 @@ rd_view_ui(Rng2F32 rect) row->eval.space.kind == E_SpaceKind_File || row->eval.space.kind == E_SpaceKind_Null) { - RD_RegsScope(.expr = e_string_from_expr(scratch.arena, row->eval.expr), - .view_rule = ev_view_rule_from_key(rd_view_eval_view(), row->key)) + RD_RegsScope(.expr = e_string_from_expr(scratch.arena, row->eval.expr)) rd_drag_begin(RD_RegSlot_Expr); } } @@ -6316,7 +6306,7 @@ rd_window_frame(void) } // rjf: choose hover evaluation expression - String8 hover_eval_expr = push_str8f(scratch.arena, "%S%s%S", ws->hover_eval_string, ws->hover_eval_view_rules.size != 0 ? " => " : "", ws->hover_eval_view_rules); + String8 hover_eval_expr = ws->hover_eval_string; // rjf: evaluate hover evaluation expression, & determine if it evaluates // such that we want to build a hover eval. @@ -9274,7 +9264,7 @@ rd_value_string_from_eval(Arena *arena, String8 filter, EV_StringParams *params, //~ rjf: Hover Eval internal void -rd_set_hover_eval(Vec2F32 pos, String8 string, String8 view_rules) +rd_set_hover_eval(Vec2F32 pos, String8 string) { RD_Cfg *window_cfg = rd_cfg_from_id(rd_regs()->window); RD_WindowState *ws = rd_window_state_from_cfg(window_cfg); @@ -9283,14 +9273,12 @@ rd_set_hover_eval(Vec2F32 pos, String8 string, String8 view_rules) ui_key_match(ui_active_key(UI_MouseButtonKind_Middle), ui_key_zero()) && ui_key_match(ui_active_key(UI_MouseButtonKind_Right), ui_key_zero())) { - B32 is_new_string = (!str8_match(ws->hover_eval_string, string, 0) || - !str8_match(ws->hover_eval_view_rules, view_rules, 0)); + B32 is_new_string = (!str8_match(ws->hover_eval_string, string, 0)); if(is_new_string) { ws->hover_eval_firstt_us = ws->hover_eval_lastt_us = rd_state->time_in_us; arena_clear(ws->hover_eval_arena); ws->hover_eval_string = push_str8_copy(ws->hover_eval_arena, string); - ws->hover_eval_view_rules = push_str8_copy(ws->hover_eval_arena, view_rules); ws->hover_eval_focused = 0; } ws->hover_eval_spawn_pos = pos; @@ -14891,7 +14879,6 @@ Z(getting_started) String8 file_path = rd_regs()->file_path; TxtPt pt = rd_regs()->cursor; String8 expr_string = rd_regs()->expr; - String8 view_rule_string = rd_regs()->view_rule; U64 vaddr = rd_regs()->vaddr; B32 removed_already_existing = 0; if(kind == RD_CmdKind_ToggleWatchPin) @@ -14916,9 +14903,7 @@ Z(getting_started) RD_Cfg *project = rd_cfg_child_from_string(rd_state->root_cfg, str8_lit("project")); RD_Cfg *wp = rd_cfg_new(project, str8_lit("watch_pin")); RD_Cfg *expr = rd_cfg_new(wp, str8_lit("expression")); - RD_Cfg *view_rule = rd_cfg_new(wp, str8_lit("view_rule")); rd_cfg_new(expr, expr_string); - rd_cfg_new(view_rule, view_rule_string); rd_cmd(RD_CmdKind_RelocateCfg, .cfg = wp->id, .expr = str8_zero()); } }break; diff --git a/src/raddbg/raddbg_core.h b/src/raddbg/raddbg_core.h index d00a9154..c586be8d 100644 --- a/src/raddbg/raddbg_core.h +++ b/src/raddbg/raddbg_core.h @@ -560,7 +560,6 @@ struct RD_WindowState Arena *hover_eval_arena; Vec2F32 hover_eval_spawn_pos; String8 hover_eval_string; - String8 hover_eval_view_rules; U64 hover_eval_firstt_us; U64 hover_eval_lastt_us; @@ -892,7 +891,6 @@ internal B32 rd_disabled_from_cfg(RD_Cfg *cfg); internal RD_Location rd_location_from_cfg(RD_Cfg *cfg); internal String8 rd_label_from_cfg(RD_Cfg *cfg); internal String8 rd_expr_from_cfg(RD_Cfg *cfg); -internal String8 rd_view_rule_from_cfg(RD_Cfg *cfg); internal String8 rd_path_from_cfg(RD_Cfg *cfg); internal D_Target rd_target_from_cfg(Arena *arena, RD_Cfg *cfg); @@ -1008,7 +1006,7 @@ internal String8 rd_value_string_from_eval(Arena *arena, String8 filter, EV_Stri //////////////////////////////// //~ rjf: Hover Eval -internal void rd_set_hover_eval(Vec2F32 pos, String8 string, String8 view_rules); +internal void rd_set_hover_eval(Vec2F32 pos, String8 string); //////////////////////////////// //~ rjf: Lister Functions diff --git a/src/raddbg/raddbg_widgets.c b/src/raddbg/raddbg_widgets.c index 536ad443..b4bad7ed 100644 --- a/src/raddbg/raddbg_widgets.c +++ b/src/raddbg/raddbg_widgets.c @@ -1965,9 +1965,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe { RD_Cfg *pin = n->v; String8 pin_expr = rd_expr_from_cfg(pin); - String8 pin_view_rule = rd_view_rule_from_cfg(pin); - String8 full_pin_expr = push_str8f(scratch.arena, "%S => %S", pin_expr, pin_view_rule); - E_Eval eval = e_eval_from_string(scratch.arena, full_pin_expr); + E_Eval eval = e_eval_from_string(scratch.arena, pin_expr); String8 eval_string = {0}; if(!e_type_key_match(e_type_key_zero(), eval.irtree.type_key)) { @@ -1994,7 +1992,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe UI_Signal pin_sig = ui_signal_from_box(pin_box); if(ui_key_match(pin_box_key, ui_hot_key())) { - rd_set_hover_eval(v2f32(pin_box->rect.x0, pin_box->rect.y1-2.f), pin_expr, pin_view_rule); + rd_set_hover_eval(v2f32(pin_box->rect.x0, pin_box->rect.y1-2.f), pin_expr); } } } @@ -2198,7 +2196,6 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe U64 line_vaddr = params->line_vaddrs[line_idx]; rd_cmd(RD_CmdKind_AddWatchPin, .expr = rd_state->drag_drop_regs->expr, - .view_rule = rd_state->drag_drop_regs->view_rule, .file_path = line_vaddr == 0 ? rd_regs()->file_path : str8_zero(), .cursor = line_vaddr == 0 ? txt_pt(line_num, 1) : txt_pt(0, 0), .vaddr = line_vaddr); @@ -2320,7 +2317,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe U64 line_idx = mouse_pt.line-params->line_num_range.min; line_vaddr = params->line_vaddrs[line_idx]; } - rd_set_hover_eval(mouse_expr_baseline_pos, mouse_expr, str8_zero()); + rd_set_hover_eval(mouse_expr_baseline_pos, mouse_expr); } }