hotspot/src/share/vm/runtime/arguments.cpp
changeset 6466 ef740a24d777
parent 6440 f2a0cdc024ba
parent 6465 514cf4924008
child 6755 58237fa09b63
child 6475 ce4e3065a20c
equal deleted inserted replaced
6451:516540f1f076 6466:ef740a24d777
    48 // These parameters are reset in method parse_vm_init_args(JavaVMInitArgs*)
    48 // These parameters are reset in method parse_vm_init_args(JavaVMInitArgs*)
    49 bool   Arguments::_AlwaysCompileLoopMethods     = AlwaysCompileLoopMethods;
    49 bool   Arguments::_AlwaysCompileLoopMethods     = AlwaysCompileLoopMethods;
    50 bool   Arguments::_UseOnStackReplacement        = UseOnStackReplacement;
    50 bool   Arguments::_UseOnStackReplacement        = UseOnStackReplacement;
    51 bool   Arguments::_BackgroundCompilation        = BackgroundCompilation;
    51 bool   Arguments::_BackgroundCompilation        = BackgroundCompilation;
    52 bool   Arguments::_ClipInlining                 = ClipInlining;
    52 bool   Arguments::_ClipInlining                 = ClipInlining;
    53 intx   Arguments::_Tier2CompileThreshold        = Tier2CompileThreshold;
       
    54 
    53 
    55 char*  Arguments::SharedArchivePath             = NULL;
    54 char*  Arguments::SharedArchivePath             = NULL;
    56 
    55 
    57 AgentLibraryList Arguments::_libraryList;
    56 AgentLibraryList Arguments::_libraryList;
    58 AgentLibraryList Arguments::_agentList;
    57 AgentLibraryList Arguments::_agentList;
   911   // use the saved values
   910   // use the saved values
   912   ClipInlining               = Arguments::_ClipInlining;
   911   ClipInlining               = Arguments::_ClipInlining;
   913   AlwaysCompileLoopMethods   = Arguments::_AlwaysCompileLoopMethods;
   912   AlwaysCompileLoopMethods   = Arguments::_AlwaysCompileLoopMethods;
   914   UseOnStackReplacement      = Arguments::_UseOnStackReplacement;
   913   UseOnStackReplacement      = Arguments::_UseOnStackReplacement;
   915   BackgroundCompilation      = Arguments::_BackgroundCompilation;
   914   BackgroundCompilation      = Arguments::_BackgroundCompilation;
   916   Tier2CompileThreshold      = Arguments::_Tier2CompileThreshold;
       
   917 
   915 
   918   // Change from defaults based on mode
   916   // Change from defaults based on mode
   919   switch (mode) {
   917   switch (mode) {
   920   default:
   918   default:
   921     ShouldNotReachHere();
   919     ShouldNotReachHere();
   945     jio_fprintf(defaultStream::error_stream(),
   943     jio_fprintf(defaultStream::error_stream(),
   946       "Class data sharing is inconsistent with other specified options.\n");
   944       "Class data sharing is inconsistent with other specified options.\n");
   947     vm_exit_during_initialization("Unable to use shared archive.", NULL);
   945     vm_exit_during_initialization("Unable to use shared archive.", NULL);
   948   } else {
   946   } else {
   949     FLAG_SET_DEFAULT(UseSharedSpaces, false);
   947     FLAG_SET_DEFAULT(UseSharedSpaces, false);
       
   948   }
       
   949 }
       
   950 
       
   951 void Arguments::set_tiered_flags() {
       
   952   if (FLAG_IS_DEFAULT(CompilationPolicyChoice)) {
       
   953     FLAG_SET_DEFAULT(CompilationPolicyChoice, 2);
       
   954   }
       
   955 
       
   956   if (CompilationPolicyChoice < 2) {
       
   957     vm_exit_during_initialization(
       
   958       "Incompatible compilation policy selected", NULL);
       
   959   }
       
   960 
       
   961 #ifdef _LP64
       
   962   if (FLAG_IS_DEFAULT(UseCompressedOops) || FLAG_IS_ERGO(UseCompressedOops)) {
       
   963     UseCompressedOops = false;
       
   964   }
       
   965   if (UseCompressedOops) {
       
   966     vm_exit_during_initialization(
       
   967       "Tiered compilation is not supported with compressed oops yet", NULL);
       
   968   }
       
   969 #endif
       
   970  // Increase the code cache size - tiered compiles a lot more.
       
   971   if (FLAG_IS_DEFAULT(ReservedCodeCacheSize)) {
       
   972     FLAG_SET_DEFAULT(ReservedCodeCacheSize, ReservedCodeCacheSize * 2);
   950   }
   973   }
   951 }
   974 }
   952 
   975 
   953 #ifndef KERNEL
   976 #ifndef KERNEL
   954 // If the user has chosen ParallelGCThreads > 0, we set UseParNewGC
   977 // If the user has chosen ParallelGCThreads > 0, we set UseParNewGC
  1248   }
  1271   }
  1249   return true;
  1272   return true;
  1250 }
  1273 }
  1251 
  1274 
  1252 inline uintx max_heap_for_compressed_oops() {
  1275 inline uintx max_heap_for_compressed_oops() {
  1253   LP64_ONLY(return OopEncodingHeapMax - MaxPermSize - os::vm_page_size());
  1276   // Heap should be above HeapBaseMinAddress to get zero based compressed oops.
       
  1277   LP64_ONLY(return OopEncodingHeapMax - MaxPermSize - os::vm_page_size() - HeapBaseMinAddress);
  1254   NOT_LP64(ShouldNotReachHere(); return 0);
  1278   NOT_LP64(ShouldNotReachHere(); return 0);
  1255 }
  1279 }
  1256 
  1280 
  1257 bool Arguments::should_auto_select_low_pause_collector() {
  1281 bool Arguments::should_auto_select_low_pause_collector() {
  1258   if (UseAutoGCSelectPolicy &&
  1282   if (UseAutoGCSelectPolicy &&
  1297 #ifndef ZERO
  1321 #ifndef ZERO
  1298 #ifdef _LP64
  1322 #ifdef _LP64
  1299   // Check that UseCompressedOops can be set with the max heap size allocated
  1323   // Check that UseCompressedOops can be set with the max heap size allocated
  1300   // by ergonomics.
  1324   // by ergonomics.
  1301   if (MaxHeapSize <= max_heap_for_compressed_oops()) {
  1325   if (MaxHeapSize <= max_heap_for_compressed_oops()) {
  1302 #ifndef COMPILER1
  1326 #if !defined(COMPILER1) || defined(TIERED)
  1303     if (FLAG_IS_DEFAULT(UseCompressedOops) && !UseG1GC) {
  1327     if (FLAG_IS_DEFAULT(UseCompressedOops) && !UseG1GC) {
  1304       FLAG_SET_ERGO(bool, UseCompressedOops, true);
  1328       FLAG_SET_ERGO(bool, UseCompressedOops, true);
  1305     }
  1329     }
  1306 #endif
  1330 #endif
  1307 #ifdef _WIN64
  1331 #ifdef _WIN64
  1931   // Save default settings for some mode flags
  1955   // Save default settings for some mode flags
  1932   Arguments::_AlwaysCompileLoopMethods = AlwaysCompileLoopMethods;
  1956   Arguments::_AlwaysCompileLoopMethods = AlwaysCompileLoopMethods;
  1933   Arguments::_UseOnStackReplacement    = UseOnStackReplacement;
  1957   Arguments::_UseOnStackReplacement    = UseOnStackReplacement;
  1934   Arguments::_ClipInlining             = ClipInlining;
  1958   Arguments::_ClipInlining             = ClipInlining;
  1935   Arguments::_BackgroundCompilation    = BackgroundCompilation;
  1959   Arguments::_BackgroundCompilation    = BackgroundCompilation;
  1936   Arguments::_Tier2CompileThreshold    = Tier2CompileThreshold;
       
  1937 
  1960 
  1938   // Parse JAVA_TOOL_OPTIONS environment variable (if present)
  1961   // Parse JAVA_TOOL_OPTIONS environment variable (if present)
  1939   jint result = parse_java_tool_options_environment_variable(&scp, &scp_assembly_required);
  1962   jint result = parse_java_tool_options_environment_variable(&scp, &scp_assembly_required);
  1940   if (result != JNI_OK) {
  1963   if (result != JNI_OK) {
  1941     return result;
  1964     return result;
  2649   }
  2672   }
  2650   if (CompileThreshold == 0) {
  2673   if (CompileThreshold == 0) {
  2651     set_mode_flags(_int);
  2674     set_mode_flags(_int);
  2652   }
  2675   }
  2653 
  2676 
  2654 #ifdef TIERED
       
  2655   // If we are using tiered compilation in the tiered vm then c1 will
       
  2656   // do the profiling and we don't want to waste that time in the
       
  2657   // interpreter.
       
  2658   if (TieredCompilation) {
       
  2659     ProfileInterpreter = false;
       
  2660   } else {
       
  2661     // Since we are running vanilla server we must adjust the compile threshold
       
  2662     // unless the user has already adjusted it because the default threshold assumes
       
  2663     // we will run tiered.
       
  2664 
       
  2665     if (FLAG_IS_DEFAULT(CompileThreshold)) {
       
  2666       CompileThreshold = Tier2CompileThreshold;
       
  2667     }
       
  2668   }
       
  2669 #endif // TIERED
       
  2670 
       
  2671 #ifndef COMPILER2
  2677 #ifndef COMPILER2
  2672   // Don't degrade server performance for footprint
  2678   // Don't degrade server performance for footprint
  2673   if (FLAG_IS_DEFAULT(UseLargePages) &&
  2679   if (FLAG_IS_DEFAULT(UseLargePages) &&
  2674       MaxHeapSize < LargePageHeapSizeThreshold) {
  2680       MaxHeapSize < LargePageHeapSizeThreshold) {
  2675     // No need for large granularity pages w/small heaps.
  2681     // No need for large granularity pages w/small heaps.
  2680     SOLARIS_ONLY(FLAG_SET_DEFAULT(UseISM, false));
  2686     SOLARIS_ONLY(FLAG_SET_DEFAULT(UseISM, false));
  2681   }
  2687   }
  2682 
  2688 
  2683   // Tiered compilation is undefined with C1.
  2689   // Tiered compilation is undefined with C1.
  2684   TieredCompilation = false;
  2690   TieredCompilation = false;
  2685 
       
  2686 #else
  2691 #else
  2687   if (!FLAG_IS_DEFAULT(OptoLoopAlignment) && FLAG_IS_DEFAULT(MaxLoopPad)) {
  2692   if (!FLAG_IS_DEFAULT(OptoLoopAlignment) && FLAG_IS_DEFAULT(MaxLoopPad)) {
  2688     FLAG_SET_DEFAULT(MaxLoopPad, OptoLoopAlignment-1);
  2693     FLAG_SET_DEFAULT(MaxLoopPad, OptoLoopAlignment-1);
  2689   }
  2694   }
  2690   // Temporary disable bulk zeroing reduction with G1. See CR 6627983.
  2695   // Temporary disable bulk zeroing reduction with G1. See CR 6627983.
  2944   if (PrintGCDetails) {
  2949   if (PrintGCDetails) {
  2945     // Turn on -verbose:gc options as well
  2950     // Turn on -verbose:gc options as well
  2946     PrintGC = true;
  2951     PrintGC = true;
  2947   }
  2952   }
  2948 
  2953 
  2949 #if defined(_LP64) && defined(COMPILER1)
  2954 #if defined(_LP64) && defined(COMPILER1) && !defined(TIERED)
  2950   UseCompressedOops = false;
  2955   UseCompressedOops = false;
  2951 #endif
  2956 #endif
  2952 
  2957 
  2953   // Set object alignment values.
  2958   // Set object alignment values.
  2954   set_object_alignment();
  2959   set_object_alignment();
  2973 #endif // _LP64
  2978 #endif // _LP64
  2974 
  2979 
  2975   // Check the GC selections again.
  2980   // Check the GC selections again.
  2976   if (!check_gc_consistency()) {
  2981   if (!check_gc_consistency()) {
  2977     return JNI_EINVAL;
  2982     return JNI_EINVAL;
       
  2983   }
       
  2984 
       
  2985   if (TieredCompilation) {
       
  2986     set_tiered_flags();
       
  2987   } else {
       
  2988     // Check if the policy is valid. Policies 0 and 1 are valid for non-tiered setup.
       
  2989     if (CompilationPolicyChoice >= 2) {
       
  2990       vm_exit_during_initialization(
       
  2991         "Incompatible compilation policy selected", NULL);
       
  2992     }
  2978   }
  2993   }
  2979 
  2994 
  2980 #ifndef KERNEL
  2995 #ifndef KERNEL
  2981   if (UseConcMarkSweepGC) {
  2996   if (UseConcMarkSweepGC) {
  2982     // Set flags for CMS and ParNew.  Check UseConcMarkSweep first
  2997     // Set flags for CMS and ParNew.  Check UseConcMarkSweep first