hotspot/src/share/vm/runtime/arguments.cpp
changeset 4574 b2d5b0975515
parent 4444 877bb3341a10
child 4576 ad45d4e37837
equal deleted inserted replaced
4481:de92ec484f5e 4574:b2d5b0975515
   946   } else {
   946   } else {
   947     FLAG_SET_DEFAULT(UseSharedSpaces, false);
   947     FLAG_SET_DEFAULT(UseSharedSpaces, false);
   948   }
   948   }
   949 }
   949 }
   950 
   950 
       
   951 #ifndef KERNEL
   951 // If the user has chosen ParallelGCThreads > 0, we set UseParNewGC
   952 // If the user has chosen ParallelGCThreads > 0, we set UseParNewGC
   952 // if it's not explictly set or unset. If the user has chosen
   953 // if it's not explictly set or unset. If the user has chosen
   953 // UseParNewGC and not explicitly set ParallelGCThreads we
   954 // UseParNewGC and not explicitly set ParallelGCThreads we
   954 // set it, unless this is a single cpu machine.
   955 // set it, unless this is a single cpu machine.
   955 void Arguments::set_parnew_gc_flags() {
   956 void Arguments::set_parnew_gc_flags() {
  1175       // OldPLABSize is not the default value but CMSParPromoteBlocksToClaim
  1176       // OldPLABSize is not the default value but CMSParPromoteBlocksToClaim
  1176       // is.  In this situtation let CMSParPromoteBlocksToClaim follow
  1177       // is.  In this situtation let CMSParPromoteBlocksToClaim follow
  1177       // the value (either from the command line or ergonomics) of
  1178       // the value (either from the command line or ergonomics) of
  1178       // OldPLABSize.  Following OldPLABSize is an ergonomics decision.
  1179       // OldPLABSize.  Following OldPLABSize is an ergonomics decision.
  1179       FLAG_SET_ERGO(uintx, CMSParPromoteBlocksToClaim, OldPLABSize);
  1180       FLAG_SET_ERGO(uintx, CMSParPromoteBlocksToClaim, OldPLABSize);
  1180     }
  1181     } else {
  1181     else {
       
  1182       // OldPLABSize and CMSParPromoteBlocksToClaim are both set.
  1182       // OldPLABSize and CMSParPromoteBlocksToClaim are both set.
  1183       // CMSParPromoteBlocksToClaim is a collector-specific flag, so
  1183       // CMSParPromoteBlocksToClaim is a collector-specific flag, so
  1184       // we'll let it to take precedence.
  1184       // we'll let it to take precedence.
  1185       jio_fprintf(defaultStream::error_stream(),
  1185       jio_fprintf(defaultStream::error_stream(),
  1186                   "Both OldPLABSize and CMSParPromoteBlocksToClaim"
  1186                   "Both OldPLABSize and CMSParPromoteBlocksToClaim"
  1187                   " options are specified for the CMS collector."
  1187                   " options are specified for the CMS collector."
  1188                   " CMSParPromoteBlocksToClaim will take precedence.\n");
  1188                   " CMSParPromoteBlocksToClaim will take precedence.\n");
  1189     }
  1189     }
  1190   }
  1190   }
  1191 }
  1191   if (!FLAG_IS_DEFAULT(ResizeOldPLAB) && !ResizeOldPLAB) {
       
  1192     // OldPLAB sizing manually turned off: Use a larger default setting,
       
  1193     // unless it was manually specified. This is because a too-low value
       
  1194     // will slow down scavenges.
       
  1195     if (FLAG_IS_DEFAULT(CMSParPromoteBlocksToClaim)) {
       
  1196       FLAG_SET_ERGO(uintx, CMSParPromoteBlocksToClaim, 50); // default value before 6631166
       
  1197     }
       
  1198   }
       
  1199   // Overwrite OldPLABSize which is the variable we will internally use everywhere.
       
  1200   FLAG_SET_ERGO(uintx, OldPLABSize, CMSParPromoteBlocksToClaim);
       
  1201   // If either of the static initialization defaults have changed, note this
       
  1202   // modification.
       
  1203   if (!FLAG_IS_DEFAULT(CMSParPromoteBlocksToClaim) || !FLAG_IS_DEFAULT(OldPLABWeight)) {
       
  1204     CFLS_LAB::modify_initialization(OldPLABSize, OldPLABWeight);
       
  1205   }
       
  1206 }
       
  1207 #endif // KERNEL
  1192 
  1208 
  1193 inline uintx max_heap_for_compressed_oops() {
  1209 inline uintx max_heap_for_compressed_oops() {
  1194   LP64_ONLY(return oopDesc::OopEncodingHeapMax - MaxPermSize - os::vm_page_size());
  1210   LP64_ONLY(return oopDesc::OopEncodingHeapMax - MaxPermSize - os::vm_page_size());
  1195   NOT_LP64(ShouldNotReachHere(); return 0);
  1211   NOT_LP64(ShouldNotReachHere(); return 0);
  1196 }
  1212 }
  2368 #else // ndef SOLARIS
  2384 #else // ndef SOLARIS
  2369       jio_fprintf(defaultStream::error_stream(),
  2385       jio_fprintf(defaultStream::error_stream(),
  2370                   "ExtendedDTraceProbes flag is only applicable on Solaris\n");
  2386                   "ExtendedDTraceProbes flag is only applicable on Solaris\n");
  2371       return JNI_EINVAL;
  2387       return JNI_EINVAL;
  2372 #endif // ndef SOLARIS
  2388 #endif // ndef SOLARIS
  2373     } else
       
  2374 #ifdef ASSERT
  2389 #ifdef ASSERT
  2375     if (match_option(option, "-XX:+FullGCALot", &tail)) {
  2390     } else if (match_option(option, "-XX:+FullGCALot", &tail)) {
  2376       FLAG_SET_CMDLINE(bool, FullGCALot, true);
  2391       FLAG_SET_CMDLINE(bool, FullGCALot, true);
  2377       // disable scavenge before parallel mark-compact
  2392       // disable scavenge before parallel mark-compact
  2378       FLAG_SET_CMDLINE(bool, ScavengeBeforeFullGC, false);
  2393       FLAG_SET_CMDLINE(bool, ScavengeBeforeFullGC, false);
  2379     } else
       
  2380 #endif
  2394 #endif
  2381     if (match_option(option, "-XX:ParCMSPromoteBlocksToClaim=", &tail)) {
  2395     } else if (match_option(option, "-XX:CMSParPromoteBlocksToClaim=", &tail)) {
  2382       julong cms_blocks_to_claim = (julong)atol(tail);
  2396       julong cms_blocks_to_claim = (julong)atol(tail);
  2383       FLAG_SET_CMDLINE(uintx, CMSParPromoteBlocksToClaim, cms_blocks_to_claim);
  2397       FLAG_SET_CMDLINE(uintx, CMSParPromoteBlocksToClaim, cms_blocks_to_claim);
  2384       jio_fprintf(defaultStream::error_stream(),
  2398       jio_fprintf(defaultStream::error_stream(),
  2385         "Please use -XX:CMSParPromoteBlocksToClaim in place of "
  2399         "Please use -XX:OldPLABSize in place of "
       
  2400         "-XX:CMSParPromoteBlocksToClaim in the future\n");
       
  2401     } else if (match_option(option, "-XX:ParCMSPromoteBlocksToClaim=", &tail)) {
       
  2402       julong cms_blocks_to_claim = (julong)atol(tail);
       
  2403       FLAG_SET_CMDLINE(uintx, CMSParPromoteBlocksToClaim, cms_blocks_to_claim);
       
  2404       jio_fprintf(defaultStream::error_stream(),
       
  2405         "Please use -XX:OldPLABSize in place of "
  2386         "-XX:ParCMSPromoteBlocksToClaim in the future\n");
  2406         "-XX:ParCMSPromoteBlocksToClaim in the future\n");
  2387     } else
  2407     } else if (match_option(option, "-XX:ParallelGCOldGenAllocBufferSize=", &tail)) {
  2388     if (match_option(option, "-XX:ParallelGCOldGenAllocBufferSize=", &tail)) {
       
  2389       julong old_plab_size = 0;
  2408       julong old_plab_size = 0;
  2390       ArgsRange errcode = parse_memory_size(tail, &old_plab_size, 1);
  2409       ArgsRange errcode = parse_memory_size(tail, &old_plab_size, 1);
  2391       if (errcode != arg_in_range) {
  2410       if (errcode != arg_in_range) {
  2392         jio_fprintf(defaultStream::error_stream(),
  2411         jio_fprintf(defaultStream::error_stream(),
  2393                     "Invalid old PLAB size: %s\n", option->optionString);
  2412                     "Invalid old PLAB size: %s\n", option->optionString);
  2396       }
  2415       }
  2397       FLAG_SET_CMDLINE(uintx, OldPLABSize, old_plab_size);
  2416       FLAG_SET_CMDLINE(uintx, OldPLABSize, old_plab_size);
  2398       jio_fprintf(defaultStream::error_stream(),
  2417       jio_fprintf(defaultStream::error_stream(),
  2399                   "Please use -XX:OldPLABSize in place of "
  2418                   "Please use -XX:OldPLABSize in place of "
  2400                   "-XX:ParallelGCOldGenAllocBufferSize in the future\n");
  2419                   "-XX:ParallelGCOldGenAllocBufferSize in the future\n");
  2401     } else
  2420     } else if (match_option(option, "-XX:ParallelGCToSpaceAllocBufferSize=", &tail)) {
  2402     if (match_option(option, "-XX:ParallelGCToSpaceAllocBufferSize=", &tail)) {
       
  2403       julong young_plab_size = 0;
  2421       julong young_plab_size = 0;
  2404       ArgsRange errcode = parse_memory_size(tail, &young_plab_size, 1);
  2422       ArgsRange errcode = parse_memory_size(tail, &young_plab_size, 1);
  2405       if (errcode != arg_in_range) {
  2423       if (errcode != arg_in_range) {
  2406         jio_fprintf(defaultStream::error_stream(),
  2424         jio_fprintf(defaultStream::error_stream(),
  2407                     "Invalid young PLAB size: %s\n", option->optionString);
  2425                     "Invalid young PLAB size: %s\n", option->optionString);
  2410       }
  2428       }
  2411       FLAG_SET_CMDLINE(uintx, YoungPLABSize, young_plab_size);
  2429       FLAG_SET_CMDLINE(uintx, YoungPLABSize, young_plab_size);
  2412       jio_fprintf(defaultStream::error_stream(),
  2430       jio_fprintf(defaultStream::error_stream(),
  2413                   "Please use -XX:YoungPLABSize in place of "
  2431                   "Please use -XX:YoungPLABSize in place of "
  2414                   "-XX:ParallelGCToSpaceAllocBufferSize in the future\n");
  2432                   "-XX:ParallelGCToSpaceAllocBufferSize in the future\n");
  2415     } else
  2433     } else if (match_option(option, "-XX:", &tail)) { // -XX:xxxx
  2416     if (match_option(option, "-XX:", &tail)) { // -XX:xxxx
       
  2417       // Skip -XX:Flags= since that case has already been handled
  2434       // Skip -XX:Flags= since that case has already been handled
  2418       if (strncmp(tail, "Flags=", strlen("Flags=")) != 0) {
  2435       if (strncmp(tail, "Flags=", strlen("Flags=")) != 0) {
  2419         if (!process_argument(tail, args->ignoreUnrecognized, origin)) {
  2436         if (!process_argument(tail, args->ignoreUnrecognized, origin)) {
  2420           return JNI_EINVAL;
  2437           return JNI_EINVAL;
  2421         }
  2438         }
  2725   // Check the GC selections again.
  2742   // Check the GC selections again.
  2726   if (!check_gc_consistency()) {
  2743   if (!check_gc_consistency()) {
  2727     return JNI_EINVAL;
  2744     return JNI_EINVAL;
  2728   }
  2745   }
  2729 
  2746 
       
  2747 #ifndef KERNEL
  2730   if (UseConcMarkSweepGC) {
  2748   if (UseConcMarkSweepGC) {
  2731     // Set flags for CMS and ParNew.  Check UseConcMarkSweep first
  2749     // Set flags for CMS and ParNew.  Check UseConcMarkSweep first
  2732     // to ensure that when both UseConcMarkSweepGC and UseParNewGC
  2750     // to ensure that when both UseConcMarkSweepGC and UseParNewGC
  2733     // are true, we don't call set_parnew_gc_flags() as well.
  2751     // are true, we don't call set_parnew_gc_flags() as well.
  2734     set_cms_and_parnew_gc_flags();
  2752     set_cms_and_parnew_gc_flags();
  2742       set_parnew_gc_flags();
  2760       set_parnew_gc_flags();
  2743     } else if (UseG1GC) {
  2761     } else if (UseG1GC) {
  2744       set_g1_gc_flags();
  2762       set_g1_gc_flags();
  2745     }
  2763     }
  2746   }
  2764   }
       
  2765 #endif // KERNEL
  2747 
  2766 
  2748 #ifdef SERIALGC
  2767 #ifdef SERIALGC
  2749   assert(verify_serial_gc_flags(), "SerialGC unset");
  2768   assert(verify_serial_gc_flags(), "SerialGC unset");
  2750 #endif // SERIALGC
  2769 #endif // SERIALGC
  2751 
  2770