Skip to content

Commit 2c611b5

Browse files
SeanTheGleamingVexu
authored andcommitted
Update general_purpose_allocator.zig
Rework some pointer arithmetic, make use of pointer subtraction
1 parent 00ec679 commit 2c611b5

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

lib/std/heap/general_purpose_allocator.zig

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,9 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
255255
used_count: SlotIndex,
256256

257257
fn usedBits(bucket: *BucketHeader, index: usize) *u8 {
258-
return @as(*u8, @ptrFromInt(@intFromPtr(bucket) + @sizeOf(BucketHeader) + index));
258+
const bucket_bytes: [*]u8 = @ptrCast(bucket);
259+
const after_header = bucket_bytes + @sizeOf(BucketHeader);
260+
return &after_header[index];
259261
}
260262

261263
fn requestedSizes(bucket: *BucketHeader, size_class: usize) []LargestSizeClassInt {
@@ -745,7 +747,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
745747
}
746748
return self.resizeLarge(old_mem, log2_old_align, new_size, ret_addr);
747749
};
748-
const byte_offset = @intFromPtr(old_mem.ptr) - @intFromPtr(bucket.page);
750+
const byte_offset = old_mem.ptr - bucket.page;
749751
const slot_index = @as(SlotIndex, @intCast(byte_offset / size_class));
750752
const used_byte_index = slot_index / 8;
751753
const used_bit_index = @as(u3, @intCast(slot_index % 8));
@@ -865,7 +867,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
865867
self.freeLarge(old_mem, log2_old_align, ret_addr);
866868
return;
867869
};
868-
const byte_offset = @intFromPtr(old_mem.ptr) - @intFromPtr(bucket.page);
870+
const byte_offset = old_mem.ptr - bucket.page;
869871
const slot_index = @as(SlotIndex, @intCast(byte_offset / size_class));
870872
const used_byte_index = slot_index / 8;
871873
const used_bit_index = @as(u3, @intCast(slot_index % 8));

0 commit comments

Comments
 (0)