mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-06 05:48:40 +00:00
fix incorrect ordering of inline sites & concrete frames in call stack view
This commit is contained in:
+25
-12
@@ -1088,23 +1088,36 @@ rd_string_from_eval_viz_row_column(Arena *arena, EV_View *ev, EV_Row *row, RD_Wa
|
|||||||
RDI_Parsed *rdi = di_rdi_from_key(di_scope, &dbgi, 0);
|
RDI_Parsed *rdi = di_rdi_from_key(di_scope, &dbgi, 0);
|
||||||
if(rdi != &di_rdi_parsed_nil)
|
if(rdi != &di_rdi_parsed_nil)
|
||||||
{
|
{
|
||||||
U64 voff = ctrl_voff_from_vaddr(module, vaddr);
|
typedef struct ScopeTask ScopeTask;
|
||||||
RDI_Scope *scope = rdi_scope_from_voff(rdi, voff);
|
struct ScopeTask
|
||||||
RDI_Procedure *procedure = rdi_procedure_from_scope(rdi, scope);
|
|
||||||
RDI_InlineSite *inline_site = rdi_inline_site_from_scope(rdi, scope);
|
|
||||||
for(U64 d = 0; d < depth;)
|
|
||||||
{
|
{
|
||||||
scope = rdi_parent_from_scope(rdi, scope);
|
ScopeTask *next;
|
||||||
inline_site = rdi_inline_site_from_scope(rdi, scope);
|
RDI_Scope *scope;
|
||||||
if(scope->inline_site_idx != 0)
|
};
|
||||||
{
|
U64 voff = ctrl_voff_from_vaddr(module, vaddr);
|
||||||
d += 1;
|
RDI_Scope *root_scope = rdi_scope_from_voff(rdi, voff);
|
||||||
}
|
ScopeTask start_task = {0, root_scope};
|
||||||
if(scope->parent_scope_idx == 0)
|
ScopeTask *first_task = &start_task;
|
||||||
|
ScopeTask *last_task = &start_task;
|
||||||
|
for(;root_scope->parent_scope_idx != 0;)
|
||||||
|
{
|
||||||
|
root_scope = rdi_parent_from_scope(rdi, root_scope);
|
||||||
|
ScopeTask *t = push_array(scratch.arena, ScopeTask, 1);
|
||||||
|
SLLQueuePushFront(first_task, last_task, t);
|
||||||
|
t->scope = root_scope;
|
||||||
|
}
|
||||||
|
RDI_Scope *scope = root_scope;
|
||||||
|
U64 idx = 0;
|
||||||
|
for(ScopeTask *t = first_task; t != 0; t = t->next, idx += 1)
|
||||||
|
{
|
||||||
|
if(idx == depth)
|
||||||
{
|
{
|
||||||
|
scope = t->scope;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
RDI_Procedure *procedure = rdi_procedure_from_scope(rdi, scope);
|
||||||
|
RDI_InlineSite *inline_site = rdi_inline_site_from_scope(rdi, scope);
|
||||||
if(inline_site->name_string_idx != 0 || inline_site->type_idx != 0)
|
if(inline_site->name_string_idx != 0 || inline_site->type_idx != 0)
|
||||||
{
|
{
|
||||||
String8List parts = {0};
|
String8List parts = {0};
|
||||||
|
|||||||
Reference in New Issue
Block a user