Large virtual memory region allocation requires MMAP_NORESERVE in Linux
authorutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 3 Sep 2017 10:31:29 +0000 (10:31 +0000)
committerutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 3 Sep 2017 10:31:29 +0000 (10:31 +0000)
commitc93efe1b8806d9fd974367309ad126b596c40e25
tree1b078251351054d9bb1889e90a135a9680703b0f
parentc73ab13ea6669b8b82887c0bb314f706ae371055
Large virtual memory region allocation requires MMAP_NORESERVE in Linux
https://bugs.webkit.org/show_bug.cgi?id=176211

Reviewed by Geoffrey Garen.

In Linux, we cannot allocate very large memory region without MMAP_NORESERVE.
Linux kernel needs to reserve swap area for allocated memory region. If the
swap area is exhausted, kernel fails to allocate the memory region with ENOMEM.

This patch adds MMAP_NORESERVE to mmap flags in Linux. By adding this flag,
mmap does not need to reserve swap area for the reserved memory region.
This allows us to reserve very large memory region that is necessary for Gigacage.

* bmalloc/BPlatform.h:
* bmalloc/VMAllocate.h:
(bmalloc::tryVMAllocate):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@221548 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/bmalloc/ChangeLog
Source/bmalloc/bmalloc/BPlatform.h
Source/bmalloc/bmalloc/VMAllocate.h