summaryrefslogtreecommitdiff
path: root/Zend/zend_alloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_alloc.c')
-rw-r--r--Zend/zend_alloc.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c
index ced3a77d70..9e7f5d194b 100644
--- a/Zend/zend_alloc.c
+++ b/Zend/zend_alloc.c
@@ -459,7 +459,18 @@ static void *zend_mm_mmap(size_t size)
}
return ptr;
#else
- void *ptr = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON /*| MAP_POPULATE | MAP_HUGETLB*/, -1, 0);
+ void *ptr;
+
+#ifdef MAP_HUGETLB
+ if (size == ZEND_MM_CHUNK_SIZE) {
+ ptr = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON | MAP_HUGETLB, -1, 0);
+ if (ptr != MAP_FAILED) {
+ return ptr;
+ }
+ }
+#endif
+
+ ptr = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
if (ptr == MAP_FAILED) {
#if ZEND_MM_ERROR