diff --git a/src/ctrl/ctrl_core.c b/src/ctrl/ctrl_core.c index a99d8784..2bc669a6 100644 --- a/src/ctrl/ctrl_core.c +++ b/src/ctrl/ctrl_core.c @@ -902,6 +902,8 @@ internal CTRL_ProcessMemorySlice ctrl_query_cached_data_from_process_vaddr_range(Arena *arena, CTRL_MachineID machine_id, CTRL_Handle process, Rng1U64 range) { CTRL_ProcessMemorySlice result = {0}; + result.byte_bad_flags = push_array(arena, U64, (dim_1u64(range)+63)/64); + result.byte_changed_flags = push_array(arena, U64, (dim_1u64(range)+63)/64); if(range.max > range.min && dim_1u64(range) <= MB(256) && range.min <= 0x000FFFFFFFFFFFFFull && @@ -931,8 +933,8 @@ ctrl_query_cached_data_from_process_vaddr_range(Arena *arena, CTRL_MachineID mac //- rjf: setup output buffers void *read_out = push_array(arena, U8, dim_1u64(range)); - U64 *byte_bad_flags = push_array(arena, U64, (dim_1u64(range)+63)/64); - U64 *byte_changed_flags = push_array(arena, U64, (dim_1u64(range)+63)/64); + U64 *byte_bad_flags = result.byte_bad_flags; + U64 *byte_changed_flags = result.byte_changed_flags; //- rjf: iterate pages, fill output { diff --git a/src/df/gfx/df_views.c b/src/df/gfx/df_views.c index 4cbb21fb..dd48d56d 100644 --- a/src/df/gfx/df_views.c +++ b/src/df/gfx/df_views.c @@ -987,15 +987,12 @@ df_eval_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_EvalW size = Min(size, 64); Rng1U64 vaddr_rng = r1u64(row->eval.offset, row->eval.offset+size); CTRL_ProcessMemorySlice slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->ctrl_machine_id, process->ctrl_handle, vaddr_rng); - if(slice.byte_changed_flags != 0) + for(U64 idx = 0; idx < (size+63)/64; idx += 1) { - for(U64 idx = 0; idx < (size+63)/64; idx += 1) + if(slice.byte_changed_flags[idx] != 0) { - if(slice.byte_changed_flags[idx] != 0) - { - row_is_fresh = 1; - break; - } + row_is_fresh = 1; + break; } } }break;