src/os/linux/vm/os_linux.cpp

Print this page
rev 2675 : merge with latest default trunk

@@ -2500,10 +2500,13 @@
 //       problem.
 bool os::commit_memory(char* addr, size_t size, bool exec) {
   int prot = exec ? PROT_READ|PROT_WRITE|PROT_EXEC : PROT_READ|PROT_WRITE;
   uintptr_t res = (uintptr_t) ::mmap(addr, size, prot,
                                    MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0);
+  if (UseNUMAInterleaving && (res != (uintptr_t) MAP_FAILED)) {
+    numa_make_global(addr, size);
+  }
   return res != (uintptr_t) MAP_FAILED;
 }
 
 // Define MAP_HUGETLB here so we can build HotSpot on old systems.
 #ifndef MAP_HUGETLB

@@ -2521,10 +2524,13 @@
     int prot = exec ? PROT_READ|PROT_WRITE|PROT_EXEC : PROT_READ|PROT_WRITE;
     uintptr_t res =
       (uintptr_t) ::mmap(addr, size, prot,
                          MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS|MAP_HUGETLB,
                          -1, 0);
+    if (UseNUMAInterleaving && (res != (uintptr_t) MAP_FAILED)) {
+      numa_make_global(addr, size);
+    }
     return res != (uintptr_t) MAP_FAILED;
   }
 
   return commit_memory(addr, size, exec);
 }

@@ -3113,10 +3119,14 @@
        warning(msg);
      }
      return NULL;
   }
 
+  if (UseNUMAInterleaving) {
+    numa_make_global(addr, bytes);
+  }
+
   return addr;
 }
 
 bool os::release_memory_special(char* base, size_t bytes) {
   // detaching the SHM segment will also delete it, see reserve_memory_special()