]> git.llucax.com Git - software/dgc/cdgc.git/blobdiff - gc/alloc.d
Make sure MAP_ANON exists when using mmap()
[software/dgc/cdgc.git] / gc / alloc.d
index 55d0497a7296e541008e7c09bd0ca97f5733f7b9..9c6d249ec25799333045728aeb9bfc512acee5a3 100644 (file)
@@ -79,19 +79,7 @@ private extern (C) {
     }
 }
 
-/+
-static if(is(typeof(VirtualAlloc)))
-    version = GC_Use_Alloc_Win32;
-else static if (is(typeof(mmap)))
-    version = GC_Use_Alloc_MMap;
-else static if (is(typeof(valloc)))
-    version = GC_Use_Alloc_Valloc;
-else static if (is(typeof(malloc)))
-    version = GC_Use_Alloc_Malloc;
-else static assert(false, "No supported allocation methods available.");
-+/
-
-static if (is(typeof(VirtualAlloc))) // version (GC_Use_Alloc_Win32)
+static if (is(typeof(VirtualAlloc)))
 {
     /**
      * Map memory.
@@ -140,7 +128,7 @@ static if (is(typeof(VirtualAlloc))) // version (GC_Use_Alloc_Win32)
         return cast(int)(VirtualFree(base, 0, MEM_RELEASE) == 0);
     }
 }
-else static if (is(typeof(mmap)))  // else version (GC_Use_Alloc_MMap)
+else static if (is(typeof(mmap)) && is(typeof(MAP_ANON)))
 {
     void *os_mem_map(size_t nbytes)
     {   void *p;
@@ -167,7 +155,7 @@ else static if (is(typeof(mmap)))  // else version (GC_Use_Alloc_MMap)
         return munmap(base, nbytes);
     }
 }
-else static if (is(typeof(valloc))) // else version (GC_Use_Alloc_Valloc)
+else static if (is(typeof(valloc)))
 {
     void *os_mem_map(size_t nbytes)
     {
@@ -193,7 +181,7 @@ else static if (is(typeof(valloc))) // else version (GC_Use_Alloc_Valloc)
         return 0;
     }
 }
-else static if (is(typeof(malloc))) // else version (GC_Use_Alloc_Malloc)
+else static if (is(typeof(malloc)))
 {
     // NOTE: This assumes malloc granularity is at least (void*).sizeof.  If
     //       (req_size + PAGESIZE) is allocated, and the pointer is rounded up