aboutsummaryrefslogtreecommitdiff
path: root/src/tracy.zig
diff options
context:
space:
mode:
authorSilver <silver@squirl.dev>2025-07-04 15:02:50 +0100
committerAlex Rønne Petersen <alex@alexrp.com>2025-07-05 00:24:40 +0200
commitbe20f97eb97d4712bfd9be85ed2e41acbb7718de (patch)
tree76158a72de2c23c020b9bf50d607091c86ef6af7 /src/tracy.zig
parent9a8f1f675b5c1dd8cd58ebfb828d54fb29385b32 (diff)
downloadzig-be20f97eb97d4712bfd9be85ed2e41acbb7718de.tar.gz
zig-be20f97eb97d4712bfd9be85ed2e41acbb7718de.zip
Update TracyAllocator to new allocator API
Diffstat (limited to 'src/tracy.zig')
-rw-r--r--src/tracy.zig50
1 files changed, 34 insertions, 16 deletions
diff --git a/src/tracy.zig b/src/tracy.zig
index e473088922..50d1b2e1a7 100644
--- a/src/tracy.zig
+++ b/src/tracy.zig
@@ -120,20 +120,21 @@ pub fn TracyAllocator(comptime name: ?[:0]const u8) type {
.vtable = &.{
.alloc = allocFn,
.resize = resizeFn,
+ .remap = remapFn,
.free = freeFn,
},
};
}
- fn allocFn(ptr: *anyopaque, len: usize, ptr_align: u8, ret_addr: usize) ?[*]u8 {
+ fn allocFn(ptr: *anyopaque, len: usize, alignment: std.mem.Alignment, ret_addr: usize) ?[*]u8 {
const self: *Self = @ptrCast(@alignCast(ptr));
- const result = self.parent_allocator.rawAlloc(len, ptr_align, ret_addr);
- if (result) |data| {
+ const result = self.parent_allocator.rawAlloc(len, alignment, ret_addr);
+ if (result) |memory| {
if (len != 0) {
if (name) |n| {
- allocNamed(data, len, n);
+ allocNamed(memory, len, n);
} else {
- alloc(data, len);
+ alloc(memory, len);
}
}
} else {
@@ -142,15 +143,15 @@ pub fn TracyAllocator(comptime name: ?[:0]const u8) type {
return result;
}
- fn resizeFn(ptr: *anyopaque, buf: []u8, buf_align: u8, new_len: usize, ret_addr: usize) bool {
+ fn resizeFn(ptr: *anyopaque, memory: []u8, alignment: std.mem.Alignment, new_len: usize, ret_addr: usize) bool {
const self: *Self = @ptrCast(@alignCast(ptr));
- if (self.parent_allocator.rawResize(buf, buf_align, new_len, ret_addr)) {
+ if (self.parent_allocator.rawResize(memory, alignment, new_len, ret_addr)) {
if (name) |n| {
- freeNamed(buf.ptr, n);
- allocNamed(buf.ptr, new_len, n);
+ freeNamed(memory.ptr, n);
+ allocNamed(memory.ptr, new_len, n);
} else {
- free(buf.ptr);
- alloc(buf.ptr, new_len);
+ free(memory.ptr);
+ alloc(memory.ptr, new_len);
}
return true;
@@ -161,16 +162,33 @@ pub fn TracyAllocator(comptime name: ?[:0]const u8) type {
return false;
}
- fn freeFn(ptr: *anyopaque, buf: []u8, buf_align: u8, ret_addr: usize) void {
+ fn remapFn(ptr: *anyopaque, memory: []u8, alignment: std.mem.Alignment, new_len: usize, ret_addr: usize) ?[*]u8 {
const self: *Self = @ptrCast(@alignCast(ptr));
- self.parent_allocator.rawFree(buf, buf_align, ret_addr);
+ if (self.parent_allocator.rawRemap(memory, alignment, new_len, ret_addr)) |new_memory| {
+ if (name) |n| {
+ freeNamed(memory.ptr, n);
+ allocNamed(new_memory, new_len, n);
+ } else {
+ free(memory.ptr);
+ alloc(new_memory, new_len);
+ }
+ return new_memory;
+ } else {
+ messageColor("reallocation failed", 0xFF0000);
+ return null;
+ }
+ }
+
+ fn freeFn(ptr: *anyopaque, memory: []u8, alignment: std.mem.Alignment, ret_addr: usize) void {
+ const self: *Self = @ptrCast(@alignCast(ptr));
+ self.parent_allocator.rawFree(memory, alignment, ret_addr);
// this condition is to handle free being called on an empty slice that was never even allocated
// example case: `std.process.getSelfExeSharedLibPaths` can return `&[_][:0]u8{}`
- if (buf.len != 0) {
+ if (memory.len != 0) {
if (name) |n| {
- freeNamed(buf.ptr, n);
+ freeNamed(memory.ptr, n);
} else {
- free(buf.ptr);
+ free(memory.ptr);
}
}
}