< prev index next >

src/hotspot/share/gc/cms/jvmFlagConstraintsCMS.cpp

Print this page




 119 
 120   if (UseConcMarkSweepGC) {
 121     status = MaxPLABSizeBounds("CMSOldPLABMax", value, verbose);
 122   }
 123   return status;
 124 }
 125 
 126 static JVMFlag::Error CMSReservedAreaConstraintFunc(const char* name, size_t value, bool verbose) {
 127   if (UseConcMarkSweepGC) {
 128     ConcurrentMarkSweepGeneration* cms = CMSHeap::heap()->old_gen();
 129     const size_t ergo_max = cms->cmsSpace()->max_flag_size_for_task_size();
 130     if (value > ergo_max) {
 131       JVMFlag::printError(verbose,
 132                           "%s (" SIZE_FORMAT ") must be "
 133                           "less than or equal to ergonomic maximum (" SIZE_FORMAT ") "
 134                           "which is based on the maximum size of the old generation of the Java heap\n",
 135                           name, value, ergo_max);
 136       return JVMFlag::VIOLATES_CONSTRAINT;
 137     }
 138   }
 139 
 140   return JVMFlag::SUCCESS;
 141 }
 142 
 143 JVMFlag::Error CMSRescanMultipleConstraintFunc(size_t value, bool verbose) {
 144   JVMFlag::Error status = CMSReservedAreaConstraintFunc("CMSRescanMultiple", value, verbose);
 145 
 146   if (status == JVMFlag::SUCCESS && UseConcMarkSweepGC) {
 147     // CMSParRemarkTask::do_dirty_card_rescan_tasks requires CompactibleFreeListSpace::rescan_task_size()
 148     // to be aligned to CardTable::card_size * BitsPerWord.
 149     // Note that rescan_task_size() will be aligned if CMSRescanMultiple is a multiple of 'HeapWordSize'
 150     // because rescan_task_size() is CardTable::card_size / HeapWordSize * BitsPerWord.
 151     if (value % HeapWordSize != 0) {
 152       JVMFlag::printError(verbose,
 153                           "CMSRescanMultiple (" SIZE_FORMAT ") must be "
 154                           "a multiple of " SIZE_FORMAT "\n",
 155                           value, HeapWordSize);
 156       status = JVMFlag::VIOLATES_CONSTRAINT;
 157     }
 158   }
 159 
 160   return status;
 161 }
 162 
 163 JVMFlag::Error CMSConcMarkMultipleConstraintFunc(size_t value, bool verbose) {
 164   return CMSReservedAreaConstraintFunc("CMSConcMarkMultiple", value, verbose);
 165 }
 166 
 167 JVMFlag::Error CMSPrecleanDenominatorConstraintFunc(uintx value, bool verbose) {
 168   if (UseConcMarkSweepGC && (value <= CMSPrecleanNumerator)) {
 169     JVMFlag::printError(verbose,
 170                         "CMSPrecleanDenominator (" UINTX_FORMAT ") must be "
 171                         "strickly greater than CMSPrecleanNumerator (" UINTX_FORMAT ")\n",
 172                         value, CMSPrecleanNumerator);
 173     return JVMFlag::VIOLATES_CONSTRAINT;
 174   }
 175   return JVMFlag::SUCCESS;
 176 }
 177 
 178 JVMFlag::Error CMSPrecleanNumeratorConstraintFunc(uintx value, bool verbose) {
 179   if (UseConcMarkSweepGC && (value >= CMSPrecleanDenominator)) {




 119 
 120   if (UseConcMarkSweepGC) {
 121     status = MaxPLABSizeBounds("CMSOldPLABMax", value, verbose);
 122   }
 123   return status;
 124 }
 125 
 126 static JVMFlag::Error CMSReservedAreaConstraintFunc(const char* name, size_t value, bool verbose) {
 127   if (UseConcMarkSweepGC) {
 128     ConcurrentMarkSweepGeneration* cms = CMSHeap::heap()->old_gen();
 129     const size_t ergo_max = cms->cmsSpace()->max_flag_size_for_task_size();
 130     if (value > ergo_max) {
 131       JVMFlag::printError(verbose,
 132                           "%s (" SIZE_FORMAT ") must be "
 133                           "less than or equal to ergonomic maximum (" SIZE_FORMAT ") "
 134                           "which is based on the maximum size of the old generation of the Java heap\n",
 135                           name, value, ergo_max);
 136       return JVMFlag::VIOLATES_CONSTRAINT;
 137     }
 138   }

 139   return JVMFlag::SUCCESS;
 140 }
 141 
 142 JVMFlag::Error CMSRescanMultipleConstraintFunc(size_t value, bool verbose) {
 143   JVMFlag::Error status = CMSReservedAreaConstraintFunc("CMSRescanMultiple", value, verbose);
 144 
 145   if (status == JVMFlag::SUCCESS && UseConcMarkSweepGC) {
 146     // CMSParRemarkTask::do_dirty_card_rescan_tasks requires CompactibleFreeListSpace::rescan_task_size()
 147     // to be aligned to CardTable::card_size * BitsPerWord.
 148     // Note that rescan_task_size() will be aligned if CMSRescanMultiple is a multiple of 'HeapWordSize'
 149     // because rescan_task_size() is CardTable::card_size / HeapWordSize * BitsPerWord.
 150     if (value % HeapWordSize != 0) {
 151       JVMFlag::printError(verbose,
 152                           "CMSRescanMultiple (" SIZE_FORMAT ") must be "
 153                           "a multiple of " INT32_FORMAT "\n",
 154                           value, HeapWordSize);
 155       status = JVMFlag::VIOLATES_CONSTRAINT;
 156     }
 157   }

 158   return status;
 159 }
 160 
 161 JVMFlag::Error CMSConcMarkMultipleConstraintFunc(size_t value, bool verbose) {
 162   return CMSReservedAreaConstraintFunc("CMSConcMarkMultiple", value, verbose);
 163 }
 164 
 165 JVMFlag::Error CMSPrecleanDenominatorConstraintFunc(uintx value, bool verbose) {
 166   if (UseConcMarkSweepGC && (value <= CMSPrecleanNumerator)) {
 167     JVMFlag::printError(verbose,
 168                         "CMSPrecleanDenominator (" UINTX_FORMAT ") must be "
 169                         "strickly greater than CMSPrecleanNumerator (" UINTX_FORMAT ")\n",
 170                         value, CMSPrecleanNumerator);
 171     return JVMFlag::VIOLATES_CONSTRAINT;
 172   }
 173   return JVMFlag::SUCCESS;
 174 }
 175 
 176 JVMFlag::Error CMSPrecleanNumeratorConstraintFunc(uintx value, bool verbose) {
 177   if (UseConcMarkSweepGC && (value >= CMSPrecleanDenominator)) {


< prev index next >