Revert "another checkpoint in big df entity elimination pass"

This reverts commit f8fd32e328.
This commit is contained in:
Ryan Fleury
2024-09-07 14:48:34 -07:00
parent 6180da1b0f
commit cccbd265ff
16 changed files with 3091 additions and 3714 deletions
+10 -5
View File
@@ -91,9 +91,9 @@ D_RegTable:
{
// rjf: entity info
{CTRL_MachineID machine_id MachineID }
{DMN_Handle process Process }
{DMN_Handle module Module }
{DMN_Handle thread Thread }
{DMN_Handle process process }
{DMN_Handle module module }
{DMN_Handle thread thread }
{D_Handle window Window }
{D_Handle panel Panel }
{D_Handle view View }
@@ -157,6 +157,8 @@ D_RegTable:
@table(name name_display name_lower show_in_ui show_in_ipc_docs q_slot q_ent_kind q_allow_files q_allow_folders q_keep_oi q_select_oi q_is_code q_required canonical_icon desc)
D_MsgKindTable:
{
{Null "" null 0 0 Null Nil 0 0 0 0 0 0 Null ""}
//- rjf: low level target operations
{LaunchAndRun "Launch And Run" launch_and_run 0 0 Null Nil 0 0 0 0 0 0 Null ""}
{LaunchAndStepInto "Launch And Step Into" launch_and_step_into 0 0 Null Nil 0 0 0 0 0 0 Null ""}
@@ -205,14 +207,17 @@ D_MsgKindTable:
@enum D_MsgKind:
{
Null,
@expand(D_MsgKindTable a) `$(a.name)`,
COUNT
}
@data(String8) d_msg_kind_name_lower_table:
{
`{0}`,
@expand(D_MsgKindTable a) `str8_lit_comp("$(a.name_lower)")`
}
@data(String8) d_msg_kind_name_display_table:
{
@expand(D_MsgKindTable a) `str8_lit_comp("$(a.name_lower)")`
}
+19 -44
View File
@@ -117,11 +117,16 @@ internal void
d_regs_copy_contents(Arena *arena, D_Regs *dst, D_Regs *src)
{
MemoryCopyStruct(dst, src);
dst->entity_list = d_handle_list_copy(arena, src->entity_list);
dst->file_path = push_str8_copy(arena, src->file_path);
dst->lines = d_line_list_copy(arena, &src->lines);
dst->dbgi_key = di_key_copy(arena, &src->dbgi_key);
dst->string = push_str8_copy(arena, src->string);
dst->params_tree = md_tree_copy(arena, src->params_tree);
if(dst->entity_list.count == 0 && !d_handle_match(d_handle_zero(), dst->entity))
{
d_handle_list_push(arena, &dst->entity_list, dst->entity);
}
}
internal D_Regs *
@@ -648,7 +653,6 @@ d_cmd_params_apply_spec_query(Arena *arena, D_CmdParams *params, D_CmdSpec *spec
//- rjf: command lists
#if 0 // TODO(rjf): @msgs
internal void
d_cmd_list_push(Arena *arena, D_CmdList *cmds, D_CmdParams *params, D_CmdSpec *spec)
{
@@ -658,7 +662,6 @@ d_cmd_list_push(Arena *arena, D_CmdList *cmds, D_CmdParams *params, D_CmdSpec *s
DLLPushBack(cmds->first, cmds->last, n);
cmds->count += 1;
}
#endif
//- rjf: string -> core layer command kind
@@ -3400,7 +3403,7 @@ d_ctrl_run(D_RunKind run, CTRL_Entity *run_thread, CTRL_RunFlags flags, CTRL_Tra
CTRL_Msg msg = {(run == D_RunKind_Run || run == D_RunKind_Step) ? CTRL_MsgKind_Run : CTRL_MsgKind_SingleStep};
{
D_EntityList user_bps = d_query_cached_entity_list_with_kind(D_EntityKind_Breakpoint);
CTRL_Entity *process = ctrl_entity_ancestor_from_kind(run_thread, CTRL_EntityKind_Process);
CTRL_Entity *process = ctrl_entity_ancestor_from_kind(run_thread, D_EntityKind_Process);
msg.run_flags = flags;
msg.machine_id = run_thread->machine_id;
msg.entity = run_thread->handle;
@@ -3555,7 +3558,6 @@ d_eval_space_read(void *u, E_Space space, void *out, Rng1U64 range)
}break;
//- rjf: default -> evaluating a debugger entity; read from entity POD evaluation
default:{}break;
#if 0 // TODO(rjf): @msgs
default:
{
@@ -3595,7 +3597,7 @@ d_eval_space_read(void *u, E_Space space, void *out, Rng1U64 range)
}break;
//- rjf: thread -> reading from thread register block
case CTRL_EntityKind_Thread:
case D_EntityKind_Thread:
{
Temp scratch = scratch_begin(0, 0);
CTRL_Unwind unwind = d_query_cached_unwind_from_thread(entity);
@@ -3624,8 +3626,7 @@ d_eval_space_write(void *u, E_Space space, void *in, Rng1U64 range)
switch(entity->kind)
{
//- rjf: default -> making commits to entity evaluation
default:{}break;
#if 0 // TODO(rjf): @msgs
#if 0
default:
{
Temp scratch = scratch_begin(0, 0);
@@ -3700,16 +3701,14 @@ d_key_from_eval_space_range(E_Space space, Rng1U64 range, B32 zero_terminated)
CTRL_Entity *entity = d_entity_from_eval_space(space);
switch(entity->kind)
{
default:{}break;
//- rjf: nil space -> filesystem key encoded inside of `space`
case CTRL_EntityKind_Null:
case D_EntityKind_Nil:
{
result = space;
}break;
//- rjf: process space -> query
case CTRL_EntityKind_Process:
case D_EntityKind_Process:
{
result = ctrl_hash_store_key_from_process_vaddr_range(entity->machine_id, entity->handle, range, zero_terminated);
}break;
@@ -3726,8 +3725,6 @@ d_whole_range_from_eval_space(E_Space space)
CTRL_Entity *entity = d_entity_from_eval_space(space);
switch(entity->kind)
{
default:{}break;
//- rjf: nil space -> filesystem key encoded inside of `space`
case CTRL_EntityKind_Null:
{
@@ -3745,8 +3742,6 @@ d_whole_range_from_eval_space(E_Space space)
result = r1u64(0, data.size);
hs_scope_close(scope);
}break;
//- rjf: process -> process address space
case CTRL_EntityKind_Process:
{
result = r1u64(0, 0x7FFFFFFFFFFFull);
@@ -5433,7 +5428,7 @@ d_file_path_from_eval_string(Arena *arena, String8 string)
E_Eval eval = e_eval_from_string(scratch.arena, string);
if(eval.expr->kind == E_ExprKind_LeafFilePath)
{
result = raw_from_escaped_string(arena, eval.expr->string);
result = d_cfg_raw_from_escaped_string(arena, eval.expr->string);
}
scratch_end(scratch);
}
@@ -5444,7 +5439,7 @@ internal String8
d_eval_string_from_file_path(Arena *arena, String8 string)
{
Temp scratch = scratch_begin(&arena, 1);
String8 string_escaped = escaped_from_raw_string(scratch.arena, string);
String8 string_escaped = d_cfg_escaped_from_raw_string(scratch.arena, string);
String8 result = push_str8f(arena, "file:\"%S\"", string_escaped);
scratch_end(scratch);
return result;
@@ -5579,7 +5574,6 @@ d_ctrl_targets_running(void)
return d_state->ctrl_is_running;
}
#if 0 // TODO(rjf): @msgs
//- rjf: config paths
internal String8
@@ -5595,11 +5589,9 @@ d_cfg_table(void)
{
return &d_state->cfg_table;
}
#endif
//- rjf: config serialization
#if 0 // TODO(rjf): @msgs
internal String8
d_cfg_escaped_from_raw_string(Arena *arena, String8 string)
{
@@ -5837,7 +5829,6 @@ d_cfg_push_write_string(D_CfgSrc src, String8 string)
{
str8_list_push(d_state->cfg_write_arenas[src], &d_state->cfg_write_data[src], push_str8_copy(d_state->cfg_write_arenas[src], string));
}
#endif
//- rjf: current path
@@ -5849,7 +5840,6 @@ d_current_path(void)
//- rjf: entity kind cache
#if 0 // TODO(rjf): @msgs
internal D_EntityList
d_query_cached_entity_list_with_kind(D_EntityKind kind)
{
@@ -5873,7 +5863,6 @@ d_query_cached_entity_list_with_kind(D_EntityKind kind)
ProfEnd();
return result;
}
#endif
//- rjf: active entity based queries
@@ -6168,8 +6157,6 @@ d_query_cached_member_map_from_dbgi_key_voff(DI_Key *dbgi_key, U64 voff)
//- rjf: top-level command dispatch
#if 0 // TODO(rjf): @msgs
internal void
d_push_cmd(D_CmdSpec *spec, D_CmdParams *params)
{
@@ -6256,8 +6243,6 @@ d_errorf(char *fmt, ...)
scratch_end(scratch);
}
#endif
////////////////////////////////
//~ rjf: Message Functions
@@ -6299,9 +6284,7 @@ d_init(CmdLine *cmdln, D_StateDeltaHistory *hist)
{
d_state->frame_arenas[idx] = arena_alloc();
}
#if 0 // TODO(rjf): @msgs
d_state->root_cmd_arena = arena_alloc();
#endif
d_state->output_log_key = hs_hash_from_data(str8_lit("df_output_log_key"));
d_state->entities_arena = arena_alloc(.reserve_size = GB(64), .commit_size = KB(64));
d_state->entities_root = &d_nil_entity;
@@ -6397,7 +6380,6 @@ d_init(CmdLine *cmdln, D_StateDeltaHistory *hist)
}
// rjf: set up config path state
#if 0 // TODO(rjf): @msgs
String8 cfg_src_paths[D_CfgSrc_COUNT] = {user_cfg_path, project_cfg_path};
for(D_CfgSrc src = (D_CfgSrc)0; src < D_CfgSrc_COUNT; src = (D_CfgSrc)(src+1))
{
@@ -6407,18 +6389,14 @@ d_init(CmdLine *cmdln, D_StateDeltaHistory *hist)
// rjf: set up config table arena
d_state->cfg_arena = arena_alloc();
#endif
scratch_end(scratch);
}
#if 0 // TODO(rjf): @msgs
// rjf: set up config write state
for(D_CfgSrc src = (D_CfgSrc)0; src < D_CfgSrc_COUNT; src = (D_CfgSrc)(src+1))
{
d_state->cfg_write_arenas[src] = arena_alloc();
}
#endif
// rjf: set up initial browse path
{
@@ -6431,7 +6409,6 @@ d_init(CmdLine *cmdln, D_StateDeltaHistory *hist)
}
}
#if 0 // TODO(rjf): @msgs
internal D_CmdList
d_gather_root_cmds(Arena *arena)
{
@@ -6442,10 +6419,9 @@ d_gather_root_cmds(Arena *arena)
}
return cmds;
}
#endif
internal void
d_tick(Arena *arena, DI_Scope *di_scope, F32 dt)
d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt)
{
ProfBeginFunction();
d_state->frame_index += 1;
@@ -6573,7 +6549,8 @@ d_tick(Arena *arena, DI_Scope *di_scope, F32 dt)
if(event->cause == CTRL_EventCause_InterruptedByException ||
event->cause == CTRL_EventCause_InterruptedByTrap)
{
log_user_errorf("Interrupted by exception");
D_CmdParams params = d_cmd_params_zero();
d_cmd_list_push(arena, cmds, &params, d_cmd_spec_from_kind(D_CmdKind_Error));
}
// rjf: kill all entities which are marked to die on stop
@@ -6698,7 +6675,9 @@ d_tick(Arena *arena, DI_Scope *di_scope, F32 dt)
B32 do_initial_snap = (already_existing_processes.count == 1 && thread_idx_in_process == 0);
if(do_initial_snap)
{
d_msg(D_MsgKind_SelectThread, .machine_id = event->machine_id, .thread = event->entity);
D_CmdParams params = d_cmd_params_zero();
params.entity = d_handle_from_entity(entity);
d_cmd_list_push(arena, cmds, &params, d_cmd_spec_from_kind(D_CmdKind_SelectThread));
}
}break;
@@ -7504,7 +7483,6 @@ d_tick(Arena *arena, DI_Scope *di_scope, F32 dt)
scratch_end(scratch);
}
#if 0 // TODO(rjf): @msgs
//////////////////////////////
//- rjf: clear root level commands
//
@@ -7512,9 +7490,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, F32 dt)
arena_clear(d_state->root_cmd_arena);
MemoryZeroStruct(&d_state->root_cmds);
}
#endif
#if 0 // TODO(rjf): @msgs
//////////////////////////////
//- rjf: autosave
//
@@ -7528,7 +7504,6 @@ d_tick(Arena *arena, DI_Scope *di_scope, F32 dt)
d_state->seconds_til_autosave = 5.f;
}
}
#endif
//////////////////////////////
//- rjf: process top-level commands
@@ -9121,7 +9096,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, F32 dt)
CTRL_Entity *module = ctrl_module_from_process_vaddr(process, rip_vaddr);
U64 rip_voff = ctrl_voff_from_vaddr(module, rip_vaddr);
U64 tls_root_vaddr = ctrl_query_cached_tls_root_vaddr_from_thread(d_state->ctrl_entity_store, thread->machine_id, thread->handle);
CTRL_EntityList all_modules = ctrl_entity_list_from_kind(d_state->ctrl_entity_store, CTRL_EntityKind_Module);
CTRL_EntityList all_modules = ctrl_entity_list_from_kind(d_state->ctrl_entity_store, D_EntityKind_Module);
U64 eval_modules_count = Max(1, all_modules.count);
E_Module *eval_modules = push_array(arena, E_Module, eval_modules_count);
E_Module *eval_modules_primary = &eval_modules[0];
+2 -17
View File
@@ -764,7 +764,6 @@ struct D_CmdSpecInfoArray
////////////////////////////////
//~ rjf: Command Types
#if 0 // TODO(rjf): @msgs
typedef struct D_Cmd D_Cmd;
struct D_Cmd
{
@@ -787,7 +786,6 @@ struct D_CmdList
D_CmdNode *last;
U64 count;
};
#endif
////////////////////////////////
//~ rjf: Main State Caches
@@ -989,10 +987,9 @@ struct D_State
D_MsgList msgs;
// rjf: top-level command batch
#if 0 // TODO(rjf): @msgs
// TODO(rjf): @msgs
Arena *root_cmd_arena;
D_CmdList root_cmds;
#endif
// rjf: output log key
U128 output_log_key;
@@ -1069,7 +1066,6 @@ struct D_State
Arena *ctrl_stop_arena;
CTRL_Event ctrl_last_stop_event;
#if 0 // TODO(rjf): @msgs
// rjf: config reading state
Arena *cfg_path_arenas[D_CfgSrc_COUNT];
String8 cfg_paths[D_CfgSrc_COUNT];
@@ -1081,7 +1077,6 @@ struct D_State
B32 cfg_write_issued[D_CfgSrc_COUNT];
Arena *cfg_write_arenas[D_CfgSrc_COUNT];
String8List cfg_write_data[D_CfgSrc_COUNT];
#endif
// rjf: current path
Arena *current_path_arena;
@@ -1188,9 +1183,7 @@ internal D_CmdParams d_cmd_params_zero(void);
internal String8 d_cmd_params_apply_spec_query(Arena *arena, D_CmdParams *params, D_CmdSpec *spec, String8 query);
//- rjf: command lists
#if 0 // TODO(rjf): @msgs
internal void d_cmd_list_push(Arena *arena, D_CmdList *cmds, D_CmdParams *params, D_CmdSpec *spec);
#endif
//- rjf: string -> core layer command kind
internal D_CmdKind d_cmd_kind_from_string(String8 string);
@@ -1531,21 +1524,17 @@ internal D_RunKind d_ctrl_last_run_kind(void);
internal U64 d_ctrl_last_run_frame_idx(void);
internal B32 d_ctrl_targets_running(void);
#if 0 // TODO(rjf): @msgs
//- rjf: config paths
internal String8 d_cfg_path_from_src(D_CfgSrc src);
//- rjf: config state
internal D_CfgTable *d_cfg_table(void);
#endif
//- rjf: config serialization
#if 0 // TODO(rjf): @msgs
internal String8 d_cfg_escaped_from_raw_string(Arena *arena, String8 string);
internal String8 d_cfg_raw_from_escaped_string(Arena *arena, String8 string);
internal String8List d_cfg_strings_from_state(Arena *arena, String8 root_path, D_CfgSrc source);
internal void d_cfg_push_write_string(D_CfgSrc src, String8 string);
#endif
//- rjf: current path
internal String8 d_current_path(void);
@@ -1569,7 +1558,6 @@ internal E_String2NumMap *d_query_cached_locals_map_from_dbgi_key_voff(DI_Key *d
internal E_String2NumMap *d_query_cached_member_map_from_dbgi_key_voff(DI_Key *dbgi_key, U64 voff);
//- rjf: top-level command dispatch
#if 0 // TODO(rjf): @msgs
internal void d_push_cmd(D_CmdSpec *spec, D_CmdParams *params);
internal void d_error(String8 string);
internal void d_errorf(char *fmt, ...);
@@ -1581,7 +1569,6 @@ internal void d_errorf(char *fmt, ...);
.view = d_regs()->view, \
__VA_ARGS__ \
})
#endif
////////////////////////////////
//~ rjf: Message Functions
@@ -1599,9 +1586,7 @@ __VA_ARGS__\
//~ rjf: Main Layer Top-Level Calls
internal void d_init(CmdLine *cmdln, D_StateDeltaHistory *hist);
#if 0 // TODO(rjf): @msgs
internal D_CmdList d_gather_root_cmds(Arena *arena);
#endif
internal void d_tick(Arena *arena, DI_Scope *di_scope, F32 dt);
internal void d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt);
#endif // DBG_ENGINE_CORE_H
+41 -1
View File
@@ -39,7 +39,47 @@ Rng1U64 d_reg_slot_range_table[29] =
String8 d_msg_kind_name_lower_table[36] =
{
{0},
str8_lit_comp("null"),
str8_lit_comp("launch_and_run"),
str8_lit_comp("launch_and_step_into"),
str8_lit_comp("kill"),
str8_lit_comp("kill_all"),
str8_lit_comp("attach"),
str8_lit_comp("detach"),
str8_lit_comp("continue"),
str8_lit_comp("step_into_inst"),
str8_lit_comp("step_over_inst"),
str8_lit_comp("step_into_line"),
str8_lit_comp("step_over_line"),
str8_lit_comp("step_out"),
str8_lit_comp("halt"),
str8_lit_comp("soft_halt_refresh"),
str8_lit_comp("set_thread_ip"),
str8_lit_comp("run_to_line"),
str8_lit_comp("run_to_address"),
str8_lit_comp("run"),
str8_lit_comp("restart"),
str8_lit_comp("step_into"),
str8_lit_comp("step_over"),
str8_lit_comp("select_thread"),
str8_lit_comp("select_unwind"),
str8_lit_comp("up_one_frame"),
str8_lit_comp("down_one_frame"),
str8_lit_comp("freeze_thread"),
str8_lit_comp("thaw_thread"),
str8_lit_comp("freeze_process"),
str8_lit_comp("thaw_process"),
str8_lit_comp("freeze_machine"),
str8_lit_comp("thaw_machine"),
str8_lit_comp("freeze_local_machine"),
str8_lit_comp("thaw_local_machine"),
str8_lit_comp("run_to_cursor"),
str8_lit_comp("set_next_statement"),
};
String8 d_msg_kind_name_display_table[36] =
{
str8_lit_comp("null"),
str8_lit_comp("launch_and_run"),
str8_lit_comp("launch_and_step_into"),
str8_lit_comp("kill"),
+4 -3
View File
@@ -10,9 +10,9 @@ typedef enum D_RegSlot
{
D_RegSlot_Null,
D_RegSlot_MachineID,
D_RegSlot_Process,
D_RegSlot_Module,
D_RegSlot_Thread,
D_RegSlot_process,
D_RegSlot_module,
D_RegSlot_thread,
D_RegSlot_Window,
D_RegSlot_Panel,
D_RegSlot_View,
@@ -536,6 +536,7 @@ struct {B32 *value_ptr; String8 name;} DEV_toggle_table[] =
C_LINKAGE_BEGIN
extern Rng1U64 d_reg_slot_range_table[29];
extern String8 d_msg_kind_name_lower_table[36];
extern String8 d_msg_kind_name_display_table[36];
extern Rng1U64 d_cmd_param_slot_range_table[24];
extern String8 d_entity_kind_display_string_table[28];
extern String8 d_entity_kind_name_lower_table[28];