authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-08-08 13:04:30-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-08-08 13:04:30-07:00
loga2f8c23a96d6124f1f263aa68087f18321e298c7
tree0e8eacd47132abd35dda2b1ba295671b999e0206
parentcb9405cdbdd7c9dc30c84ea9a8a17ced2cae66af

std.heap.page_allocator: Windows support for growing without remapping


1 files changed, 3 insertions(+), 3 deletions(-)

lib/std/heap.zig+3-3
...@@ -225,7 +225,7 @@ const PageAllocator = struct {...@@ -225,7 +225,7 @@ const PageAllocator = struct {
225 w.VirtualFree(buf_unaligned.ptr, 0, w.MEM_RELEASE);225 w.VirtualFree(buf_unaligned.ptr, 0, w.MEM_RELEASE);
226 return 0;226 return 0;
227 }227 }
228 if (new_size < buf_unaligned.len) {228 if (new_size <= buf_unaligned.len) {
229 const base_addr = @ptrToInt(buf_unaligned.ptr);229 const base_addr = @ptrToInt(buf_unaligned.ptr);
230 const old_addr_end = base_addr + buf_unaligned.len;230 const old_addr_end = base_addr + buf_unaligned.len;
231 const new_addr_end = mem.alignForward(base_addr + new_size, mem.page_size);231 const new_addr_end = mem.alignForward(base_addr + new_size, mem.page_size);
...@@ -240,10 +240,10 @@ const PageAllocator = struct {...@@ -240,10 +240,10 @@ const PageAllocator = struct {
240 }240 }
241 return alignPageAllocLen(new_size_aligned, new_size, len_align);241 return alignPageAllocLen(new_size_aligned, new_size, len_align);
242 }242 }
243 if (new_size == buf_unaligned.len) {243 const old_size_aligned = mem.alignForward(buf_unaligned.len, mem.page_size);
244 if (new_size_aligned <= old_size_aligned) {
244 return alignPageAllocLen(new_size_aligned, new_size, len_align);245 return alignPageAllocLen(new_size_aligned, new_size, len_align);
245 }246 }
246 // new_size > buf_unaligned.len not implemented
247 return error.OutOfMemory;247 return error.OutOfMemory;
248 }248 }
249249