aboutsummaryrefslogtreecommitdiff
path: root/core/debug
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2024-04-28 12:49:17 +0100
committergingerBill <bill@gingerbill.org>2024-04-28 12:49:17 +0100
commit0fa269811a6001fb21c8c9f074005f7c82584d82 (patch)
tree368ccb26b7b969fceac0571180345cd54edbaab3 /core/debug
parent6c185a5dca739b4aab034449f0627925e0137173 (diff)
Change layout of `Frame_Location`
Diffstat (limited to 'core/debug')
-rw-r--r--core/debug/trace/trace.odin12
-rw-r--r--core/debug/trace/trace_windows.odin12
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