src/os/solaris/vm/os_solaris.cpp

changeset 2824
c303b3532d4a
parent 2586
23ae54207126
child 2850
188c9a5d6a6d
     1.1 --- a/src/os/solaris/vm/os_solaris.cpp	Sat Apr 23 04:20:09 2011 -0700
     1.2 +++ b/src/os/solaris/vm/os_solaris.cpp	Tue Apr 26 11:46:34 2011 -0700
     1.3 @@ -2826,7 +2826,9 @@
     1.4  void os::realign_memory(char *addr, size_t bytes, size_t alignment_hint) {
     1.5    assert((intptr_t)addr % alignment_hint == 0, "Address should be aligned.");
     1.6    assert((intptr_t)(addr + bytes) % alignment_hint == 0, "End should be aligned.");
     1.7 -  Solaris::set_mpss_range(addr, bytes, alignment_hint);
     1.8 +  if (UseLargePages && UseMPSS) {
     1.9 +    Solaris::set_mpss_range(addr, bytes, alignment_hint);
    1.10 +  }
    1.11  }
    1.12  
    1.13  // Tell the OS to make the range local to the first-touching LWP
    1.14 @@ -5044,6 +5046,20 @@
    1.15          UseNUMA = false;
    1.16        }
    1.17      }
    1.18 +    // ISM is not compatible with the NUMA allocator - it always allocates
    1.19 +    // pages round-robin across the lgroups.
    1.20 +    if (UseNUMA && UseLargePages && UseISM) {
    1.21 +      if (!FLAG_IS_DEFAULT(UseNUMA)) {
    1.22 +        if (FLAG_IS_DEFAULT(UseLargePages) && FLAG_IS_DEFAULT(UseISM)) {
    1.23 +          UseLargePages = false;
    1.24 +        } else {
    1.25 +          warning("UseNUMA is not compatible with ISM large pages, disabling NUMA allocator");
    1.26 +          UseNUMA = false;
    1.27 +        }
    1.28 +      } else {
    1.29 +        UseNUMA = false;
    1.30 +      }
    1.31 +    }
    1.32      if (!UseNUMA && ForceNUMA) {
    1.33        UseNUMA = true;
    1.34      }

mercurial