checkpoint

This commit is contained in:
Ryan Fleury
2024-09-11 18:25:48 -07:00
parent 2f299e087a
commit 472e73137d
6 changed files with 376 additions and 308 deletions
+3 -5
View File
@@ -4007,9 +4007,7 @@ d_tick(Arena *arena, D_TargetArray *targets, D_BreakpointArray *breakpoints)
D_Entity *selected_thread = d_entity_from_handle(d_regs()->thread);
if(!d_entity_is_nil(selected_thread))
{
D_CmdParams params = d_cmd_params_zero();
params.entity = d_handle_from_entity(selected_thread);
df_push_cmd(d_cmd_spec_from_kind(DF_CmdKind_FindThread), &params);
df_cmd(DF_CmdKind_FindThread, .thread = d_handle_from_entity(selected_thread));
}
}
@@ -4915,7 +4913,7 @@ d_tick(Arena *arena, D_TargetArray *targets, D_BreakpointArray *breakpoints)
d_state->base_regs.v.thread = d_handle_from_entity(thread);
d_state->base_regs.v.module = d_handle_from_entity(module);
d_state->base_regs.v.process = d_handle_from_entity(process);
df_push_cmd(df_cmd_spec_from_kind(DF_CmdKind_FindThread), &params);
df_cmd(DF_CmdKind_FindThread, .thread = d_handle_from_entity(thread));
}break;
case D_CmdKind_SelectUnwind:
{
@@ -4934,7 +4932,7 @@ d_tick(Arena *arena, D_TargetArray *targets, D_BreakpointArray *breakpoints)
d_state->base_regs.v.inline_depth = params.inline_depth;
}
}
df_push_cmd(df_cmd_spec_from_kind(DF_CmdKind_FindThread), &params);
df_cmd(DF_CmdKind_FindThread, .thread = d_handle_from_entity(thread));
di_scope_close(di_scope);
}break;
case D_CmdKind_UpOneFrame:
+2
View File
@@ -59,6 +59,8 @@ DF_RegTable:
{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 }
File diff suppressed because it is too large Load Diff
+8 -13
View File
@@ -411,7 +411,7 @@ typedef struct DF_Cmd DF_Cmd;
struct DF_Cmd
{
D_CmdSpec *spec;
D_CmdParams params;
DF_Regs *regs;
};
typedef struct DF_CmdNode DF_CmdNode;
@@ -857,7 +857,7 @@ internal DF_Regs *df_regs_copy(Arena *arena, DF_Regs *src);
////////////////////////////////
//~ rjf: Commands Type Functions
internal void df_cmd_list_push_new(Arena *arena, DF_CmdList *cmds, D_CmdSpec *spec, D_CmdParams *params);
internal void df_cmd_list_push_new(Arena *arena, DF_CmdList *cmds, D_CmdSpec *spec, DF_Regs *regs);
////////////////////////////////
//~ rjf: View Type Functions
@@ -1079,9 +1079,11 @@ internal D_CfgTable *df_cfg_table(void);
internal DF_Regs *df_regs(void);
internal DF_Regs *df_base_regs(void);
internal DF_Regs *df_push_regs(void);
internal DF_Regs *df_push_regs_(DF_Regs *regs);
#define df_push_regs(...) df_push_regs_(&(DF_Regs){df_regs_lit_init_top __VA_ARGS__})
internal DF_Regs *df_pop_regs(void);
#define DF_RegsScope DeferLoop(df_push_regs(), df_pop_regs())
#define DF_RegsScope(...) DeferLoop(df_push_regs(__VA_ARGS__), df_pop_regs())
internal void df_regs_fill_from_string(D_CmdSpec *spec, String8 string);
////////////////////////////////
//~ rjf: Commands
@@ -1091,15 +1093,8 @@ internal D_CmdSpec *df_cmd_spec_from_kind(DF_CmdKind kind);
internal DF_CmdKind df_cmd_kind_from_string(String8 string);
//- rjf: pushing
internal void df_push_cmd(D_CmdSpec *spec, D_CmdParams *params);
#define df_cmd(kind, ...) df_push_cmd(df_cmd_spec_from_kind(kind), \
&(D_CmdParams) \
{ \
.window = d_regs()->window, \
.panel = d_regs()->panel, \
.view = d_regs()->view, \
__VA_ARGS__ \
})
internal void df_push_cmd(D_CmdSpec *spec, DF_Regs *regs);
#define df_cmd(kind, ...) df_push_cmd(df_cmd_spec_from_kind(kind), &(DF_Regs){df_regs_lit_init_top __VA_ARGS__})
//- rjf: iterating
internal B32 df_next_cmd(DF_Cmd **cmd);
@@ -28,7 +28,7 @@ DF_CmdKind_Null,
DF_CmdKind_Null,
};
Rng1U64 df_reg_slot_range_table[29] =
Rng1U64 df_reg_slot_range_table[31] =
{
{0},
{OffsetOf(DF_Regs, machine), OffsetOf(DF_Regs, machine) + sizeof(D_Handle)},
@@ -51,6 +51,8 @@ Rng1U64 df_reg_slot_range_table[29] =
{OffsetOf(DF_Regs, lang_kind), OffsetOf(DF_Regs, lang_kind) + sizeof(TXT_LangKind)},
{OffsetOf(DF_Regs, lines), OffsetOf(DF_Regs, lines) + sizeof(D_LineList)},
{OffsetOf(DF_Regs, dbgi_key), OffsetOf(DF_Regs, dbgi_key) + sizeof(DI_Key)},
{OffsetOf(DF_Regs, vaddr), OffsetOf(DF_Regs, vaddr) + sizeof(U64)},
{OffsetOf(DF_Regs, voff), OffsetOf(DF_Regs, voff) + sizeof(U64)},
{OffsetOf(DF_Regs, vaddr_range), OffsetOf(DF_Regs, vaddr_range) + sizeof(Rng1U64)},
{OffsetOf(DF_Regs, voff_range), OffsetOf(DF_Regs, voff_range) + sizeof(Rng1U64)},
{OffsetOf(DF_Regs, pid), OffsetOf(DF_Regs, pid) + sizeof(U32)},
@@ -29,6 +29,8 @@ DF_RegSlot_TextKey,
DF_RegSlot_LangKind,
DF_RegSlot_Lines,
DF_RegSlot_DbgiKey,
DF_RegSlot_Vaddr,
DF_RegSlot_Voff,
DF_RegSlot_VaddrRange,
DF_RegSlot_VoffRange,
DF_RegSlot_PID,
@@ -519,6 +521,8 @@ U128 text_key;
TXT_LangKind lang_kind;
D_LineList lines;
DI_Key dbgi_key;
U64 vaddr;
U64 voff;
Rng1U64 vaddr_range;
Rng1U64 voff_range;
U32 pid;
@@ -550,6 +554,8 @@ MD_Node * params_tree;
.lang_kind = df_regs()->lang_kind,\
.lines = df_regs()->lines,\
.dbgi_key = df_regs()->dbgi_key,\
.vaddr = df_regs()->vaddr,\
.voff = df_regs()->voff,\
.vaddr_range = df_regs()->vaddr_range,\
.voff_range = df_regs()->voff_range,\
.pid = df_regs()->pid,\
@@ -678,7 +684,7 @@ C_LINKAGE_BEGIN
extern DF_CmdKind d_cfg_src_load_cmd_kind_table[4];
extern DF_CmdKind d_cfg_src_write_cmd_kind_table[4];
extern DF_CmdKind d_cfg_src_apply_cmd_kind_table[4];
extern Rng1U64 df_reg_slot_range_table[29];
extern Rng1U64 df_reg_slot_range_table[31];
extern DF_StringBindingPair df_g_default_binding_table[110];
extern String8 df_g_binding_version_remap_old_name_table[7];
extern String8 df_g_binding_version_remap_new_name_table[7];