# HG changeset patch # User stefank # Date 1523007451 -7200 # Node ID f67333fc42bd6dfe72addad7ce573a741a6afc0a # Parent 6705b1563b423a717ca4bd4781b234c5bc5f00ba 8200737: Move GC code out of Arguments::check_vm_args_consistency into GCArguments Reviewed-by: sjohanss, pliden diff -r 6705b1563b42 -r f67333fc42bd src/hotspot/share/gc/cms/cmsArguments.cpp --- a/src/hotspot/share/gc/cms/cmsArguments.cpp Fri Apr 06 11:37:28 2018 +0200 +++ b/src/hotspot/share/gc/cms/cmsArguments.cpp Fri Apr 06 11:37:31 2018 +0200 @@ -82,9 +82,36 @@ // certainly gain from analysis of platform and environment. void CMSArguments::initialize() { GCArguments::initialize(); + assert(!UseSerialGC && !UseParallelOldGC && !UseParallelGC, "Error"); assert(UseConcMarkSweepGC, "CMS is expected to be on here"); + // CMS space iteration, which FLSVerifyAllHeapreferences entails, + // insists that we hold the requisite locks so that the iteration is + // MT-safe. For the verification at start-up and shut-down, we don't + // yet have a good way of acquiring and releasing these locks, + // which are not visible at the CollectedHeap level. We want to + // be able to acquire these locks and then do the iteration rather + // than just disable the lock verification. This will be fixed under + // bug 4788986. + if (UseConcMarkSweepGC && FLSVerifyAllHeapReferences) { + if (VerifyDuringStartup) { + warning("Heap verification at start-up disabled " + "(due to current incompatibility with FLSVerifyAllHeapReferences)"); + VerifyDuringStartup = false; // Disable verification at start-up + } + + if (VerifyBeforeExit) { + warning("Heap verification at shutdown disabled " + "(due to current incompatibility with FLSVerifyAllHeapReferences)"); + VerifyBeforeExit = false; // Disable verification at shutdown + } + } + + if (!ClassUnloading) { + FLAG_SET_CMDLINE(bool, CMSClassUnloadingEnabled, false); + } + // Set CMS global values CompactibleFreeListSpace::set_cms_values(); diff -r 6705b1563b42 -r f67333fc42bd src/hotspot/share/gc/shared/gcArguments.cpp --- a/src/hotspot/share/gc/shared/gcArguments.cpp Fri Apr 06 11:37:28 2018 +0200 +++ b/src/hotspot/share/gc/shared/gcArguments.cpp Fri Apr 06 11:37:31 2018 +0200 @@ -31,16 +31,26 @@ #include "utilities/macros.hpp" void GCArguments::initialize() { -#if INCLUDE_ALL_GCS + if (FullGCALot && FLAG_IS_DEFAULT(MarkSweepAlwaysCompactCount)) { + MarkSweepAlwaysCompactCount = 1; // Move objects every gc. + } + + if (!(UseParallelGC || UseParallelOldGC) && FLAG_IS_DEFAULT(ScavengeBeforeFullGC)) { + FLAG_SET_DEFAULT(ScavengeBeforeFullGC, false); + } + + if (GCTimeLimit == 100) { + // Turn off gc-overhead-limit-exceeded checks + FLAG_SET_DEFAULT(UseGCOverheadLimit, false); + } + if (MinHeapFreeRatio == 100) { // Keeping the heap 100% free is hard ;-) so limit it to 99%. FLAG_SET_ERGO(uintx, MinHeapFreeRatio, 99); } - // If class unloading is disabled, also disable concurrent class unloading. if (!ClassUnloading) { - FLAG_SET_CMDLINE(bool, CMSClassUnloadingEnabled, false); + // If class unloading is disabled, also disable concurrent class unloading. FLAG_SET_CMDLINE(bool, ClassUnloadingWithConcurrentMark, false); } -#endif // INCLUDE_ALL_GCS } diff -r 6705b1563b42 -r f67333fc42bd src/hotspot/share/runtime/arguments.cpp --- a/src/hotspot/share/runtime/arguments.cpp Fri Apr 06 11:37:28 2018 +0200 +++ b/src/hotspot/share/runtime/arguments.cpp Fri Apr 06 11:37:31 2018 +0200 @@ -29,11 +29,9 @@ #include "classfile/moduleEntry.hpp" #include "classfile/stringTable.hpp" #include "classfile/symbolTable.hpp" +#include "gc/shared/collectorPolicy.hpp" #include "gc/shared/gcArguments.hpp" #include "gc/shared/gcConfig.hpp" -#include "gc/shared/genCollectedHeap.hpp" -#include "gc/shared/referenceProcessor.hpp" -#include "gc/shared/taskqueue.hpp" #include "logging/log.hpp" #include "logging/logConfiguration.hpp" #include "logging/logStream.hpp" @@ -2190,41 +2188,6 @@ status = false; } - if (FullGCALot && FLAG_IS_DEFAULT(MarkSweepAlwaysCompactCount)) { - MarkSweepAlwaysCompactCount = 1; // Move objects every gc. - } - - if (!(UseParallelGC || UseParallelOldGC) && FLAG_IS_DEFAULT(ScavengeBeforeFullGC)) { - FLAG_SET_DEFAULT(ScavengeBeforeFullGC, false); - } - - if (GCTimeLimit == 100) { - // Turn off gc-overhead-limit-exceeded checks - FLAG_SET_DEFAULT(UseGCOverheadLimit, false); - } - - // CMS space iteration, which FLSVerifyAllHeapreferences entails, - // insists that we hold the requisite locks so that the iteration is - // MT-safe. For the verification at start-up and shut-down, we don't - // yet have a good way of acquiring and releasing these locks, - // which are not visible at the CollectedHeap level. We want to - // be able to acquire these locks and then do the iteration rather - // than just disable the lock verification. This will be fixed under - // bug 4788986. - if (UseConcMarkSweepGC && FLSVerifyAllHeapReferences) { - if (VerifyDuringStartup) { - warning("Heap verification at start-up disabled " - "(due to current incompatibility with FLSVerifyAllHeapReferences)"); - VerifyDuringStartup = false; // Disable verification at start-up - } - - if (VerifyBeforeExit) { - warning("Heap verification at shutdown disabled " - "(due to current incompatibility with FLSVerifyAllHeapReferences)"); - VerifyBeforeExit = false; // Disable verification at shutdown - } - } - if (PrintNMTStatistics) { #if INCLUDE_NMT if (MemTracker::tracking_level() == NMT_off) {