hotspot/src/share/vm/runtime/commandLineFlagConstraintsRuntime.cpp
changeset 33222 e0a340f4ab6e
parent 32351 1da9b960b3d4
child 37212 eee5234b860e
equal deleted inserted replaced
33219:08f642d9214f 33222:e0a340f4ab6e
    25 #include "precompiled.hpp"
    25 #include "precompiled.hpp"
    26 #include "runtime/arguments.hpp"
    26 #include "runtime/arguments.hpp"
    27 #include "runtime/commandLineFlagConstraintsRuntime.hpp"
    27 #include "runtime/commandLineFlagConstraintsRuntime.hpp"
    28 #include "runtime/commandLineFlagRangeList.hpp"
    28 #include "runtime/commandLineFlagRangeList.hpp"
    29 #include "runtime/globals.hpp"
    29 #include "runtime/globals.hpp"
       
    30 #include "runtime/task.hpp"
    30 #include "utilities/defaultStream.hpp"
    31 #include "utilities/defaultStream.hpp"
    31 
    32 
    32 Flag::Error ObjectAlignmentInBytesConstraintFunc(intx value, bool verbose) {
    33 Flag::Error ObjectAlignmentInBytesConstraintFunc(intx value, bool verbose) {
    33   if (!is_power_of_2(value)) {
    34   if (!is_power_of_2(value)) {
    34     CommandLineError::print(verbose,
    35     CommandLineError::print(verbose,
    39   }
    40   }
    40   // In case page size is very small.
    41   // In case page size is very small.
    41   if (value >= (intx)os::vm_page_size()) {
    42   if (value >= (intx)os::vm_page_size()) {
    42     CommandLineError::print(verbose,
    43     CommandLineError::print(verbose,
    43                             "ObjectAlignmentInBytes (" INTX_FORMAT ") must be "
    44                             "ObjectAlignmentInBytes (" INTX_FORMAT ") must be "
    44                             "less than page size " INTX_FORMAT "\n",
    45                             "less than page size (" INTX_FORMAT ")\n",
    45                             value, (intx)os::vm_page_size());
    46                             value, (intx)os::vm_page_size());
    46     return Flag::VIOLATES_CONSTRAINT;
    47     return Flag::VIOLATES_CONSTRAINT;
    47   }
    48   }
    48   return Flag::SUCCESS;
    49   return Flag::SUCCESS;
    49 }
    50 }
    50 
    51 
    51 // Need to enforce the padding not to break the existing field alignments.
    52 // Need to enforce the padding not to break the existing field alignments.
    52 // It is sufficient to check against the largest type size.
    53 // It is sufficient to check against the largest type size.
    53 Flag::Error ContendedPaddingWidthConstraintFunc(intx value, bool verbose) {
    54 Flag::Error ContendedPaddingWidthConstraintFunc(intx value, bool verbose) {
    54   if ((value != 0) && ((value % BytesPerLong) != 0)) {
    55   if ((value % BytesPerLong) != 0) {
    55     CommandLineError::print(verbose,
    56     CommandLineError::print(verbose,
    56                             "ContendedPaddingWidth (" INTX_FORMAT ") must be "
    57                             "ContendedPaddingWidth (" INTX_FORMAT ") must be "
    57                             "a multiple of %d\n",
    58                             "a multiple of %d\n",
    58                             value, BytesPerLong);
    59                             value, BytesPerLong);
    59     return Flag::VIOLATES_CONSTRAINT;
    60     return Flag::VIOLATES_CONSTRAINT;
    60   } else {
    61   } else {
    61     return Flag::SUCCESS;
    62     return Flag::SUCCESS;
    62   }
    63   }
    63 }
    64 }
       
    65 
       
    66 Flag::Error BiasedLockingBulkRebiasThresholdFunc(intx value, bool verbose) {
       
    67   if (value > BiasedLockingBulkRevokeThreshold) {
       
    68     CommandLineError::print(verbose,
       
    69                             "BiasedLockingBulkRebiasThreshold (" INTX_FORMAT ") must be "
       
    70                             "less than or equal to BiasedLockingBulkRevokeThreshold (" INTX_FORMAT ")\n",
       
    71                             value, BiasedLockingBulkRevokeThreshold);
       
    72     return Flag::VIOLATES_CONSTRAINT;
       
    73   } else {
       
    74     return Flag::SUCCESS;
       
    75   }
       
    76 }
       
    77 
       
    78 Flag::Error BiasedLockingStartupDelayFunc(intx value, bool verbose) {
       
    79   if ((value % PeriodicTask::interval_gran) != 0) {
       
    80     CommandLineError::print(verbose,
       
    81                             "BiasedLockingStartupDelay (" INTX_FORMAT ") must be "
       
    82                             "evenly divisible by PeriodicTask::interval_gran (" INTX_FORMAT ")\n",
       
    83                             value, PeriodicTask::interval_gran);
       
    84     return Flag::VIOLATES_CONSTRAINT;
       
    85   } else {
       
    86     return Flag::SUCCESS;
       
    87   }
       
    88 }
       
    89 
       
    90 Flag::Error BiasedLockingBulkRevokeThresholdFunc(intx value, bool verbose) {
       
    91   if (value < BiasedLockingBulkRebiasThreshold) {
       
    92     CommandLineError::print(verbose,
       
    93                             "BiasedLockingBulkRevokeThreshold (" INTX_FORMAT ") must be "
       
    94                             "greater than or equal to BiasedLockingBulkRebiasThreshold (" INTX_FORMAT ")\n",
       
    95                             value, BiasedLockingBulkRebiasThreshold);
       
    96     return Flag::VIOLATES_CONSTRAINT;
       
    97   } else if ((double)value/(double)BiasedLockingDecayTime > 0.1) {
       
    98     CommandLineError::print(verbose,
       
    99                             "The ratio of BiasedLockingBulkRevokeThreshold (" INTX_FORMAT ")"
       
   100                             " to BiasedLockingDecayTime (" INTX_FORMAT ") must be "
       
   101                             "less than or equal to 0.1\n",
       
   102                             value, BiasedLockingBulkRebiasThreshold);
       
   103     return Flag::VIOLATES_CONSTRAINT;
       
   104   } else {
       
   105     return Flag::SUCCESS;
       
   106   }
       
   107 }
       
   108 
       
   109 Flag::Error BiasedLockingDecayTimeFunc(intx value, bool verbose) {
       
   110   if (BiasedLockingBulkRebiasThreshold/(double)value > 0.1) {
       
   111     CommandLineError::print(verbose,
       
   112                             "The ratio of BiasedLockingBulkRebiasThreshold (" INTX_FORMAT ")"
       
   113                             " to BiasedLockingDecayTime (" INTX_FORMAT ") must be "
       
   114                             "less than or equal to 0.1\n",
       
   115                             BiasedLockingBulkRebiasThreshold, value);
       
   116     return Flag::VIOLATES_CONSTRAINT;
       
   117   } else {
       
   118     return Flag::SUCCESS;
       
   119   }
       
   120 }
       
   121 
       
   122 Flag::Error PerfDataSamplingIntervalFunc(intx value, bool verbose) {
       
   123   if ((value % PeriodicTask::interval_gran != 0)) {
       
   124     CommandLineError::print(verbose,
       
   125                             "PerfDataSamplingInterval (" INTX_FORMAT ") must be "
       
   126                             "evenly divisible by PeriodicTask::interval_gran (" INTX_FORMAT ")\n",
       
   127                             value, PeriodicTask::interval_gran);
       
   128     return Flag::VIOLATES_CONSTRAINT;
       
   129   } else {
       
   130     return Flag::SUCCESS;
       
   131   }
       
   132 }