1109 } 1110 } 1111 1112 void Arguments::set_tiered_flags() { 1113 // With tiered, set default policy to AdvancedThresholdPolicy, which is 3. 1114 if (FLAG_IS_DEFAULT(CompilationPolicyChoice)) { 1115 FLAG_SET_DEFAULT(CompilationPolicyChoice, 3); 1116 } 1117 if (CompilationPolicyChoice < 2) { 1118 vm_exit_during_initialization( 1119 "Incompatible compilation policy selected", NULL); 1120 } 1121 // Increase the code cache size - tiered compiles a lot more. 1122 if (FLAG_IS_DEFAULT(ReservedCodeCacheSize)) { 1123 FLAG_SET_DEFAULT(ReservedCodeCacheSize, ReservedCodeCacheSize * 5); 1124 } 1125 if (!UseInterpreter) { // -Xcomp 1126 Tier3InvokeNotifyFreqLog = 0; 1127 Tier4InvocationThreshold = 0; 1128 } 1129 } 1130 1131 #if INCLUDE_ALL_GCS 1132 static void disable_adaptive_size_policy(const char* collector_name) { 1133 if (UseAdaptiveSizePolicy) { 1134 if (FLAG_IS_CMDLINE(UseAdaptiveSizePolicy)) { 1135 warning("disabling UseAdaptiveSizePolicy; it is incompatible with %s.", 1136 collector_name); 1137 } 1138 FLAG_SET_DEFAULT(UseAdaptiveSizePolicy, false); 1139 } 1140 } 1141 1142 void Arguments::set_parnew_gc_flags() { 1143 assert(!UseSerialGC && !UseParallelOldGC && !UseParallelGC && !UseG1GC, 1144 "control point invariant"); 1145 assert(UseParNewGC, "Error"); 1146 1147 // Turn off AdaptiveSizePolicy for parnew until it is complete. 1148 disable_adaptive_size_policy("UseParNewGC"); 2252 "Invalid InitialCodeCacheSize=%dK. Must be at least %dK.\n", InitialCodeCacheSize/K, 2253 os::vm_page_size()/K); 2254 status = false; 2255 } else if (ReservedCodeCacheSize < InitialCodeCacheSize) { 2256 jio_fprintf(defaultStream::error_stream(), 2257 "Invalid ReservedCodeCacheSize: %dK. Must be at least InitialCodeCacheSize=%dK.\n", 2258 ReservedCodeCacheSize/K, InitialCodeCacheSize/K); 2259 status = false; 2260 } else if (ReservedCodeCacheSize < min_code_cache_size) { 2261 jio_fprintf(defaultStream::error_stream(), 2262 "Invalid ReservedCodeCacheSize=%dK. Must be at least %uK.\n", ReservedCodeCacheSize/K, 2263 min_code_cache_size/K); 2264 status = false; 2265 } else if (ReservedCodeCacheSize > 2*G) { 2266 // Code cache size larger than MAXINT is not supported. 2267 jio_fprintf(defaultStream::error_stream(), 2268 "Invalid ReservedCodeCacheSize=%dM. Must be at most %uM.\n", ReservedCodeCacheSize/M, 2269 (2*G)/M); 2270 status = false; 2271 } 2272 return status; 2273 } 2274 2275 bool Arguments::is_bad_option(const JavaVMOption* option, jboolean ignore, 2276 const char* option_type) { 2277 if (ignore) return false; 2278 2279 const char* spacer = " "; 2280 if (option_type == NULL) { 2281 option_type = ++spacer; // Set both to the empty string. 2282 } 2283 2284 if (os::obsolete_option(option)) { 2285 jio_fprintf(defaultStream::error_stream(), 2286 "Obsolete %s%soption: %s\n", option_type, spacer, 2287 option->optionString); 2288 return false; 2289 } else { 2290 jio_fprintf(defaultStream::error_stream(), 2291 "Unrecognized %s%soption: %s\n", option_type, spacer, | 1109 } 1110 } 1111 1112 void Arguments::set_tiered_flags() { 1113 // With tiered, set default policy to AdvancedThresholdPolicy, which is 3. 1114 if (FLAG_IS_DEFAULT(CompilationPolicyChoice)) { 1115 FLAG_SET_DEFAULT(CompilationPolicyChoice, 3); 1116 } 1117 if (CompilationPolicyChoice < 2) { 1118 vm_exit_during_initialization( 1119 "Incompatible compilation policy selected", NULL); 1120 } 1121 // Increase the code cache size - tiered compiles a lot more. 1122 if (FLAG_IS_DEFAULT(ReservedCodeCacheSize)) { 1123 FLAG_SET_DEFAULT(ReservedCodeCacheSize, ReservedCodeCacheSize * 5); 1124 } 1125 if (!UseInterpreter) { // -Xcomp 1126 Tier3InvokeNotifyFreqLog = 0; 1127 Tier4InvocationThreshold = 0; 1128 } 1129 if (FLAG_IS_DEFAULT(NmethodSweepFraction)) { 1130 FLAG_SET_DEFAULT(NmethodSweepFraction, 1 + ReservedCodeCacheSize / (16 * M)); 1131 } 1132 } 1133 1134 #if INCLUDE_ALL_GCS 1135 static void disable_adaptive_size_policy(const char* collector_name) { 1136 if (UseAdaptiveSizePolicy) { 1137 if (FLAG_IS_CMDLINE(UseAdaptiveSizePolicy)) { 1138 warning("disabling UseAdaptiveSizePolicy; it is incompatible with %s.", 1139 collector_name); 1140 } 1141 FLAG_SET_DEFAULT(UseAdaptiveSizePolicy, false); 1142 } 1143 } 1144 1145 void Arguments::set_parnew_gc_flags() { 1146 assert(!UseSerialGC && !UseParallelOldGC && !UseParallelGC && !UseG1GC, 1147 "control point invariant"); 1148 assert(UseParNewGC, "Error"); 1149 1150 // Turn off AdaptiveSizePolicy for parnew until it is complete. 1151 disable_adaptive_size_policy("UseParNewGC"); 2255 "Invalid InitialCodeCacheSize=%dK. Must be at least %dK.\n", InitialCodeCacheSize/K, 2256 os::vm_page_size()/K); 2257 status = false; 2258 } else if (ReservedCodeCacheSize < InitialCodeCacheSize) { 2259 jio_fprintf(defaultStream::error_stream(), 2260 "Invalid ReservedCodeCacheSize: %dK. Must be at least InitialCodeCacheSize=%dK.\n", 2261 ReservedCodeCacheSize/K, InitialCodeCacheSize/K); 2262 status = false; 2263 } else if (ReservedCodeCacheSize < min_code_cache_size) { 2264 jio_fprintf(defaultStream::error_stream(), 2265 "Invalid ReservedCodeCacheSize=%dK. Must be at least %uK.\n", ReservedCodeCacheSize/K, 2266 min_code_cache_size/K); 2267 status = false; 2268 } else if (ReservedCodeCacheSize > 2*G) { 2269 // Code cache size larger than MAXINT is not supported. 2270 jio_fprintf(defaultStream::error_stream(), 2271 "Invalid ReservedCodeCacheSize=%dM. Must be at most %uM.\n", ReservedCodeCacheSize/M, 2272 (2*G)/M); 2273 status = false; 2274 } 2275 2276 status &= verify_interval(NmethodSweepFraction, 1, ReservedCodeCacheSize/K, "NmethodSweepFraction"); 2277 status &= verify_interval(NmethodSweepActivity, 0, 2000, "NmethodSweepActivity"); 2278 2279 return status; 2280 } 2281 2282 bool Arguments::is_bad_option(const JavaVMOption* option, jboolean ignore, 2283 const char* option_type) { 2284 if (ignore) return false; 2285 2286 const char* spacer = " "; 2287 if (option_type == NULL) { 2288 option_type = ++spacer; // Set both to the empty string. 2289 } 2290 2291 if (os::obsolete_option(option)) { 2292 jio_fprintf(defaultStream::error_stream(), 2293 "Obsolete %s%soption: %s\n", option_type, spacer, 2294 option->optionString); 2295 return false; 2296 } else { 2297 jio_fprintf(defaultStream::error_stream(), 2298 "Unrecognized %s%soption: %s\n", option_type, spacer, |