< prev index next >

src/share/vm/runtime/commandLineFlagConstraintsGC.cpp

Print this page

        

*** 34,43 **** --- 34,44 ---- #include "runtime/globals_extension.hpp" #include "runtime/thread.inline.hpp" #include "utilities/defaultStream.hpp" #if INCLUDE_ALL_GCS + #include "gc/cms/concurrentMarkSweepGeneration.inline.hpp" #include "gc/g1/g1_globals.hpp" #include "gc/g1/heapRegionBounds.inline.hpp" #include "gc/shared/plab.hpp" #endif // INCLUDE_ALL_GCS #ifdef COMPILER1
*** 472,481 **** --- 473,502 ---- } #endif return Flag::SUCCESS; } + Flag::Error CMSBitMapYieldQuantumConstraintFunc(size_t value, bool verbose) { + #if INCLUDE_ALL_GCS + // Skip for current default value. + if (UseConcMarkSweepGC && FLAG_IS_CMDLINE(CMSBitMapYieldQuantum)) { + // CMSBitMapYieldQuantum should be compared with mark bitmap size. + ConcurrentMarkSweepGeneration* cms = (ConcurrentMarkSweepGeneration*)GenCollectedHeap::heap()->old_gen(); + size_t bitmap_size = cms->collector()->markBitMap()->sizeInWords(); + + if (value > bitmap_size) { + CommandLineError::print(verbose, + "CMSBitMapYieldQuantum (" SIZE_FORMAT ") must " + "be less than or equal to bitmap size (" SIZE_FORMAT ")\n", + value, bitmap_size); + return Flag::VIOLATES_CONSTRAINT; + } + } + #endif + return Flag::SUCCESS; + } + Flag::Error MaxGCPauseMillisConstraintFunc(uintx value, bool verbose) { #if INCLUDE_ALL_GCS if (UseG1GC && FLAG_IS_CMDLINE(MaxGCPauseMillis) && (value >= GCPauseIntervalMillis)) { CommandLineError::print(verbose, "MaxGCPauseMillis (" UINTX_FORMAT ") must be "
< prev index next >