src/share/vm/runtime/arguments.cpp

Print this page




 290   { "PermMarkSweepDeadRatio", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
 291   { "PermSize", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
 292   { "MaxPermSize", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
 293   { "MinPermHeapExpansion", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
 294   { "MaxPermHeapExpansion", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
 295   { "CMSRevisitStackSize",           JDK_Version::jdk(8), JDK_Version::jdk(9) },
 296   { "PrintRevisitStats",             JDK_Version::jdk(8), JDK_Version::jdk(9) },
 297   { "UseVectoredExceptions",         JDK_Version::jdk(8), JDK_Version::jdk(9) },
 298   { "UseSplitVerifier",              JDK_Version::jdk(8), JDK_Version::jdk(9) },
 299   { "UseISM",                        JDK_Version::jdk(8), JDK_Version::jdk(9) },
 300   { "UsePermISM",                    JDK_Version::jdk(8), JDK_Version::jdk(9) },
 301   { "UseMPSS",                       JDK_Version::jdk(8), JDK_Version::jdk(9) },
 302   { "UseStringCache",                JDK_Version::jdk(8), JDK_Version::jdk(9) },
 303   { "UseOldInlining",                JDK_Version::jdk(9), JDK_Version::jdk(10) },
 304   { "SafepointPollOffset",           JDK_Version::jdk(9), JDK_Version::jdk(10) },
 305 #ifdef PRODUCT
 306   { "DesiredMethodLimit",
 307                            JDK_Version::jdk_update(7, 2), JDK_Version::jdk(8) },
 308 #endif // PRODUCT
 309   { "UseVMInterruptibleIO",          JDK_Version::jdk(8), JDK_Version::jdk(9) },



 310   { NULL, JDK_Version(0), JDK_Version(0) }
 311 };
 312 
 313 // Returns true if the flag is obsolete and fits into the range specified
 314 // for being ignored.  In the case that the flag is ignored, the 'version'
 315 // value is filled in with the version number when the flag became
 316 // obsolete so that that value can be displayed to the user.
 317 bool Arguments::is_newly_obsolete(const char *s, JDK_Version* version) {
 318   int i = 0;
 319   assert(version != NULL, "Must provide a version buffer");
 320   while (obsolete_jvm_flags[i].name != NULL) {
 321     const ObsoleteFlag& flag_status = obsolete_jvm_flags[i];
 322     // <flag>=xxx form
 323     // [-|+]<flag> form
 324     if ((strncmp(flag_status.name, s, strlen(flag_status.name)) == 0) ||
 325         ((s[0] == '+' || s[0] == '-') &&
 326         (strncmp(flag_status.name, &s[1], strlen(flag_status.name)) == 0))) {
 327       if (JDK_Version::current().compare(flag_status.accept_until) == -1) {
 328           *version = flag_status.obsoleted_in;
 329           return true;


2061 
2062 // Check stack pages settings
2063 bool Arguments::check_stack_pages()
2064 {
2065   bool status = true;
2066   status = status && verify_min_value(StackYellowPages, 1, "StackYellowPages");
2067   status = status && verify_min_value(StackRedPages, 1, "StackRedPages");
2068   // greater stack shadow pages can't generate instruction to bang stack
2069   status = status && verify_interval(StackShadowPages, 1, 50, "StackShadowPages");
2070   return status;
2071 }
2072 
2073 // Check the consistency of vm_init_args
2074 bool Arguments::check_vm_args_consistency() {
2075   // Method for adding checks for flag consistency.
2076   // The intent is to warn the user of all possible conflicts,
2077   // before returning an error.
2078   // Note: Needs platform-dependent factoring.
2079   bool status = true;
2080 
2081   // Allow both -XX:-UseStackBanging and -XX:-UseBoundThreads in non-product
2082   // builds so the cost of stack banging can be measured.
2083 #if (defined(PRODUCT) && defined(SOLARIS))
2084   if (!UseBoundThreads && !UseStackBanging) {
2085     jio_fprintf(defaultStream::error_stream(),
2086                 "-UseStackBanging conflicts with -UseBoundThreads\n");
2087 
2088      status = false;
2089   }
2090 #endif
2091 
2092   if (TLABRefillWasteFraction == 0) {
2093     jio_fprintf(defaultStream::error_stream(),
2094                 "TLABRefillWasteFraction should be a denominator, "
2095                 "not " SIZE_FORMAT "\n",
2096                 TLABRefillWasteFraction);
2097     status = false;
2098   }
2099 
2100   status = status && verify_interval(AdaptiveSizePolicyWeight, 0, 100,
2101                               "AdaptiveSizePolicyWeight");
2102   status = status && verify_percentage(ThresholdTolerance, "ThresholdTolerance");
2103 
2104   // Divide by bucket size to prevent a large size from causing rollover when
2105   // calculating amount of memory needed to be allocated for the String table.
2106   status = status && verify_interval(StringTableSize, minimumStringTableSize,
2107     (max_uintx / StringTable::bucket_size()), "StringTable size");
2108 
2109   status = status && verify_interval(SymbolTableSize, minimumSymbolTableSize,
2110     (max_uintx / SymbolTable::bucket_size()), "SymbolTable size");
2111 




 290   { "PermMarkSweepDeadRatio", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
 291   { "PermSize", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
 292   { "MaxPermSize", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
 293   { "MinPermHeapExpansion", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
 294   { "MaxPermHeapExpansion", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
 295   { "CMSRevisitStackSize",           JDK_Version::jdk(8), JDK_Version::jdk(9) },
 296   { "PrintRevisitStats",             JDK_Version::jdk(8), JDK_Version::jdk(9) },
 297   { "UseVectoredExceptions",         JDK_Version::jdk(8), JDK_Version::jdk(9) },
 298   { "UseSplitVerifier",              JDK_Version::jdk(8), JDK_Version::jdk(9) },
 299   { "UseISM",                        JDK_Version::jdk(8), JDK_Version::jdk(9) },
 300   { "UsePermISM",                    JDK_Version::jdk(8), JDK_Version::jdk(9) },
 301   { "UseMPSS",                       JDK_Version::jdk(8), JDK_Version::jdk(9) },
 302   { "UseStringCache",                JDK_Version::jdk(8), JDK_Version::jdk(9) },
 303   { "UseOldInlining",                JDK_Version::jdk(9), JDK_Version::jdk(10) },
 304   { "SafepointPollOffset",           JDK_Version::jdk(9), JDK_Version::jdk(10) },
 305 #ifdef PRODUCT
 306   { "DesiredMethodLimit",
 307                            JDK_Version::jdk_update(7, 2), JDK_Version::jdk(8) },
 308 #endif // PRODUCT
 309   { "UseVMInterruptibleIO",          JDK_Version::jdk(8), JDK_Version::jdk(9) },
 310   { "UseBoundThreads",               JDK_Version::jdk(9), JDK_Version::jdk(10) },
 311   { "DefaultThreadPriority",         JDK_Version::jdk(9), JDK_Version::jdk(10) },
 312   { "NoYieldsInMicrolock",           JDK_Version::jdk(9), JDK_Version::jdk(10) },
 313   { NULL, JDK_Version(0), JDK_Version(0) }
 314 };
 315 
 316 // Returns true if the flag is obsolete and fits into the range specified
 317 // for being ignored.  In the case that the flag is ignored, the 'version'
 318 // value is filled in with the version number when the flag became
 319 // obsolete so that that value can be displayed to the user.
 320 bool Arguments::is_newly_obsolete(const char *s, JDK_Version* version) {
 321   int i = 0;
 322   assert(version != NULL, "Must provide a version buffer");
 323   while (obsolete_jvm_flags[i].name != NULL) {
 324     const ObsoleteFlag& flag_status = obsolete_jvm_flags[i];
 325     // <flag>=xxx form
 326     // [-|+]<flag> form
 327     if ((strncmp(flag_status.name, s, strlen(flag_status.name)) == 0) ||
 328         ((s[0] == '+' || s[0] == '-') &&
 329         (strncmp(flag_status.name, &s[1], strlen(flag_status.name)) == 0))) {
 330       if (JDK_Version::current().compare(flag_status.accept_until) == -1) {
 331           *version = flag_status.obsoleted_in;
 332           return true;


2064 
2065 // Check stack pages settings
2066 bool Arguments::check_stack_pages()
2067 {
2068   bool status = true;
2069   status = status && verify_min_value(StackYellowPages, 1, "StackYellowPages");
2070   status = status && verify_min_value(StackRedPages, 1, "StackRedPages");
2071   // greater stack shadow pages can't generate instruction to bang stack
2072   status = status && verify_interval(StackShadowPages, 1, 50, "StackShadowPages");
2073   return status;
2074 }
2075 
2076 // Check the consistency of vm_init_args
2077 bool Arguments::check_vm_args_consistency() {
2078   // Method for adding checks for flag consistency.
2079   // The intent is to warn the user of all possible conflicts,
2080   // before returning an error.
2081   // Note: Needs platform-dependent factoring.
2082   bool status = true;
2083 











2084   if (TLABRefillWasteFraction == 0) {
2085     jio_fprintf(defaultStream::error_stream(),
2086                 "TLABRefillWasteFraction should be a denominator, "
2087                 "not " SIZE_FORMAT "\n",
2088                 TLABRefillWasteFraction);
2089     status = false;
2090   }
2091 
2092   status = status && verify_interval(AdaptiveSizePolicyWeight, 0, 100,
2093                               "AdaptiveSizePolicyWeight");
2094   status = status && verify_percentage(ThresholdTolerance, "ThresholdTolerance");
2095 
2096   // Divide by bucket size to prevent a large size from causing rollover when
2097   // calculating amount of memory needed to be allocated for the String table.
2098   status = status && verify_interval(StringTableSize, minimumStringTableSize,
2099     (max_uintx / StringTable::bucket_size()), "StringTable size");
2100 
2101   status = status && verify_interval(SymbolTableSize, minimumSymbolTableSize,
2102     (max_uintx / SymbolTable::bucket_size()), "SymbolTable size");
2103