]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
Use MAP_TRYFIXED for the probing memory allocator, if available. 184/head
authorMike Pall <mike>
Mon, 23 May 2016 12:28:28 +0000 (14:28 +0200)
committerMike Pall <mike>
Mon, 23 May 2016 12:28:28 +0000 (14:28 +0200)
src/lj_alloc.c

index 5d0834ec99569b73a19d7f794d569fa5731c775a..95d15d046adce17445d5e169e52c83eb20d8a7ef 100644 (file)
@@ -215,6 +215,12 @@ static int CALL_MUNMAP(void *ptr, size_t size)
 
 #if LJ_ALLOC_MMAP_PROBE
 
+#ifdef MAP_TRYFIXED
+#define MMAP_FLAGS_PROBE       (MMAP_FLAGS|MAP_TRYFIXED)
+#else
+#define MMAP_FLAGS_PROBE       MMAP_FLAGS
+#endif
+
 #define LJ_ALLOC_MMAP_PROBE_MAX                30
 #define LJ_ALLOC_MMAP_PROBE_LINEAR     5
 
@@ -247,7 +253,7 @@ static void *mmap_probe(size_t size)
   int olderr = errno;
   int retry;
   for (retry = 0; retry < LJ_ALLOC_MMAP_PROBE_MAX; retry++) {
-    void *p = mmap((void *)hint_addr, size, MMAP_PROT, MMAP_FLAGS, -1, 0);
+    void *p = mmap((void *)hint_addr, size, MMAP_PROT, MMAP_FLAGS_PROBE, -1, 0);
     uintptr_t addr = (uintptr_t)p;
     if ((addr >> LJ_ALLOC_MBITS) == 0 && addr >= LJ_ALLOC_MMAP_PROBE_LOWER) {
       /* We got a suitable address. Bump the hint address. */