comparison src/share/vm/runtime/arguments.cpp @ 945:68ef3fdcdb76

6872136: CMS: confusing message may be printed when a collector is switched off implicitly Summary: Fix CDS/CMS option overrides related to iCMS option CMSIncrementalMode; explicate overrides to error stream. Reviewed-by: coleenp
author ysr
date Thu, 10 Sep 2009 16:46:17 -0700
parents 82bd76d4d7f2
children 54b3b351d6f9
comparison
equal deleted inserted replaced
944:b1f5ced5da21 945:68ef3fdcdb76
1448 1448
1449 static void set_serial_gc_flags() { 1449 static void set_serial_gc_flags() {
1450 FLAG_SET_DEFAULT(UseSerialGC, true); 1450 FLAG_SET_DEFAULT(UseSerialGC, true);
1451 FLAG_SET_DEFAULT(UseParNewGC, false); 1451 FLAG_SET_DEFAULT(UseParNewGC, false);
1452 FLAG_SET_DEFAULT(UseConcMarkSweepGC, false); 1452 FLAG_SET_DEFAULT(UseConcMarkSweepGC, false);
1453 FLAG_SET_DEFAULT(CMSIncrementalMode, false); // special CMS suboption
1453 FLAG_SET_DEFAULT(UseParallelGC, false); 1454 FLAG_SET_DEFAULT(UseParallelGC, false);
1454 FLAG_SET_DEFAULT(UseParallelOldGC, false); 1455 FLAG_SET_DEFAULT(UseParallelOldGC, false);
1455 FLAG_SET_DEFAULT(UseG1GC, false); 1456 FLAG_SET_DEFAULT(UseG1GC, false);
1456 } 1457 }
1457 1458
1458 static bool verify_serial_gc_flags() { 1459 static bool verify_serial_gc_flags() {
1459 return (UseSerialGC && 1460 return (UseSerialGC &&
1460 !(UseParNewGC || UseConcMarkSweepGC || UseG1GC || 1461 !(UseParNewGC || (UseConcMarkSweepGC || CMSIncrementalMode) || UseG1GC ||
1461 UseParallelGC || UseParallelOldGC)); 1462 UseParallelGC || UseParallelOldGC));
1462 } 1463 }
1463 1464
1464 // Check consistency of GC selection 1465 // Check consistency of GC selection
1465 bool Arguments::check_gc_consistency() { 1466 bool Arguments::check_gc_consistency() {
1570 } 1571 }
1571 1572
1572 status = status && verify_percentage(GCHeapFreeLimit, "GCHeapFreeLimit"); 1573 status = status && verify_percentage(GCHeapFreeLimit, "GCHeapFreeLimit");
1573 1574
1574 // Check user specified sharing option conflict with Parallel GC 1575 // Check user specified sharing option conflict with Parallel GC
1575 bool cannot_share = (UseConcMarkSweepGC || UseG1GC || UseParNewGC || 1576 bool cannot_share = ((UseConcMarkSweepGC || CMSIncrementalMode) || UseG1GC || UseParNewGC ||
1576 UseParallelGC || UseParallelOldGC || 1577 UseParallelGC || UseParallelOldGC ||
1577 SOLARIS_ONLY(UseISM) NOT_SOLARIS(UseLargePages)); 1578 SOLARIS_ONLY(UseISM) NOT_SOLARIS(UseLargePages));
1578 1579
1579 if (cannot_share) { 1580 if (cannot_share) {
1580 // Either force sharing on by forcing the other options off, or 1581 // Either force sharing on by forcing the other options off, or
1581 // force sharing off. 1582 // force sharing off.
1582 if (DumpSharedSpaces || ForceSharedSpaces) { 1583 if (DumpSharedSpaces || ForceSharedSpaces) {
1584 jio_fprintf(defaultStream::error_stream(),
1585 "Reverting to Serial GC because of %s \n",
1586 ForceSharedSpaces ? " -Xshare:on" : "-Xshare:dump");
1583 set_serial_gc_flags(); 1587 set_serial_gc_flags();
1584 FLAG_SET_DEFAULT(SOLARIS_ONLY(UseISM) NOT_SOLARIS(UseLargePages), false); 1588 FLAG_SET_DEFAULT(SOLARIS_ONLY(UseISM) NOT_SOLARIS(UseLargePages), false);
1585 } else { 1589 } else {
1590 if (UseSharedSpaces) {
1591 jio_fprintf(defaultStream::error_stream(),
1592 "Turning off use of shared archive because of "
1593 "choice of garbage collector or large pages \n");
1594 }
1586 no_shared_spaces(); 1595 no_shared_spaces();
1587 } 1596 }
1588 } 1597 }
1589 1598
1590 status = status && check_gc_consistency(); 1599 status = status && check_gc_consistency();