From 80b0138ea30c22ccc39a91e97fe0f86d5f6ae6d8 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Mon, 10 Feb 2025 16:32:07 -0800 Subject: [PATCH] fix expansion rules being applied to traditionally non-expandable type info; plug memory view back in --- src/eval_visualization/eval_visualization_core.c | 14 +++++++------- src/raddbg/raddbg_views.c | 10 +++++----- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/eval_visualization/eval_visualization_core.c b/src/eval_visualization/eval_visualization_core.c index c71bc788..5c7f4e5b 100644 --- a/src/eval_visualization/eval_visualization_core.c +++ b/src/eval_visualization/eval_visualization_core.c @@ -537,8 +537,13 @@ ev_block_tree_from_string(Arena *arena, EV_View *view, String8 filter, String8 s // rjf: unpack expr E_IRTreeAndType expr_irtree = e_irtree_and_type_from_expr(scratch.arena, t->expr); - // rjf: skip if type info disallows expansion - if(!ev_type_key_and_mode_is_expandable(expr_irtree.type_key, expr_irtree.mode)) + // rjf: get expr's expansion rule + EV_ExpandRuleTagPair expand_rule_and_tag = ev_expand_rule_tag_pair_from_expr_irtree(t->expr, &expr_irtree); + EV_ExpandRule *expand_rule = expand_rule_and_tag.rule; + E_Expr *expand_rule_tag = expand_rule_and_tag.tag; + + // rjf: skip if no expansion rule, & type info disallows expansion + if(expand_rule == &ev_nil_expand_rule && !ev_type_key_and_mode_is_expandable(expr_irtree.type_key, expr_irtree.mode)) { continue; } @@ -548,11 +553,6 @@ ev_block_tree_from_string(Arena *arena, EV_View *view, String8 filter, String8 s E_LookupRule *lookup_rule = lookup_rule_and_tag.rule; E_Expr *lookup_rule_tag = lookup_rule_and_tag.tag; - // rjf: get expr's expansion rule - EV_ExpandRuleTagPair expand_rule_and_tag = ev_expand_rule_tag_pair_from_expr_irtree(t->expr, &expr_irtree); - EV_ExpandRule *expand_rule = expand_rule_and_tag.rule; - E_Expr *expand_rule_tag = expand_rule_and_tag.tag; - // rjf: get top-level lookup/expansion info E_LookupInfo lookup_info = lookup_rule->info(arena, &expr_irtree, filter); EV_ExpandInfo expand_info = expand_rule->info(arena, view, filter, t->expr, expand_rule_tag); diff --git a/src/raddbg/raddbg_views.c b/src/raddbg/raddbg_views.c index 8a063fe2..a26fd985 100644 --- a/src/raddbg/raddbg_views.c +++ b/src/raddbg/raddbg_views.c @@ -4524,7 +4524,7 @@ RD_VIEW_UI_FUNCTION_DEF(memory) ////////////////////////////// //- rjf: unpack parameterization info // - Rng1U64 space_range = {0}; // TODO(rjf): @cfg rd_range_from_eval_params(eval, params); + Rng1U64 space_range = rd_range_from_eval_tag(eval, tag); if(eval.space.kind == 0) { eval.space = rd_eval_space_from_ctrl_entity(ctrl_entity_from_handle(d_state->ctrl_entity_store, rd_regs()->process), RD_EvalSpaceKind_CtrlEntity); @@ -4534,10 +4534,10 @@ RD_VIEW_UI_FUNCTION_DEF(memory) space_range = r1u64(0, 0x7FFFFFFFFFFFull); } } - U64 cursor = 0; // TODO(rjf): @cfg rd_value_from_params_key(params, str8_lit("cursor_vaddr")).u64; - U64 mark = 0; // TODO(rjf): @cfg rd_value_from_params_key(params, str8_lit("mark_vaddr")).u64; - U64 bytes_per_cell = 0; // TODO(rjf): @cfg rd_value_from_params_key(params, str8_lit("bytes_per_cell")).u64; - U64 num_columns = 0; // TODO(rjf): @cfg rd_value_from_params_key(params, str8_lit("num_columns")).u64; + U64 cursor = rd_view_cfg_value_from_string(str8_lit("cursor_vaddr")).u64; + U64 mark = rd_view_cfg_value_from_string(str8_lit("mark_vaddr")).u64; + U64 bytes_per_cell = rd_view_cfg_value_from_string(str8_lit("bytes_per_cell")).u64; + U64 num_columns = rd_view_cfg_value_from_string(str8_lit("num_columns")).u64; if(num_columns == 0) { num_columns = 16;