Skip to content

Commit f71f27b

Browse files
LucasSantos91Vexu
authored andcommitted
Avoid unnecessary operation in PageAllocator.
There's no need to call `alignForward` before `VirtualAlloc`. From [MSDN](https://learn.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc): ``` If the lpAddress parameter is NULL, this value is rounded up to the next page boundary ```
1 parent fe1b397 commit f71f27b

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

lib/std/heap/PageAllocator.zig

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,22 @@ fn alloc(_: *anyopaque, n: usize, log2_align: u8, ra: usize) ?[*]u8 {
1919
_ = log2_align;
2020
assert(n > 0);
2121
if (n > maxInt(usize) - (mem.page_size - 1)) return null;
22-
const aligned_len = mem.alignForward(usize, n, mem.page_size);
2322

2423
if (native_os == .windows) {
2524
const addr = windows.VirtualAlloc(
2625
null,
27-
aligned_len,
26+
27+
// VirtualAlloc will round the length to a multiple of page size.
28+
// VirtualAlloc docs: If the lpAddress parameter is NULL, this value is rounded up to the next page boundary
29+
n,
30+
2831
windows.MEM_COMMIT | windows.MEM_RESERVE,
2932
windows.PAGE_READWRITE,
3033
) catch return null;
3134
return @ptrCast(addr);
3235
}
3336

37+
const aligned_len = mem.alignForward(usize, n, mem.page_size);
3438
const hint = @atomicLoad(@TypeOf(std.heap.next_mmap_addr_hint), &std.heap.next_mmap_addr_hint, .unordered);
3539
const slice = posix.mmap(
3640
hint,

0 commit comments

Comments
 (0)