src/share/vm/runtime/globals.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8078554 Sdiff src/share/vm/runtime

src/share/vm/runtime/globals.hpp

Print this page




   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_VM_RUNTIME_GLOBALS_HPP
  26 #define SHARE_VM_RUNTIME_GLOBALS_HPP
  27 

  28 #include "utilities/debug.hpp"
  29 
  30 // use this for flags that are true per default in the tiered build
  31 // but false in non-tiered builds, and vice versa
  32 #ifdef TIERED
  33 #define  trueInTiered true
  34 #define falseInTiered false
  35 #else
  36 #define  trueInTiered false
  37 #define falseInTiered true
  38 #endif
  39 
  40 #ifdef TARGET_ARCH_x86
  41 # include "globals_x86.hpp"
  42 #endif
  43 #ifdef TARGET_ARCH_sparc
  44 # include "globals_sparc.hpp"
  45 #endif
  46 #ifdef TARGET_ARCH_zero
  47 # include "globals_zero.hpp"


 510 // but false in development builds, and vice versa
 511 #ifdef PRODUCT
 512 #define trueInProduct  true
 513 #define falseInProduct false
 514 #else
 515 #define trueInProduct  false
 516 #define falseInProduct true
 517 #endif
 518 
 519 #ifdef JAVASE_EMBEDDED
 520 #define falseInEmbedded false
 521 #else
 522 #define falseInEmbedded true
 523 #endif
 524 
 525 // develop flags are settable / visible only during development and are constant in the PRODUCT version
 526 // product flags are always settable / visible
 527 // notproduct flags are settable / visible only during development and are not declared in the PRODUCT version
 528 
 529 // A flag must be declared with one of the following types:
 530 // bool, intx, uintx, size_t, ccstr, double, or uint64_t.
 531 // The type "ccstr" is an alias for "const char*" and is used
 532 // only in this file, because the macrology requires single-token type names.
 533 
 534 // Note: Diagnostic options not meant for VM tuning or for product modes.
 535 // They are to be used for VM quality assurance or field diagnosis
 536 // of VM bugs.  They are hidden so that users will not be encouraged to
 537 // try them as if they were VM ordinary execution options.  However, they
 538 // are available in the product version of the VM.  Under instruction
 539 // from support engineers, VM customers can turn them on to collect
 540 // diagnostic information about VM problems.  To use a VM diagnostic
 541 // option, you must first specify +UnlockDiagnosticVMOptions.
 542 // (This master switch also affects the behavior of -Xprintflags.)
 543 //
 544 // experimental flags are in support of features that are not
 545 //    part of the officially supported product, but are available
 546 //    for experimenting with. They could, for example, be performance
 547 //    features that may not have undergone full or rigorous QA, but which may
 548 //    help performance in some cases and released for experimentation
 549 //    by the community of users and developers. This flag also allows one to
 550 //    be able to build a fully supported product that nonetheless also


 683           "AdaptiveNUMAChunkSizing")                                        \
 684           range(0, 100)                                                     \
 685                                                                             \
 686   product(size_t, NUMASpaceResizeRate, 1*G,                                 \
 687           "Do not reallocate more than this amount per collection")         \
 688                                                                             \
 689   product(bool, UseAdaptiveNUMAChunkSizing, true,                           \
 690           "Enable adaptive chunk sizing for NUMA")                          \
 691                                                                             \
 692   product(bool, NUMAStats, false,                                           \
 693           "Print NUMA stats in detailed heap information")                  \
 694                                                                             \
 695   product(uintx, NUMAPageScanRate, 256,                                     \
 696           "Maximum number of pages to include in the page scan procedure")  \
 697                                                                             \
 698   product_pd(bool, NeedsDeoptSuspend,                                       \
 699           "True for register window machines (sparc/ia64)")                 \
 700                                                                             \
 701   product(intx, UseSSE, 99,                                                 \
 702           "Highest supported SSE instructions set on x86/x64")              \

 703                                                                             \
 704   product(bool, UseAES, false,                                              \
 705           "Control whether AES instructions can be used on x86/x64")        \
 706                                                                             \
 707   product(bool, UseSHA, false,                                              \
 708           "Control whether SHA instructions can be used "                   \
 709           "on SPARC and on ARM")                                            \
 710                                                                             \
 711   product(bool, UseGHASHIntrinsics, false,                                  \
 712           "Use intrinsics for GHASH versions of crypto")                    \
 713                                                                             \
 714   product(size_t, LargePageSizeInBytes, 0,                                  \
 715           "Large page size (0 to let VM choose the page size)")             \
 716                                                                             \
 717   product(size_t, LargePageHeapSizeThreshold, 128*M,                        \
 718           "Use large pages if maximum heap is at least this big")           \
 719                                                                             \
 720   product(bool, ForceTimeHighResolution, false,                             \
 721           "Using high time resolution (for Win32 only)")                    \
 722                                                                             \


1231   product(bool, ConvertYieldToSleep, false,                                 \
1232           "Convert yield to a sleep of MinSleepInterval to simulate Win32 " \
1233           "behavior")                                                       \
1234                                                                             \
1235   develop(bool, UseDetachedThreads, true,                                   \
1236           "Use detached threads that are recycled upon termination "        \
1237           "(for Solaris only)")                                             \
1238                                                                             \
1239   product(bool, UseLWPSynchronization, true,                                \
1240           "Use LWP-based instead of libthread-based synchronization "       \
1241           "(SPARC only)")                                                   \
1242                                                                             \
1243   experimental(ccstr, SyncKnobs, NULL,                                      \
1244                "(Unstable) Various monitor synchronization tunables")       \
1245                                                                             \
1246   experimental(intx, EmitSync, 0,                                           \
1247                "(Unsafe, Unstable) "                                        \
1248                "Control emission of inline sync fast-path code")            \
1249                                                                             \
1250   product(intx, MonitorBound, 0, "Bound Monitor population")                \

1251                                                                             \
1252   product(bool, MonitorInUseLists, false, "Track Monitors for Deflation")   \
1253                                                                             \
1254   experimental(intx, SyncFlags, 0, "(Unsafe, Unstable) "                    \
1255                "Experimental Sync flags")                                   \
1256                                                                             \
1257   experimental(intx, SyncVerbose, 0, "(Unstable)")                          \
1258                                                                             \
1259   diagnostic(bool, InlineNotify, true, "intrinsify subset of notify")       \
1260                                                                             \
1261   experimental(intx, ClearFPUAtPark, 0, "(Unsafe, Unstable)")               \
1262                                                                             \
1263   experimental(intx, hashCode, 5,                                           \
1264                "(Unstable) select hashCode generation algorithm")           \
1265                                                                             \
1266   experimental(intx, WorkAroundNPTLTimedWaitHang, 0,                        \
1267                "(Unstable, Linux-specific) "                                \
1268                "avoid NPTL-FUTEX hang pthread_cond_timedwait")              \
1269                                                                             \
1270   product(bool, FilterSpuriousWakeups, true,                                \


2693           "Eagerly initialize classes if possible")                         \
2694                                                                             \
2695   diagnostic(bool, LogTouchedMethods, false,                                \
2696           "Log methods which have been ever touched in runtime")            \
2697                                                                             \
2698   diagnostic(bool, PrintTouchedMethodsAtExit, false,                        \
2699           "Print all methods that have been ever touched in runtime")       \
2700                                                                             \
2701   develop(bool, TraceMethodReplacement, false,                              \
2702           "Print when methods are replaced do to recompilation")            \
2703                                                                             \
2704   develop(bool, PrintMethodFlushing, false,                                 \
2705           "Print the nmethods being flushed")                               \
2706                                                                             \
2707   diagnostic(bool, PrintMethodFlushingStatistics, false,                    \
2708           "print statistics about method flushing")                         \
2709                                                                             \
2710   diagnostic(intx, HotMethodDetectionLimit, 100000,                         \
2711           "Number of compiled code invocations after which "                \
2712           "the method is considered as hot by the flusher")                 \

2713                                                                             \
2714   diagnostic(intx, MinPassesBeforeFlush, 10,                                \
2715           "Minimum number of sweeper passes before an nmethod "             \
2716           "can be flushed")                                                 \
2717                                                                             \
2718   product(bool, UseCodeAging, true,                                         \
2719           "Insert counter to detect warm methods")                          \
2720                                                                             \
2721   diagnostic(bool, StressCodeAging, false,                                  \
2722           "Start with counters compiled in")                                \
2723                                                                             \
2724   develop(bool, UseRelocIndex, false,                                       \
2725           "Use an index to speed random access to relocations")             \
2726                                                                             \
2727   develop(bool, StressCodeBuffers, false,                                   \
2728           "Exercise code buffer expansion and other rare state changes")    \
2729                                                                             \
2730   diagnostic(bool, DebugNonSafepoints, trueInDebug,                         \
2731           "Generate extra debugging information for non-safepoints in "     \
2732           "nmethods")                                                       \


2851           "Trace queries of liveness analysis information")                 \
2852                                                                             \
2853   notproduct(bool, CollectIndexSetStatistics, false,                        \
2854           "Collect information about IndexSets")                            \
2855                                                                             \
2856   develop(bool, UseLoopSafepoints, true,                                    \
2857           "Generate Safepoint nodes in every loop")                         \
2858                                                                             \
2859   develop(intx, FastAllocateSizeLimit, 128*K,                               \
2860           /* Note:  This value is zero mod 1<<13 for a cheap sparc set. */  \
2861           "Inline allocations larger than this in doublewords must go slow")\
2862                                                                             \
2863   product(bool, AggressiveOpts, false,                                      \
2864           "Enable aggressive optimizations - see arguments.cpp")            \
2865                                                                             \
2866   product_pd(uintx, TypeProfileLevel,                                       \
2867           "=XYZ, with Z: Type profiling of arguments at call; "             \
2868                      "Y: Type profiling of return value at call; "          \
2869                      "X: Type profiling of parameters to methods; "         \
2870           "X, Y and Z in 0=off ; 1=jsr292 only; 2=all methods")             \

2871                                                                             \
2872   product(intx, TypeProfileArgsLimit,     2,                                \
2873           "max number of call arguments to consider for type profiling")    \

2874                                                                             \
2875   product(intx, TypeProfileParmsLimit,    2,                                \
2876           "max number of incoming parameters to consider for type profiling"\
2877           ", -1 for all")                                                   \

2878                                                                             \
2879   /* statistics */                                                          \
2880   develop(bool, CountCompiledCalls, false,                                  \
2881           "Count method invocations")                                       \
2882                                                                             \
2883   notproduct(bool, CountRuntimeCalls, false,                                \
2884           "Count VM runtime calls")                                         \
2885                                                                             \
2886   develop(bool, CountJNICalls, false,                                       \
2887           "Count jni method invocations")                                   \
2888                                                                             \
2889   notproduct(bool, CountJVMCalls, false,                                    \
2890           "Count jvm method invocations")                                   \
2891                                                                             \
2892   notproduct(bool, CountRemovableExceptions, false,                         \
2893           "Count exceptions that could be replaced by branches due to "     \
2894           "inlining")                                                       \
2895                                                                             \
2896   notproduct(bool, ICMissHistogram, false,                                  \
2897           "Produce histogram of IC misses")                                 \


3016                                                                             \
3017   develop(intx, CounterHalfLifeTime,    30,                                 \
3018           "Half-life time of invocation counters (in seconds)")             \
3019                                                                             \
3020   develop(intx, CounterDecayMinIntervalLength,   500,                       \
3021           "The minimum interval (in milliseconds) between invocation of "   \
3022           "CounterDecay")                                                   \
3023                                                                             \
3024   product(bool, AlwaysCompileLoopMethods, false,                            \
3025           "When using recompilation, never interpret methods "              \
3026           "containing loops")                                               \
3027                                                                             \
3028   product(bool, DontCompileHugeMethods, true,                               \
3029           "Do not compile methods > HugeMethodLimit")                       \
3030                                                                             \
3031   /* Bytecode escape analysis estimation. */                                \
3032   product(bool, EstimateArgEscape, true,                                    \
3033           "Analyze bytecodes to estimate escape state of arguments")        \
3034                                                                             \
3035   product(intx, BCEATraceLevel, 0,                                          \
3036           "How much tracing to do of bytecode escape analysis estimates")   \


3037                                                                             \
3038   product(intx, MaxBCEAEstimateLevel, 5,                                    \
3039           "Maximum number of nested calls that are analyzed by BC EA")      \

3040                                                                             \
3041   product(intx, MaxBCEAEstimateSize, 150,                                   \
3042           "Maximum bytecode size of a method to be analyzed by BC EA")      \

3043                                                                             \
3044   product(intx,  AllocatePrefetchStyle, 1,                                  \
3045           "0 = no prefetch, "                                               \
3046           "1 = prefetch instructions for each allocation, "                 \
3047           "2 = use TLAB watermark to gate allocation prefetch, "            \
3048           "3 = use BIS instruction on Sparc for allocation prefetch")       \
3049           range(0, 3)                                                       \
3050                                                                             \
3051   product(intx,  AllocatePrefetchDistance, -1,                              \
3052           "Distance to prefetch ahead of allocation pointer")               \


3053                                                                             \
3054   product(intx,  AllocatePrefetchLines, 3,                                  \
3055           "Number of lines to prefetch ahead of array allocation pointer")  \

3056                                                                             \
3057   product(intx,  AllocateInstancePrefetchLines, 1,                          \
3058           "Number of lines to prefetch ahead of instance allocation "       \
3059           "pointer")                                                        \

3060                                                                             \
3061   product(intx,  AllocatePrefetchStepSize, 16,                              \
3062           "Step size in bytes of sequential prefetch instructions")         \

3063                                                                             \
3064   product(intx,  AllocatePrefetchInstr, 0,                                  \
3065           "Prefetch instruction to prefetch ahead of allocation pointer")   \

3066                                                                             \
3067   /* deoptimization */                                                      \
3068   develop(bool, TraceDeoptimization, false,                                 \
3069           "Trace deoptimization")                                           \
3070                                                                             \
3071   develop(bool, DebugDeoptimization, false,                                 \
3072           "Tracing various information while debugging deoptimization")     \
3073                                                                             \
3074   product(intx, SelfDestructTimer, 0,                                       \
3075           "Will cause VM to terminate after a given time (in minutes) "     \
3076           "(0 means off)")                                                  \
3077                                                                             \
3078   product(intx, MaxJavaStackTraceDepth, 1024,                               \
3079           "The maximum number of lines in the stack trace for Java "        \
3080           "exceptions (0 means all)")                                       \
3081                                                                             \
3082   NOT_EMBEDDED(diagnostic(intx, GuaranteedSafepointInterval, 1000,          \
3083           "Guarantee a safepoint (at least) every so many milliseconds "    \
3084           "(0 means none)"))                                                \
3085                                                                             \


3112                                                                             \
3113   notproduct(size_t, HandleAllocationLimit, 1024,                           \
3114           "Threshold for HandleMark allocation when +TraceHandleAllocation "\
3115           "is used")                                                        \
3116                                                                             \
3117   develop(size_t, TotalHandleAllocationLimit, 1024,                         \
3118           "Threshold for total handle allocation when "                     \
3119           "+TraceHandleAllocation is used")                                 \
3120                                                                             \
3121   develop(intx, StackPrintLimit, 100,                                       \
3122           "number of stack frames to print in VM-level stack dump")         \
3123                                                                             \
3124   notproduct(intx, MaxElementPrintSize, 256,                                \
3125           "maximum number of elements to print")                            \
3126                                                                             \
3127   notproduct(intx, MaxSubklassPrintSize, 4,                                 \
3128           "maximum number of subklasses to print when printing klass")      \
3129                                                                             \
3130   product(intx, MaxInlineLevel, 9,                                          \
3131           "maximum number of nested calls that are inlined")                \

3132                                                                             \
3133   product(intx, MaxRecursiveInlineLevel, 1,                                 \
3134           "maximum number of nested recursive calls that are inlined")      \

3135                                                                             \
3136   develop(intx, MaxForceInlineLevel, 100,                                   \
3137           "maximum number of nested calls that are forced for inlining "    \
3138           "(using CompileCommand or marked w/ @ForceInline)")               \

3139                                                                             \
3140   product_pd(intx, InlineSmallCode,                                         \
3141           "Only inline already compiled methods if their code size is "     \
3142           "less than this")                                                 \

3143                                                                             \
3144   product(intx, MaxInlineSize, 35,                                          \
3145           "The maximum bytecode size of a method to be inlined")            \

3146                                                                             \
3147   product_pd(intx, FreqInlineSize,                                          \
3148           "The maximum bytecode size of a frequent method to be inlined")   \

3149                                                                             \
3150   product(intx, MaxTrivialSize, 6,                                          \
3151           "The maximum bytecode size of a trivial method to be inlined")    \

3152                                                                             \
3153   product(intx, MinInliningThreshold, 250,                                  \
3154           "The minimum invocation count a method needs to have to be "      \
3155           "inlined")                                                        \

3156                                                                             \
3157   develop(intx, MethodHistogramCutoff, 100,                                 \
3158           "The cutoff value for method invocation histogram (+CountCalls)") \
3159                                                                             \
3160   develop(intx, ProfilerNumberOfInterpretedMethods, 25,                     \
3161           "Number of interpreted methods to show in profile")               \
3162                                                                             \
3163   develop(intx, ProfilerNumberOfCompiledMethods, 25,                        \
3164           "Number of compiled methods to show in profile")                  \
3165                                                                             \
3166   develop(intx, ProfilerNumberOfStubMethods, 25,                            \
3167           "Number of stub methods to show in profile")                      \
3168                                                                             \
3169   develop(intx, ProfilerNumberOfRuntimeStubNodes, 25,                       \
3170           "Number of runtime stub nodes to show in profile")                \
3171                                                                             \
3172   product(intx, ProfileIntervalsTicks, 100,                                 \
3173           "Number of ticks between printing of interval profile "           \
3174           "(+ProfileIntervals)")                                            \
3175                                                                             \


3199   notproduct(intx, DeoptimizeALotInterval,     5,                           \
3200           "Number of exits until DeoptimizeALot kicks in")                  \
3201                                                                             \
3202   notproduct(intx, ZombieALotInterval,     5,                               \
3203           "Number of exits until ZombieALot kicks in")                      \
3204                                                                             \
3205   diagnostic(intx, MallocVerifyInterval,     0,                             \
3206           "If non-zero, verify C heap after every N calls to "              \
3207           "malloc/realloc/free")                                            \
3208                                                                             \
3209   diagnostic(intx, MallocVerifyStart,     0,                                \
3210           "If non-zero, start verifying C heap after Nth call to "          \
3211           "malloc/realloc/free")                                            \
3212                                                                             \
3213   diagnostic(uintx, MallocMaxTestWords,     0,                              \
3214           "If non-zero, maximum number of words that malloc/realloc can "   \
3215           "allocate (for testing only)")                                    \
3216                                                                             \
3217   product(intx, TypeProfileWidth,     2,                                    \
3218           "Number of receiver types to record in call/cast profile")        \

3219                                                                             \
3220   develop(intx, BciProfileWidth,      2,                                    \
3221           "Number of return bci's to record in ret profile")                \
3222                                                                             \
3223   product(intx, PerMethodRecompilationCutoff, 400,                          \
3224           "After recompiling N times, stay in the interpreter (-1=>'Inf')") \
3225           range(-1, max_intx)                                               \
3226                                                                             \
3227   product(intx, PerBytecodeRecompilationCutoff, 200,                        \
3228           "Per-BCI limit on repeated recompilation (-1=>'Inf')")            \
3229           range(-1, max_intx)                                               \
3230                                                                             \
3231   product(intx, PerMethodTrapLimit,  100,                                   \
3232           "Limit on traps (of one kind) in a method (includes inlines)")    \

3233                                                                             \
3234   experimental(intx, PerMethodSpecTrapLimit,  5000,                         \
3235           "Limit on speculative traps (of one kind) in a method "           \
3236           "(includes inlines)")                                             \

3237                                                                             \
3238   product(intx, PerBytecodeTrapLimit,  4,                                   \
3239           "Limit on traps (of one kind) at a particular BCI")               \

3240                                                                             \
3241   experimental(intx, SpecTrapLimitExtraEntries,  3,                         \
3242           "Extra method data trap entries for speculation")                 \
3243                                                                             \
3244   develop(intx, InlineFrequencyRatio,    20,                                \
3245           "Ratio of call site execution to caller method invocation")       \

3246                                                                             \
3247   develop_pd(intx, InlineFrequencyCount,                                    \
3248           "Count of call site execution necessary to trigger frequent "     \
3249           "inlining")                                                       \

3250                                                                             \
3251   develop(intx, InlineThrowCount,    50,                                    \
3252           "Force inlining of interpreted methods that throw this often")    \

3253                                                                             \
3254   develop(intx, InlineThrowMaxSize,   200,                                  \
3255           "Force inlining of throwing methods smaller than this")           \

3256                                                                             \
3257   develop(intx, ProfilerNodeSize,  1024,                                    \
3258           "Size in K to allocate for the Profile Nodes of each thread")     \

3259                                                                             \
3260   /* gc parameters */                                                       \
3261   product(size_t, InitialHeapSize, 0,                                       \
3262           "Initial heap size (in bytes); zero means use ergonomics")        \
3263                                                                             \
3264   product(size_t, MaxHeapSize, ScaleForWordSize(96*M),                      \
3265           "Maximum heap size (in bytes)")                                   \
3266                                                                             \
3267   product(size_t, OldSize, ScaleForWordSize(4*M),                           \
3268           "Initial tenured generation size (in bytes)")                     \
3269                                                                             \
3270   product(size_t, NewSize, ScaleForWordSize(1*M),                           \
3271           "Initial new generation size (in bytes)")                         \
3272                                                                             \
3273   product(size_t, MaxNewSize, max_uintx,                                    \
3274           "Maximum new generation size (in bytes), max_uintx means set "    \
3275           "ergonomically")                                                  \
3276                                                                             \
3277   product(size_t, PretenureSizeThreshold, 0,                                \
3278           "Maximum size in bytes of objects allocated in DefNew "           \


3442           range(1, max_intx)                                                \
3443                                                                             \
3444   product_pd(intx, StackRedPages,                                           \
3445           "Number of red zone (unrecoverable overflows) pages")             \
3446           range(1, max_intx)                                                \
3447                                                                             \
3448   /* greater stack shadow pages can't generate instruction to bang stack */ \
3449   product_pd(intx, StackShadowPages,                                        \
3450           "Number of shadow zone (for overflow checking) pages "            \
3451           "this should exceed the depth of the VM and native call stack")   \
3452           range(1, 50)                                                      \
3453                                                                             \
3454   product_pd(intx, ThreadStackSize,                                         \
3455           "Thread Stack Size (in Kbytes)")                                  \
3456                                                                             \
3457   product_pd(intx, VMThreadStackSize,                                       \
3458           "Non-Java Thread Stack Size (in Kbytes)")                         \
3459                                                                             \
3460   product_pd(intx, CompilerThreadStackSize,                                 \
3461           "Compiler Thread Stack Size (in Kbytes)")                         \

3462                                                                             \
3463   develop_pd(size_t, JVMInvokeMethodSlack,                                  \
3464           "Stack space (bytes) required for JVM_InvokeMethod to complete")  \
3465                                                                             \
3466   /* code cache parameters                                    */            \
3467   /* ppc64/tiered compilation has large code-entry alignment. */            \
3468   develop(uintx, CodeCacheSegmentSize, 64 PPC64_ONLY(+64) NOT_PPC64(TIERED_ONLY(+64)),\
3469           "Code cache segment size (in bytes) - smallest unit of "          \
3470           "allocation")                                                     \
3471           range(1, 1024)                                                    \

3472                                                                             \
3473   develop_pd(intx, CodeEntryAlignment,                                      \
3474           "Code entry alignment for generated code (in bytes)")             \

3475                                                                             \
3476   product_pd(intx, OptoLoopAlignment,                                       \
3477           "Align inner loops to zero relative to this modulus")             \

3478                                                                             \
3479   product_pd(uintx, InitialCodeCacheSize,                                   \
3480           "Initial code cache size (in bytes)")                             \

3481                                                                             \
3482   develop_pd(uintx, CodeCacheMinimumUseSpace,                               \
3483           "Minimum code cache size (in bytes) required to start VM.")       \

3484                                                                             \
3485   product(bool, SegmentedCodeCache, false,                                  \
3486           "Use a segmented code cache")                                     \
3487                                                                             \
3488   product_pd(uintx, ReservedCodeCacheSize,                                  \
3489           "Reserved code cache size (in bytes) - maximum code cache size")  \

3490                                                                             \
3491   product_pd(uintx, NonProfiledCodeHeapSize,                                \
3492           "Size of code heap with non-profiled methods (in bytes)")         \

3493                                                                             \
3494   product_pd(uintx, ProfiledCodeHeapSize,                                   \
3495           "Size of code heap with profiled methods (in bytes)")             \

3496                                                                             \
3497   product_pd(uintx, NonNMethodCodeHeapSize,                                 \
3498           "Size of code heap with non-nmethods (in bytes)")                 \

3499                                                                             \
3500   product_pd(uintx, CodeCacheExpansionSize,                                 \
3501           "Code cache expansion size (in bytes)")                           \

3502                                                                             \
3503   develop_pd(uintx, CodeCacheMinBlockLength,                                \
3504           "Minimum number of segments in a code cache block")               \
3505           range(1, 100)                                                     \
3506                                                                             \
3507   notproduct(bool, ExitOnFullCodeCache, false,                              \
3508           "Exit the VM if we fill the code cache")                          \
3509                                                                             \
3510   product(bool, UseCodeCacheFlushing, true,                                 \
3511           "Remove cold/old nmethods from the code cache")                   \
3512                                                                             \
3513   product(uintx, StartAggressiveSweepingAt, 10,                             \
3514           "Start aggressive sweeping if X[%] of the code cache is free."    \
3515           "Segmented code cache: X[%] of the non-profiled heap."            \
3516           "Non-segmented code cache: X[%] of the total code cache")         \
3517           range(0, 100)                                                     \
3518                                                                             \
3519   /* interpreter debugging */                                               \
3520   develop(intx, BinarySwitchThreshold, 5,                                   \
3521           "Minimal number of lookupswitch entries for rewriting to binary " \


3611           "    THREAD_PRIORITY_TIME_CRITICAL, as it may interfere with     "\
3612           "    system threads. On Linux thread priorities are ignored      "\
3613           "    because the OS does not support static priority in          "\
3614           "    SCHED_OTHER scheduling class which is the only choice for   "\
3615           "    non-root, non-realtime applications.                        "\
3616           "1 : Aggressive.                                                 "\
3617           "    Java thread priorities map over to the entire range of      "\
3618           "    native thread priorities. Higher Java thread priorities map "\
3619           "    to higher native thread priorities. This policy should be   "\
3620           "    used with care, as sometimes it can cause performance       "\
3621           "    degradation in the application and/or the entire system. On "\
3622           "    Linux this policy requires root privilege.")                 \
3623           range(0, 1)                                                       \
3624                                                                             \
3625   product(bool, ThreadPriorityVerbose, false,                               \
3626           "Print priority changes")                                         \
3627                                                                             \
3628   product(intx, CompilerThreadPriority, -1,                                 \
3629           "The native priority at which compiler threads should run "       \
3630           "(-1 means no change)")                                           \

3631                                                                             \
3632   product(intx, VMThreadPriority, -1,                                       \
3633           "The native priority at which the VM thread should run "          \
3634           "(-1 means no change)")                                           \
3635                                                                             \
3636   product(bool, CompilerThreadHintNoPreempt, true,                          \
3637           "(Solaris only) Give compiler threads an extra quanta")           \
3638                                                                             \
3639   product(bool, VMThreadHintNoPreempt, false,                               \
3640           "(Solaris only) Give VM thread an extra quanta")                  \
3641                                                                             \
3642   product(intx, JavaPriority1_To_OSPriority, -1,                            \
3643           "Map Java priorities to OS priorities")                           \
3644                                                                             \
3645   product(intx, JavaPriority2_To_OSPriority, -1,                            \
3646           "Map Java priorities to OS priorities")                           \
3647                                                                             \
3648   product(intx, JavaPriority3_To_OSPriority, -1,                            \
3649           "Map Java priorities to OS priorities")                           \
3650                                                                             \


3683           "First class to consider when using +CompileTheWorld")            \
3684                                                                             \
3685   notproduct(intx, CompileTheWorldStopAt, max_jint,                         \
3686           "Last class to consider when using +CompileTheWorld")             \
3687                                                                             \
3688   develop(intx, NewCodeParameter,      0,                                   \
3689           "Testing Only: Create a dedicated integer parameter before "      \
3690           "putback")                                                        \
3691                                                                             \
3692   /* new oopmap storage allocation */                                       \
3693   develop(intx, MinOopMapAllocation,     8,                                 \
3694           "Minimum number of OopMap entries in an OopMapSet")               \
3695                                                                             \
3696   /* Background Compilation */                                              \
3697   develop(intx, LongCompileThreshold,     50,                               \
3698           "Used with +TraceLongCompiles")                                   \
3699                                                                             \
3700   /* recompilation */                                                       \
3701   product_pd(intx, CompileThreshold,                                        \
3702           "number of interpreted method invocations before (re-)compiling") \

3703                                                                             \
3704   product(double, CompileThresholdScaling, 1.0,                             \
3705           "Factor to control when first compilation happens "               \
3706           "(both with and without tiered compilation): "                    \
3707           "values greater than 1.0 delay counter overflow, "                \
3708           "values between 0 and 1.0 rush counter overflow, "                \
3709           "value of 1.0 leaves compilation thresholds unchanged "           \
3710           "value of 0.0 is equivalent to -Xint. "                           \
3711           ""                                                                \
3712           "Flag can be set as per-method option. "                          \
3713           "If a value is specified for a method, compilation thresholds "   \
3714           "for that method are scaled by both the value of the global flag "\
3715           "and the value of the per-method flag.")                          \

3716                                                                             \
3717   product(intx, Tier0InvokeNotifyFreqLog, 7,                                \
3718           "Interpreter (tier 0) invocation notification frequency")         \

3719                                                                             \
3720   product(intx, Tier2InvokeNotifyFreqLog, 11,                               \
3721           "C1 without MDO (tier 2) invocation notification frequency")      \

3722                                                                             \
3723   product(intx, Tier3InvokeNotifyFreqLog, 10,                               \
3724           "C1 with MDO profiling (tier 3) invocation notification "         \
3725           "frequency")                                                      \

3726                                                                             \
3727   product(intx, Tier23InlineeNotifyFreqLog, 20,                             \
3728           "Inlinee invocation (tiers 2 and 3) notification frequency")      \

3729                                                                             \
3730   product(intx, Tier0BackedgeNotifyFreqLog, 10,                             \
3731           "Interpreter (tier 0) invocation notification frequency")         \

3732                                                                             \
3733   product(intx, Tier2BackedgeNotifyFreqLog, 14,                             \
3734           "C1 without MDO (tier 2) invocation notification frequency")      \

3735                                                                             \
3736   product(intx, Tier3BackedgeNotifyFreqLog, 13,                             \
3737           "C1 with MDO profiling (tier 3) invocation notification "         \
3738           "frequency")                                                      \

3739                                                                             \
3740   product(intx, Tier2CompileThreshold, 0,                                   \
3741           "threshold at which tier 2 compilation is invoked")               \

3742                                                                             \
3743   product(intx, Tier2BackEdgeThreshold, 0,                                  \
3744           "Back edge threshold at which tier 2 compilation is invoked")     \

3745                                                                             \
3746   product(intx, Tier3InvocationThreshold, 200,                              \
3747           "Compile if number of method invocations crosses this "           \
3748           "threshold")                                                      \

3749                                                                             \
3750   product(intx, Tier3MinInvocationThreshold, 100,                           \
3751           "Minimum invocation to compile at tier 3")                        \

3752                                                                             \
3753   product(intx, Tier3CompileThreshold, 2000,                                \
3754           "Threshold at which tier 3 compilation is invoked (invocation "   \
3755           "minimum must be satisfied")                                      \

3756                                                                             \
3757   product(intx, Tier3BackEdgeThreshold,  60000,                             \
3758           "Back edge threshold at which tier 3 OSR compilation is invoked") \

3759                                                                             \
3760   product(intx, Tier4InvocationThreshold, 5000,                             \
3761           "Compile if number of method invocations crosses this "           \
3762           "threshold")                                                      \

3763                                                                             \
3764   product(intx, Tier4MinInvocationThreshold, 600,                           \
3765           "Minimum invocation to compile at tier 4")                        \

3766                                                                             \
3767   product(intx, Tier4CompileThreshold, 15000,                               \
3768           "Threshold at which tier 4 compilation is invoked (invocation "   \
3769           "minimum must be satisfied")                                      \

3770                                                                             \
3771   product(intx, Tier4BackEdgeThreshold, 40000,                              \
3772           "Back edge threshold at which tier 4 OSR compilation is invoked") \

3773                                                                             \
3774   product(intx, Tier3DelayOn, 5,                                            \
3775           "If C2 queue size grows over this amount per compiler thread "    \
3776           "stop compiling at tier 3 and start compiling at tier 2")         \

3777                                                                             \
3778   product(intx, Tier3DelayOff, 2,                                           \
3779           "If C2 queue size is less than this amount per compiler thread "  \
3780           "allow methods compiled at tier 2 transition to tier 3")          \

3781                                                                             \
3782   product(intx, Tier3LoadFeedback, 5,                                       \
3783           "Tier 3 thresholds will increase twofold when C1 queue size "     \
3784           "reaches this amount per compiler thread")                        \

3785                                                                             \
3786   product(intx, Tier4LoadFeedback, 3,                                       \
3787           "Tier 4 thresholds will increase twofold when C2 queue size "     \
3788           "reaches this amount per compiler thread")                        \

3789                                                                             \
3790   product(intx, TieredCompileTaskTimeout, 50,                               \
3791           "Kill compile task if method was not used within "                \
3792           "given timeout in milliseconds")                                  \

3793                                                                             \
3794   product(intx, TieredStopAtLevel, 4,                                       \
3795           "Stop at given compilation level")                                \

3796                                                                             \
3797   product(intx, Tier0ProfilingStartPercentage, 200,                         \
3798           "Start profiling in interpreter if the counters exceed tier 3 "   \
3799           "thresholds by the specified percentage")                         \

3800                                                                             \
3801   product(uintx, IncreaseFirstTierCompileThresholdAt, 50,                   \
3802           "Increase the compile threshold for C1 compilation if the code "  \
3803           "cache is filled by the specified percentage")                    \
3804           range(0, 99)                                                      \
3805                                                                             \
3806   product(intx, TieredRateUpdateMinTime, 1,                                 \
3807           "Minimum rate sampling interval (in milliseconds)")               \

3808                                                                             \
3809   product(intx, TieredRateUpdateMaxTime, 25,                                \
3810           "Maximum rate sampling interval (in milliseconds)")               \

3811                                                                             \
3812   product_pd(bool, TieredCompilation,                                       \
3813           "Enable tiered compilation")                                      \
3814                                                                             \
3815   product(bool, PrintTieredEvents, false,                                   \
3816           "Print tiered events notifications")                              \
3817                                                                             \
3818   product_pd(intx, OnStackReplacePercentage,                                \
3819           "NON_TIERED number of method invocations/branches (expressed as " \
3820           "% of CompileThreshold) before (re-)compiling OSR code")          \

3821                                                                             \
3822   product(intx, InterpreterProfilePercentage, 33,                           \
3823           "NON_TIERED number of method invocations/branches (expressed as " \
3824           "% of CompileThreshold) before profiling in the interpreter")     \
3825           range(0, 100)                                                     \
3826                                                                             \
3827   develop(intx, MaxRecompilationSearchLength,    10,                        \
3828           "The maximum number of frames to inspect when searching for "     \
3829           "recompilee")                                                     \
3830                                                                             \
3831   develop(intx, MaxInterpretedSearchLength,     3,                          \
3832           "The maximum number of interpreted frames to skip when searching "\
3833           "for recompilee")                                                 \
3834                                                                             \
3835   develop(intx, DesiredMethodLimit,  8000,                                  \
3836           "The desired maximum method size (in bytecodes) after inlining")  \
3837                                                                             \
3838   develop(intx, HugeMethodLimit,  8000,                                     \
3839           "Don't compile methods larger than this if "                      \
3840           "+DontCompileHugeMethods")                                        \




   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_VM_RUNTIME_GLOBALS_HPP
  26 #define SHARE_VM_RUNTIME_GLOBALS_HPP
  27 
  28 #include <float.h>
  29 #include "utilities/debug.hpp"
  30 
  31 // use this for flags that are true per default in the tiered build
  32 // but false in non-tiered builds, and vice versa
  33 #ifdef TIERED
  34 #define  trueInTiered true
  35 #define falseInTiered false
  36 #else
  37 #define  trueInTiered false
  38 #define falseInTiered true
  39 #endif
  40 
  41 #ifdef TARGET_ARCH_x86
  42 # include "globals_x86.hpp"
  43 #endif
  44 #ifdef TARGET_ARCH_sparc
  45 # include "globals_sparc.hpp"
  46 #endif
  47 #ifdef TARGET_ARCH_zero
  48 # include "globals_zero.hpp"


 511 // but false in development builds, and vice versa
 512 #ifdef PRODUCT
 513 #define trueInProduct  true
 514 #define falseInProduct false
 515 #else
 516 #define trueInProduct  false
 517 #define falseInProduct true
 518 #endif
 519 
 520 #ifdef JAVASE_EMBEDDED
 521 #define falseInEmbedded false
 522 #else
 523 #define falseInEmbedded true
 524 #endif
 525 
 526 // develop flags are settable / visible only during development and are constant in the PRODUCT version
 527 // product flags are always settable / visible
 528 // notproduct flags are settable / visible only during development and are not declared in the PRODUCT version
 529 
 530 // A flag must be declared with one of the following types:
 531 // bool, int, uint, intx, uintx, size_t, ccstr, double, or uint64_t.
 532 // The type "ccstr" is an alias for "const char*" and is used
 533 // only in this file, because the macrology requires single-token type names.
 534 
 535 // Note: Diagnostic options not meant for VM tuning or for product modes.
 536 // They are to be used for VM quality assurance or field diagnosis
 537 // of VM bugs.  They are hidden so that users will not be encouraged to
 538 // try them as if they were VM ordinary execution options.  However, they
 539 // are available in the product version of the VM.  Under instruction
 540 // from support engineers, VM customers can turn them on to collect
 541 // diagnostic information about VM problems.  To use a VM diagnostic
 542 // option, you must first specify +UnlockDiagnosticVMOptions.
 543 // (This master switch also affects the behavior of -Xprintflags.)
 544 //
 545 // experimental flags are in support of features that are not
 546 //    part of the officially supported product, but are available
 547 //    for experimenting with. They could, for example, be performance
 548 //    features that may not have undergone full or rigorous QA, but which may
 549 //    help performance in some cases and released for experimentation
 550 //    by the community of users and developers. This flag also allows one to
 551 //    be able to build a fully supported product that nonetheless also


 684           "AdaptiveNUMAChunkSizing")                                        \
 685           range(0, 100)                                                     \
 686                                                                             \
 687   product(size_t, NUMASpaceResizeRate, 1*G,                                 \
 688           "Do not reallocate more than this amount per collection")         \
 689                                                                             \
 690   product(bool, UseAdaptiveNUMAChunkSizing, true,                           \
 691           "Enable adaptive chunk sizing for NUMA")                          \
 692                                                                             \
 693   product(bool, NUMAStats, false,                                           \
 694           "Print NUMA stats in detailed heap information")                  \
 695                                                                             \
 696   product(uintx, NUMAPageScanRate, 256,                                     \
 697           "Maximum number of pages to include in the page scan procedure")  \
 698                                                                             \
 699   product_pd(bool, NeedsDeoptSuspend,                                       \
 700           "True for register window machines (sparc/ia64)")                 \
 701                                                                             \
 702   product(intx, UseSSE, 99,                                                 \
 703           "Highest supported SSE instructions set on x86/x64")              \
 704           range(0, 99)                                                      \
 705                                                                             \
 706   product(bool, UseAES, false,                                              \
 707           "Control whether AES instructions can be used on x86/x64")        \
 708                                                                             \
 709   product(bool, UseSHA, false,                                              \
 710           "Control whether SHA instructions can be used "                   \
 711           "on SPARC and on ARM")                                            \
 712                                                                             \
 713   product(bool, UseGHASHIntrinsics, false,                                  \
 714           "Use intrinsics for GHASH versions of crypto")                    \
 715                                                                             \
 716   product(size_t, LargePageSizeInBytes, 0,                                  \
 717           "Large page size (0 to let VM choose the page size)")             \
 718                                                                             \
 719   product(size_t, LargePageHeapSizeThreshold, 128*M,                        \
 720           "Use large pages if maximum heap is at least this big")           \
 721                                                                             \
 722   product(bool, ForceTimeHighResolution, false,                             \
 723           "Using high time resolution (for Win32 only)")                    \
 724                                                                             \


1233   product(bool, ConvertYieldToSleep, false,                                 \
1234           "Convert yield to a sleep of MinSleepInterval to simulate Win32 " \
1235           "behavior")                                                       \
1236                                                                             \
1237   develop(bool, UseDetachedThreads, true,                                   \
1238           "Use detached threads that are recycled upon termination "        \
1239           "(for Solaris only)")                                             \
1240                                                                             \
1241   product(bool, UseLWPSynchronization, true,                                \
1242           "Use LWP-based instead of libthread-based synchronization "       \
1243           "(SPARC only)")                                                   \
1244                                                                             \
1245   experimental(ccstr, SyncKnobs, NULL,                                      \
1246                "(Unstable) Various monitor synchronization tunables")       \
1247                                                                             \
1248   experimental(intx, EmitSync, 0,                                           \
1249                "(Unsafe, Unstable) "                                        \
1250                "Control emission of inline sync fast-path code")            \
1251                                                                             \
1252   product(intx, MonitorBound, 0, "Bound Monitor population")                \
1253           range(0, max_jint)                                                \
1254                                                                             \
1255   product(bool, MonitorInUseLists, false, "Track Monitors for Deflation")   \
1256                                                                             \
1257   experimental(intx, SyncFlags, 0, "(Unsafe, Unstable) "                    \
1258                "Experimental Sync flags")                                   \
1259                                                                             \
1260   experimental(intx, SyncVerbose, 0, "(Unstable)")                          \
1261                                                                             \
1262   diagnostic(bool, InlineNotify, true, "intrinsify subset of notify")       \
1263                                                                             \
1264   experimental(intx, ClearFPUAtPark, 0, "(Unsafe, Unstable)")               \
1265                                                                             \
1266   experimental(intx, hashCode, 5,                                           \
1267                "(Unstable) select hashCode generation algorithm")           \
1268                                                                             \
1269   experimental(intx, WorkAroundNPTLTimedWaitHang, 0,                        \
1270                "(Unstable, Linux-specific) "                                \
1271                "avoid NPTL-FUTEX hang pthread_cond_timedwait")              \
1272                                                                             \
1273   product(bool, FilterSpuriousWakeups, true,                                \


2696           "Eagerly initialize classes if possible")                         \
2697                                                                             \
2698   diagnostic(bool, LogTouchedMethods, false,                                \
2699           "Log methods which have been ever touched in runtime")            \
2700                                                                             \
2701   diagnostic(bool, PrintTouchedMethodsAtExit, false,                        \
2702           "Print all methods that have been ever touched in runtime")       \
2703                                                                             \
2704   develop(bool, TraceMethodReplacement, false,                              \
2705           "Print when methods are replaced do to recompilation")            \
2706                                                                             \
2707   develop(bool, PrintMethodFlushing, false,                                 \
2708           "Print the nmethods being flushed")                               \
2709                                                                             \
2710   diagnostic(bool, PrintMethodFlushingStatistics, false,                    \
2711           "print statistics about method flushing")                         \
2712                                                                             \
2713   diagnostic(intx, HotMethodDetectionLimit, 100000,                         \
2714           "Number of compiled code invocations after which "                \
2715           "the method is considered as hot by the flusher")                 \
2716           range(1, max_jint)                                                \
2717                                                                             \
2718   diagnostic(intx, MinPassesBeforeFlush, 10,                                \
2719           "Minimum number of sweeper passes before an nmethod "             \
2720           "can be flushed")                                                 \
2721                                                                             \
2722   product(bool, UseCodeAging, true,                                         \
2723           "Insert counter to detect warm methods")                          \
2724                                                                             \
2725   diagnostic(bool, StressCodeAging, false,                                  \
2726           "Start with counters compiled in")                                \
2727                                                                             \
2728   develop(bool, UseRelocIndex, false,                                       \
2729           "Use an index to speed random access to relocations")             \
2730                                                                             \
2731   develop(bool, StressCodeBuffers, false,                                   \
2732           "Exercise code buffer expansion and other rare state changes")    \
2733                                                                             \
2734   diagnostic(bool, DebugNonSafepoints, trueInDebug,                         \
2735           "Generate extra debugging information for non-safepoints in "     \
2736           "nmethods")                                                       \


2855           "Trace queries of liveness analysis information")                 \
2856                                                                             \
2857   notproduct(bool, CollectIndexSetStatistics, false,                        \
2858           "Collect information about IndexSets")                            \
2859                                                                             \
2860   develop(bool, UseLoopSafepoints, true,                                    \
2861           "Generate Safepoint nodes in every loop")                         \
2862                                                                             \
2863   develop(intx, FastAllocateSizeLimit, 128*K,                               \
2864           /* Note:  This value is zero mod 1<<13 for a cheap sparc set. */  \
2865           "Inline allocations larger than this in doublewords must go slow")\
2866                                                                             \
2867   product(bool, AggressiveOpts, false,                                      \
2868           "Enable aggressive optimizations - see arguments.cpp")            \
2869                                                                             \
2870   product_pd(uintx, TypeProfileLevel,                                       \
2871           "=XYZ, with Z: Type profiling of arguments at call; "             \
2872                      "Y: Type profiling of return value at call; "          \
2873                      "X: Type profiling of parameters to methods; "         \
2874           "X, Y and Z in 0=off ; 1=jsr292 only; 2=all methods")             \
2875           constraint(TypeProfileLevelConstraintFunc, AfterErgo)             \
2876                                                                             \
2877   product(intx, TypeProfileArgsLimit,     2,                                \
2878           "max number of call arguments to consider for type profiling")    \
2879           range(0, 16)                                                      \
2880                                                                             \
2881   product(intx, TypeProfileParmsLimit,    2,                                \
2882           "max number of incoming parameters to consider for type profiling"\
2883           ", -1 for all")                                                   \
2884           range(-1, 64)                                                     \
2885                                                                             \
2886   /* statistics */                                                          \
2887   develop(bool, CountCompiledCalls, false,                                  \
2888           "Count method invocations")                                       \
2889                                                                             \
2890   notproduct(bool, CountRuntimeCalls, false,                                \
2891           "Count VM runtime calls")                                         \
2892                                                                             \
2893   develop(bool, CountJNICalls, false,                                       \
2894           "Count jni method invocations")                                   \
2895                                                                             \
2896   notproduct(bool, CountJVMCalls, false,                                    \
2897           "Count jvm method invocations")                                   \
2898                                                                             \
2899   notproduct(bool, CountRemovableExceptions, false,                         \
2900           "Count exceptions that could be replaced by branches due to "     \
2901           "inlining")                                                       \
2902                                                                             \
2903   notproduct(bool, ICMissHistogram, false,                                  \
2904           "Produce histogram of IC misses")                                 \


3023                                                                             \
3024   develop(intx, CounterHalfLifeTime,    30,                                 \
3025           "Half-life time of invocation counters (in seconds)")             \
3026                                                                             \
3027   develop(intx, CounterDecayMinIntervalLength,   500,                       \
3028           "The minimum interval (in milliseconds) between invocation of "   \
3029           "CounterDecay")                                                   \
3030                                                                             \
3031   product(bool, AlwaysCompileLoopMethods, false,                            \
3032           "When using recompilation, never interpret methods "              \
3033           "containing loops")                                               \
3034                                                                             \
3035   product(bool, DontCompileHugeMethods, true,                               \
3036           "Do not compile methods > HugeMethodLimit")                       \
3037                                                                             \
3038   /* Bytecode escape analysis estimation. */                                \
3039   product(bool, EstimateArgEscape, true,                                    \
3040           "Analyze bytecodes to estimate escape state of arguments")        \
3041                                                                             \
3042   product(intx, BCEATraceLevel, 0,                                          \
3043           "How much tracing to do of bytecode escape analysis estimates "   \
3044           "(0-3)")                                                          \
3045           range(0, 3)                                                       \
3046                                                                             \
3047   product(intx, MaxBCEAEstimateLevel, 5,                                    \
3048           "Maximum number of nested calls that are analyzed by BC EA")      \
3049           range(0, max_jint)                                                \
3050                                                                             \
3051   product(intx, MaxBCEAEstimateSize, 150,                                   \
3052           "Maximum bytecode size of a method to be analyzed by BC EA")      \
3053           range(0, max_jint)                                                \
3054                                                                             \
3055   product(intx,  AllocatePrefetchStyle, 1,                                  \
3056           "0 = no prefetch, "                                               \
3057           "1 = prefetch instructions for each allocation, "                 \
3058           "2 = use TLAB watermark to gate allocation prefetch, "            \
3059           "3 = use BIS instruction on Sparc for allocation prefetch")       \
3060           range(0, 3)                                                       \
3061                                                                             \
3062   product(intx,  AllocatePrefetchDistance, -1,                              \
3063           "Distance to prefetch ahead of allocation pointer. "              \
3064           "-1: use system-specific value (automatically determined")        \
3065           constraint(AllocatePrefetchDistanceConstraintFunc, AfterMemoryInit)\
3066                                                                             \
3067   product(intx,  AllocatePrefetchLines, 3,                                  \
3068           "Number of lines to prefetch ahead of array allocation pointer")  \
3069           range(1, max_jint / 2)                                            \
3070                                                                             \
3071   product(intx,  AllocateInstancePrefetchLines, 1,                          \
3072           "Number of lines to prefetch ahead of instance allocation "       \
3073           "pointer")                                                        \
3074           range(1, max_jint / 2)                                            \
3075                                                                             \
3076   product(intx,  AllocatePrefetchStepSize, 16,                              \
3077           "Step size in bytes of sequential prefetch instructions")         \
3078           constraint(AllocatePrefetchStepSizeConstraintFunc,AfterMemoryInit)\
3079                                                                             \
3080   product(intx,  AllocatePrefetchInstr, 0,                                  \
3081           "Prefetch instruction to prefetch ahead of allocation pointer")   \
3082           constraint(AllocatePrefetchInstrConstraintFunc, AfterErgo)        \
3083                                                                             \
3084   /* deoptimization */                                                      \
3085   develop(bool, TraceDeoptimization, false,                                 \
3086           "Trace deoptimization")                                           \
3087                                                                             \
3088   develop(bool, DebugDeoptimization, false,                                 \
3089           "Tracing various information while debugging deoptimization")     \
3090                                                                             \
3091   product(intx, SelfDestructTimer, 0,                                       \
3092           "Will cause VM to terminate after a given time (in minutes) "     \
3093           "(0 means off)")                                                  \
3094                                                                             \
3095   product(intx, MaxJavaStackTraceDepth, 1024,                               \
3096           "The maximum number of lines in the stack trace for Java "        \
3097           "exceptions (0 means all)")                                       \
3098                                                                             \
3099   NOT_EMBEDDED(diagnostic(intx, GuaranteedSafepointInterval, 1000,          \
3100           "Guarantee a safepoint (at least) every so many milliseconds "    \
3101           "(0 means none)"))                                                \
3102                                                                             \


3129                                                                             \
3130   notproduct(size_t, HandleAllocationLimit, 1024,                           \
3131           "Threshold for HandleMark allocation when +TraceHandleAllocation "\
3132           "is used")                                                        \
3133                                                                             \
3134   develop(size_t, TotalHandleAllocationLimit, 1024,                         \
3135           "Threshold for total handle allocation when "                     \
3136           "+TraceHandleAllocation is used")                                 \
3137                                                                             \
3138   develop(intx, StackPrintLimit, 100,                                       \
3139           "number of stack frames to print in VM-level stack dump")         \
3140                                                                             \
3141   notproduct(intx, MaxElementPrintSize, 256,                                \
3142           "maximum number of elements to print")                            \
3143                                                                             \
3144   notproduct(intx, MaxSubklassPrintSize, 4,                                 \
3145           "maximum number of subklasses to print when printing klass")      \
3146                                                                             \
3147   product(intx, MaxInlineLevel, 9,                                          \
3148           "maximum number of nested calls that are inlined")                \
3149           range(0, max_jint)                                                \
3150                                                                             \
3151   product(intx, MaxRecursiveInlineLevel, 1,                                 \
3152           "maximum number of nested recursive calls that are inlined")      \
3153           range(0, max_jint)                                                \
3154                                                                             \
3155   develop(intx, MaxForceInlineLevel, 100,                                   \
3156           "maximum number of nested calls that are forced for inlining "    \
3157           "(using CompileCommand or marked w/ @ForceInline)")               \
3158           range(0, max_jint)                                                \
3159                                                                             \
3160   product_pd(intx, InlineSmallCode,                                         \
3161           "Only inline already compiled methods if their code size is "     \
3162           "less than this")                                                 \
3163           range(0, max_jint)                                                \
3164                                                                             \
3165   product(intx, MaxInlineSize, 35,                                          \
3166           "The maximum bytecode size of a method to be inlined")            \
3167           range(0, max_jint)                                                \
3168                                                                             \
3169   product_pd(intx, FreqInlineSize,                                          \
3170           "The maximum bytecode size of a frequent method to be inlined")   \
3171           range(0, max_jint)                                                \
3172                                                                             \
3173   product(intx, MaxTrivialSize, 6,                                          \
3174           "The maximum bytecode size of a trivial method to be inlined")    \
3175           range(0, max_jint)                                                \
3176                                                                             \
3177   product(intx, MinInliningThreshold, 250,                                  \
3178           "The minimum invocation count a method needs to have to be "      \
3179           "inlined")                                                        \
3180           range(0, max_jint)                                                \
3181                                                                             \
3182   develop(intx, MethodHistogramCutoff, 100,                                 \
3183           "The cutoff value for method invocation histogram (+CountCalls)") \
3184                                                                             \
3185   develop(intx, ProfilerNumberOfInterpretedMethods, 25,                     \
3186           "Number of interpreted methods to show in profile")               \
3187                                                                             \
3188   develop(intx, ProfilerNumberOfCompiledMethods, 25,                        \
3189           "Number of compiled methods to show in profile")                  \
3190                                                                             \
3191   develop(intx, ProfilerNumberOfStubMethods, 25,                            \
3192           "Number of stub methods to show in profile")                      \
3193                                                                             \
3194   develop(intx, ProfilerNumberOfRuntimeStubNodes, 25,                       \
3195           "Number of runtime stub nodes to show in profile")                \
3196                                                                             \
3197   product(intx, ProfileIntervalsTicks, 100,                                 \
3198           "Number of ticks between printing of interval profile "           \
3199           "(+ProfileIntervals)")                                            \
3200                                                                             \


3224   notproduct(intx, DeoptimizeALotInterval,     5,                           \
3225           "Number of exits until DeoptimizeALot kicks in")                  \
3226                                                                             \
3227   notproduct(intx, ZombieALotInterval,     5,                               \
3228           "Number of exits until ZombieALot kicks in")                      \
3229                                                                             \
3230   diagnostic(intx, MallocVerifyInterval,     0,                             \
3231           "If non-zero, verify C heap after every N calls to "              \
3232           "malloc/realloc/free")                                            \
3233                                                                             \
3234   diagnostic(intx, MallocVerifyStart,     0,                                \
3235           "If non-zero, start verifying C heap after Nth call to "          \
3236           "malloc/realloc/free")                                            \
3237                                                                             \
3238   diagnostic(uintx, MallocMaxTestWords,     0,                              \
3239           "If non-zero, maximum number of words that malloc/realloc can "   \
3240           "allocate (for testing only)")                                    \
3241                                                                             \
3242   product(intx, TypeProfileWidth,     2,                                    \
3243           "Number of receiver types to record in call/cast profile")        \
3244           range(0, 4)                                                       \
3245                                                                             \
3246   develop(intx, BciProfileWidth,      2,                                    \
3247           "Number of return bci's to record in ret profile")                \
3248                                                                             \
3249   product(intx, PerMethodRecompilationCutoff, 400,                          \
3250           "After recompiling N times, stay in the interpreter (-1=>'Inf')") \
3251           range(-1, max_intx)                                               \
3252                                                                             \
3253   product(intx, PerBytecodeRecompilationCutoff, 200,                        \
3254           "Per-BCI limit on repeated recompilation (-1=>'Inf')")            \
3255           range(-1, max_intx)                                               \
3256                                                                             \
3257   product(intx, PerMethodTrapLimit,  100,                                   \
3258           "Limit on traps (of one kind) in a method (includes inlines)")    \
3259           range(0, max_jint)                                                \
3260                                                                             \
3261   experimental(intx, PerMethodSpecTrapLimit,  5000,                         \
3262           "Limit on speculative traps (of one kind) in a method "           \
3263           "(includes inlines)")                                             \
3264           range(0, max_jint)                                                \
3265                                                                             \
3266   product(intx, PerBytecodeTrapLimit,  4,                                   \
3267           "Limit on traps (of one kind) at a particular BCI")               \
3268           range(0, max_jint)                                                \
3269                                                                             \
3270   experimental(intx, SpecTrapLimitExtraEntries,  3,                         \
3271           "Extra method data trap entries for speculation")                 \
3272                                                                             \
3273   develop(intx, InlineFrequencyRatio,    20,                                \
3274           "Ratio of call site execution to caller method invocation")       \
3275           range(0, max_jint)                                                \
3276                                                                             \
3277   develop_pd(intx, InlineFrequencyCount,                                    \
3278           "Count of call site execution necessary to trigger frequent "     \
3279           "inlining")                                                       \
3280           range(0, max_jint)                                                \
3281                                                                             \
3282   develop(intx, InlineThrowCount,    50,                                    \
3283           "Force inlining of interpreted methods that throw this often")    \
3284           range(0, max_jint)                                                \
3285                                                                             \
3286   develop(intx, InlineThrowMaxSize,   200,                                  \
3287           "Force inlining of throwing methods smaller than this")           \
3288           range(0, max_jint)                                                \
3289                                                                             \
3290   develop(intx, ProfilerNodeSize,  1024,                                    \
3291           "Size in K to allocate for the Profile Nodes of each thread")     \
3292           range(0, 1024)                                                    \
3293                                                                             \
3294   /* gc parameters */                                                       \
3295   product(size_t, InitialHeapSize, 0,                                       \
3296           "Initial heap size (in bytes); zero means use ergonomics")        \
3297                                                                             \
3298   product(size_t, MaxHeapSize, ScaleForWordSize(96*M),                      \
3299           "Maximum heap size (in bytes)")                                   \
3300                                                                             \
3301   product(size_t, OldSize, ScaleForWordSize(4*M),                           \
3302           "Initial tenured generation size (in bytes)")                     \
3303                                                                             \
3304   product(size_t, NewSize, ScaleForWordSize(1*M),                           \
3305           "Initial new generation size (in bytes)")                         \
3306                                                                             \
3307   product(size_t, MaxNewSize, max_uintx,                                    \
3308           "Maximum new generation size (in bytes), max_uintx means set "    \
3309           "ergonomically")                                                  \
3310                                                                             \
3311   product(size_t, PretenureSizeThreshold, 0,                                \
3312           "Maximum size in bytes of objects allocated in DefNew "           \


3476           range(1, max_intx)                                                \
3477                                                                             \
3478   product_pd(intx, StackRedPages,                                           \
3479           "Number of red zone (unrecoverable overflows) pages")             \
3480           range(1, max_intx)                                                \
3481                                                                             \
3482   /* greater stack shadow pages can't generate instruction to bang stack */ \
3483   product_pd(intx, StackShadowPages,                                        \
3484           "Number of shadow zone (for overflow checking) pages "            \
3485           "this should exceed the depth of the VM and native call stack")   \
3486           range(1, 50)                                                      \
3487                                                                             \
3488   product_pd(intx, ThreadStackSize,                                         \
3489           "Thread Stack Size (in Kbytes)")                                  \
3490                                                                             \
3491   product_pd(intx, VMThreadStackSize,                                       \
3492           "Non-Java Thread Stack Size (in Kbytes)")                         \
3493                                                                             \
3494   product_pd(intx, CompilerThreadStackSize,                                 \
3495           "Compiler Thread Stack Size (in Kbytes)")                         \
3496           range(0, max_intx)                                                \
3497                                                                             \
3498   develop_pd(size_t, JVMInvokeMethodSlack,                                  \
3499           "Stack space (bytes) required for JVM_InvokeMethod to complete")  \
3500                                                                             \
3501   /* code cache parameters                                    */            \
3502   /* ppc64/tiered compilation has large code-entry alignment. */            \
3503   develop(uintx, CodeCacheSegmentSize, 64 PPC64_ONLY(+64) NOT_PPC64(TIERED_ONLY(+64)),\
3504           "Code cache segment size (in bytes) - smallest unit of "          \
3505           "allocation")                                                     \
3506           range(1, 1024)                                                    \
3507           constraint(CodeCacheSegmentSizeConstraintFunc, AfterErgo)         \
3508                                                                             \
3509   develop_pd(intx, CodeEntryAlignment,                                      \
3510           "Code entry alignment for generated code (in bytes)")             \
3511           constraint(CodeEntryAlignmentConstraintFunc, AfterErgo)           \
3512                                                                             \
3513   product_pd(intx, OptoLoopAlignment,                                       \
3514           "Align inner loops to zero relative to this modulus")             \
3515           constraint(OptoLoopAlignmentConstraintFunc, AfterErgo)            \
3516                                                                             \
3517   product_pd(uintx, InitialCodeCacheSize,                                   \
3518           "Initial code cache size (in bytes)")                             \
3519           range(0, max_uintx)                                               \
3520                                                                             \
3521   develop_pd(uintx, CodeCacheMinimumUseSpace,                               \
3522           "Minimum code cache size (in bytes) required to start VM.")       \
3523           range(0, max_uintx)                                               \
3524                                                                             \
3525   product(bool, SegmentedCodeCache, false,                                  \
3526           "Use a segmented code cache")                                     \
3527                                                                             \
3528   product_pd(uintx, ReservedCodeCacheSize,                                  \
3529           "Reserved code cache size (in bytes) - maximum code cache size")  \
3530           range(0, max_uintx)                                               \
3531                                                                             \
3532   product_pd(uintx, NonProfiledCodeHeapSize,                                \
3533           "Size of code heap with non-profiled methods (in bytes)")         \
3534           range(0, max_uintx)                                               \
3535                                                                             \
3536   product_pd(uintx, ProfiledCodeHeapSize,                                   \
3537           "Size of code heap with profiled methods (in bytes)")             \
3538           range(0, max_uintx)                                               \
3539                                                                             \
3540   product_pd(uintx, NonNMethodCodeHeapSize,                                 \
3541           "Size of code heap with non-nmethods (in bytes)")                 \
3542           range(0, max_uintx)                                               \
3543                                                                             \
3544   product_pd(uintx, CodeCacheExpansionSize,                                 \
3545           "Code cache expansion size (in bytes)")                           \
3546           range(0, max_uintx)                                               \
3547                                                                             \
3548   develop_pd(uintx, CodeCacheMinBlockLength,                                \
3549           "Minimum number of segments in a code cache block")               \
3550           range(1, 100)                                                     \
3551                                                                             \
3552   notproduct(bool, ExitOnFullCodeCache, false,                              \
3553           "Exit the VM if we fill the code cache")                          \
3554                                                                             \
3555   product(bool, UseCodeCacheFlushing, true,                                 \
3556           "Remove cold/old nmethods from the code cache")                   \
3557                                                                             \
3558   product(uintx, StartAggressiveSweepingAt, 10,                             \
3559           "Start aggressive sweeping if X[%] of the code cache is free."    \
3560           "Segmented code cache: X[%] of the non-profiled heap."            \
3561           "Non-segmented code cache: X[%] of the total code cache")         \
3562           range(0, 100)                                                     \
3563                                                                             \
3564   /* interpreter debugging */                                               \
3565   develop(intx, BinarySwitchThreshold, 5,                                   \
3566           "Minimal number of lookupswitch entries for rewriting to binary " \


3656           "    THREAD_PRIORITY_TIME_CRITICAL, as it may interfere with     "\
3657           "    system threads. On Linux thread priorities are ignored      "\
3658           "    because the OS does not support static priority in          "\
3659           "    SCHED_OTHER scheduling class which is the only choice for   "\
3660           "    non-root, non-realtime applications.                        "\
3661           "1 : Aggressive.                                                 "\
3662           "    Java thread priorities map over to the entire range of      "\
3663           "    native thread priorities. Higher Java thread priorities map "\
3664           "    to higher native thread priorities. This policy should be   "\
3665           "    used with care, as sometimes it can cause performance       "\
3666           "    degradation in the application and/or the entire system. On "\
3667           "    Linux this policy requires root privilege.")                 \
3668           range(0, 1)                                                       \
3669                                                                             \
3670   product(bool, ThreadPriorityVerbose, false,                               \
3671           "Print priority changes")                                         \
3672                                                                             \
3673   product(intx, CompilerThreadPriority, -1,                                 \
3674           "The native priority at which compiler threads should run "       \
3675           "(-1 means no change)")                                           \
3676           constraint(CompilerThreadPriorityConstraintFunc, AfterErgo)       \
3677                                                                             \
3678   product(intx, VMThreadPriority, -1,                                       \
3679           "The native priority at which the VM thread should run "          \
3680           "(-1 means no change)")                                           \
3681                                                                             \
3682   product(bool, CompilerThreadHintNoPreempt, true,                          \
3683           "(Solaris only) Give compiler threads an extra quanta")           \
3684                                                                             \
3685   product(bool, VMThreadHintNoPreempt, false,                               \
3686           "(Solaris only) Give VM thread an extra quanta")                  \
3687                                                                             \
3688   product(intx, JavaPriority1_To_OSPriority, -1,                            \
3689           "Map Java priorities to OS priorities")                           \
3690                                                                             \
3691   product(intx, JavaPriority2_To_OSPriority, -1,                            \
3692           "Map Java priorities to OS priorities")                           \
3693                                                                             \
3694   product(intx, JavaPriority3_To_OSPriority, -1,                            \
3695           "Map Java priorities to OS priorities")                           \
3696                                                                             \


3729           "First class to consider when using +CompileTheWorld")            \
3730                                                                             \
3731   notproduct(intx, CompileTheWorldStopAt, max_jint,                         \
3732           "Last class to consider when using +CompileTheWorld")             \
3733                                                                             \
3734   develop(intx, NewCodeParameter,      0,                                   \
3735           "Testing Only: Create a dedicated integer parameter before "      \
3736           "putback")                                                        \
3737                                                                             \
3738   /* new oopmap storage allocation */                                       \
3739   develop(intx, MinOopMapAllocation,     8,                                 \
3740           "Minimum number of OopMap entries in an OopMapSet")               \
3741                                                                             \
3742   /* Background Compilation */                                              \
3743   develop(intx, LongCompileThreshold,     50,                               \
3744           "Used with +TraceLongCompiles")                                   \
3745                                                                             \
3746   /* recompilation */                                                       \
3747   product_pd(intx, CompileThreshold,                                        \
3748           "number of interpreted method invocations before (re-)compiling") \
3749           constraint(CompileThresholdConstraintFunc, AfterErgo)             \
3750                                                                             \
3751   product(double, CompileThresholdScaling, 1.0,                             \
3752           "Factor to control when first compilation happens "               \
3753           "(both with and without tiered compilation): "                    \
3754           "values greater than 1.0 delay counter overflow, "                \
3755           "values between 0 and 1.0 rush counter overflow, "                \
3756           "value of 1.0 leaves compilation thresholds unchanged "           \
3757           "value of 0.0 is equivalent to -Xint. "                           \
3758           ""                                                                \
3759           "Flag can be set as per-method option. "                          \
3760           "If a value is specified for a method, compilation thresholds "   \
3761           "for that method are scaled by both the value of the global flag "\
3762           "and the value of the per-method flag.")                          \
3763           range(0.0, DBL_MAX)                                               \
3764                                                                             \
3765   product(intx, Tier0InvokeNotifyFreqLog, 7,                                \
3766           "Interpreter (tier 0) invocation notification frequency")         \
3767           range(0, 30)                                                      \
3768                                                                             \
3769   product(intx, Tier2InvokeNotifyFreqLog, 11,                               \
3770           "C1 without MDO (tier 2) invocation notification frequency")      \
3771           range(0, 30)                                                      \
3772                                                                             \
3773   product(intx, Tier3InvokeNotifyFreqLog, 10,                               \
3774           "C1 with MDO profiling (tier 3) invocation notification "         \
3775           "frequency")                                                      \
3776           range(0, 30)                                                      \
3777                                                                             \
3778   product(intx, Tier23InlineeNotifyFreqLog, 20,                             \
3779           "Inlinee invocation (tiers 2 and 3) notification frequency")      \
3780           range(0, 30)                                                      \
3781                                                                             \
3782   product(intx, Tier0BackedgeNotifyFreqLog, 10,                             \
3783           "Interpreter (tier 0) invocation notification frequency")         \
3784           range(0, 30)                                                      \
3785                                                                             \
3786   product(intx, Tier2BackedgeNotifyFreqLog, 14,                             \
3787           "C1 without MDO (tier 2) invocation notification frequency")      \
3788           range(0, 30)                                                      \
3789                                                                             \
3790   product(intx, Tier3BackedgeNotifyFreqLog, 13,                             \
3791           "C1 with MDO profiling (tier 3) invocation notification "         \
3792           "frequency")                                                      \
3793           range(0, 30)                                                      \
3794                                                                             \
3795   product(intx, Tier2CompileThreshold, 0,                                   \
3796           "threshold at which tier 2 compilation is invoked")               \
3797           range(0, max_jint)                                                \
3798                                                                             \
3799   product(intx, Tier2BackEdgeThreshold, 0,                                  \
3800           "Back edge threshold at which tier 2 compilation is invoked")     \
3801           range(0, max_jint)                                                \
3802                                                                             \
3803   product(intx, Tier3InvocationThreshold, 200,                              \
3804           "Compile if number of method invocations crosses this "           \
3805           "threshold")                                                      \
3806           range(0, max_jint)                                                \
3807                                                                             \
3808   product(intx, Tier3MinInvocationThreshold, 100,                           \
3809           "Minimum invocation to compile at tier 3")                        \
3810           range(0, max_jint)                                                \
3811                                                                             \
3812   product(intx, Tier3CompileThreshold, 2000,                                \
3813           "Threshold at which tier 3 compilation is invoked (invocation "   \
3814           "minimum must be satisfied")                                      \
3815           range(0, max_jint)                                                \
3816                                                                             \
3817   product(intx, Tier3BackEdgeThreshold,  60000,                             \
3818           "Back edge threshold at which tier 3 OSR compilation is invoked") \
3819           range(0, max_jint)                                                \
3820                                                                             \
3821   product(intx, Tier4InvocationThreshold, 5000,                             \
3822           "Compile if number of method invocations crosses this "           \
3823           "threshold")                                                      \
3824           range(0, max_jint)                                                \
3825                                                                             \
3826   product(intx, Tier4MinInvocationThreshold, 600,                           \
3827           "Minimum invocation to compile at tier 4")                        \
3828           range(0, max_jint)                                                \
3829                                                                             \
3830   product(intx, Tier4CompileThreshold, 15000,                               \
3831           "Threshold at which tier 4 compilation is invoked (invocation "   \
3832           "minimum must be satisfied")                                      \
3833           range(0, max_jint)                                                \
3834                                                                             \
3835   product(intx, Tier4BackEdgeThreshold, 40000,                              \
3836           "Back edge threshold at which tier 4 OSR compilation is invoked") \
3837           range(0, max_jint)                                                \
3838                                                                             \
3839   product(intx, Tier3DelayOn, 5,                                            \
3840           "If C2 queue size grows over this amount per compiler thread "    \
3841           "stop compiling at tier 3 and start compiling at tier 2")         \
3842           range(0, max_jint)                                                \
3843                                                                             \
3844   product(intx, Tier3DelayOff, 2,                                           \
3845           "If C2 queue size is less than this amount per compiler thread "  \
3846           "allow methods compiled at tier 2 transition to tier 3")          \
3847           range(0, max_jint)                                                \
3848                                                                             \
3849   product(intx, Tier3LoadFeedback, 5,                                       \
3850           "Tier 3 thresholds will increase twofold when C1 queue size "     \
3851           "reaches this amount per compiler thread")                        \
3852           range(0, max_jint)                                                \
3853                                                                             \
3854   product(intx, Tier4LoadFeedback, 3,                                       \
3855           "Tier 4 thresholds will increase twofold when C2 queue size "     \
3856           "reaches this amount per compiler thread")                        \
3857           range(0, max_jint)                                                \
3858                                                                             \
3859   product(intx, TieredCompileTaskTimeout, 50,                               \
3860           "Kill compile task if method was not used within "                \
3861           "given timeout in milliseconds")                                  \
3862           range(0, max_intx)                                                \
3863                                                                             \
3864   product(intx, TieredStopAtLevel, 4,                                       \
3865           "Stop at given compilation level")                                \
3866           range(0, 4)                                                       \
3867                                                                             \
3868   product(intx, Tier0ProfilingStartPercentage, 200,                         \
3869           "Start profiling in interpreter if the counters exceed tier 3 "   \
3870           "thresholds by the specified percentage")                         \
3871           range(0, max_jint)                                                \
3872                                                                             \
3873   product(uintx, IncreaseFirstTierCompileThresholdAt, 50,                   \
3874           "Increase the compile threshold for C1 compilation if the code "  \
3875           "cache is filled by the specified percentage")                    \
3876           range(0, 99)                                                      \
3877                                                                             \
3878   product(intx, TieredRateUpdateMinTime, 1,                                 \
3879           "Minimum rate sampling interval (in milliseconds)")               \
3880           range(0, max_intx)                                                \
3881                                                                             \
3882   product(intx, TieredRateUpdateMaxTime, 25,                                \
3883           "Maximum rate sampling interval (in milliseconds)")               \
3884           range(0, max_intx)                                                \
3885                                                                             \
3886   product_pd(bool, TieredCompilation,                                       \
3887           "Enable tiered compilation")                                      \
3888                                                                             \
3889   product(bool, PrintTieredEvents, false,                                   \
3890           "Print tiered events notifications")                              \
3891                                                                             \
3892   product_pd(intx, OnStackReplacePercentage,                                \
3893           "NON_TIERED number of method invocations/branches (expressed as " \
3894           "% of CompileThreshold) before (re-)compiling OSR code")          \
3895           constraint(OnStackReplacePercentageConstraintFunc, AfterErgo)     \
3896                                                                             \
3897   product(intx, InterpreterProfilePercentage, 33,                           \
3898           "NON_TIERED number of method invocations/branches (expressed as " \
3899           "% of CompileThreshold) before profiling in the interpreter")     \
3900           range(0, 100)                                                     \
3901                                                                             \
3902   develop(intx, MaxRecompilationSearchLength,    10,                        \
3903           "The maximum number of frames to inspect when searching for "     \
3904           "recompilee")                                                     \
3905                                                                             \
3906   develop(intx, MaxInterpretedSearchLength,     3,                          \
3907           "The maximum number of interpreted frames to skip when searching "\
3908           "for recompilee")                                                 \
3909                                                                             \
3910   develop(intx, DesiredMethodLimit,  8000,                                  \
3911           "The desired maximum method size (in bytecodes) after inlining")  \
3912                                                                             \
3913   develop(intx, HugeMethodLimit,  8000,                                     \
3914           "Don't compile methods larger than this if "                      \
3915           "+DontCompileHugeMethods")                                        \


src/share/vm/runtime/globals.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File