further progress on using the upgraded eval system; sketch out replacement breakpoints & callstack views, which are just specializations of watch window

This commit is contained in:
Ryan Fleury
2024-08-15 14:34:47 -07:00
parent 8b5be64507
commit 01cf3d39f1
10 changed files with 233 additions and 52 deletions
+3 -24
View File
@@ -7513,8 +7513,9 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt)
DF_EntityKind sub_entity_kind = DF_EntityKind_Nil;
for(EachEnumVal(DF_EntityKind, k2))
{
if(str8_match(child->string, df_g_entity_kind_name_lower_table[k2], StringMatchFlag_CaseInsensitive) ||
(k2 == DF_EntityKind_Executable && str8_match(child->string, str8_lit("exe"), StringMatchFlag_CaseInsensitive)))
if(child->flags & DF_CfgNodeFlag_Identifier && child->first != &df_g_nil_cfg_node &&
(str8_match(child->string, df_g_entity_kind_name_lower_table[k2], StringMatchFlag_CaseInsensitive) ||
(k2 == DF_EntityKind_Executable && str8_match(child->string, str8_lit("exe"), StringMatchFlag_CaseInsensitive))))
{
Task *task = push_array(scratch.arena, Task, 1);
task->next = t->next;
@@ -8288,28 +8289,6 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt)
expr->u64 = thread->ctrl_id;
e_string2expr_map_insert(arena, ctx->macro_map, str8_lit("tid"), expr);
}
// rjf: thread -> current thread info
if(!df_entity_is_nil(thread))
{
E_MemberList members_list = {0};
{
E_Member tid_member =
{
.kind = E_MemberKind_DataField,
.type_key = e_type_key_basic(E_TypeKind_U32),
.name = str8_lit("tid"),
.off = 0,
};
e_member_list_push(arena, &members_list, &tid_member);
}
E_MemberArray members = e_member_array_from_list(arena, &members_list);
E_TypeKey thread_type_key = e_type_key_cons(.kind = E_TypeKind_Struct, .count = members.count, .members = members.v, .name = str8_lit("Thread"));
E_Expr *expr = e_push_expr(arena, E_ExprKind_LeafBytecode, 0);
expr->u64 = thread->ctrl_id;
expr->type_key = thread_type_key;
e_string2expr_map_insert(arena, ctx->macro_map, str8_lit("thread"), expr);
}
}
//- rjf: add macros for all watches which define identifiers