--- a/hotspot/src/share/vm/memory/genCollectedHeap.cpp Tue Jun 22 10:03:12 2010 -0400
+++ b/hotspot/src/share/vm/memory/genCollectedHeap.cpp Thu Jun 24 15:38:42 2010 -0700
@@ -179,9 +179,14 @@
}
n_covered_regions += _gen_specs[i]->n_covered_regions();
}
- assert(total_reserved % pageSize == 0, "Gen size");
+ assert(total_reserved % pageSize == 0,
+ err_msg("Gen size; total_reserved=" SIZE_FORMAT ", pageSize="
+ SIZE_FORMAT, total_reserved, pageSize));
total_reserved += perm_gen_spec->max_size();
- assert(total_reserved % pageSize == 0, "Perm Gen size");
+ assert(total_reserved % pageSize == 0,
+ err_msg("Perm size; total_reserved=" SIZE_FORMAT ", pageSize="
+ SIZE_FORMAT ", perm gen max=" SIZE_FORMAT, total_reserved,
+ pageSize, perm_gen_spec->max_size()));
if (total_reserved < perm_gen_spec->max_size()) {
vm_exit_during_initialization(overflow_msg);
--- a/hotspot/src/share/vm/runtime/arguments.cpp Tue Jun 22 10:03:12 2010 -0400
+++ b/hotspot/src/share/vm/runtime/arguments.cpp Thu Jun 24 15:38:42 2010 -0700
@@ -1697,20 +1697,21 @@
status = status && verify_percentage(GCHeapFreeLimit, "GCHeapFreeLimit");
- // Check user specified sharing option conflict with Parallel GC
- bool cannot_share = ((UseConcMarkSweepGC || CMSIncrementalMode) || UseG1GC || UseParNewGC ||
- UseParallelGC || UseParallelOldGC ||
- SOLARIS_ONLY(UseISM) NOT_SOLARIS(UseLargePages));
-
+ // Check whether user-specified sharing option conflicts with GC or page size.
+ // Both sharing and large pages are enabled by default on some platforms;
+ // large pages override sharing only if explicitly set on the command line.
+ const bool cannot_share = UseConcMarkSweepGC || CMSIncrementalMode ||
+ UseG1GC || UseParNewGC || UseParallelGC || UseParallelOldGC ||
+ UseLargePages && FLAG_IS_CMDLINE(UseLargePages);
if (cannot_share) {
// Either force sharing on by forcing the other options off, or
// force sharing off.
if (DumpSharedSpaces || ForceSharedSpaces) {
jio_fprintf(defaultStream::error_stream(),
- "Reverting to Serial GC because of %s\n",
- ForceSharedSpaces ? " -Xshare:on" : "-Xshare:dump");
+ "Using Serial GC and default page size because of %s\n",
+ ForceSharedSpaces ? "-Xshare:on" : "-Xshare:dump");
force_serial_gc();
- FLAG_SET_DEFAULT(SOLARIS_ONLY(UseISM) NOT_SOLARIS(UseLargePages), false);
+ FLAG_SET_DEFAULT(UseLargePages, false);
} else {
if (UseSharedSpaces && Verbose) {
jio_fprintf(defaultStream::error_stream(),
@@ -1719,6 +1720,8 @@
}
no_shared_spaces();
}
+ } else if (UseLargePages && (UseSharedSpaces || DumpSharedSpaces)) {
+ FLAG_SET_DEFAULT(UseLargePages, false);
}
status = status && check_gc_consistency();