mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-15 08:32:22 -07:00
expand eval to collecting irtree/type/lookup-rule, base all value string generation on entire root_eval rather than just root_expr; fixes wrong inheritance of tags in single-line visualization
This commit is contained in:
+23
-85
@@ -16,18 +16,19 @@ internal E_Eval
|
||||
e_eval_from_exprs(Arena *arena, E_ExprChain exprs)
|
||||
{
|
||||
ProfBeginFunction();
|
||||
E_IRTreeAndType irtree = e_irtree_and_type_from_expr(arena, exprs.last);
|
||||
E_OpList oplist = e_oplist_from_irtree(arena, irtree.root);
|
||||
String8 bytecode = e_bytecode_from_oplist(arena, &oplist);
|
||||
E_Interpretation interp = e_interpret(bytecode);
|
||||
E_IRTreeAndType irtree = e_irtree_and_type_from_expr(arena, exprs.last);
|
||||
E_LookupRuleTagPair lookup = e_lookup_rule_tag_pair_from_expr_irtree(exprs.last, &irtree);
|
||||
E_OpList oplist = e_oplist_from_irtree(arena, irtree.root);
|
||||
String8 bytecode = e_bytecode_from_oplist(arena, &oplist);
|
||||
E_Interpretation interp = e_interpret(bytecode);
|
||||
E_Eval eval =
|
||||
{
|
||||
.value = interp.value,
|
||||
.mode = irtree.mode,
|
||||
.space = interp.space,
|
||||
.exprs = exprs,
|
||||
.type_key = irtree.type_key,
|
||||
.code = interp.code,
|
||||
.value = interp.value,
|
||||
.space = interp.space,
|
||||
.exprs = exprs,
|
||||
.irtree = irtree,
|
||||
.lookup_rule_tag = lookup,
|
||||
.code = interp.code,
|
||||
};
|
||||
e_msg_list_concat_in_place(&eval.msgs, &irtree.msgs);
|
||||
if(E_InterpretationCode_Good < eval.code && eval.code < E_InterpretationCode_COUNT)
|
||||
@@ -68,10 +69,10 @@ e_autoresolved_eval_from_eval(E_Eval eval)
|
||||
e_interpret_ctx &&
|
||||
e_parse_state->ctx->modules_count > 0 &&
|
||||
e_interpret_ctx->module_base != 0 &&
|
||||
(e_type_key_match(eval.type_key, e_type_key_basic(E_TypeKind_S64)) ||
|
||||
e_type_key_match(eval.type_key, e_type_key_basic(E_TypeKind_U64)) ||
|
||||
e_type_key_match(eval.type_key, e_type_key_basic(E_TypeKind_S32)) ||
|
||||
e_type_key_match(eval.type_key, e_type_key_basic(E_TypeKind_U32))))
|
||||
(e_type_key_match(eval.irtree.type_key, e_type_key_basic(E_TypeKind_S64)) ||
|
||||
e_type_key_match(eval.irtree.type_key, e_type_key_basic(E_TypeKind_U64)) ||
|
||||
e_type_key_match(eval.irtree.type_key, e_type_key_basic(E_TypeKind_S32)) ||
|
||||
e_type_key_match(eval.irtree.type_key, e_type_key_basic(E_TypeKind_U32))))
|
||||
{
|
||||
U64 vaddr = eval.value.u64;
|
||||
U64 voff = vaddr - e_interpret_ctx->module_base[0];
|
||||
@@ -84,7 +85,7 @@ e_autoresolved_eval_from_eval(E_Eval eval)
|
||||
if(string_idx == 0) { string_idx = gvar->name_string_idx; }
|
||||
if(string_idx != 0)
|
||||
{
|
||||
eval.type_key = e_type_key_cons_ptr(e_type_state->ctx->primary_module->arch, e_type_key_basic(E_TypeKind_Void), 1, 0);
|
||||
eval.irtree.type_key = e_type_key_cons_ptr(e_type_state->ctx->primary_module->arch, e_type_key_basic(E_TypeKind_Void), 1, 0);
|
||||
}
|
||||
}
|
||||
return eval;
|
||||
@@ -93,7 +94,7 @@ e_autoresolved_eval_from_eval(E_Eval eval)
|
||||
internal E_Eval
|
||||
e_dynamically_typed_eval_from_eval(E_Eval eval)
|
||||
{
|
||||
E_TypeKey type_key = eval.type_key;
|
||||
E_TypeKey type_key = eval.irtree.type_key;
|
||||
E_TypeKind type_kind = e_type_kind_from_key(type_key);
|
||||
if(e_type_state != 0 &&
|
||||
e_interpret_ctx != 0 &&
|
||||
@@ -151,7 +152,7 @@ e_dynamically_typed_eval_from_eval(E_Eval eval)
|
||||
RDI_TypeNode *type = rdi_element_from_name_idx(rdi, TypeNodes, udt->self_type_idx);
|
||||
E_TypeKey derived_type_key = e_type_key_ext(e_type_kind_from_rdi(type->kind), udt->self_type_idx, rdi_idx);
|
||||
E_TypeKey ptr_to_derived_type_key = e_type_key_cons_ptr(arch, derived_type_key, 1, 0);
|
||||
eval.type_key = ptr_to_derived_type_key;
|
||||
eval.irtree.type_key = ptr_to_derived_type_key;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -166,13 +167,13 @@ internal E_Eval
|
||||
e_value_eval_from_eval(E_Eval eval)
|
||||
{
|
||||
ProfBeginFunction();
|
||||
if(eval.mode == E_Mode_Offset)
|
||||
if(eval.irtree.mode == E_Mode_Offset)
|
||||
{
|
||||
E_TypeKey type_key = e_type_unwrap(eval.type_key);
|
||||
E_TypeKey type_key = e_type_unwrap(eval.irtree.type_key);
|
||||
E_TypeKind type_kind = e_type_kind_from_key(type_key);
|
||||
if(type_kind == E_TypeKind_Array)
|
||||
{
|
||||
eval.mode = E_Mode_Value;
|
||||
eval.irtree.mode = E_Mode_Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -183,7 +184,7 @@ e_value_eval_from_eval(E_Eval eval)
|
||||
type_byte_size <= sizeof(E_Value) &&
|
||||
e_space_read(eval.space, &eval.value, value_vaddr_range))
|
||||
{
|
||||
eval.mode = E_Mode_Value;
|
||||
eval.irtree.mode = E_Mode_Value;
|
||||
|
||||
// rjf: mask&shift, for bitfields
|
||||
if(type_kind == E_TypeKind_Bitfield && type_byte_size <= sizeof(U64))
|
||||
@@ -197,7 +198,7 @@ e_value_eval_from_eval(E_Eval eval)
|
||||
}
|
||||
eval.value.u64 = eval.value.u64 >> type->off;
|
||||
eval.value.u64 = eval.value.u64 & valid_bits_mask;
|
||||
eval.type_key = type->direct_type_key;
|
||||
eval.irtree.type_key = type->direct_type_key;
|
||||
scratch_end(scratch);
|
||||
}
|
||||
|
||||
@@ -219,69 +220,6 @@ e_value_eval_from_eval(E_Eval eval)
|
||||
return eval;
|
||||
}
|
||||
|
||||
internal E_Eval
|
||||
e_element_eval_from_array_eval_index(E_Eval eval, U64 index)
|
||||
{
|
||||
E_Eval result = {0};
|
||||
result.mode = eval.mode;
|
||||
result.space = eval.space;
|
||||
result.type_key = e_type_direct_from_key(eval.type_key);
|
||||
result.code = eval.code;
|
||||
result.msgs = eval.msgs;
|
||||
U64 element_size = e_type_byte_size_from_key(result.type_key);
|
||||
switch(eval.mode)
|
||||
{
|
||||
default:{}break;
|
||||
case E_Mode_Value:
|
||||
if(element_size <= sizeof(E_Value) &&
|
||||
index < sizeof(E_Value)/element_size)
|
||||
{
|
||||
MemoryCopy((U8 *)(&result.value.u512[0]),
|
||||
(U8 *)(&eval.value.u512[0]) + index*element_size,
|
||||
element_size);
|
||||
}break;
|
||||
case E_Mode_Offset:
|
||||
{
|
||||
result.value.u64 = eval.value.u64 + element_size*index;
|
||||
}break;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
internal E_Eval
|
||||
e_member_eval_from_eval_member_name(E_Eval eval, String8 member_name)
|
||||
{
|
||||
E_Eval result = {0};
|
||||
{
|
||||
E_Member member = e_type_member_from_key_name__cached(eval.type_key, member_name);
|
||||
if(member.kind != E_MemberKind_Null)
|
||||
{
|
||||
result.mode = eval.mode;
|
||||
result.space = eval.space;
|
||||
result.type_key = member.type_key;
|
||||
result.code = eval.code;
|
||||
result.msgs = eval.msgs;
|
||||
switch(eval.mode)
|
||||
{
|
||||
default:{}break;
|
||||
case E_Mode_Value:
|
||||
if(member.off < sizeof(eval.value))
|
||||
{
|
||||
U64 member_size = e_type_byte_size_from_key(member.type_key);
|
||||
MemoryCopy((U8 *)(&result.value.u512[0]),
|
||||
(U8 *)(&eval.value.u512[0]) + member.off,
|
||||
Min(member_size, sizeof(eval.value) - member.off));
|
||||
}break;
|
||||
case E_Mode_Offset:
|
||||
{
|
||||
result.value.u64 = eval.value.u64 + member.off;
|
||||
}break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
internal E_Value
|
||||
e_value_from_string(String8 string)
|
||||
{
|
||||
|
||||
@@ -11,10 +11,10 @@ typedef struct E_Eval E_Eval;
|
||||
struct E_Eval
|
||||
{
|
||||
E_Value value;
|
||||
E_Mode mode;
|
||||
E_Space space;
|
||||
E_ExprChain exprs;
|
||||
E_TypeKey type_key;
|
||||
E_IRTreeAndType irtree;
|
||||
E_LookupRuleTagPair lookup_rule_tag;
|
||||
E_InterpretationCode code;
|
||||
E_MsgList msgs;
|
||||
};
|
||||
@@ -29,8 +29,6 @@ internal E_Eval e_eval_from_stringf(Arena *arena, char *fmt, ...);
|
||||
internal E_Eval e_autoresolved_eval_from_eval(E_Eval eval);
|
||||
internal E_Eval e_dynamically_typed_eval_from_eval(E_Eval eval);
|
||||
internal E_Eval e_value_eval_from_eval(E_Eval eval);
|
||||
internal E_Eval e_element_eval_from_array_eval_index(E_Eval eval, U64 index);
|
||||
internal E_Eval e_member_eval_from_eval_member_name(E_Eval eval, String8 member_name);
|
||||
internal E_Value e_value_from_string(String8 string);
|
||||
internal E_Value e_value_from_stringf(char *fmt, ...);
|
||||
internal E_Value e_value_from_expr(E_Expr *expr);
|
||||
|
||||
@@ -1341,7 +1341,7 @@ internal String8
|
||||
ev_string_from_simple_typed_eval(Arena *arena, EV_StringFlags flags, U32 radix, U32 min_digits, E_Eval eval)
|
||||
{
|
||||
String8 result = {0};
|
||||
E_TypeKey type_key = e_type_unwrap(eval.type_key);
|
||||
E_TypeKey type_key = e_type_unwrap(eval.irtree.type_key);
|
||||
E_TypeKind type_kind = e_type_kind_from_key(type_key);
|
||||
U64 type_byte_size = e_type_byte_size_from_key(type_key);
|
||||
U8 digit_group_separator = 0;
|
||||
|
||||
+55
-47
@@ -85,7 +85,7 @@ E_LOOKUP_INFO_FUNCTION_DEF(watches)
|
||||
if(filter.size != 0)
|
||||
{
|
||||
E_Eval eval = e_eval_from_string(scratch.arena, expr);
|
||||
E_Type *type = e_type_from_key__cached(eval.type_key);
|
||||
E_Type *type = e_type_from_key__cached(eval.irtree.type_key);
|
||||
if(type->kind != E_TypeKind_Set)
|
||||
{
|
||||
passes_filter = 0;
|
||||
@@ -3120,12 +3120,12 @@ internal B32
|
||||
rd_commit_eval_value_string(E_Eval dst_eval, String8 string, B32 string_needs_unescaping)
|
||||
{
|
||||
B32 result = 0;
|
||||
if(dst_eval.mode == E_Mode_Offset)
|
||||
if(dst_eval.irtree.mode == E_Mode_Offset)
|
||||
{
|
||||
Temp scratch = scratch_begin(0, 0);
|
||||
E_TypeKey type_key = e_type_unwrap(dst_eval.type_key);
|
||||
E_TypeKey type_key = e_type_unwrap(dst_eval.irtree.type_key);
|
||||
E_TypeKind type_kind = e_type_kind_from_key(type_key);
|
||||
E_TypeKey direct_type_key = e_type_unwrap(e_type_direct_from_key(e_type_unwrap(dst_eval.type_key)));
|
||||
E_TypeKey direct_type_key = e_type_unwrap(e_type_direct_from_key(e_type_unwrap(dst_eval.irtree.type_key)));
|
||||
E_TypeKind direct_type_kind = e_type_kind_from_key(direct_type_key);
|
||||
String8 commit_data = {0};
|
||||
B32 commit_at_ptr_dest = 0;
|
||||
@@ -3142,7 +3142,7 @@ rd_commit_eval_value_string(E_Eval dst_eval, String8 string, B32 string_needs_un
|
||||
{
|
||||
E_Eval src_eval = e_eval_from_string(scratch.arena, string);
|
||||
E_Eval src_eval_value = e_value_eval_from_eval(src_eval);
|
||||
E_TypeKind src_eval_value_type_kind = e_type_kind_from_key(src_eval_value.type_key);
|
||||
E_TypeKind src_eval_value_type_kind = e_type_kind_from_key(src_eval_value.irtree.type_key);
|
||||
if(direct_type_kind == E_TypeKind_Char8 ||
|
||||
direct_type_kind == E_TypeKind_Char16 ||
|
||||
direct_type_kind == E_TypeKind_Char32 ||
|
||||
@@ -3201,17 +3201,17 @@ rd_commit_eval_value_string(E_Eval dst_eval, String8 string, B32 string_needs_un
|
||||
else if(type_kind == E_TypeKind_Ptr &&
|
||||
(e_type_kind_is_pointer_or_ref(src_eval_value_type_kind) ||
|
||||
e_type_kind_is_integer(src_eval_value_type_kind)) &&
|
||||
src_eval_value.mode == E_Mode_Value)
|
||||
src_eval_value.irtree.mode == E_Mode_Value)
|
||||
{
|
||||
commit_data = push_str8_copy(scratch.arena, str8_struct(&src_eval.value));
|
||||
commit_data.size = Min(commit_data.size, e_type_byte_size_from_key(src_eval.type_key));
|
||||
commit_data.size = Min(commit_data.size, e_type_byte_size_from_key(src_eval.irtree.type_key));
|
||||
commit_data.size = Min(commit_data.size, e_type_byte_size_from_key(type_key));
|
||||
}
|
||||
}
|
||||
if(commit_data.size != 0 && e_type_byte_size_from_key(type_key) != 0)
|
||||
{
|
||||
U64 dst_offset = dst_eval.value.u64;
|
||||
if(dst_eval.mode == E_Mode_Offset && commit_at_ptr_dest)
|
||||
if(dst_eval.irtree.mode == E_Mode_Offset && commit_at_ptr_dest)
|
||||
{
|
||||
E_Eval dst_value_eval = e_value_eval_from_eval(dst_eval);
|
||||
dst_offset = dst_value_eval.value.u64;
|
||||
@@ -4177,7 +4177,7 @@ rd_view_ui(Rng2F32 rect)
|
||||
case RD_WatchCellKind_Eval:
|
||||
{
|
||||
RD_WatchRowCellInfo cell_info = rd_info_from_watch_row_cell(scratch.arena, row, string_flags, &row_info, cell, ui_top_font(), ui_top_font_size(), row_string_max_size_px);
|
||||
if(cell_info.eval.mode == E_Mode_Offset)
|
||||
if(cell_info.eval.irtree.mode == E_Mode_Offset)
|
||||
{
|
||||
B32 should_commit_asap = editing_complete;
|
||||
if(cell_info.eval.space.kind == RD_EvalSpaceKind_MetaCfg)
|
||||
@@ -4870,7 +4870,7 @@ rd_view_ui(Rng2F32 rect)
|
||||
ProfBegin("determine if row's data is fresh and/or bad");
|
||||
B32 row_is_fresh = 0;
|
||||
B32 row_is_bad = 0;
|
||||
switch(row_info->eval.mode)
|
||||
switch(row_info->eval.irtree.mode)
|
||||
{
|
||||
default:{}break;
|
||||
case E_Mode_Offset:
|
||||
@@ -4878,7 +4878,7 @@ rd_view_ui(Rng2F32 rect)
|
||||
CTRL_Entity *space_entity = rd_ctrl_entity_from_eval_space(row_info->eval.space);
|
||||
if(row_info->eval.space.kind == RD_EvalSpaceKind_CtrlEntity && space_entity->kind == CTRL_EntityKind_Process)
|
||||
{
|
||||
U64 size = e_type_byte_size_from_key(row_info->eval.type_key);
|
||||
U64 size = e_type_byte_size_from_key(row_info->eval.irtree.type_key);
|
||||
size = Min(size, 64);
|
||||
Rng1U64 vaddr_rng = r1u64(row_info->eval.value.u64, row_info->eval.value.u64+size);
|
||||
CTRL_ProcessMemorySlice slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, space_entity->handle, vaddr_rng, d_state->frame_eval_memread_endt_us);
|
||||
@@ -4940,7 +4940,7 @@ rd_view_ui(Rng2F32 rect)
|
||||
if(row_info->eval.space.kind == RD_EvalSpaceKind_CtrlEntity && row_info->view_ui_rule == &rd_nil_view_ui_rule)
|
||||
{
|
||||
U64 row_offset = row_info->eval.value.u64;
|
||||
if((row_info->eval.mode == E_Mode_Offset || row_info->eval.mode == E_Mode_Null) &&
|
||||
if((row_info->eval.irtree.mode == E_Mode_Offset || row_info->eval.irtree.mode == E_Mode_Null) &&
|
||||
row_offset%64 == 0 && row_depth > 0)
|
||||
{
|
||||
ui_set_next_fixed_x(0);
|
||||
@@ -4956,12 +4956,12 @@ rd_view_ui(Rng2F32 rect)
|
||||
//
|
||||
if(row_info->eval.space.kind == RD_EvalSpaceKind_CtrlEntity && row_info->view_ui_rule == &rd_nil_view_ui_rule)
|
||||
{
|
||||
if((row_info->eval.mode == E_Mode_Offset || row_info->eval.mode == E_Mode_Null) &&
|
||||
if((row_info->eval.irtree.mode == E_Mode_Offset || row_info->eval.irtree.mode == E_Mode_Null) &&
|
||||
row_info->eval.value.u64%64 != 0 &&
|
||||
row_depth > 0 &&
|
||||
!row_expanded)
|
||||
{
|
||||
U64 next_off = (row_info->eval.value.u64 + e_type_byte_size_from_key(row_info->eval.type_key));
|
||||
U64 next_off = (row_info->eval.value.u64 + e_type_byte_size_from_key(row_info->eval.irtree.type_key));
|
||||
if(next_off%64 != 0 && row_info->eval.value.u64/64 < next_off/64)
|
||||
{
|
||||
ui_set_next_fixed_x(0);
|
||||
@@ -5622,7 +5622,7 @@ rd_view_cfg_value_from_string(String8 string)
|
||||
internal U64
|
||||
rd_base_offset_from_eval(E_Eval eval)
|
||||
{
|
||||
if(e_type_kind_is_pointer_or_ref(e_type_kind_from_key(eval.type_key)))
|
||||
if(e_type_kind_is_pointer_or_ref(e_type_kind_from_key(eval.irtree.type_key)))
|
||||
{
|
||||
eval = e_value_eval_from_eval(eval);
|
||||
}
|
||||
@@ -5641,23 +5641,23 @@ rd_range_from_eval_tag(E_Eval eval, E_Expr *tag)
|
||||
break;
|
||||
}
|
||||
}
|
||||
E_TypeKey type_key = e_type_unwrap(eval.type_key);
|
||||
E_TypeKey type_key = e_type_unwrap(eval.irtree.type_key);
|
||||
E_TypeKind type_kind = e_type_kind_from_key(type_key);
|
||||
E_TypeKey direct_type_key = e_type_unwrap(e_type_direct_from_key(eval.type_key));
|
||||
E_TypeKey direct_type_key = e_type_unwrap(e_type_direct_from_key(eval.irtree.type_key));
|
||||
E_TypeKind direct_type_kind = e_type_kind_from_key(direct_type_key);
|
||||
if(size == 0 && e_type_kind_is_pointer_or_ref(type_kind) && (direct_type_kind == E_TypeKind_Struct ||
|
||||
direct_type_kind == E_TypeKind_Union ||
|
||||
direct_type_kind == E_TypeKind_Class ||
|
||||
direct_type_kind == E_TypeKind_Array))
|
||||
{
|
||||
size = e_type_byte_size_from_key(e_type_direct_from_key(e_type_unwrap(eval.type_key)));
|
||||
size = e_type_byte_size_from_key(e_type_direct_from_key(e_type_unwrap(eval.irtree.type_key)));
|
||||
}
|
||||
if(size == 0 && eval.mode == E_Mode_Offset && (type_kind == E_TypeKind_Struct ||
|
||||
type_kind == E_TypeKind_Union ||
|
||||
type_kind == E_TypeKind_Class ||
|
||||
type_kind == E_TypeKind_Array))
|
||||
if(size == 0 && eval.irtree.mode == E_Mode_Offset && (type_kind == E_TypeKind_Struct ||
|
||||
type_kind == E_TypeKind_Union ||
|
||||
type_kind == E_TypeKind_Class ||
|
||||
type_kind == E_TypeKind_Array))
|
||||
{
|
||||
size = e_type_byte_size_from_key(e_type_unwrap(eval.type_key));
|
||||
size = e_type_byte_size_from_key(e_type_unwrap(eval.irtree.type_key));
|
||||
}
|
||||
if(size == 0)
|
||||
{
|
||||
@@ -6520,7 +6520,7 @@ rd_window_frame(void)
|
||||
rd_code_label(1.f, 0, ui_color_from_name(str8_lit("text")), rd_state->drag_drop_regs->expr);
|
||||
ui_spacer(ui_em(2.f, 1.f));
|
||||
E_Eval eval = e_eval_from_string(scratch.arena, rd_state->drag_drop_regs->expr);
|
||||
if(eval.mode != E_Mode_Null)
|
||||
if(eval.irtree.mode != E_Mode_Null)
|
||||
{
|
||||
String8 value_string = rd_value_string_from_eval(scratch.arena, str8_zero(), EV_StringFlag_ReadOnlyDisplayRules, 10, ui_top_font(), ui_top_font_size(), ui_top_font_size()*20.f, eval);
|
||||
rd_code_label(1.f, 0, ui_color_from_name(str8_lit("text")), value_string);
|
||||
@@ -9858,7 +9858,7 @@ rd_window_frame(void)
|
||||
//~ rjf: Eval Visualization
|
||||
|
||||
internal F32
|
||||
rd_append_value_strings_from_eval(Arena *arena, String8 filter, EV_StringFlags flags, U32 default_radix, FNT_Tag font, F32 font_size, F32 max_size, S32 depth, E_Expr *root_expr, E_Eval eval, String8List *out)
|
||||
rd_append_value_strings_from_eval(Arena *arena, String8 filter, EV_StringFlags flags, U32 default_radix, FNT_Tag font, F32 font_size, F32 max_size, S32 depth, E_Eval root_eval, E_Eval eval, String8List *out)
|
||||
{
|
||||
ProfBeginFunction();
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
@@ -9870,7 +9870,7 @@ rd_append_value_strings_from_eval(Arena *arena, String8 filter, EV_StringFlags f
|
||||
B32 no_addr = 0;
|
||||
B32 no_string = 0;
|
||||
B32 has_array = 0;
|
||||
for(E_Expr *tag = root_expr->first_tag; tag != &e_expr_nil; tag = tag->next)
|
||||
for(E_Expr *tag = root_eval.exprs.last->first_tag; tag != &e_expr_nil; tag = tag->next)
|
||||
{
|
||||
if(0){}
|
||||
else if(str8_match(tag->string, str8_lit("dec"), 0)) {radix = 10;}
|
||||
@@ -9891,14 +9891,14 @@ rd_append_value_strings_from_eval(Arena *arena, String8 filter, EV_StringFlags f
|
||||
if(eval.space.kind == RD_EvalSpaceKind_MetaCtrlEntity ||
|
||||
eval.space.kind == RD_EvalSpaceKind_MetaCfg)
|
||||
{
|
||||
E_TypeKind kind = e_type_kind_from_key(eval.type_key);
|
||||
E_TypeKind kind = e_type_kind_from_key(eval.irtree.type_key);
|
||||
if(kind != E_TypeKind_Ptr)
|
||||
{
|
||||
no_addr = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(eval.type_key);
|
||||
E_Type *type = e_type_from_key__cached(eval.irtree.type_key);
|
||||
if(!(type->flags & E_TypeFlag_External))
|
||||
{
|
||||
no_addr = 1;
|
||||
@@ -9938,16 +9938,16 @@ rd_append_value_strings_from_eval(Arena *arena, String8 filter, EV_StringFlags f
|
||||
}
|
||||
|
||||
//- rjf: type evaluations -> display type string
|
||||
if(eval.mode == E_Mode_Null && !e_type_key_match(e_type_key_zero(), eval.type_key))
|
||||
if(eval.irtree.mode == E_Mode_Null && !e_type_key_match(e_type_key_zero(), eval.irtree.type_key))
|
||||
{
|
||||
String8 string = e_type_string_from_key(arena, eval.type_key);
|
||||
String8 string = e_type_string_from_key(arena, eval.irtree.type_key);
|
||||
str8_list_push(arena, out, string);
|
||||
}
|
||||
|
||||
//- rjf: value/offset evaluations
|
||||
else if(max_size > 0)
|
||||
{
|
||||
E_TypeKey type_key = e_type_unwrap(eval.type_key);
|
||||
E_TypeKey type_key = e_type_unwrap(eval.irtree.type_key);
|
||||
E_TypeKind kind = e_type_kind_from_key(type_key);
|
||||
switch(kind)
|
||||
{
|
||||
@@ -9967,7 +9967,7 @@ rd_append_value_strings_from_eval(Arena *arena, String8 filter, EV_StringFlags f
|
||||
case E_TypeKind_RRef:
|
||||
{
|
||||
// rjf: unpack type info
|
||||
E_TypeKey type_key = e_type_unwrap(eval.type_key);
|
||||
E_TypeKey type_key = e_type_unwrap(eval.irtree.type_key);
|
||||
E_Type *type = e_type_from_key__cached(type_key);
|
||||
E_TypeKind type_kind = type->kind;
|
||||
E_TypeKey direct_type_key = e_type_unwrap(e_type_ptee_from_key(type_key));
|
||||
@@ -10101,15 +10101,19 @@ rd_append_value_strings_from_eval(Arena *arena, String8 filter, EV_StringFlags f
|
||||
{
|
||||
E_Expr *deref_expr = e_expr_ref_deref(scratch.arena, eval.exprs.last);
|
||||
E_Eval deref_eval = e_eval_from_expr(scratch.arena, deref_expr);
|
||||
space_taken += rd_append_value_strings_from_eval(arena, filter, flags, radix, font, font_size, max_size-space_taken, depth+1, root_expr, deref_eval, out);
|
||||
space_taken += rd_append_value_strings_from_eval(arena, filter, flags, radix, font, font_size, max_size-space_taken, depth+1, root_eval, deref_eval, out);
|
||||
}
|
||||
else
|
||||
{
|
||||
// rjf: unpack
|
||||
E_IRTreeAndType irtree = e_irtree_and_type_from_expr(scratch.arena, eval.exprs.last);
|
||||
E_LookupRuleTagPair lookup_rule_and_tag = e_lookup_rule_tag_pair_from_expr_irtree(eval.exprs.last, &irtree);
|
||||
E_LookupRule *lookup_rule = lookup_rule_and_tag.rule;
|
||||
E_Expr *lookup_rule_tag = lookup_rule_and_tag.tag;
|
||||
E_IRTreeAndType irtree = eval.irtree;
|
||||
E_LookupRule *lookup_rule = eval.lookup_rule_tag.rule;
|
||||
E_Expr *lookup_rule_tag = eval.lookup_rule_tag.tag;
|
||||
if(lookup_rule == &e_lookup_rule__default)
|
||||
{
|
||||
lookup_rule = root_eval.lookup_rule_tag.rule;
|
||||
lookup_rule_tag = root_eval.lookup_rule_tag.tag;
|
||||
}
|
||||
E_LookupInfo lookup_info = lookup_rule->info(arena, &irtree, lookup_rule_tag, filter);
|
||||
U64 total_possible_child_count = Max(lookup_info.idxed_expr_count, lookup_info.named_expr_count);
|
||||
String8 opener_string = str8_lit("[");
|
||||
@@ -10139,7 +10143,7 @@ rd_append_value_strings_from_eval(Arena *arena, String8 filter, EV_StringFlags f
|
||||
}
|
||||
is_first = 0;
|
||||
E_Eval child_eval = e_eval_from_expr(scratch.arena, expr);
|
||||
space_taken += rd_append_value_strings_from_eval(arena, filter, flags, radix, font, font_size, max_size-space_taken, depth+1, root_expr, child_eval, out);
|
||||
space_taken += rd_append_value_strings_from_eval(arena, filter, flags, radix, font, font_size, max_size-space_taken, depth+1, root_eval, child_eval, out);
|
||||
if(space_taken > max_size && idx+1 < total_possible_child_count)
|
||||
{
|
||||
String8 ellipses = str8_lit(", ...");
|
||||
@@ -10170,7 +10174,7 @@ rd_append_value_strings_from_eval(Arena *arena, String8 filter, EV_StringFlags f
|
||||
case E_TypeKind_Array:
|
||||
{
|
||||
// rjf: unpack type info
|
||||
E_Type *eval_type = e_type_from_key__cached(e_type_unwrap(eval.type_key));
|
||||
E_Type *eval_type = e_type_from_key__cached(e_type_unwrap(eval.irtree.type_key));
|
||||
E_TypeKey direct_type_key = e_type_unwrap(eval_type->direct_type_key);
|
||||
E_TypeKind direct_type_kind = e_type_kind_from_key(direct_type_key);
|
||||
U64 array_count = eval_type->count;
|
||||
@@ -10188,7 +10192,7 @@ rd_append_value_strings_from_eval(Arena *arena, String8 filter, EV_StringFlags f
|
||||
did_content = 1;
|
||||
U64 string_buffer_size = Clamp(1, array_count, 1024);
|
||||
U8 *string_buffer = push_array(arena, U8, string_buffer_size);
|
||||
switch(eval.mode)
|
||||
switch(eval.irtree.mode)
|
||||
{
|
||||
default:{}break;
|
||||
case E_Mode_Offset:
|
||||
@@ -10240,10 +10244,14 @@ rd_append_value_strings_from_eval(Arena *arena, String8 filter, EV_StringFlags f
|
||||
arrays_and_sets_and_structs:
|
||||
{
|
||||
// rjf: unpack
|
||||
E_IRTreeAndType irtree = e_irtree_and_type_from_expr(scratch.arena, eval.exprs.last);
|
||||
E_LookupRuleTagPair lookup_rule_and_tag = e_lookup_rule_tag_pair_from_expr_irtree(eval.exprs.last, &irtree);
|
||||
E_LookupRule *lookup_rule = lookup_rule_and_tag.rule;
|
||||
E_Expr *lookup_rule_tag = lookup_rule_and_tag.tag;
|
||||
E_IRTreeAndType irtree = eval.irtree;
|
||||
E_LookupRule *lookup_rule = eval.lookup_rule_tag.rule;
|
||||
E_Expr *lookup_rule_tag = eval.lookup_rule_tag.tag;
|
||||
if(lookup_rule == &e_lookup_rule__default)
|
||||
{
|
||||
lookup_rule = root_eval.lookup_rule_tag.rule;
|
||||
lookup_rule_tag = root_eval.lookup_rule_tag.tag;
|
||||
}
|
||||
E_LookupInfo lookup_info = lookup_rule->info(arena, &irtree, lookup_rule_tag, filter);
|
||||
U64 total_possible_child_count = Max(lookup_info.idxed_expr_count, lookup_info.named_expr_count);
|
||||
String8 opener_string = str8_lit("{");
|
||||
@@ -10279,7 +10287,7 @@ rd_append_value_strings_from_eval(Arena *arena, String8 filter, EV_StringFlags f
|
||||
}
|
||||
is_first = 0;
|
||||
E_Eval child_eval = e_eval_from_expr(scratch.arena, expr);
|
||||
space_taken += rd_append_value_strings_from_eval(arena, filter, flags, radix, font, font_size, max_size-space_taken, depth+1, root_expr, child_eval, out);
|
||||
space_taken += rd_append_value_strings_from_eval(arena, filter, flags, radix, font, font_size, max_size-space_taken, depth+1, root_eval, child_eval, out);
|
||||
if(space_taken > max_size && idx+1 < total_possible_child_count)
|
||||
{
|
||||
String8 ellipses = str8_lit(", ...");
|
||||
@@ -10315,7 +10323,7 @@ rd_value_string_from_eval(Arena *arena, String8 filter, EV_StringFlags flags, U3
|
||||
{
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
String8List strs = {0};
|
||||
rd_append_value_strings_from_eval(scratch.arena, filter, flags, default_radix, font, font_size, max_size, 0, eval.exprs.last, eval, &strs);
|
||||
rd_append_value_strings_from_eval(scratch.arena, filter, flags, default_radix, font, font_size, max_size, 0, eval, eval, &strs);
|
||||
String8 result = str8_list_join(arena, &strs, 0);
|
||||
scratch_end(scratch);
|
||||
return result;
|
||||
@@ -11843,7 +11851,7 @@ rd_regs_fill_slot_from_string(RD_RegSlot slot, String8 string)
|
||||
E_Eval eval = e_eval_from_string(scratch.arena, string);
|
||||
if(eval.msgs.max_kind == E_MsgKind_Null)
|
||||
{
|
||||
E_TypeKind eval_type_kind = e_type_kind_from_key(e_type_unwrap(eval.type_key));
|
||||
E_TypeKind eval_type_kind = e_type_kind_from_key(e_type_unwrap(eval.irtree.type_key));
|
||||
if(eval_type_kind == E_TypeKind_Ptr ||
|
||||
eval_type_kind == E_TypeKind_LRef ||
|
||||
eval_type_kind == E_TypeKind_RRef)
|
||||
|
||||
@@ -1123,7 +1123,7 @@ internal void rd_window_frame(void);
|
||||
////////////////////////////////
|
||||
//~ rjf: Eval Visualization
|
||||
|
||||
internal F32 rd_append_value_strings_from_eval(Arena *arena, String8 filter, EV_StringFlags flags, U32 default_radix, FNT_Tag font, F32 font_size, F32 max_size, S32 depth, E_Expr *root_expr, E_Eval eval, String8List *out);
|
||||
internal F32 rd_append_value_strings_from_eval(Arena *arena, String8 filter, EV_StringFlags flags, U32 default_radix, FNT_Tag font, F32 font_size, F32 max_size, S32 depth, E_Eval root_eval, E_Eval eval, String8List *out);
|
||||
internal String8 rd_value_string_from_eval(Arena *arena, String8 filter, EV_StringFlags flags, U32 default_radix, FNT_Tag font, F32 font_size, F32 max_size, E_Eval eval);
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
+23
-23
@@ -782,7 +782,7 @@ rd_id_from_watch_cell(RD_WatchCell *cell)
|
||||
result = e_hash_from_string(result, str8_struct(&cell->kind));
|
||||
if(cell->kind != RD_WatchCellKind_Expr)
|
||||
{
|
||||
result = e_hash_from_string(result, str8_struct(&cell->eval.mode));
|
||||
result = e_hash_from_string(result, str8_struct(&cell->eval.irtree.mode));
|
||||
result = e_hash_from_string(result, str8_struct(&cell->index));
|
||||
result = e_hash_from_string(result, str8_struct(&cell->default_pct));
|
||||
}
|
||||
@@ -903,7 +903,7 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
E_IRTreeAndType parent_irtree = e_irtree_and_type_from_expr(scratch.arena, block->expr);
|
||||
E_Type *parent_type = e_type_from_key__cached(parent_irtree.type_key);
|
||||
E_Eval block_eval = e_eval_from_expr(scratch.arena, row->block->expr);
|
||||
E_TypeKey block_type_key = block_eval.type_key;
|
||||
E_TypeKey block_type_key = block_eval.irtree.type_key;
|
||||
E_TypeKind block_type_kind = e_type_kind_from_key(block_type_key);
|
||||
E_Type *block_type = e_type_from_key__cached(block_type_key);
|
||||
|
||||
@@ -925,12 +925,12 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
{
|
||||
default:
|
||||
case CTRL_EntityKind_Process:
|
||||
if(info.eval.mode == E_Mode_Offset)
|
||||
if(info.eval.irtree.mode == E_Mode_Offset)
|
||||
{
|
||||
info.module = ctrl_module_from_process_vaddr(row_ctrl_entity, info.eval.value.u64);
|
||||
}break;
|
||||
case CTRL_EntityKind_Thread:
|
||||
if(info.eval.mode == E_Mode_Value)
|
||||
if(info.eval.irtree.mode == E_Mode_Value)
|
||||
{
|
||||
CTRL_Entity *process = ctrl_process_from_entity(row_ctrl_entity);
|
||||
info.module = ctrl_module_from_process_vaddr(process, d_query_cached_rip_from_thread(row_ctrl_entity));
|
||||
@@ -996,13 +996,13 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
if(evalled_cfg != &rd_nil_cfg)
|
||||
{
|
||||
E_TypeKey top_level_type_key = e_string2typekey_map_lookup(rd_state->meta_name2type_map, evalled_cfg->string);
|
||||
is_top_level = (info.eval.value.u64 == 0 && e_type_key_match(top_level_type_key, info.eval.type_key));
|
||||
is_top_level = (info.eval.value.u64 == 0 && e_type_key_match(top_level_type_key, info.eval.irtree.type_key));
|
||||
}
|
||||
if(evalled_entity != &ctrl_entity_nil)
|
||||
{
|
||||
String8 top_level_name = ctrl_entity_kind_code_name_table[evalled_entity->kind];
|
||||
E_TypeKey top_level_type_key = e_string2typekey_map_lookup(rd_state->meta_name2type_map, top_level_name);
|
||||
is_top_level = (info.eval.value.u64 == 0 && e_type_key_match(top_level_type_key, info.eval.type_key));
|
||||
is_top_level = (info.eval.value.u64 == 0 && e_type_key_match(top_level_type_key, info.eval.irtree.type_key));
|
||||
}
|
||||
|
||||
// rjf: determine view ui rule
|
||||
@@ -1093,7 +1093,7 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
// rjf: singular button for unattached processes
|
||||
else if(info.eval.space.kind == RD_EvalSpaceKind_MetaUnattachedProcess)
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(info.eval.type_key);
|
||||
E_Type *type = e_type_from_key__cached(info.eval.irtree.type_key);
|
||||
if(str8_match(type->name, str8_lit("unattached_process"), 0))
|
||||
{
|
||||
U64 pid = info.eval.value.u128.u64[0];
|
||||
@@ -1119,7 +1119,7 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
// rjf: singular button for commands
|
||||
else if(info.eval.space.kind == RD_EvalSpaceKind_MetaCmd)
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(info.eval.type_key);
|
||||
E_Type *type = e_type_from_key__cached(info.eval.irtree.type_key);
|
||||
if(type->kind == E_TypeKind_Set)
|
||||
{
|
||||
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_Expr, .flags = 0, .pct = 1.f);
|
||||
@@ -1137,7 +1137,7 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
{
|
||||
String8 file_path = e_string_from_id(info.eval.value.u64);
|
||||
DR_FStrList fstrs = rd_title_fstrs_from_file_path(arena, file_path);
|
||||
E_Type *type = e_type_from_key__cached(info.eval.type_key);
|
||||
E_Type *type = e_type_from_key__cached(info.eval.irtree.type_key);
|
||||
if(str8_match(type->name, str8_lit("folder"), 0))
|
||||
{
|
||||
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_Expr,
|
||||
@@ -1287,7 +1287,7 @@ rd_info_from_watch_row_cell(Arena *arena, EV_Row *row, EV_StringFlags string_fla
|
||||
{
|
||||
result.flags |= RD_WatchCellFlag_CanEdit;
|
||||
}
|
||||
result.eval = (cell->eval.mode != E_Mode_Null ? cell->eval : e_eval_from_expr(arena, row->expr));
|
||||
result.eval = (cell->eval.irtree.mode != E_Mode_Null ? cell->eval : e_eval_from_expr(arena, row->expr));
|
||||
result.string = row->string;
|
||||
if(result.string.size == 0)
|
||||
{
|
||||
@@ -1392,7 +1392,7 @@ rd_info_from_watch_row_cell(Arena *arena, EV_Row *row, EV_StringFlags string_fla
|
||||
}
|
||||
|
||||
//- rjf: evaluate wrapped expression
|
||||
result.eval = (cell->eval.mode != E_Mode_Null ? cell->eval : e_eval_from_expr(arena, root_expr));
|
||||
result.eval = (cell->eval.irtree.mode != E_Mode_Null ? cell->eval : e_eval_from_expr(arena, root_expr));
|
||||
|
||||
//- rjf: determine default radix
|
||||
U32 default_radix = 10;
|
||||
@@ -1404,8 +1404,8 @@ rd_info_from_watch_row_cell(Arena *arena, EV_Row *row, EV_StringFlags string_fla
|
||||
|
||||
//- rjf: generate strings/flags based on that expression & fill
|
||||
result.string = rd_value_string_from_eval(arena, rd_view_search(), string_flags, default_radix, font, font_size, max_size_px, result.eval);
|
||||
result.flags |= !!(ev_type_key_is_editable(result.eval.type_key) && result.eval.mode == E_Mode_Offset) * RD_WatchCellFlag_CanEdit;
|
||||
E_Type *type = e_type_from_key__cached(result.eval.type_key);
|
||||
result.flags |= !!(ev_type_key_is_editable(result.eval.irtree.type_key) && result.eval.irtree.mode == E_Mode_Offset) * RD_WatchCellFlag_CanEdit;
|
||||
E_Type *type = e_type_from_key__cached(result.eval.irtree.type_key);
|
||||
if(type->flags & (E_TypeFlag_IsPlainText|E_TypeFlag_IsPathText))
|
||||
{
|
||||
result.flags |= RD_WatchCellFlag_IsNonCode;
|
||||
@@ -1425,7 +1425,7 @@ rd_info_from_watch_row_cell(Arena *arena, EV_Row *row, EV_StringFlags string_fla
|
||||
//- rjf: view ui cells
|
||||
case RD_WatchCellKind_ViewUI:
|
||||
{
|
||||
result.eval = (cell->eval.mode != E_Mode_Null ? cell->eval : e_eval_from_expr(arena, row->expr));
|
||||
result.eval = (cell->eval.irtree.mode != E_Mode_Null ? cell->eval : e_eval_from_expr(arena, row->expr));
|
||||
result.view_ui_rule = row_info->view_ui_rule;
|
||||
result.view_ui_tag = row_info->view_ui_tag;
|
||||
}break;
|
||||
@@ -1442,7 +1442,7 @@ rd_info_from_watch_row_cell(Arena *arena, EV_Row *row, EV_StringFlags string_fla
|
||||
{
|
||||
CTRL_Entity *entity = rd_ctrl_entity_from_eval_space(result.eval.space);
|
||||
E_TypeKey cfg_type = e_string2typekey_map_lookup(rd_state->meta_name2type_map, ctrl_entity_kind_code_name_table[entity->kind]);
|
||||
if(e_type_key_match(cfg_type, result.eval.type_key))
|
||||
if(e_type_key_match(cfg_type, result.eval.irtree.type_key))
|
||||
{
|
||||
result.entity = entity;
|
||||
}
|
||||
@@ -1452,7 +1452,7 @@ rd_info_from_watch_row_cell(Arena *arena, EV_Row *row, EV_StringFlags string_fla
|
||||
{
|
||||
RD_Cfg *cfg = rd_cfg_from_eval_space(result.eval.space);
|
||||
E_TypeKey cfg_type = e_string2typekey_map_lookup(rd_state->meta_name2type_map, cfg->string);
|
||||
if(e_type_key_match(cfg_type, result.eval.type_key))
|
||||
if(e_type_key_match(cfg_type, result.eval.irtree.type_key))
|
||||
{
|
||||
result.cfg = cfg;
|
||||
}
|
||||
@@ -1475,7 +1475,7 @@ rd_info_from_watch_row_cell(Arena *arena, EV_Row *row, EV_StringFlags string_fla
|
||||
{
|
||||
CTRL_Entity *entity = rd_ctrl_entity_from_eval_space(result.eval.space);
|
||||
E_TypeKey cfg_type = e_string2typekey_map_lookup(rd_state->meta_name2type_map, ctrl_entity_kind_code_name_table[entity->kind]);
|
||||
if(e_type_key_match(cfg_type, result.eval.type_key))
|
||||
if(e_type_key_match(cfg_type, result.eval.irtree.type_key))
|
||||
{
|
||||
result.fstrs = rd_title_fstrs_from_ctrl_entity(arena, entity, 1);
|
||||
result.flags |= RD_WatchCellFlag_Button;
|
||||
@@ -1487,7 +1487,7 @@ rd_info_from_watch_row_cell(Arena *arena, EV_Row *row, EV_StringFlags string_fla
|
||||
{
|
||||
RD_Cfg *cfg = rd_cfg_from_eval_space(result.eval.space);
|
||||
E_TypeKey cfg_type = e_string2typekey_map_lookup(rd_state->meta_name2type_map, cfg->string);
|
||||
if(e_type_key_match(cfg_type, result.eval.type_key))
|
||||
if(e_type_key_match(cfg_type, result.eval.irtree.type_key))
|
||||
{
|
||||
result.fstrs = rd_title_fstrs_from_cfg(arena, cfg);
|
||||
result.flags |= RD_WatchCellFlag_Button;
|
||||
@@ -2361,10 +2361,10 @@ RD_VIEW_UI_FUNCTION_DEF(memory)
|
||||
{
|
||||
String8 local_name = n->string;
|
||||
E_Eval local_eval = e_eval_from_string(scratch.arena, local_name);
|
||||
if(local_eval.mode == E_Mode_Offset)
|
||||
if(local_eval.irtree.mode == E_Mode_Offset)
|
||||
{
|
||||
E_TypeKind local_eval_type_kind = e_type_kind_from_key(local_eval.type_key);
|
||||
U64 local_eval_type_size = e_type_byte_size_from_key(local_eval.type_key);
|
||||
E_TypeKind local_eval_type_kind = e_type_kind_from_key(local_eval.irtree.type_key);
|
||||
U64 local_eval_type_size = e_type_byte_size_from_key(local_eval.irtree.type_key);
|
||||
Rng1U64 vaddr_rng = r1u64(local_eval.value.u64, local_eval.value.u64+local_eval_type_size);
|
||||
Rng1U64 vaddr_rng_in_visible = intersect_1u64(viz_range_bytes, vaddr_rng);
|
||||
if(vaddr_rng_in_visible.max != vaddr_rng_in_visible.min)
|
||||
@@ -2373,7 +2373,7 @@ RD_VIEW_UI_FUNCTION_DEF(memory)
|
||||
{
|
||||
annotation->name_string = push_str8_copy(scratch.arena, local_name);
|
||||
annotation->kind_string = str8_lit("Local");
|
||||
annotation->type_string = e_type_string_from_key(scratch.arena, local_eval.type_key);
|
||||
annotation->type_string = e_type_string_from_key(scratch.arena, local_eval.irtree.type_key);
|
||||
annotation->color = color_gen_table[(vaddr_rng.min/8)%ArrayCount(color_gen_table)];
|
||||
annotation->vaddr_range = vaddr_rng;
|
||||
}
|
||||
@@ -3150,7 +3150,7 @@ rd_rgba_from_eval_params(E_Eval eval, MD_Node *params)
|
||||
Vec4F32 rgba = {0};
|
||||
{
|
||||
E_Eval value_eval = e_value_eval_from_eval(eval);
|
||||
E_TypeKey type_key = eval.type_key;
|
||||
E_TypeKey type_key = eval.irtree.type_key;
|
||||
E_TypeKind type_kind = e_type_kind_from_key(type_key);
|
||||
U64 type_size = e_type_byte_size_from_key(type_key);
|
||||
if(16 <= type_size)
|
||||
|
||||
@@ -1832,7 +1832,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
|
||||
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);
|
||||
String8 eval_string = {0};
|
||||
if(!e_type_key_match(e_type_key_zero(), eval.type_key))
|
||||
if(!e_type_key_match(e_type_key_zero(), eval.irtree.type_key))
|
||||
{
|
||||
eval_string = rd_value_string_from_eval(scratch.arena, str8_zero(), EV_StringFlag_ReadOnlyDisplayRules, 10, params->font, params->font_size, params->font_size*60.f, eval);
|
||||
}
|
||||
@@ -2185,7 +2185,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
|
||||
if(!ui_dragging(text_container_sig) && text_container_sig.event_flags == 0 && mouse_expr.size != 0)
|
||||
{
|
||||
E_Eval eval = e_eval_from_string(scratch.arena, mouse_expr);
|
||||
if(eval.msgs.max_kind == E_MsgKind_Null && (eval.mode != E_Mode_Null || mouse_expr_is_explicit))
|
||||
if(eval.msgs.max_kind == E_MsgKind_Null && (eval.irtree.mode != E_Mode_Null || mouse_expr_is_explicit))
|
||||
{
|
||||
U64 line_vaddr = 0;
|
||||
if(contains_1s64(params->line_num_range, mouse_pt.line))
|
||||
|
||||
Reference in New Issue
Block a user