< 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 >