diff options
| author | gingerBill <bill@gingerbill.org> | 2024-04-28 12:49:17 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2024-04-28 12:49:17 +0100 |
| commit | 0fa269811a6001fb21c8c9f074005f7c82584d82 (patch) | |
| tree | 368ccb26b7b969fceac0571180345cd54edbaab3 /core/debug | |
| parent | 6c185a5dca739b4aab034449f0627925e0137173 (diff) | |
Change layout of `Frame_Location`
Diffstat (limited to 'core/debug')
| -rw-r--r-- | core/debug/trace/trace.odin | 12 | ||||
| -rw-r--r-- | core/debug/trace/trace_windows.odin | 12 |
2 files changed, 14 insertions, 10 deletions
diff --git a/core/debug/trace/trace.odin b/core/debug/trace/trace.odin index 6ca9ed2c3..eef27499d 100644 --- a/core/debug/trace/trace.odin +++ b/core/debug/trace/trace.odin @@ -6,11 +6,15 @@ import "base:runtime" Frame :: distinct uintptr MAX_FRAMES :: 64 -Frame_Location :: runtime.Source_Code_Location +Frame_Location :: struct { + using loc: runtime.Source_Code_Location, + allocator: runtime.Allocator, +} -delete_frame_location :: proc(loc: Frame_Location, allocator: runtime.Allocator) -> runtime.Allocator_Error { - delete(loc.procedure, allocator) or_return - delete(loc.file_path, allocator) or_return +delete_frame_location :: proc(fl: Frame_Location) -> runtime.Allocator_Error { + allocator := fl.allocator + delete(fl.loc.procedure, allocator) or_return + delete(fl.loc.file_path, allocator) or_return return nil } diff --git a/core/debug/trace/trace_windows.odin b/core/debug/trace/trace_windows.odin index 3ad5d7ed0..c7b4eeaa1 100644 --- a/core/debug/trace/trace_windows.odin +++ b/core/debug/trace/trace_windows.odin @@ -41,7 +41,7 @@ _frames :: proc(ctx: ^Context, skip: uint, allocator: runtime.Allocator) -> []Fr } -_resolve :: proc(ctx: ^Context, frame: Frame, allocator: runtime.Allocator) -> (result: runtime.Source_Code_Location) { +_resolve :: proc(ctx: ^Context, frame: Frame, allocator: runtime.Allocator) -> (fl: Frame_Location) { intrinsics.atomic_store(&ctx.in_resolve, true) defer intrinsics.atomic_store(&ctx.in_resolve, false) @@ -54,17 +54,17 @@ _resolve :: proc(ctx: ^Context, frame: Frame, allocator: runtime.Allocator) -> ( symbol.SizeOfStruct = size_of(symbol) symbol.MaxNameLen = 255 if win32.SymFromAddrW(ctx.impl.hProcess, win32.DWORD64(frame), &{}, symbol) { - result.procedure, _ = win32.wstring_to_utf8(&symbol.Name[0], -1, allocator) + fl.procedure, _ = win32.wstring_to_utf8(&symbol.Name[0], -1, allocator) } else { - result.procedure = fmt.aprintf("(procedure: 0x%x)", frame, allocator=allocator) + fl.procedure = fmt.aprintf("(procedure: 0x%x)", frame, allocator=allocator) } line: win32.IMAGEHLP_LINE64 line.SizeOfStruct = size_of(line) if win32.SymGetLineFromAddrW64(ctx.impl.hProcess, win32.DWORD64(frame), &{}, &line) { - result.file_path, _ = win32.wstring_to_utf8(line.FileName, -1, allocator) - result.line = i32(line.LineNumber) + fl.file_path, _ = win32.wstring_to_utf8(line.FileName, -1, allocator) + fl.line = i32(line.LineNumber) } - return result + return }
\ No newline at end of file |