authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-05-20 15:57:02-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-05-20 16:11:55-04:00
logb1bcdc96ca4451be95caa00fe71aafb578611e34
tree3985ce579f307f1bc1e1ac2ab91eeb6a0c8c6230
parent8c10178a1e209af53d28cc70343d0ce908bccc1b

arena allocator: smaller minimum allocation size


1 files changed, 2 insertions(+), 6 deletions(-)

lib/std/heap/arena_allocator.zig+2-6
......@@ -47,12 +47,8 @@ pub const ArenaAllocator = struct {
4747
4848 fn createNode(self: *ArenaAllocator, prev_len: usize, minimum_size: usize) !*BufNode {
4949 const actual_min_size = minimum_size + @sizeOf(BufNode);
50 var len = prev_len;
51 while (true) {
52 len += len / 2;
53 len += mem.page_size - @rem(len, mem.page_size);
54 if (len >= actual_min_size) break;
55 }
50 const big_enough_len = prev_len + actual_min_size;
51 const len = big_enough_len + big_enough_len / 2;
5652 const buf = try self.child_allocator.alignedAlloc(u8, @alignOf(BufNode), len);
5753 const buf_node_slice = mem.bytesAsSlice(BufNode, buf[0..@sizeOf(BufNode)]);
5854 const buf_node = &buf_node_slice[0];