src/os/solaris/vm/os_solaris.cpp

changeset 3085
3cd0157e1d4d
parent 3057
24cee90e9453
child 3152
3607aac85aa9
     1.1 --- a/src/os/solaris/vm/os_solaris.cpp	Tue Aug 23 11:06:30 2011 +0200
     1.2 +++ b/src/os/solaris/vm/os_solaris.cpp	Thu Aug 25 02:57:46 2011 -0700
     1.3 @@ -2777,8 +2777,14 @@
     1.4  bool os::commit_memory(char* addr, size_t bytes, bool exec) {
     1.5    int prot = exec ? PROT_READ|PROT_WRITE|PROT_EXEC : PROT_READ|PROT_WRITE;
     1.6    size_t size = bytes;
     1.7 -  return
     1.8 -     NULL != Solaris::mmap_chunk(addr, size, MAP_PRIVATE|MAP_FIXED, prot);
     1.9 +  char *res = Solaris::mmap_chunk(addr, size, MAP_PRIVATE|MAP_FIXED, prot);
    1.10 +  if (res != NULL) {
    1.11 +    if (UseNUMAInterleaving) {
    1.12 +      numa_make_global(addr, bytes);
    1.13 +    }
    1.14 +    return true;
    1.15 +  }
    1.16 +  return false;
    1.17  }
    1.18  
    1.19  bool os::commit_memory(char* addr, size_t bytes, size_t alignment_hint,
    1.20 @@ -3389,12 +3395,11 @@
    1.21    return true;
    1.22  }
    1.23  
    1.24 -char* os::reserve_memory_special(size_t bytes, char* addr, bool exec) {
    1.25 +char* os::reserve_memory_special(size_t size, char* addr, bool exec) {
    1.26    // "exec" is passed in but not used.  Creating the shared image for
    1.27    // the code cache doesn't have an SHM_X executable permission to check.
    1.28    assert(UseLargePages && UseISM, "only for ISM large pages");
    1.29  
    1.30 -  size_t size = bytes;
    1.31    char* retAddr = NULL;
    1.32    int shmid;
    1.33    key_t ismKey;
    1.34 @@ -3436,7 +3441,9 @@
    1.35      }
    1.36      return NULL;
    1.37    }
    1.38 -
    1.39 +  if ((retAddr != NULL) && UseNUMAInterleaving) {
    1.40 +    numa_make_global(retAddr, size);
    1.41 +  }
    1.42    return retAddr;
    1.43  }
    1.44  

mercurial