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 }