hotspot/src/share/vm/runtime/globals.hpp
changeset 22838 82c7497fbad4
parent 22836 e7e511228518
parent 21095 1a04f7b3946e
child 22851 4c4b6a45be43
equal deleted inserted replaced
22837:feba5d4126b8 22838:82c7497fbad4
   206 
   206 
   207 // string type aliases used only in this file
   207 // string type aliases used only in this file
   208 typedef const char* ccstr;
   208 typedef const char* ccstr;
   209 typedef const char* ccstrlist;   // represents string arguments which accumulate
   209 typedef const char* ccstrlist;   // represents string arguments which accumulate
   210 
   210 
   211 enum FlagValueOrigin {
       
   212   DEFAULT          = 0,
       
   213   COMMAND_LINE     = 1,
       
   214   ENVIRON_VAR      = 2,
       
   215   CONFIG_FILE      = 3,
       
   216   MANAGEMENT       = 4,
       
   217   ERGONOMIC        = 5,
       
   218   ATTACH_ON_DEMAND = 6,
       
   219   INTERNAL         = 99
       
   220 };
       
   221 
       
   222 struct Flag {
   211 struct Flag {
   223   const char *type;
   212   enum Flags {
   224   const char *name;
   213     // value origin
   225   void*       addr;
   214     DEFAULT          = 0,
   226 
   215     COMMAND_LINE     = 1,
   227   NOT_PRODUCT(const char *doc;)
   216     ENVIRON_VAR      = 2,
   228 
   217     CONFIG_FILE      = 3,
   229   const char *kind;
   218     MANAGEMENT       = 4,
   230   FlagValueOrigin origin;
   219     ERGONOMIC        = 5,
       
   220     ATTACH_ON_DEMAND = 6,
       
   221     INTERNAL         = 7,
       
   222 
       
   223     LAST_VALUE_ORIGIN = INTERNAL,
       
   224     VALUE_ORIGIN_BITS = 4,
       
   225     VALUE_ORIGIN_MASK = right_n_bits(VALUE_ORIGIN_BITS),
       
   226 
       
   227     // flag kind
       
   228     KIND_PRODUCT            = 1 << 4,
       
   229     KIND_MANAGEABLE         = 1 << 5,
       
   230     KIND_DIAGNOSTIC         = 1 << 6,
       
   231     KIND_EXPERIMENTAL       = 1 << 7,
       
   232     KIND_NOT_PRODUCT        = 1 << 8,
       
   233     KIND_DEVELOP            = 1 << 9,
       
   234     KIND_PLATFORM_DEPENDENT = 1 << 10,
       
   235     KIND_READ_WRITE         = 1 << 11,
       
   236     KIND_C1                 = 1 << 12,
       
   237     KIND_C2                 = 1 << 13,
       
   238     KIND_ARCH               = 1 << 14,
       
   239     KIND_SHARK              = 1 << 15,
       
   240     KIND_LP64_PRODUCT       = 1 << 16,
       
   241     KIND_COMMERCIAL         = 1 << 17,
       
   242 
       
   243     KIND_MASK = ~VALUE_ORIGIN_MASK
       
   244   };
       
   245 
       
   246   const char* _type;
       
   247   const char* _name;
       
   248   void* _addr;
       
   249   NOT_PRODUCT(const char* _doc;)
       
   250   Flags _flags;
   231 
   251 
   232   // points to all Flags static array
   252   // points to all Flags static array
   233   static Flag *flags;
   253   static Flag* flags;
   234 
   254 
   235   // number of flags
   255   // number of flags
   236   static size_t numFlags;
   256   static size_t numFlags;
   237 
   257 
   238   static Flag* find_flag(const char* name, size_t length, bool allow_locked = false);
   258   static Flag* find_flag(const char* name, size_t length, bool allow_locked = false);
   239   static Flag* fuzzy_match(const char* name, size_t length, bool allow_locked = false);
   259   static Flag* fuzzy_match(const char* name, size_t length, bool allow_locked = false);
   240 
   260 
   241   bool is_bool() const        { return strcmp(type, "bool") == 0; }
   261   void check_writable();
   242   bool get_bool() const       { return *((bool*) addr); }
   262 
   243   void set_bool(bool value)   { *((bool*) addr) = value; }
   263   bool is_bool() const;
   244 
   264   bool get_bool() const;
   245   bool is_intx()  const       { return strcmp(type, "intx")  == 0; }
   265   void set_bool(bool value);
   246   intx get_intx() const       { return *((intx*) addr); }
   266 
   247   void set_intx(intx value)   { *((intx*) addr) = value; }
   267   bool is_intx() const;
   248 
   268   intx get_intx() const;
   249   bool is_uintx() const       { return strcmp(type, "uintx") == 0; }
   269   void set_intx(intx value);
   250   uintx get_uintx() const     { return *((uintx*) addr); }
   270 
   251   void set_uintx(uintx value) { *((uintx*) addr) = value; }
   271   bool is_uintx() const;
   252 
   272   uintx get_uintx() const;
   253   bool is_uint64_t() const          { return strcmp(type, "uint64_t") == 0; }
   273   void set_uintx(uintx value);
   254   uint64_t get_uint64_t() const     { return *((uint64_t*) addr); }
   274 
   255   void set_uint64_t(uint64_t value) { *((uint64_t*) addr) = value; }
   275   bool is_uint64_t() const;
   256 
   276   uint64_t get_uint64_t() const;
   257   bool is_double() const        { return strcmp(type, "double") == 0; }
   277   void set_uint64_t(uint64_t value);
   258   double get_double() const     { return *((double*) addr); }
   278 
   259   void set_double(double value) { *((double*) addr) = value; }
   279   bool is_double() const;
   260 
   280   double get_double() const;
   261   bool is_ccstr() const          { return strcmp(type, "ccstr") == 0 || strcmp(type, "ccstrlist") == 0; }
   281   void set_double(double value);
   262   bool ccstr_accumulates() const { return strcmp(type, "ccstrlist") == 0; }
   282 
   263   ccstr get_ccstr() const     { return *((ccstr*) addr); }
   283   bool is_ccstr() const;
   264   void set_ccstr(ccstr value) { *((ccstr*) addr) = value; }
   284   bool ccstr_accumulates() const;
       
   285   ccstr get_ccstr() const;
       
   286   void set_ccstr(ccstr value);
       
   287 
       
   288   Flags get_origin();
       
   289   void set_origin(Flags origin);
       
   290 
       
   291   bool is_default();
       
   292   bool is_ergonomic();
       
   293   bool is_command_line();
       
   294 
       
   295   bool is_product() const;
       
   296   bool is_manageable() const;
       
   297   bool is_diagnostic() const;
       
   298   bool is_experimental() const;
       
   299   bool is_notproduct() const;
       
   300   bool is_develop() const;
       
   301   bool is_read_write() const;
       
   302   bool is_commercial() const;
       
   303 
       
   304   bool is_constant_in_binary() const;
   265 
   305 
   266   bool is_unlocker() const;
   306   bool is_unlocker() const;
   267   bool is_unlocked() const;
   307   bool is_unlocked() const;
   268   bool is_writeable() const;
   308   bool is_writeable() const;
   269   bool is_external() const;
   309   bool is_external() const;
   275 
   315 
   276   void get_locked_message(char*, int) const;
   316   void get_locked_message(char*, int) const;
   277   void get_locked_message_ext(char*, int) const;
   317   void get_locked_message_ext(char*, int) const;
   278 
   318 
   279   void print_on(outputStream* st, bool withComments = false );
   319   void print_on(outputStream* st, bool withComments = false );
       
   320   void print_kind(outputStream* st);
   280   void print_as_flag(outputStream* st);
   321   void print_as_flag(outputStream* st);
   281 };
   322 };
   282 
   323 
   283 // debug flags control various aspects of the VM and are global accessible
   324 // debug flags control various aspects of the VM and are global accessible
   284 
   325 
   322 
   363 
   323 class CommandLineFlags {
   364 class CommandLineFlags {
   324  public:
   365  public:
   325   static bool boolAt(char* name, size_t len, bool* value);
   366   static bool boolAt(char* name, size_t len, bool* value);
   326   static bool boolAt(char* name, bool* value)      { return boolAt(name, strlen(name), value); }
   367   static bool boolAt(char* name, bool* value)      { return boolAt(name, strlen(name), value); }
   327   static bool boolAtPut(char* name, size_t len, bool* value, FlagValueOrigin origin);
   368   static bool boolAtPut(char* name, size_t len, bool* value, Flag::Flags origin);
   328   static bool boolAtPut(char* name, bool* value, FlagValueOrigin origin)   { return boolAtPut(name, strlen(name), value, origin); }
   369   static bool boolAtPut(char* name, bool* value, Flag::Flags origin)   { return boolAtPut(name, strlen(name), value, origin); }
   329 
   370 
   330   static bool intxAt(char* name, size_t len, intx* value);
   371   static bool intxAt(char* name, size_t len, intx* value);
   331   static bool intxAt(char* name, intx* value)      { return intxAt(name, strlen(name), value); }
   372   static bool intxAt(char* name, intx* value)      { return intxAt(name, strlen(name), value); }
   332   static bool intxAtPut(char* name, size_t len, intx* value, FlagValueOrigin origin);
   373   static bool intxAtPut(char* name, size_t len, intx* value, Flag::Flags origin);
   333   static bool intxAtPut(char* name, intx* value, FlagValueOrigin origin)   { return intxAtPut(name, strlen(name), value, origin); }
   374   static bool intxAtPut(char* name, intx* value, Flag::Flags origin)   { return intxAtPut(name, strlen(name), value, origin); }
   334 
   375 
   335   static bool uintxAt(char* name, size_t len, uintx* value);
   376   static bool uintxAt(char* name, size_t len, uintx* value);
   336   static bool uintxAt(char* name, uintx* value)    { return uintxAt(name, strlen(name), value); }
   377   static bool uintxAt(char* name, uintx* value)    { return uintxAt(name, strlen(name), value); }
   337   static bool uintxAtPut(char* name, size_t len, uintx* value, FlagValueOrigin origin);
   378   static bool uintxAtPut(char* name, size_t len, uintx* value, Flag::Flags origin);
   338   static bool uintxAtPut(char* name, uintx* value, FlagValueOrigin origin) { return uintxAtPut(name, strlen(name), value, origin); }
   379   static bool uintxAtPut(char* name, uintx* value, Flag::Flags origin) { return uintxAtPut(name, strlen(name), value, origin); }
   339 
   380 
   340   static bool uint64_tAt(char* name, size_t len, uint64_t* value);
   381   static bool uint64_tAt(char* name, size_t len, uint64_t* value);
   341   static bool uint64_tAt(char* name, uint64_t* value) { return uint64_tAt(name, strlen(name), value); }
   382   static bool uint64_tAt(char* name, uint64_t* value) { return uint64_tAt(name, strlen(name), value); }
   342   static bool uint64_tAtPut(char* name, size_t len, uint64_t* value, FlagValueOrigin origin);
   383   static bool uint64_tAtPut(char* name, size_t len, uint64_t* value, Flag::Flags origin);
   343   static bool uint64_tAtPut(char* name, uint64_t* value, FlagValueOrigin origin) { return uint64_tAtPut(name, strlen(name), value, origin); }
   384   static bool uint64_tAtPut(char* name, uint64_t* value, Flag::Flags origin) { return uint64_tAtPut(name, strlen(name), value, origin); }
   344 
   385 
   345   static bool doubleAt(char* name, size_t len, double* value);
   386   static bool doubleAt(char* name, size_t len, double* value);
   346   static bool doubleAt(char* name, double* value)    { return doubleAt(name, strlen(name), value); }
   387   static bool doubleAt(char* name, double* value)    { return doubleAt(name, strlen(name), value); }
   347   static bool doubleAtPut(char* name, size_t len, double* value, FlagValueOrigin origin);
   388   static bool doubleAtPut(char* name, size_t len, double* value, Flag::Flags origin);
   348   static bool doubleAtPut(char* name, double* value, FlagValueOrigin origin) { return doubleAtPut(name, strlen(name), value, origin); }
   389   static bool doubleAtPut(char* name, double* value, Flag::Flags origin) { return doubleAtPut(name, strlen(name), value, origin); }
   349 
   390 
   350   static bool ccstrAt(char* name, size_t len, ccstr* value);
   391   static bool ccstrAt(char* name, size_t len, ccstr* value);
   351   static bool ccstrAt(char* name, ccstr* value)    { return ccstrAt(name, strlen(name), value); }
   392   static bool ccstrAt(char* name, ccstr* value)    { return ccstrAt(name, strlen(name), value); }
   352   static bool ccstrAtPut(char* name, size_t len, ccstr* value, FlagValueOrigin origin);
   393   static bool ccstrAtPut(char* name, size_t len, ccstr* value, Flag::Flags origin);
   353   static bool ccstrAtPut(char* name, ccstr* value, FlagValueOrigin origin) { return ccstrAtPut(name, strlen(name), value, origin); }
   394   static bool ccstrAtPut(char* name, ccstr* value, Flag::Flags origin) { return ccstrAtPut(name, strlen(name), value, origin); }
   354 
   395 
   355   // Returns false if name is not a command line flag.
   396   // Returns false if name is not a command line flag.
   356   static bool wasSetOnCmdline(const char* name, bool* value);
   397   static bool wasSetOnCmdline(const char* name, bool* value);
   357   static void printSetFlags(outputStream* out);
   398   static void printSetFlags(outputStream* out);
   358 
   399 
   452 // it can be done in the same way as product_rw.
   493 // it can be done in the same way as product_rw.
   453 
   494 
   454 #define RUNTIME_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct, manageable, product_rw, lp64_product) \
   495 #define RUNTIME_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct, manageable, product_rw, lp64_product) \
   455                                                                             \
   496                                                                             \
   456   lp64_product(bool, UseCompressedOops, false,                              \
   497   lp64_product(bool, UseCompressedOops, false,                              \
   457             "Use 32-bit object references in 64-bit VM  "                   \
   498           "Use 32-bit object references in 64-bit VM. "                     \
   458             "lp64_product means flag is always constant in 32 bit VM")      \
   499           "lp64_product means flag is always constant in 32 bit VM")        \
   459                                                                             \
   500                                                                             \
   460   lp64_product(bool, UseCompressedKlassPointers, false,                     \
   501   lp64_product(bool, UseCompressedClassPointers, false,                     \
   461             "Use 32-bit klass pointers in 64-bit VM  "                      \
   502           "Use 32-bit class pointers in 64-bit VM. "                        \
   462             "lp64_product means flag is always constant in 32 bit VM")      \
   503           "lp64_product means flag is always constant in 32 bit VM")        \
   463                                                                             \
   504                                                                             \
   464   notproduct(bool, CheckCompressedOops, true,                               \
   505   notproduct(bool, CheckCompressedOops, true,                               \
   465             "generate checks in encoding/decoding code in debug VM")        \
   506           "Generate checks in encoding/decoding code in debug VM")          \
   466                                                                             \
   507                                                                             \
   467   product_pd(uintx, HeapBaseMinAddress,                                     \
   508   product_pd(uintx, HeapBaseMinAddress,                                     \
   468             "OS specific low limit for heap base address")                  \
   509           "OS specific low limit for heap base address")                    \
   469                                                                             \
   510                                                                             \
   470   diagnostic(bool, PrintCompressedOopsMode, false,                          \
   511   diagnostic(bool, PrintCompressedOopsMode, false,                          \
   471             "Print compressed oops base address and encoding mode")         \
   512           "Print compressed oops base address and encoding mode")           \
   472                                                                             \
   513                                                                             \
   473   lp64_product(intx, ObjectAlignmentInBytes, 8,                             \
   514   lp64_product(intx, ObjectAlignmentInBytes, 8,                             \
   474           "Default object alignment in bytes, 8 is minimum")                \
   515           "Default object alignment in bytes, 8 is minimum")                \
   475                                                                             \
   516                                                                             \
   476   product(bool, AssumeMP, false,                                            \
   517   product(bool, AssumeMP, false,                                            \
   488    */                                                                       \
   529    */                                                                       \
   489   product(bool, UsePPCLWSYNC, true,                                         \
   530   product(bool, UsePPCLWSYNC, true,                                         \
   490           "Use lwsync instruction if true, else use slower sync")           \
   531           "Use lwsync instruction if true, else use slower sync")           \
   491                                                                             \
   532                                                                             \
   492   develop(bool, CleanChunkPoolAsync, falseInEmbedded,                       \
   533   develop(bool, CleanChunkPoolAsync, falseInEmbedded,                       \
   493           "Whether to clean the chunk pool asynchronously")                 \
   534           "Clean the chunk pool asynchronously")                            \
   494                                                                             \
   535                                                                             \
   495   /* Temporary: See 6948537 */                                              \
   536   /* Temporary: See 6948537 */                                              \
   496   experimental(bool, UseMemSetInBOT, true,                                  \
   537   experimental(bool, UseMemSetInBOT, true,                                  \
   497           "(Unstable) uses memset in BOT updates in GC code")               \
   538           "(Unstable) uses memset in BOT updates in GC code")               \
   498                                                                             \
   539                                                                             \
   499   diagnostic(bool, UnlockDiagnosticVMOptions, trueInDebug,                  \
   540   diagnostic(bool, UnlockDiagnosticVMOptions, trueInDebug,                  \
   500           "Enable normal processing of flags relating to field diagnostics")\
   541           "Enable normal processing of flags relating to field diagnostics")\
   501                                                                             \
   542                                                                             \
   502   experimental(bool, UnlockExperimentalVMOptions, false,                    \
   543   experimental(bool, UnlockExperimentalVMOptions, false,                    \
   503           "Enable normal processing of flags relating to experimental features")\
   544           "Enable normal processing of flags relating to experimental "     \
       
   545           "features")                                                       \
   504                                                                             \
   546                                                                             \
   505   product(bool, JavaMonitorsInStackTrace, true,                             \
   547   product(bool, JavaMonitorsInStackTrace, true,                             \
   506           "Print info. about Java monitor locks when the stacks are dumped")\
   548           "Print information about Java monitor locks when the stacks are"  \
       
   549           "dumped")                                                         \
   507                                                                             \
   550                                                                             \
   508   product_pd(bool, UseLargePages,                                           \
   551   product_pd(bool, UseLargePages,                                           \
   509           "Use large page memory")                                          \
   552           "Use large page memory")                                          \
   510                                                                             \
   553                                                                             \
   511   product_pd(bool, UseLargePagesIndividualAllocation,                       \
   554   product_pd(bool, UseLargePagesIndividualAllocation,                       \
   512           "Allocate large pages individually for better affinity")          \
   555           "Allocate large pages individually for better affinity")          \
   513                                                                             \
   556                                                                             \
   514   develop(bool, LargePagesIndividualAllocationInjectError, false,           \
   557   develop(bool, LargePagesIndividualAllocationInjectError, false,           \
   515           "Fail large pages individual allocation")                         \
   558           "Fail large pages individual allocation")                         \
   516                                                                             \
   559                                                                             \
       
   560   product(bool, UseLargePagesInMetaspace, false,                            \
       
   561           "Use large page memory in metaspace. "                            \
       
   562           "Only used if UseLargePages is enabled.")                         \
       
   563                                                                             \
   517   develop(bool, TracePageSizes, false,                                      \
   564   develop(bool, TracePageSizes, false,                                      \
   518           "Trace page size selection and usage.")                           \
   565           "Trace page size selection and usage")                            \
   519                                                                             \
   566                                                                             \
   520   product(bool, UseNUMA, false,                                             \
   567   product(bool, UseNUMA, false,                                             \
   521           "Use NUMA if available")                                          \
   568           "Use NUMA if available")                                          \
   522                                                                             \
   569                                                                             \
   523   product(bool, UseNUMAInterleaving, false,                                 \
   570   product(bool, UseNUMAInterleaving, false,                                 \
   528                                                                             \
   575                                                                             \
   529   product(bool, ForceNUMA, false,                                           \
   576   product(bool, ForceNUMA, false,                                           \
   530           "Force NUMA optimizations on single-node/UMA systems")            \
   577           "Force NUMA optimizations on single-node/UMA systems")            \
   531                                                                             \
   578                                                                             \
   532   product(uintx, NUMAChunkResizeWeight, 20,                                 \
   579   product(uintx, NUMAChunkResizeWeight, 20,                                 \
   533           "Percentage (0-100) used to weigh the current sample when "      \
   580           "Percentage (0-100) used to weigh the current sample when "       \
   534           "computing exponentially decaying average for "                   \
   581           "computing exponentially decaying average for "                   \
   535           "AdaptiveNUMAChunkSizing")                                        \
   582           "AdaptiveNUMAChunkSizing")                                        \
   536                                                                             \
   583                                                                             \
   537   product(uintx, NUMASpaceResizeRate, 1*G,                                  \
   584   product(uintx, NUMASpaceResizeRate, 1*G,                                  \
   538           "Do not reallocate more that this amount per collection")         \
   585           "Do not reallocate more than this amount per collection")         \
   539                                                                             \
   586                                                                             \
   540   product(bool, UseAdaptiveNUMAChunkSizing, true,                           \
   587   product(bool, UseAdaptiveNUMAChunkSizing, true,                           \
   541           "Enable adaptive chunk sizing for NUMA")                          \
   588           "Enable adaptive chunk sizing for NUMA")                          \
   542                                                                             \
   589                                                                             \
   543   product(bool, NUMAStats, false,                                           \
   590   product(bool, NUMAStats, false,                                           \
   550           "True for register window machines (sparc/ia64)")                 \
   597           "True for register window machines (sparc/ia64)")                 \
   551                                                                             \
   598                                                                             \
   552   product(intx, UseSSE, 99,                                                 \
   599   product(intx, UseSSE, 99,                                                 \
   553           "Highest supported SSE instructions set on x86/x64")              \
   600           "Highest supported SSE instructions set on x86/x64")              \
   554                                                                             \
   601                                                                             \
   555   product(bool, UseAES, false,                                               \
   602   product(bool, UseAES, false,                                              \
   556           "Control whether AES instructions can be used on x86/x64")        \
   603           "Control whether AES instructions can be used on x86/x64")        \
   557                                                                             \
   604                                                                             \
   558   product(uintx, LargePageSizeInBytes, 0,                                   \
   605   product(uintx, LargePageSizeInBytes, 0,                                   \
   559           "Large page size (0 to let VM choose the page size")              \
   606           "Large page size (0 to let VM choose the page size)")             \
   560                                                                             \
   607                                                                             \
   561   product(uintx, LargePageHeapSizeThreshold, 128*M,                         \
   608   product(uintx, LargePageHeapSizeThreshold, 128*M,                         \
   562           "Use large pages if max heap is at least this big")               \
   609           "Use large pages if maximum heap is at least this big")           \
   563                                                                             \
   610                                                                             \
   564   product(bool, ForceTimeHighResolution, false,                             \
   611   product(bool, ForceTimeHighResolution, false,                             \
   565           "Using high time resolution(For Win32 only)")                     \
   612           "Using high time resolution (for Win32 only)")                    \
   566                                                                             \
   613                                                                             \
   567   develop(bool, TraceItables, false,                                        \
   614   develop(bool, TraceItables, false,                                        \
   568           "Trace initialization and use of itables")                        \
   615           "Trace initialization and use of itables")                        \
   569                                                                             \
   616                                                                             \
   570   develop(bool, TracePcPatching, false,                                     \
   617   develop(bool, TracePcPatching, false,                                     \
   576   develop(bool, TraceRelocator, false,                                      \
   623   develop(bool, TraceRelocator, false,                                      \
   577           "Trace the bytecode relocator")                                   \
   624           "Trace the bytecode relocator")                                   \
   578                                                                             \
   625                                                                             \
   579   develop(bool, TraceLongCompiles, false,                                   \
   626   develop(bool, TraceLongCompiles, false,                                   \
   580           "Print out every time compilation is longer than "                \
   627           "Print out every time compilation is longer than "                \
   581           "a given threashold")                                             \
   628           "a given threshold")                                              \
   582                                                                             \
   629                                                                             \
   583   develop(bool, SafepointALot, false,                                       \
   630   develop(bool, SafepointALot, false,                                       \
   584           "Generates a lot of safepoints. Works with "                      \
   631           "Generate a lot of safepoints. This works with "                  \
   585           "GuaranteedSafepointInterval")                                    \
   632           "GuaranteedSafepointInterval")                                    \
   586                                                                             \
   633                                                                             \
   587   product_pd(bool, BackgroundCompilation,                                   \
   634   product_pd(bool, BackgroundCompilation,                                   \
   588           "A thread requesting compilation is not blocked during "          \
   635           "A thread requesting compilation is not blocked during "          \
   589           "compilation")                                                    \
   636           "compilation")                                                    \
   590                                                                             \
   637                                                                             \
   591   product(bool, PrintVMQWaitTime, false,                                    \
   638   product(bool, PrintVMQWaitTime, false,                                    \
   592           "Prints out the waiting time in VM operation queue")              \
   639           "Print out the waiting time in VM operation queue")               \
   593                                                                             \
   640                                                                             \
   594   develop(bool, NoYieldsInMicrolock, false,                                 \
   641   develop(bool, NoYieldsInMicrolock, false,                                 \
   595           "Disable yields in microlock")                                    \
   642           "Disable yields in microlock")                                    \
   596                                                                             \
   643                                                                             \
   597   develop(bool, TraceOopMapGeneration, false,                               \
   644   develop(bool, TraceOopMapGeneration, false,                               \
   598           "Shows oopmap generation")                                        \
   645           "Show OopMapGeneration")                                          \
   599                                                                             \
   646                                                                             \
   600   product(bool, MethodFlushing, true,                                       \
   647   product(bool, MethodFlushing, true,                                       \
   601           "Reclamation of zombie and not-entrant methods")                  \
   648           "Reclamation of zombie and not-entrant methods")                  \
   602                                                                             \
   649                                                                             \
   603   develop(bool, VerifyStack, false,                                         \
   650   develop(bool, VerifyStack, false,                                         \
   604           "Verify stack of each thread when it is entering a runtime call") \
   651           "Verify stack of each thread when it is entering a runtime call") \
   605                                                                             \
   652                                                                             \
   606   diagnostic(bool, ForceUnreachable, false,                                 \
   653   diagnostic(bool, ForceUnreachable, false,                                 \
   607           "Make all non code cache addresses to be unreachable with forcing use of 64bit literal fixups") \
   654           "Make all non code cache addresses to be unreachable by "         \
       
   655           "forcing use of 64bit literal fixups")                            \
   608                                                                             \
   656                                                                             \
   609   notproduct(bool, StressDerivedPointers, false,                            \
   657   notproduct(bool, StressDerivedPointers, false,                            \
   610           "Force scavenge when a derived pointers is detected on stack "    \
   658           "Force scavenge when a derived pointer is detected on stack "     \
   611           "after rtm call")                                                 \
   659           "after rtm call")                                                 \
   612                                                                             \
   660                                                                             \
   613   develop(bool, TraceDerivedPointers, false,                                \
   661   develop(bool, TraceDerivedPointers, false,                                \
   614           "Trace traversal of derived pointers on stack")                   \
   662           "Trace traversal of derived pointers on stack")                   \
   615                                                                             \
   663                                                                             \
   624                                                                             \
   672                                                                             \
   625   product(bool, UseInlineCaches, true,                                      \
   673   product(bool, UseInlineCaches, true,                                      \
   626           "Use Inline Caches for virtual calls ")                           \
   674           "Use Inline Caches for virtual calls ")                           \
   627                                                                             \
   675                                                                             \
   628   develop(bool, InlineArrayCopy, true,                                      \
   676   develop(bool, InlineArrayCopy, true,                                      \
   629           "inline arraycopy native that is known to be part of "            \
   677           "Inline arraycopy native that is known to be part of "            \
   630           "base library DLL")                                               \
   678           "base library DLL")                                               \
   631                                                                             \
   679                                                                             \
   632   develop(bool, InlineObjectHash, true,                                     \
   680   develop(bool, InlineObjectHash, true,                                     \
   633           "inline Object::hashCode() native that is known to be part "      \
   681           "Inline Object::hashCode() native that is known to be part "      \
   634           "of base library DLL")                                            \
   682           "of base library DLL")                                            \
   635                                                                             \
   683                                                                             \
   636   develop(bool, InlineNatives, true,                                        \
   684   develop(bool, InlineNatives, true,                                        \
   637           "inline natives that are known to be part of base library DLL")   \
   685           "Inline natives that are known to be part of base library DLL")   \
   638                                                                             \
   686                                                                             \
   639   develop(bool, InlineMathNatives, true,                                    \
   687   develop(bool, InlineMathNatives, true,                                    \
   640           "inline SinD, CosD, etc.")                                        \
   688           "Inline SinD, CosD, etc.")                                        \
   641                                                                             \
   689                                                                             \
   642   develop(bool, InlineClassNatives, true,                                   \
   690   develop(bool, InlineClassNatives, true,                                   \
   643           "inline Class.isInstance, etc")                                   \
   691           "Inline Class.isInstance, etc")                                   \
   644                                                                             \
   692                                                                             \
   645   develop(bool, InlineThreadNatives, true,                                  \
   693   develop(bool, InlineThreadNatives, true,                                  \
   646           "inline Thread.currentThread, etc")                               \
   694           "Inline Thread.currentThread, etc")                               \
   647                                                                             \
   695                                                                             \
   648   develop(bool, InlineUnsafeOps, true,                                      \
   696   develop(bool, InlineUnsafeOps, true,                                      \
   649           "inline memory ops (native methods) from sun.misc.Unsafe")        \
   697           "Inline memory ops (native methods) from sun.misc.Unsafe")        \
   650                                                                             \
   698                                                                             \
   651   product(bool, CriticalJNINatives, true,                                   \
   699   product(bool, CriticalJNINatives, true,                                   \
   652           "check for critical JNI entry points")                            \
   700           "Check for critical JNI entry points")                            \
   653                                                                             \
   701                                                                             \
   654   notproduct(bool, StressCriticalJNINatives, false,                         \
   702   notproduct(bool, StressCriticalJNINatives, false,                         \
   655             "Exercise register saving code in critical natives")            \
   703           "Exercise register saving code in critical natives")              \
   656                                                                             \
   704                                                                             \
   657   product(bool, UseSSE42Intrinsics, false,                                  \
   705   product(bool, UseSSE42Intrinsics, false,                                  \
   658           "SSE4.2 versions of intrinsics")                                  \
   706           "SSE4.2 versions of intrinsics")                                  \
   659                                                                             \
   707                                                                             \
   660   product(bool, UseAESIntrinsics, false,                                    \
   708   product(bool, UseAESIntrinsics, false,                                    \
   661           "use intrinsics for AES versions of crypto")                      \
   709           "Use intrinsics for AES versions of crypto")                      \
   662                                                                             \
   710                                                                             \
   663   product(bool, UseCRC32Intrinsics, false,                                  \
   711   product(bool, UseCRC32Intrinsics, false,                                  \
   664           "use intrinsics for java.util.zip.CRC32")                         \
   712           "use intrinsics for java.util.zip.CRC32")                         \
   665                                                                             \
   713                                                                             \
   666   develop(bool, TraceCallFixup, false,                                      \
   714   develop(bool, TraceCallFixup, false,                                      \
   667           "traces all call fixups")                                         \
   715           "Trace all call fixups")                                          \
   668                                                                             \
   716                                                                             \
   669   develop(bool, DeoptimizeALot, false,                                      \
   717   develop(bool, DeoptimizeALot, false,                                      \
   670           "deoptimize at every exit from the runtime system")               \
   718           "Deoptimize at every exit from the runtime system")               \
   671                                                                             \
   719                                                                             \
   672   notproduct(ccstrlist, DeoptimizeOnlyAt, "",                               \
   720   notproduct(ccstrlist, DeoptimizeOnlyAt, "",                               \
   673           "a comma separated list of bcis to deoptimize at")                \
   721           "A comma separated list of bcis to deoptimize at")                \
   674                                                                             \
   722                                                                             \
   675   product(bool, DeoptimizeRandom, false,                                    \
   723   product(bool, DeoptimizeRandom, false,                                    \
   676           "deoptimize random frames on random exit from the runtime system")\
   724           "Deoptimize random frames on random exit from the runtime system")\
   677                                                                             \
   725                                                                             \
   678   notproduct(bool, ZombieALot, false,                                       \
   726   notproduct(bool, ZombieALot, false,                                       \
   679           "creates zombies (non-entrant) at exit from the runt. system")    \
   727           "Create zombies (non-entrant) at exit from the runtime system")   \
   680                                                                             \
   728                                                                             \
   681   product(bool, UnlinkSymbolsALot, false,                                   \
   729   product(bool, UnlinkSymbolsALot, false,                                   \
   682           "unlink unreferenced symbols from the symbol table at safepoints")\
   730           "Unlink unreferenced symbols from the symbol table at safepoints")\
   683                                                                             \
   731                                                                             \
   684   notproduct(bool, WalkStackALot, false,                                    \
   732   notproduct(bool, WalkStackALot, false,                                    \
   685           "trace stack (no print) at every exit from the runtime system")   \
   733           "Trace stack (no print) at every exit from the runtime system")   \
   686                                                                             \
   734                                                                             \
   687   product(bool, Debugging, false,                                           \
   735   product(bool, Debugging, false,                                           \
   688           "set when executing debug methods in debug.ccp "                  \
   736           "Set when executing debug methods in debug.cpp "                  \
   689           "(to prevent triggering assertions)")                             \
   737           "(to prevent triggering assertions)")                             \
   690                                                                             \
   738                                                                             \
   691   notproduct(bool, StrictSafepointChecks, trueInDebug,                      \
   739   notproduct(bool, StrictSafepointChecks, trueInDebug,                      \
   692           "Enable strict checks that safepoints cannot happen for threads " \
   740           "Enable strict checks that safepoints cannot happen for threads " \
   693           "that used No_Safepoint_Verifier")                                \
   741           "that use No_Safepoint_Verifier")                                 \
   694                                                                             \
   742                                                                             \
   695   notproduct(bool, VerifyLastFrame, false,                                  \
   743   notproduct(bool, VerifyLastFrame, false,                                  \
   696           "Verify oops on last frame on entry to VM")                       \
   744           "Verify oops on last frame on entry to VM")                       \
   697                                                                             \
   745                                                                             \
   698   develop(bool, TraceHandleAllocation, false,                               \
   746   develop(bool, TraceHandleAllocation, false,                               \
   699           "Prints out warnings when suspicious many handles are allocated") \
   747           "Print out warnings when suspiciously many handles are allocated")\
   700                                                                             \
   748                                                                             \
   701   product(bool, UseCompilerSafepoints, true,                                \
   749   product(bool, UseCompilerSafepoints, true,                                \
   702           "Stop at safepoints in compiled code")                            \
   750           "Stop at safepoints in compiled code")                            \
   703                                                                             \
   751                                                                             \
   704   product(bool, FailOverToOldVerifier, true,                                \
   752   product(bool, FailOverToOldVerifier, true,                                \
   705           "fail over to old verifier when split verifier fails")            \
   753           "Fail over to old verifier when split verifier fails")            \
   706                                                                             \
   754                                                                             \
   707   develop(bool, ShowSafepointMsgs, false,                                   \
   755   develop(bool, ShowSafepointMsgs, false,                                   \
   708           "Show msg. about safepoint synch.")                               \
   756           "Show message about safepoint synchronization")                   \
   709                                                                             \
   757                                                                             \
   710   product(bool, SafepointTimeout, false,                                    \
   758   product(bool, SafepointTimeout, false,                                    \
   711           "Time out and warn or fail after SafepointTimeoutDelay "          \
   759           "Time out and warn or fail after SafepointTimeoutDelay "          \
   712           "milliseconds if failed to reach safepoint")                      \
   760           "milliseconds if failed to reach safepoint")                      \
   713                                                                             \
   761                                                                             \
   727                                                                             \
   775                                                                             \
   728   product(bool, TraceSuspendWaitFailures, false,                            \
   776   product(bool, TraceSuspendWaitFailures, false,                            \
   729           "Trace external suspend wait failures")                           \
   777           "Trace external suspend wait failures")                           \
   730                                                                             \
   778                                                                             \
   731   product(bool, MaxFDLimit, true,                                           \
   779   product(bool, MaxFDLimit, true,                                           \
   732           "Bump the number of file descriptors to max in solaris.")         \
   780           "Bump the number of file descriptors to maximum in Solaris")      \
   733                                                                             \
   781                                                                             \
   734   diagnostic(bool, LogEvents, true,                                         \
   782   diagnostic(bool, LogEvents, true,                                         \
   735              "Enable the various ring buffer event logs")                   \
   783           "Enable the various ring buffer event logs")                      \
   736                                                                             \
   784                                                                             \
   737   diagnostic(uintx, LogEventsBufferEntries, 10,                             \
   785   diagnostic(uintx, LogEventsBufferEntries, 10,                             \
   738              "Enable the various ring buffer event logs")                   \
   786           "Number of ring buffer event logs")                               \
   739                                                                             \
   787                                                                             \
   740   product(bool, BytecodeVerificationRemote, true,                           \
   788   product(bool, BytecodeVerificationRemote, true,                           \
   741           "Enables the Java bytecode verifier for remote classes")          \
   789           "Enable the Java bytecode verifier for remote classes")           \
   742                                                                             \
   790                                                                             \
   743   product(bool, BytecodeVerificationLocal, false,                           \
   791   product(bool, BytecodeVerificationLocal, false,                           \
   744           "Enables the Java bytecode verifier for local classes")           \
   792           "Enable the Java bytecode verifier for local classes")            \
   745                                                                             \
   793                                                                             \
   746   develop(bool, ForceFloatExceptions, trueInDebug,                          \
   794   develop(bool, ForceFloatExceptions, trueInDebug,                          \
   747           "Force exceptions on FP stack under/overflow")                    \
   795           "Force exceptions on FP stack under/overflow")                    \
   748                                                                             \
   796                                                                             \
   749   develop(bool, VerifyStackAtCalls, false,                                  \
   797   develop(bool, VerifyStackAtCalls, false,                                  \
   751                                                                             \
   799                                                                             \
   752   develop(bool, TraceJavaAssertions, false,                                 \
   800   develop(bool, TraceJavaAssertions, false,                                 \
   753           "Trace java language assertions")                                 \
   801           "Trace java language assertions")                                 \
   754                                                                             \
   802                                                                             \
   755   notproduct(bool, CheckAssertionStatusDirectives, false,                   \
   803   notproduct(bool, CheckAssertionStatusDirectives, false,                   \
   756           "temporary - see javaClasses.cpp")                                \
   804           "Temporary - see javaClasses.cpp")                                \
   757                                                                             \
   805                                                                             \
   758   notproduct(bool, PrintMallocFree, false,                                  \
   806   notproduct(bool, PrintMallocFree, false,                                  \
   759           "Trace calls to C heap malloc/free allocation")                   \
   807           "Trace calls to C heap malloc/free allocation")                   \
   760                                                                             \
   808                                                                             \
   761   product(bool, PrintOopAddress, false,                                     \
   809   product(bool, PrintOopAddress, false,                                     \
   770   notproduct(bool, ZapDeadLocalsOld, false,                                 \
   818   notproduct(bool, ZapDeadLocalsOld, false,                                 \
   771           "Zap dead locals (old version, zaps all frames when "             \
   819           "Zap dead locals (old version, zaps all frames when "             \
   772           "entering the VM")                                                \
   820           "entering the VM")                                                \
   773                                                                             \
   821                                                                             \
   774   notproduct(bool, CheckOopishValues, false,                                \
   822   notproduct(bool, CheckOopishValues, false,                                \
   775           "Warn if value contains oop ( requires ZapDeadLocals)")           \
   823           "Warn if value contains oop (requires ZapDeadLocals)")            \
   776                                                                             \
   824                                                                             \
   777   develop(bool, UseMallocOnly, false,                                       \
   825   develop(bool, UseMallocOnly, false,                                       \
   778           "use only malloc/free for allocation (no resource area/arena)")   \
   826           "Use only malloc/free for allocation (no resource area/arena)")   \
   779                                                                             \
   827                                                                             \
   780   develop(bool, PrintMalloc, false,                                         \
   828   develop(bool, PrintMalloc, false,                                         \
   781           "print all malloc/free calls")                                    \
   829           "Print all malloc/free calls")                                    \
   782                                                                             \
   830                                                                             \
   783   develop(bool, PrintMallocStatistics, false,                               \
   831   develop(bool, PrintMallocStatistics, false,                               \
   784           "print malloc/free statistics")                                   \
   832           "Print malloc/free statistics")                                   \
   785                                                                             \
   833                                                                             \
   786   develop(bool, ZapResourceArea, trueInDebug,                               \
   834   develop(bool, ZapResourceArea, trueInDebug,                               \
   787           "Zap freed resource/arena space with 0xABABABAB")                 \
   835           "Zap freed resource/arena space with 0xABABABAB")                 \
   788                                                                             \
   836                                                                             \
   789   notproduct(bool, ZapVMHandleArea, trueInDebug,                            \
   837   notproduct(bool, ZapVMHandleArea, trueInDebug,                            \
   791                                                                             \
   839                                                                             \
   792   develop(bool, ZapJNIHandleArea, trueInDebug,                              \
   840   develop(bool, ZapJNIHandleArea, trueInDebug,                              \
   793           "Zap freed JNI handle space with 0xFEFEFEFE")                     \
   841           "Zap freed JNI handle space with 0xFEFEFEFE")                     \
   794                                                                             \
   842                                                                             \
   795   notproduct(bool, ZapStackSegments, trueInDebug,                           \
   843   notproduct(bool, ZapStackSegments, trueInDebug,                           \
   796              "Zap allocated/freed Stack segments with 0xFADFADED")          \
   844           "Zap allocated/freed stack segments with 0xFADFADED")             \
   797                                                                             \
   845                                                                             \
   798   develop(bool, ZapUnusedHeapArea, trueInDebug,                             \
   846   develop(bool, ZapUnusedHeapArea, trueInDebug,                             \
   799           "Zap unused heap space with 0xBAADBABE")                          \
   847           "Zap unused heap space with 0xBAADBABE")                          \
   800                                                                             \
   848                                                                             \
   801   develop(bool, TraceZapUnusedHeapArea, false,                              \
   849   develop(bool, TraceZapUnusedHeapArea, false,                              \
   806                                                                             \
   854                                                                             \
   807   develop(bool, ZapFillerObjects, trueInDebug,                              \
   855   develop(bool, ZapFillerObjects, trueInDebug,                              \
   808           "Zap filler objects with 0xDEAFBABE")                             \
   856           "Zap filler objects with 0xDEAFBABE")                             \
   809                                                                             \
   857                                                                             \
   810   develop(bool, PrintVMMessages, true,                                      \
   858   develop(bool, PrintVMMessages, true,                                      \
   811           "Print vm messages on console")                                   \
   859           "Print VM messages on console")                                   \
   812                                                                             \
   860                                                                             \
   813   product(bool, PrintGCApplicationConcurrentTime, false,                    \
   861   product(bool, PrintGCApplicationConcurrentTime, false,                    \
   814           "Print the time the application has been running")                \
   862           "Print the time the application has been running")                \
   815                                                                             \
   863                                                                             \
   816   product(bool, PrintGCApplicationStoppedTime, false,                       \
   864   product(bool, PrintGCApplicationStoppedTime, false,                       \
   817           "Print the time the application has been stopped")                \
   865           "Print the time the application has been stopped")                \
   818                                                                             \
   866                                                                             \
   819   diagnostic(bool, VerboseVerification, false,                              \
   867   diagnostic(bool, VerboseVerification, false,                              \
   820              "Display detailed verification details")                       \
   868           "Display detailed verification details")                          \
   821                                                                             \
   869                                                                             \
   822   notproduct(uintx, ErrorHandlerTest, 0,                                    \
   870   notproduct(uintx, ErrorHandlerTest, 0,                                    \
   823           "If > 0, provokes an error after VM initialization; the value"    \
   871           "If > 0, provokes an error after VM initialization; the value "   \
   824           "determines which error to provoke.  See test_error_handler()"    \
   872           "determines which error to provoke. See test_error_handler() "    \
   825           "in debug.cpp.")                                                  \
   873           "in debug.cpp.")                                                  \
   826                                                                             \
   874                                                                             \
   827   develop(bool, Verbose, false,                                             \
   875   develop(bool, Verbose, false,                                             \
   828           "Prints additional debugging information from other modes")       \
   876           "Print additional debugging information from other modes")        \
   829                                                                             \
   877                                                                             \
   830   develop(bool, PrintMiscellaneous, false,                                  \
   878   develop(bool, PrintMiscellaneous, false,                                  \
   831           "Prints uncategorized debugging information (requires +Verbose)") \
   879           "Print uncategorized debugging information (requires +Verbose)")  \
   832                                                                             \
   880                                                                             \
   833   develop(bool, WizardMode, false,                                          \
   881   develop(bool, WizardMode, false,                                          \
   834           "Prints much more debugging information")                         \
   882           "Print much more debugging information")                          \
   835                                                                             \
   883                                                                             \
   836   product(bool, ShowMessageBoxOnError, false,                               \
   884   product(bool, ShowMessageBoxOnError, false,                               \
   837           "Keep process alive on VM fatal error")                           \
   885           "Keep process alive on VM fatal error")                           \
   838                                                                             \
   886                                                                             \
   839   product(bool, CreateMinidumpOnCrash, false,                               \
   887   product(bool, CreateMinidumpOnCrash, false,                               \
   841                                                                             \
   889                                                                             \
   842   product_pd(bool, UseOSErrorReporting,                                     \
   890   product_pd(bool, UseOSErrorReporting,                                     \
   843           "Let VM fatal error propagate to the OS (ie. WER on Windows)")    \
   891           "Let VM fatal error propagate to the OS (ie. WER on Windows)")    \
   844                                                                             \
   892                                                                             \
   845   product(bool, SuppressFatalErrorMessage, false,                           \
   893   product(bool, SuppressFatalErrorMessage, false,                           \
   846           "Do NO Fatal Error report [Avoid deadlock]")                      \
   894           "Report NO fatal error message (avoid deadlock)")                 \
   847                                                                             \
   895                                                                             \
   848   product(ccstrlist, OnError, "",                                           \
   896   product(ccstrlist, OnError, "",                                           \
   849           "Run user-defined commands on fatal error; see VMError.cpp "      \
   897           "Run user-defined commands on fatal error; see VMError.cpp "      \
   850           "for examples")                                                   \
   898           "for examples")                                                   \
   851                                                                             \
   899                                                                             \
   852   product(ccstrlist, OnOutOfMemoryError, "",                                \
   900   product(ccstrlist, OnOutOfMemoryError, "",                                \
   853           "Run user-defined commands on first java.lang.OutOfMemoryError")  \
   901           "Run user-defined commands on first java.lang.OutOfMemoryError")  \
   854                                                                             \
   902                                                                             \
   855   manageable(bool, HeapDumpBeforeFullGC, false,                             \
   903   manageable(bool, HeapDumpBeforeFullGC, false,                             \
   856           "Dump heap to file before any major stop-world GC")               \
   904           "Dump heap to file before any major stop-the-world GC")           \
   857                                                                             \
   905                                                                             \
   858   manageable(bool, HeapDumpAfterFullGC, false,                              \
   906   manageable(bool, HeapDumpAfterFullGC, false,                              \
   859           "Dump heap to file after any major stop-world GC")                \
   907           "Dump heap to file after any major stop-the-world GC")            \
   860                                                                             \
   908                                                                             \
   861   manageable(bool, HeapDumpOnOutOfMemoryError, false,                       \
   909   manageable(bool, HeapDumpOnOutOfMemoryError, false,                       \
   862           "Dump heap to file when java.lang.OutOfMemoryError is thrown")    \
   910           "Dump heap to file when java.lang.OutOfMemoryError is thrown")    \
   863                                                                             \
   911                                                                             \
   864   manageable(ccstr, HeapDumpPath, NULL,                                     \
   912   manageable(ccstr, HeapDumpPath, NULL,                                     \
   865           "When HeapDumpOnOutOfMemoryError is on, the path (filename or"    \
   913           "When HeapDumpOnOutOfMemoryError is on, the path (filename or "   \
   866           "directory) of the dump file (defaults to java_pid<pid>.hprof"    \
   914           "directory) of the dump file (defaults to java_pid<pid>.hprof "   \
   867           "in the working directory)")                                      \
   915           "in the working directory)")                                      \
   868                                                                             \
   916                                                                             \
   869   develop(uintx, SegmentedHeapDumpThreshold, 2*G,                           \
   917   develop(uintx, SegmentedHeapDumpThreshold, 2*G,                           \
   870           "Generate a segmented heap dump (JAVA PROFILE 1.0.2 format) "     \
   918           "Generate a segmented heap dump (JAVA PROFILE 1.0.2 format) "     \
   871           "when the heap usage is larger than this")                        \
   919           "when the heap usage is larger than this")                        \
   875                                                                             \
   923                                                                             \
   876   develop(bool, BreakAtWarning, false,                                      \
   924   develop(bool, BreakAtWarning, false,                                      \
   877           "Execute breakpoint upon encountering VM warning")                \
   925           "Execute breakpoint upon encountering VM warning")                \
   878                                                                             \
   926                                                                             \
   879   develop(bool, TraceVMOperation, false,                                    \
   927   develop(bool, TraceVMOperation, false,                                    \
   880           "Trace vm operations")                                            \
   928           "Trace VM operations")                                            \
   881                                                                             \
   929                                                                             \
   882   develop(bool, UseFakeTimers, false,                                       \
   930   develop(bool, UseFakeTimers, false,                                       \
   883           "Tells whether the VM should use system time or a fake timer")    \
   931           "Tell whether the VM should use system time or a fake timer")     \
   884                                                                             \
   932                                                                             \
   885   product(ccstr, NativeMemoryTracking, "off",                               \
   933   product(ccstr, NativeMemoryTracking, "off",                               \
   886           "Native memory tracking options")                                 \
   934           "Native memory tracking options")                                 \
   887                                                                             \
   935                                                                             \
   888   diagnostic(bool, PrintNMTStatistics, false,                               \
   936   diagnostic(bool, PrintNMTStatistics, false,                               \
   889           "Print native memory tracking summary data if it is on")          \
   937           "Print native memory tracking summary data if it is on")          \
   890                                                                             \
   938                                                                             \
   891   diagnostic(bool, AutoShutdownNMT, true,                                   \
   939   diagnostic(bool, AutoShutdownNMT, true,                                   \
   892           "Automatically shutdown native memory tracking under stress "     \
   940           "Automatically shutdown native memory tracking under stress "     \
   893           "situation. When set to false, native memory tracking tries to "  \
   941           "situations. When set to false, native memory tracking tries to " \
   894           "stay alive at the expense of JVM performance")                   \
   942           "stay alive at the expense of JVM performance")                   \
   895                                                                             \
   943                                                                             \
   896   diagnostic(bool, LogCompilation, false,                                   \
   944   diagnostic(bool, LogCompilation, false,                                   \
   897           "Log compilation activity in detail to hotspot.log or LogFile")   \
   945           "Log compilation activity in detail to LogFile")                  \
   898                                                                             \
   946                                                                             \
   899   product(bool, PrintCompilation, false,                                    \
   947   product(bool, PrintCompilation, false,                                    \
   900           "Print compilations")                                             \
   948           "Print compilations")                                             \
   901                                                                             \
   949                                                                             \
   902   diagnostic(bool, TraceNMethodInstalls, false,                             \
   950   diagnostic(bool, TraceNMethodInstalls, false,                             \
   903              "Trace nmethod intallation")                                   \
   951           "Trace nmethod installation")                                     \
   904                                                                             \
   952                                                                             \
   905   diagnostic(intx, ScavengeRootsInCode, 2,                                  \
   953   diagnostic(intx, ScavengeRootsInCode, 2,                                  \
   906              "0: do not allow scavengable oops in the code cache; "         \
   954           "0: do not allow scavengable oops in the code cache; "            \
   907              "1: allow scavenging from the code cache; "                    \
   955           "1: allow scavenging from the code cache; "                       \
   908              "2: emit as many constants as the compiler can see")           \
   956           "2: emit as many constants as the compiler can see")              \
   909                                                                             \
   957                                                                             \
   910   product(bool, AlwaysRestoreFPU, false,                                    \
   958   product(bool, AlwaysRestoreFPU, false,                                    \
   911           "Restore the FPU control word after every JNI call (expensive)")  \
   959           "Restore the FPU control word after every JNI call (expensive)")  \
   912                                                                             \
   960                                                                             \
   913   diagnostic(bool, PrintCompilation2, false,                                \
   961   diagnostic(bool, PrintCompilation2, false,                                \
   924                                                                             \
   972                                                                             \
   925   diagnostic(bool, PrintAssembly, false,                                    \
   973   diagnostic(bool, PrintAssembly, false,                                    \
   926           "Print assembly code (using external disassembler.so)")           \
   974           "Print assembly code (using external disassembler.so)")           \
   927                                                                             \
   975                                                                             \
   928   diagnostic(ccstr, PrintAssemblyOptions, NULL,                             \
   976   diagnostic(ccstr, PrintAssemblyOptions, NULL,                             \
   929           "Options string passed to disassembler.so")                       \
   977           "Print options string passed to disassembler.so")                 \
   930                                                                             \
   978                                                                             \
   931   diagnostic(bool, PrintNMethods, false,                                    \
   979   diagnostic(bool, PrintNMethods, false,                                    \
   932           "Print assembly code for nmethods when generated")                \
   980           "Print assembly code for nmethods when generated")                \
   933                                                                             \
   981                                                                             \
   934   diagnostic(bool, PrintNativeNMethods, false,                              \
   982   diagnostic(bool, PrintNativeNMethods, false,                              \
   945                                                                             \
   993                                                                             \
   946   develop(bool, PrintExceptionHandlers, false,                              \
   994   develop(bool, PrintExceptionHandlers, false,                              \
   947           "Print exception handler tables for all nmethods when generated") \
   995           "Print exception handler tables for all nmethods when generated") \
   948                                                                             \
   996                                                                             \
   949   develop(bool, StressCompiledExceptionHandlers, false,                     \
   997   develop(bool, StressCompiledExceptionHandlers, false,                     \
   950          "Exercise compiled exception handlers")                            \
   998           "Exercise compiled exception handlers")                           \
   951                                                                             \
   999                                                                             \
   952   develop(bool, InterceptOSException, false,                                \
  1000   develop(bool, InterceptOSException, false,                                \
   953           "Starts debugger when an implicit OS (e.g., NULL) "               \
  1001           "Start debugger when an implicit OS (e.g. NULL) "                 \
   954           "exception happens")                                              \
  1002           "exception happens")                                              \
   955                                                                             \
  1003                                                                             \
   956   product(bool, PrintCodeCache, false,                                      \
  1004   product(bool, PrintCodeCache, false,                                      \
   957           "Print the code cache memory usage when exiting")                 \
  1005           "Print the code cache memory usage when exiting")                 \
   958                                                                             \
  1006                                                                             \
   959   develop(bool, PrintCodeCache2, false,                                     \
  1007   develop(bool, PrintCodeCache2, false,                                     \
   960           "Print detailed usage info on the code cache when exiting")       \
  1008           "Print detailed usage information on the code cache when exiting")\
   961                                                                             \
  1009                                                                             \
   962   product(bool, PrintCodeCacheOnCompilation, false,                         \
  1010   product(bool, PrintCodeCacheOnCompilation, false,                         \
   963           "Print the code cache memory usage each time a method is compiled") \
  1011           "Print the code cache memory usage each time a method is "        \
       
  1012           "compiled")                                                       \
   964                                                                             \
  1013                                                                             \
   965   diagnostic(bool, PrintStubCode, false,                                    \
  1014   diagnostic(bool, PrintStubCode, false,                                    \
   966           "Print generated stub code")                                      \
  1015           "Print generated stub code")                                      \
   967                                                                             \
  1016                                                                             \
   968   product(bool, StackTraceInThrowable, true,                                \
  1017   product(bool, StackTraceInThrowable, true,                                \
   970                                                                             \
  1019                                                                             \
   971   product(bool, OmitStackTraceInFastThrow, true,                            \
  1020   product(bool, OmitStackTraceInFastThrow, true,                            \
   972           "Omit backtraces for some 'hot' exceptions in optimized code")    \
  1021           "Omit backtraces for some 'hot' exceptions in optimized code")    \
   973                                                                             \
  1022                                                                             \
   974   product(bool, ProfilerPrintByteCodeStatistics, false,                     \
  1023   product(bool, ProfilerPrintByteCodeStatistics, false,                     \
   975           "Prints byte code statictics when dumping profiler output")       \
  1024           "Print bytecode statistics when dumping profiler output")         \
   976                                                                             \
  1025                                                                             \
   977   product(bool, ProfilerRecordPC, false,                                    \
  1026   product(bool, ProfilerRecordPC, false,                                    \
   978           "Collects tick for each 16 byte interval of compiled code")       \
  1027           "Collect ticks for each 16 byte interval of compiled code")       \
   979                                                                             \
  1028                                                                             \
   980   product(bool, ProfileVM, false,                                           \
  1029   product(bool, ProfileVM, false,                                           \
   981           "Profiles ticks that fall within VM (either in the VM Thread "    \
  1030           "Profile ticks that fall within VM (either in the VM Thread "     \
   982           "or VM code called through stubs)")                               \
  1031           "or VM code called through stubs)")                               \
   983                                                                             \
  1032                                                                             \
   984   product(bool, ProfileIntervals, false,                                    \
  1033   product(bool, ProfileIntervals, false,                                    \
   985           "Prints profiles for each interval (see ProfileIntervalsTicks)")  \
  1034           "Print profiles for each interval (see ProfileIntervalsTicks)")   \
   986                                                                             \
  1035                                                                             \
   987   notproduct(bool, ProfilerCheckIntervals, false,                           \
  1036   notproduct(bool, ProfilerCheckIntervals, false,                           \
   988           "Collect and print info on spacing of profiler ticks")            \
  1037           "Collect and print information on spacing of profiler ticks")     \
   989                                                                             \
  1038                                                                             \
   990   develop(bool, PrintJVMWarnings, false,                                    \
  1039   develop(bool, PrintJVMWarnings, false,                                    \
   991           "Prints warnings for unimplemented JVM functions")                \
  1040           "Print warnings for unimplemented JVM functions")                 \
   992                                                                             \
  1041                                                                             \
   993   product(bool, PrintWarnings, true,                                        \
  1042   product(bool, PrintWarnings, true,                                        \
   994           "Prints JVM warnings to output stream")                           \
  1043           "Print JVM warnings to output stream")                            \
   995                                                                             \
  1044                                                                             \
   996   notproduct(uintx, WarnOnStalledSpinLock, 0,                               \
  1045   notproduct(uintx, WarnOnStalledSpinLock, 0,                               \
   997           "Prints warnings for stalled SpinLocks")                          \
  1046           "Print warnings for stalled SpinLocks")                           \
   998                                                                             \
  1047                                                                             \
   999   product(bool, RegisterFinalizersAtInit, true,                             \
  1048   product(bool, RegisterFinalizersAtInit, true,                             \
  1000           "Register finalizable objects at end of Object.<init> or "        \
  1049           "Register finalizable objects at end of Object.<init> or "        \
  1001           "after allocation")                                               \
  1050           "after allocation")                                               \
  1002                                                                             \
  1051                                                                             \
  1003   develop(bool, RegisterReferences, true,                                   \
  1052   develop(bool, RegisterReferences, true,                                   \
  1004           "Tells whether the VM should register soft/weak/final/phantom "   \
  1053           "Tell whether the VM should register soft/weak/final/phantom "    \
  1005           "references")                                                     \
  1054           "references")                                                     \
  1006                                                                             \
  1055                                                                             \
  1007   develop(bool, IgnoreRewrites, false,                                      \
  1056   develop(bool, IgnoreRewrites, false,                                      \
  1008           "Supress rewrites of bytecodes in the oopmap generator. "         \
  1057           "Suppress rewrites of bytecodes in the oopmap generator. "        \
  1009           "This is unsafe!")                                                \
  1058           "This is unsafe!")                                                \
  1010                                                                             \
  1059                                                                             \
  1011   develop(bool, PrintCodeCacheExtension, false,                             \
  1060   develop(bool, PrintCodeCacheExtension, false,                             \
  1012           "Print extension of code cache")                                  \
  1061           "Print extension of code cache")                                  \
  1013                                                                             \
  1062                                                                             \
  1014   develop(bool, UsePrivilegedStack, true,                                   \
  1063   develop(bool, UsePrivilegedStack, true,                                   \
  1015           "Enable the security JVM functions")                              \
  1064           "Enable the security JVM functions")                              \
  1016                                                                             \
  1065                                                                             \
  1017   develop(bool, ProtectionDomainVerification, true,                         \
  1066   develop(bool, ProtectionDomainVerification, true,                         \
  1018           "Verifies protection domain before resolution in system "         \
  1067           "Verify protection domain before resolution in system dictionary")\
  1019           "dictionary")                                                     \
       
  1020                                                                             \
  1068                                                                             \
  1021   product(bool, ClassUnloading, true,                                       \
  1069   product(bool, ClassUnloading, true,                                       \
  1022           "Do unloading of classes")                                        \
  1070           "Do unloading of classes")                                        \
  1023                                                                             \
  1071                                                                             \
  1024   develop(bool, DisableStartThread, false,                                  \
  1072   develop(bool, DisableStartThread, false,                                  \
  1027                                                                             \
  1075                                                                             \
  1028   develop(bool, MemProfiling, false,                                        \
  1076   develop(bool, MemProfiling, false,                                        \
  1029           "Write memory usage profiling to log file")                       \
  1077           "Write memory usage profiling to log file")                       \
  1030                                                                             \
  1078                                                                             \
  1031   notproduct(bool, PrintSystemDictionaryAtExit, false,                      \
  1079   notproduct(bool, PrintSystemDictionaryAtExit, false,                      \
  1032           "Prints the system dictionary at exit")                           \
  1080           "Print the system dictionary at exit")                            \
  1033                                                                             \
  1081                                                                             \
  1034   experimental(intx, PredictedLoadedClassCount, 0,                          \
  1082   experimental(intx, PredictedLoadedClassCount, 0,                          \
  1035           "Experimental: Tune loaded class cache starting size.")           \
  1083           "Experimental: Tune loaded class cache starting size")            \
  1036                                                                             \
  1084                                                                             \
  1037   diagnostic(bool, UnsyncloadClass, false,                                  \
  1085   diagnostic(bool, UnsyncloadClass, false,                                  \
  1038           "Unstable: VM calls loadClass unsynchronized. Custom "            \
  1086           "Unstable: VM calls loadClass unsynchronized. Custom "            \
  1039           "class loader  must call VM synchronized for findClass "          \
  1087           "class loader must call VM synchronized for findClass "           \
  1040           "and defineClass.")                                               \
  1088           "and defineClass.")                                               \
  1041                                                                             \
  1089                                                                             \
  1042   product(bool, AlwaysLockClassLoader, false,                               \
  1090   product(bool, AlwaysLockClassLoader, false,                               \
  1043           "Require the VM to acquire the class loader lock before calling " \
  1091           "Require the VM to acquire the class loader lock before calling " \
  1044           "loadClass() even for class loaders registering "                 \
  1092           "loadClass() even for class loaders registering "                 \
  1050                                                                             \
  1098                                                                             \
  1051   product(bool, MustCallLoadClassInternal, false,                           \
  1099   product(bool, MustCallLoadClassInternal, false,                           \
  1052           "Call loadClassInternal() rather than loadClass()")               \
  1100           "Call loadClassInternal() rather than loadClass()")               \
  1053                                                                             \
  1101                                                                             \
  1054   product_pd(bool, DontYieldALot,                                           \
  1102   product_pd(bool, DontYieldALot,                                           \
  1055           "Throw away obvious excess yield calls (for SOLARIS only)")       \
  1103           "Throw away obvious excess yield calls (for Solaris only)")       \
  1056                                                                             \
  1104                                                                             \
  1057   product_pd(bool, ConvertSleepToYield,                                     \
  1105   product_pd(bool, ConvertSleepToYield,                                     \
  1058           "Converts sleep(0) to thread yield "                              \
  1106           "Convert sleep(0) to thread yield "                               \
  1059           "(may be off for SOLARIS to improve GUI)")                        \
  1107           "(may be off for Solaris to improve GUI)")                        \
  1060                                                                             \
  1108                                                                             \
  1061   product(bool, ConvertYieldToSleep, false,                                 \
  1109   product(bool, ConvertYieldToSleep, false,                                 \
  1062           "Converts yield to a sleep of MinSleepInterval to simulate Win32 "\
  1110           "Convert yield to a sleep of MinSleepInterval to simulate Win32 " \
  1063           "behavior (SOLARIS only)")                                        \
  1111           "behavior (Solaris only)")                                        \
  1064                                                                             \
  1112                                                                             \
  1065   product(bool, UseBoundThreads, true,                                      \
  1113   product(bool, UseBoundThreads, true,                                      \
  1066           "Bind user level threads to kernel threads (for SOLARIS only)")   \
  1114           "Bind user level threads to kernel threads (for Solaris only)")   \
  1067                                                                             \
  1115                                                                             \
  1068   develop(bool, UseDetachedThreads, true,                                   \
  1116   develop(bool, UseDetachedThreads, true,                                   \
  1069           "Use detached threads that are recycled upon termination "        \
  1117           "Use detached threads that are recycled upon termination "        \
  1070           "(for SOLARIS only)")                                             \
  1118           "(for Solaris only)")                                             \
  1071                                                                             \
  1119                                                                             \
  1072   product(bool, UseLWPSynchronization, true,                                \
  1120   product(bool, UseLWPSynchronization, true,                                \
  1073           "Use LWP-based instead of libthread-based synchronization "       \
  1121           "Use LWP-based instead of libthread-based synchronization "       \
  1074           "(SPARC only)")                                                   \
  1122           "(SPARC only)")                                                   \
  1075                                                                             \
  1123                                                                             \
  1076   product(ccstr, SyncKnobs, NULL,                                           \
  1124   product(ccstr, SyncKnobs, NULL,                                           \
  1077           "(Unstable) Various monitor synchronization tunables")            \
  1125           "(Unstable) Various monitor synchronization tunables")            \
  1078                                                                             \
  1126                                                                             \
  1079   product(intx, EmitSync, 0,                                                \
  1127   product(intx, EmitSync, 0,                                                \
  1080           "(Unsafe,Unstable) "                                              \
  1128           "(Unsafe, Unstable) "                                             \
  1081           " Controls emission of inline sync fast-path code")               \
  1129           "Control emission of inline sync fast-path code")                 \
  1082                                                                             \
  1130                                                                             \
  1083   product(intx, MonitorBound, 0, "Bound Monitor population")                \
  1131   product(intx, MonitorBound, 0, "Bound Monitor population")                \
  1084                                                                             \
  1132                                                                             \
  1085   product(bool, MonitorInUseLists, false, "Track Monitors for Deflation")   \
  1133   product(bool, MonitorInUseLists, false, "Track Monitors for Deflation")   \
  1086                                                                             \
  1134                                                                             \
  1087   product(intx, SyncFlags, 0, "(Unsafe,Unstable) Experimental Sync flags" ) \
  1135   product(intx, SyncFlags, 0, "(Unsafe, Unstable) Experimental Sync flags") \
  1088                                                                             \
  1136                                                                             \
  1089   product(intx, SyncVerbose, 0, "(Unstable)" )                              \
  1137   product(intx, SyncVerbose, 0, "(Unstable)")                               \
  1090                                                                             \
  1138                                                                             \
  1091   product(intx, ClearFPUAtPark, 0, "(Unsafe,Unstable)" )                    \
  1139   product(intx, ClearFPUAtPark, 0, "(Unsafe, Unstable)")                    \
  1092                                                                             \
  1140                                                                             \
  1093   product(intx, hashCode, 5,                                                \
  1141   product(intx, hashCode, 5,                                                \
  1094          "(Unstable) select hashCode generation algorithm" )                \
  1142           "(Unstable) select hashCode generation algorithm")                \
  1095                                                                             \
  1143                                                                             \
  1096   product(intx, WorkAroundNPTLTimedWaitHang, 1,                             \
  1144   product(intx, WorkAroundNPTLTimedWaitHang, 1,                             \
  1097          "(Unstable, Linux-specific)"                                       \
  1145           "(Unstable, Linux-specific) "                                     \
  1098          " avoid NPTL-FUTEX hang pthread_cond_timedwait" )                  \
  1146           "avoid NPTL-FUTEX hang pthread_cond_timedwait")                   \
  1099                                                                             \
  1147                                                                             \
  1100   product(bool, FilterSpuriousWakeups, true,                                \
  1148   product(bool, FilterSpuriousWakeups, true,                                \
  1101           "Prevent spurious or premature wakeups from object.wait "         \
  1149           "Prevent spurious or premature wakeups from object.wait "         \
  1102           "(Solaris only)")                                                 \
  1150           "(Solaris only)")                                                 \
  1103                                                                             \
  1151                                                                             \
  1104   product(intx, NativeMonitorTimeout, -1, "(Unstable)" )                    \
  1152   product(intx, NativeMonitorTimeout, -1, "(Unstable)")                     \
  1105   product(intx, NativeMonitorFlags, 0, "(Unstable)" )                       \
  1153                                                                             \
  1106   product(intx, NativeMonitorSpinLimit, 20, "(Unstable)" )                  \
  1154   product(intx, NativeMonitorFlags, 0, "(Unstable)")                        \
       
  1155                                                                             \
       
  1156   product(intx, NativeMonitorSpinLimit, 20, "(Unstable)")                   \
  1107                                                                             \
  1157                                                                             \
  1108   develop(bool, UsePthreads, false,                                         \
  1158   develop(bool, UsePthreads, false,                                         \
  1109           "Use pthread-based instead of libthread-based synchronization "   \
  1159           "Use pthread-based instead of libthread-based synchronization "   \
  1110           "(SPARC only)")                                                   \
  1160           "(SPARC only)")                                                   \
  1111                                                                             \
  1161                                                                             \
  1112   product(bool, AdjustConcurrency, false,                                   \
  1162   product(bool, AdjustConcurrency, false,                                   \
  1113           "call thr_setconcurrency at thread create time to avoid "         \
  1163           "Call thr_setconcurrency at thread creation time to avoid "       \
  1114           "LWP starvation on MP systems (For Solaris Only)")                \
  1164           "LWP starvation on MP systems (for Solaris Only)")                \
  1115                                                                             \
  1165                                                                             \
  1116   product(bool, ReduceSignalUsage, false,                                   \
  1166   product(bool, ReduceSignalUsage, false,                                   \
  1117           "Reduce the use of OS signals in Java and/or the VM")             \
  1167           "Reduce the use of OS signals in Java and/or the VM")             \
  1118                                                                             \
  1168                                                                             \
  1119   develop_pd(bool, ShareVtableStubs,                                        \
  1169   develop_pd(bool, ShareVtableStubs,                                        \
  1120           "Share vtable stubs (smaller code but worse branch prediction")   \
  1170           "Share vtable stubs (smaller code but worse branch prediction")   \
  1121                                                                             \
  1171                                                                             \
  1122   develop(bool, LoadLineNumberTables, true,                                 \
  1172   develop(bool, LoadLineNumberTables, true,                                 \
  1123           "Tells whether the class file parser loads line number tables")   \
  1173           "Tell whether the class file parser loads line number tables")    \
  1124                                                                             \
  1174                                                                             \
  1125   develop(bool, LoadLocalVariableTables, true,                              \
  1175   develop(bool, LoadLocalVariableTables, true,                              \
  1126           "Tells whether the class file parser loads local variable tables")\
  1176           "Tell whether the class file parser loads local variable tables") \
  1127                                                                             \
  1177                                                                             \
  1128   develop(bool, LoadLocalVariableTypeTables, true,                          \
  1178   develop(bool, LoadLocalVariableTypeTables, true,                          \
  1129           "Tells whether the class file parser loads local variable type tables")\
  1179           "Tell whether the class file parser loads local variable type"    \
       
  1180           "tables")                                                         \
  1130                                                                             \
  1181                                                                             \
  1131   product(bool, AllowUserSignalHandlers, false,                             \
  1182   product(bool, AllowUserSignalHandlers, false,                             \
  1132           "Do not complain if the application installs signal handlers "    \
  1183           "Do not complain if the application installs signal handlers "    \
  1133           "(Solaris & Linux only)")                                         \
  1184           "(Solaris & Linux only)")                                         \
  1134                                                                             \
  1185                                                                             \
  1155   product(bool, UseFastJNIAccessors, true,                                  \
  1206   product(bool, UseFastJNIAccessors, true,                                  \
  1156           "Use optimized versions of Get<Primitive>Field")                  \
  1207           "Use optimized versions of Get<Primitive>Field")                  \
  1157                                                                             \
  1208                                                                             \
  1158   product(bool, EagerXrunInit, false,                                       \
  1209   product(bool, EagerXrunInit, false,                                       \
  1159           "Eagerly initialize -Xrun libraries; allows startup profiling, "  \
  1210           "Eagerly initialize -Xrun libraries; allows startup profiling, "  \
  1160           " but not all -Xrun libraries may support the state of the VM at this time") \
  1211           "but not all -Xrun libraries may support the state of the VM "    \
       
  1212           "at this time")                                                   \
  1161                                                                             \
  1213                                                                             \
  1162   product(bool, PreserveAllAnnotations, false,                              \
  1214   product(bool, PreserveAllAnnotations, false,                              \
  1163           "Preserve RuntimeInvisibleAnnotations as well as RuntimeVisibleAnnotations") \
  1215           "Preserve RuntimeInvisibleAnnotations as well "                   \
       
  1216           "as RuntimeVisibleAnnotations")                                   \
  1164                                                                             \
  1217                                                                             \
  1165   develop(uintx, PreallocatedOutOfMemoryErrorCount, 4,                      \
  1218   develop(uintx, PreallocatedOutOfMemoryErrorCount, 4,                      \
  1166           "Number of OutOfMemoryErrors preallocated with backtrace")        \
  1219           "Number of OutOfMemoryErrors preallocated with backtrace")        \
  1167                                                                             \
  1220                                                                             \
  1168   product(bool, LazyBootClassLoader, true,                                  \
  1221   product(bool, LazyBootClassLoader, true,                                  \
  1233                                                                             \
  1286                                                                             \
  1234   product(intx, TraceRedefineClasses, 0,                                    \
  1287   product(intx, TraceRedefineClasses, 0,                                    \
  1235           "Trace level for JVMTI RedefineClasses")                          \
  1288           "Trace level for JVMTI RedefineClasses")                          \
  1236                                                                             \
  1289                                                                             \
  1237   develop(bool, StressMethodComparator, false,                              \
  1290   develop(bool, StressMethodComparator, false,                              \
  1238           "run the MethodComparator on all loaded methods")                 \
  1291           "Run the MethodComparator on all loaded methods")                 \
  1239                                                                             \
  1292                                                                             \
  1240   /* change to false by default sometime after Mustang */                   \
  1293   /* change to false by default sometime after Mustang */                   \
  1241   product(bool, VerifyMergedCPBytecodes, true,                              \
  1294   product(bool, VerifyMergedCPBytecodes, true,                              \
  1242           "Verify bytecodes after RedefineClasses constant pool merging")   \
  1295           "Verify bytecodes after RedefineClasses constant pool merging")   \
  1243                                                                             \
  1296                                                                             \
  1267                                                                             \
  1320                                                                             \
  1268   develop(bool, TraceDependencies, false,                                   \
  1321   develop(bool, TraceDependencies, false,                                   \
  1269           "Trace dependencies")                                             \
  1322           "Trace dependencies")                                             \
  1270                                                                             \
  1323                                                                             \
  1271   develop(bool, VerifyDependencies, trueInDebug,                            \
  1324   develop(bool, VerifyDependencies, trueInDebug,                            \
  1272          "Exercise and verify the compilation dependency mechanism")        \
  1325           "Exercise and verify the compilation dependency mechanism")       \
  1273                                                                             \
  1326                                                                             \
  1274   develop(bool, TraceNewOopMapGeneration, false,                            \
  1327   develop(bool, TraceNewOopMapGeneration, false,                            \
  1275           "Trace OopMapGeneration")                                         \
  1328           "Trace OopMapGeneration")                                         \
  1276                                                                             \
  1329                                                                             \
  1277   develop(bool, TraceNewOopMapGenerationDetailed, false,                    \
  1330   develop(bool, TraceNewOopMapGenerationDetailed, false,                    \
  1285                                                                             \
  1338                                                                             \
  1286   develop(bool, TraceMonitorMismatch, false,                                \
  1339   develop(bool, TraceMonitorMismatch, false,                                \
  1287           "Trace monitor matching failures during OopMapGeneration")        \
  1340           "Trace monitor matching failures during OopMapGeneration")        \
  1288                                                                             \
  1341                                                                             \
  1289   develop(bool, TraceOopMapRewrites, false,                                 \
  1342   develop(bool, TraceOopMapRewrites, false,                                 \
  1290           "Trace rewritting of method oops during oop map generation")      \
  1343           "Trace rewriting of method oops during oop map generation")       \
  1291                                                                             \
  1344                                                                             \
  1292   develop(bool, TraceSafepoint, false,                                      \
  1345   develop(bool, TraceSafepoint, false,                                      \
  1293           "Trace safepoint operations")                                     \
  1346           "Trace safepoint operations")                                     \
  1294                                                                             \
  1347                                                                             \
  1295   develop(bool, TraceICBuffer, false,                                       \
  1348   develop(bool, TraceICBuffer, false,                                       \
  1303                                                                             \
  1356                                                                             \
  1304   develop(bool, TraceStartupTime, false,                                    \
  1357   develop(bool, TraceStartupTime, false,                                    \
  1305           "Trace setup time")                                               \
  1358           "Trace setup time")                                               \
  1306                                                                             \
  1359                                                                             \
  1307   develop(bool, TraceProtectionDomainVerification, false,                   \
  1360   develop(bool, TraceProtectionDomainVerification, false,                   \
  1308           "Trace protection domain verifcation")                            \
  1361           "Trace protection domain verification")                           \
  1309                                                                             \
  1362                                                                             \
  1310   develop(bool, TraceClearedExceptions, false,                              \
  1363   develop(bool, TraceClearedExceptions, false,                              \
  1311           "Prints when an exception is forcibly cleared")                   \
  1364           "Print when an exception is forcibly cleared")                    \
  1312                                                                             \
  1365                                                                             \
  1313   product(bool, TraceClassResolution, false,                                \
  1366   product(bool, TraceClassResolution, false,                                \
  1314           "Trace all constant pool resolutions (for debugging)")            \
  1367           "Trace all constant pool resolutions (for debugging)")            \
  1315                                                                             \
  1368                                                                             \
  1316   product(bool, TraceBiasedLocking, false,                                  \
  1369   product(bool, TraceBiasedLocking, false,                                  \
  1320           "Trace monitor inflation in JVM")                                 \
  1373           "Trace monitor inflation in JVM")                                 \
  1321                                                                             \
  1374                                                                             \
  1322   /* gc */                                                                  \
  1375   /* gc */                                                                  \
  1323                                                                             \
  1376                                                                             \
  1324   product(bool, UseSerialGC, false,                                         \
  1377   product(bool, UseSerialGC, false,                                         \
  1325           "Use the serial garbage collector")                               \
  1378           "Use the Serial garbage collector")                               \
  1326                                                                             \
  1379                                                                             \
  1327   product(bool, UseG1GC, false,                                             \
  1380   product(bool, UseG1GC, false,                                             \
  1328           "Use the Garbage-First garbage collector")                        \
  1381           "Use the Garbage-First garbage collector")                        \
  1329                                                                             \
  1382                                                                             \
  1330   product(bool, UseParallelGC, false,                                       \
  1383   product(bool, UseParallelGC, false,                                       \
  1339                                                                             \
  1392                                                                             \
  1340   product(uintx, HeapFirstMaximumCompactionCount, 3,                        \
  1393   product(uintx, HeapFirstMaximumCompactionCount, 3,                        \
  1341           "The collection count for the first maximum compaction")          \
  1394           "The collection count for the first maximum compaction")          \
  1342                                                                             \
  1395                                                                             \
  1343   product(bool, UseMaximumCompactionOnSystemGC, true,                       \
  1396   product(bool, UseMaximumCompactionOnSystemGC, true,                       \
  1344           "In the Parallel Old garbage collector maximum compaction for "   \
  1397           "Use maximum compaction in the Parallel Old garbage collector "   \
  1345           "a system GC")                                                    \
  1398           "for a system GC")                                                \
  1346                                                                             \
  1399                                                                             \
  1347   product(uintx, ParallelOldDeadWoodLimiterMean, 50,                        \
  1400   product(uintx, ParallelOldDeadWoodLimiterMean, 50,                        \
  1348           "The mean used by the par compact dead wood"                      \
  1401           "The mean used by the parallel compact dead wood "                \
  1349           "limiter (a number between 0-100).")                              \
  1402           "limiter (a number between 0-100)")                               \
  1350                                                                             \
  1403                                                                             \
  1351   product(uintx, ParallelOldDeadWoodLimiterStdDev, 80,                      \
  1404   product(uintx, ParallelOldDeadWoodLimiterStdDev, 80,                      \
  1352           "The standard deviation used by the par compact dead wood"        \
  1405           "The standard deviation used by the parallel compact dead wood "  \
  1353           "limiter (a number between 0-100).")                              \
  1406           "limiter (a number between 0-100)")                               \
  1354                                                                             \
  1407                                                                             \
  1355   product(uintx, ParallelGCThreads, 0,                                      \
  1408   product(uintx, ParallelGCThreads, 0,                                      \
  1356           "Number of parallel threads parallel gc will use")                \
  1409           "Number of parallel threads parallel gc will use")                \
  1357                                                                             \
  1410                                                                             \
  1358   product(bool, UseDynamicNumberOfGCThreads, false,                         \
  1411   product(bool, UseDynamicNumberOfGCThreads, false,                         \
  1359           "Dynamically choose the number of parallel threads "              \
  1412           "Dynamically choose the number of parallel threads "              \
  1360           "parallel gc will use")                                           \
  1413           "parallel gc will use")                                           \
  1361                                                                             \
  1414                                                                             \
  1362   diagnostic(bool, ForceDynamicNumberOfGCThreads, false,                    \
  1415   diagnostic(bool, ForceDynamicNumberOfGCThreads, false,                    \
  1363           "Force dynamic selection of the number of"                        \
  1416           "Force dynamic selection of the number of "                       \
  1364           "parallel threads parallel gc will use to aid debugging")         \
  1417           "parallel threads parallel gc will use to aid debugging")         \
  1365                                                                             \
  1418                                                                             \
  1366   product(uintx, HeapSizePerGCThread, ScaleForWordSize(64*M),               \
  1419   product(uintx, HeapSizePerGCThread, ScaleForWordSize(64*M),               \
  1367           "Size of heap (bytes) per GC thread used in calculating the "     \
  1420           "Size of heap (bytes) per GC thread used in calculating the "     \
  1368           "number of GC threads")                                           \
  1421           "number of GC threads")                                           \
  1369                                                                             \
  1422                                                                             \
  1370   product(bool, TraceDynamicGCThreads, false,                               \
  1423   product(bool, TraceDynamicGCThreads, false,                               \
  1371           "Trace the dynamic GC thread usage")                              \
  1424           "Trace the dynamic GC thread usage")                              \
  1372                                                                             \
  1425                                                                             \
  1373   develop(bool, ParallelOldGCSplitALot, false,                              \
  1426   develop(bool, ParallelOldGCSplitALot, false,                              \
  1374           "Provoke splitting (copying data from a young gen space to"       \
  1427           "Provoke splitting (copying data from a young gen space to "      \
  1375           "multiple destination spaces)")                                   \
  1428           "multiple destination spaces)")                                   \
  1376                                                                             \
  1429                                                                             \
  1377   develop(uintx, ParallelOldGCSplitInterval, 3,                             \
  1430   develop(uintx, ParallelOldGCSplitInterval, 3,                             \
  1378           "How often to provoke splitting a young gen space")               \
  1431           "How often to provoke splitting a young gen space")               \
  1379                                                                             \
  1432                                                                             \
  1380   product(uintx, ConcGCThreads, 0,                                          \
  1433   product(uintx, ConcGCThreads, 0,                                          \
  1381           "Number of threads concurrent gc will use")                       \
  1434           "Number of threads concurrent gc will use")                       \
  1382                                                                             \
  1435                                                                             \
  1383   product(uintx, YoungPLABSize, 4096,                                       \
  1436   product(uintx, YoungPLABSize, 4096,                                       \
  1384           "Size of young gen promotion labs (in HeapWords)")                \
  1437           "Size of young gen promotion LAB's (in HeapWords)")               \
  1385                                                                             \
  1438                                                                             \
  1386   product(uintx, OldPLABSize, 1024,                                         \
  1439   product(uintx, OldPLABSize, 1024,                                         \
  1387           "Size of old gen promotion labs (in HeapWords)")                  \
  1440           "Size of old gen promotion LAB's (in HeapWords)")                 \
  1388                                                                             \
  1441                                                                             \
  1389   product(uintx, GCTaskTimeStampEntries, 200,                               \
  1442   product(uintx, GCTaskTimeStampEntries, 200,                               \
  1390           "Number of time stamp entries per gc worker thread")              \
  1443           "Number of time stamp entries per gc worker thread")              \
  1391                                                                             \
  1444                                                                             \
  1392   product(bool, AlwaysTenure, false,                                        \
  1445   product(bool, AlwaysTenure, false,                                        \
  1393           "Always tenure objects in eden. (ParallelGC only)")               \
  1446           "Always tenure objects in eden (ParallelGC only)")                \
  1394                                                                             \
  1447                                                                             \
  1395   product(bool, NeverTenure, false,                                         \
  1448   product(bool, NeverTenure, false,                                         \
  1396           "Never tenure objects in eden, May tenure on overflow "           \
  1449           "Never tenure objects in eden, may tenure on overflow "           \
  1397           "(ParallelGC only)")                                              \
  1450           "(ParallelGC only)")                                              \
  1398                                                                             \
  1451                                                                             \
  1399   product(bool, ScavengeBeforeFullGC, true,                                 \
  1452   product(bool, ScavengeBeforeFullGC, true,                                 \
  1400           "Scavenge youngest generation before each full GC, "              \
  1453           "Scavenge youngest generation before each full GC, "              \
  1401           "used with UseParallelGC")                                        \
  1454           "used with UseParallelGC")                                        \
  1402                                                                             \
  1455                                                                             \
  1403   develop(bool, ScavengeWithObjectsInToSpace, false,                        \
  1456   develop(bool, ScavengeWithObjectsInToSpace, false,                        \
  1404           "Allow scavenges to occur when to_space contains objects.")       \
  1457           "Allow scavenges to occur when to-space contains objects")        \
  1405                                                                             \
  1458                                                                             \
  1406   product(bool, UseConcMarkSweepGC, false,                                  \
  1459   product(bool, UseConcMarkSweepGC, false,                                  \
  1407           "Use Concurrent Mark-Sweep GC in the old generation")             \
  1460           "Use Concurrent Mark-Sweep GC in the old generation")             \
  1408                                                                             \
  1461                                                                             \
  1409   product(bool, ExplicitGCInvokesConcurrent, false,                         \
  1462   product(bool, ExplicitGCInvokesConcurrent, false,                         \
  1410           "A System.gc() request invokes a concurrent collection;"          \
  1463           "A System.gc() request invokes a concurrent collection; "         \
  1411           " (effective only when UseConcMarkSweepGC)")                      \
  1464           "(effective only when UseConcMarkSweepGC)")                       \
  1412                                                                             \
  1465                                                                             \
  1413   product(bool, ExplicitGCInvokesConcurrentAndUnloadsClasses, false,        \
  1466   product(bool, ExplicitGCInvokesConcurrentAndUnloadsClasses, false,        \
  1414           "A System.gc() request invokes a concurrent collection and "      \
  1467           "A System.gc() request invokes a concurrent collection and "      \
  1415           "also unloads classes during such a concurrent gc cycle "         \
  1468           "also unloads classes during such a concurrent gc cycle "         \
  1416           "(effective only when UseConcMarkSweepGC)")                       \
  1469           "(effective only when UseConcMarkSweepGC)")                       \
  1417                                                                             \
  1470                                                                             \
  1418   product(bool, GCLockerInvokesConcurrent, false,                           \
  1471   product(bool, GCLockerInvokesConcurrent, false,                           \
  1419           "The exit of a JNI CS necessitating a scavenge also"              \
  1472           "The exit of a JNI critical section necessitating a scavenge, "   \
  1420           " kicks off a bkgrd concurrent collection")                       \
  1473           "also kicks off a background concurrent collection")              \
  1421                                                                             \
  1474                                                                             \
  1422   product(uintx, GCLockerEdenExpansionPercent, 5,                           \
  1475   product(uintx, GCLockerEdenExpansionPercent, 5,                           \
  1423           "How much the GC can expand the eden by while the GC locker  "    \
  1476           "How much the GC can expand the eden by while the GC locker "     \
  1424           "is active (as a percentage)")                                    \
  1477           "is active (as a percentage)")                                    \
  1425                                                                             \
  1478                                                                             \
  1426   diagnostic(intx, GCLockerRetryAllocationCount, 2,                         \
  1479   diagnostic(intx, GCLockerRetryAllocationCount, 2,                         \
  1427           "Number of times to retry allocations when"                       \
  1480           "Number of times to retry allocations when "                      \
  1428           " blocked by the GC locker")                                      \
  1481           "blocked by the GC locker")                                       \
  1429                                                                             \
  1482                                                                             \
  1430   develop(bool, UseCMSAdaptiveFreeLists, true,                              \
  1483   develop(bool, UseCMSAdaptiveFreeLists, true,                              \
  1431           "Use Adaptive Free Lists in the CMS generation")                  \
  1484           "Use adaptive free lists in the CMS generation")                  \
  1432                                                                             \
  1485                                                                             \
  1433   develop(bool, UseAsyncConcMarkSweepGC, true,                              \
  1486   develop(bool, UseAsyncConcMarkSweepGC, true,                              \
  1434           "Use Asynchronous Concurrent Mark-Sweep GC in the old generation")\
  1487           "Use Asynchronous Concurrent Mark-Sweep GC in the old generation")\
  1435                                                                             \
  1488                                                                             \
  1436   develop(bool, RotateCMSCollectionTypes, false,                            \
  1489   develop(bool, RotateCMSCollectionTypes, false,                            \
  1441                                                                             \
  1494                                                                             \
  1442   product(bool, UseCMSCollectionPassing, true,                              \
  1495   product(bool, UseCMSCollectionPassing, true,                              \
  1443           "Use passing of collection from background to foreground")        \
  1496           "Use passing of collection from background to foreground")        \
  1444                                                                             \
  1497                                                                             \
  1445   product(bool, UseParNewGC, false,                                         \
  1498   product(bool, UseParNewGC, false,                                         \
  1446           "Use parallel threads in the new generation.")                    \
  1499           "Use parallel threads in the new generation")                     \
  1447                                                                             \
  1500                                                                             \
  1448   product(bool, ParallelGCVerbose, false,                                   \
  1501   product(bool, ParallelGCVerbose, false,                                   \
  1449           "Verbose output for parallel GC.")                                \
  1502           "Verbose output for parallel gc")                                 \
  1450                                                                             \
  1503                                                                             \
  1451   product(uintx, ParallelGCBufferWastePct, 10,                              \
  1504   product(uintx, ParallelGCBufferWastePct, 10,                              \
  1452           "Wasted fraction of parallel allocation buffer.")                 \
  1505           "Wasted fraction of parallel allocation buffer")                  \
  1453                                                                             \
  1506                                                                             \
  1454   diagnostic(bool, ParallelGCRetainPLAB, false,                             \
  1507   diagnostic(bool, ParallelGCRetainPLAB, false,                             \
  1455              "Retain parallel allocation buffers across scavenges; "        \
  1508           "Retain parallel allocation buffers across scavenges; "           \
  1456              " -- disabled because this currently conflicts with "          \
  1509           "it is disabled because this currently conflicts with "           \
  1457              " parallel card scanning under certain conditions ")           \
  1510           "parallel card scanning under certain conditions.")               \
  1458                                                                             \
  1511                                                                             \
  1459   product(uintx, TargetPLABWastePct, 10,                                    \
  1512   product(uintx, TargetPLABWastePct, 10,                                    \
  1460           "Target wasted space in last buffer as percent of overall "       \
  1513           "Target wasted space in last buffer as percent of overall "       \
  1461           "allocation")                                                     \
  1514           "allocation")                                                     \
  1462                                                                             \
  1515                                                                             \
  1463   product(uintx, PLABWeight, 75,                                            \
  1516   product(uintx, PLABWeight, 75,                                            \
  1464           "Percentage (0-100) used to weight the current sample when"       \
  1517           "Percentage (0-100) used to weigh the current sample when "       \
  1465           "computing exponentially decaying average for ResizePLAB.")       \
  1518           "computing exponentially decaying average for ResizePLAB")        \
  1466                                                                             \
  1519                                                                             \
  1467   product(bool, ResizePLAB, true,                                           \
  1520   product(bool, ResizePLAB, true,                                           \
  1468           "Dynamically resize (survivor space) promotion labs")             \
  1521           "Dynamically resize (survivor space) promotion LAB's")            \
  1469                                                                             \
  1522                                                                             \
  1470   product(bool, PrintPLAB, false,                                           \
  1523   product(bool, PrintPLAB, false,                                           \
  1471           "Print (survivor space) promotion labs sizing decisions")         \
  1524           "Print (survivor space) promotion LAB's sizing decisions")        \
  1472                                                                             \
  1525                                                                             \
  1473   product(intx, ParGCArrayScanChunk, 50,                                    \
  1526   product(intx, ParGCArrayScanChunk, 50,                                    \
  1474           "Scan a subset and push remainder, if array is bigger than this") \
  1527           "Scan a subset of object array and push remainder, if array is "  \
       
  1528           "bigger than this")                                               \
  1475                                                                             \
  1529                                                                             \
  1476   product(bool, ParGCUseLocalOverflow, false,                               \
  1530   product(bool, ParGCUseLocalOverflow, false,                               \
  1477           "Instead of a global overflow list, use local overflow stacks")   \
  1531           "Instead of a global overflow list, use local overflow stacks")   \
  1478                                                                             \
  1532                                                                             \
  1479   product(bool, ParGCTrimOverflow, true,                                    \
  1533   product(bool, ParGCTrimOverflow, true,                                    \
  1480           "Eagerly trim the local overflow lists (when ParGCUseLocalOverflow") \
  1534           "Eagerly trim the local overflow lists "                          \
       
  1535           "(when ParGCUseLocalOverflow)")                                   \
  1481                                                                             \
  1536                                                                             \
  1482   notproduct(bool, ParGCWorkQueueOverflowALot, false,                       \
  1537   notproduct(bool, ParGCWorkQueueOverflowALot, false,                       \
  1483           "Whether we should simulate work queue overflow in ParNew")       \
  1538           "Simulate work queue overflow in ParNew")                         \
  1484                                                                             \
  1539                                                                             \
  1485   notproduct(uintx, ParGCWorkQueueOverflowInterval, 1000,                   \
  1540   notproduct(uintx, ParGCWorkQueueOverflowInterval, 1000,                   \
  1486           "An `interval' counter that determines how frequently "           \
  1541           "An `interval' counter that determines how frequently "           \
  1487           "we simulate overflow; a smaller number increases frequency")     \
  1542           "we simulate overflow; a smaller number increases frequency")     \
  1488                                                                             \
  1543                                                                             \
  1496   diagnostic(intx, ParGCCardsPerStrideChunk, 256,                           \
  1551   diagnostic(intx, ParGCCardsPerStrideChunk, 256,                           \
  1497           "The number of cards in each chunk of the parallel chunks used "  \
  1552           "The number of cards in each chunk of the parallel chunks used "  \
  1498           "during card table scanning")                                     \
  1553           "during card table scanning")                                     \
  1499                                                                             \
  1554                                                                             \
  1500   product(uintx, CMSParPromoteBlocksToClaim, 16,                            \
  1555   product(uintx, CMSParPromoteBlocksToClaim, 16,                            \
  1501           "Number of blocks to attempt to claim when refilling CMS LAB for "\
  1556           "Number of blocks to attempt to claim when refilling CMS LAB's "  \
  1502           "parallel GC.")                                                   \
  1557           "for parallel GC")                                                \
  1503                                                                             \
  1558                                                                             \
  1504   product(uintx, OldPLABWeight, 50,                                         \
  1559   product(uintx, OldPLABWeight, 50,                                         \
  1505           "Percentage (0-100) used to weight the current sample when"       \
  1560           "Percentage (0-100) used to weight the current sample when "      \
  1506           "computing exponentially decaying average for resizing CMSParPromoteBlocksToClaim.") \
  1561           "computing exponentially decaying average for resizing "          \
       
  1562           "CMSParPromoteBlocksToClaim")                                     \
  1507                                                                             \
  1563                                                                             \
  1508   product(bool, ResizeOldPLAB, true,                                        \
  1564   product(bool, ResizeOldPLAB, true,                                        \
  1509           "Dynamically resize (old gen) promotion labs")                    \
  1565           "Dynamically resize (old gen) promotion LAB's")                   \
  1510                                                                             \
  1566                                                                             \
  1511   product(bool, PrintOldPLAB, false,                                        \
  1567   product(bool, PrintOldPLAB, false,                                        \
  1512           "Print (old gen) promotion labs sizing decisions")                \
  1568           "Print (old gen) promotion LAB's sizing decisions")               \
  1513                                                                             \
  1569                                                                             \
  1514   product(uintx, CMSOldPLABMin, 16,                                         \
  1570   product(uintx, CMSOldPLABMin, 16,                                         \
  1515           "Min size of CMS gen promotion lab caches per worker per blksize")\
  1571           "Minimum size of CMS gen promotion LAB caches per worker "        \
       
  1572           "per block size")                                                 \
  1516                                                                             \
  1573                                                                             \
  1517   product(uintx, CMSOldPLABMax, 1024,                                       \
  1574   product(uintx, CMSOldPLABMax, 1024,                                       \
  1518           "Max size of CMS gen promotion lab caches per worker per blksize")\
  1575           "Maximum size of CMS gen promotion LAB caches per worker "        \
       
  1576           "per block size")                                                 \
  1519                                                                             \
  1577                                                                             \
  1520   product(uintx, CMSOldPLABNumRefills, 4,                                   \
  1578   product(uintx, CMSOldPLABNumRefills, 4,                                   \
  1521           "Nominal number of refills of CMS gen promotion lab cache"        \
  1579           "Nominal number of refills of CMS gen promotion LAB cache "       \
  1522           " per worker per block size")                                     \
  1580           "per worker per block size")                                      \
  1523                                                                             \
  1581                                                                             \
  1524   product(bool, CMSOldPLABResizeQuicker, false,                             \
  1582   product(bool, CMSOldPLABResizeQuicker, false,                             \
  1525           "Whether to react on-the-fly during a scavenge to a sudden"       \
  1583           "React on-the-fly during a scavenge to a sudden "                 \
  1526           " change in block demand rate")                                   \
  1584           "change in block demand rate")                                    \
  1527                                                                             \
  1585                                                                             \
  1528   product(uintx, CMSOldPLABToleranceFactor, 4,                              \
  1586   product(uintx, CMSOldPLABToleranceFactor, 4,                              \
  1529           "The tolerance of the phase-change detector for on-the-fly"       \
  1587           "The tolerance of the phase-change detector for on-the-fly "      \
  1530           " PLAB resizing during a scavenge")                               \
  1588           "PLAB resizing during a scavenge")                                \
  1531                                                                             \
  1589                                                                             \
  1532   product(uintx, CMSOldPLABReactivityFactor, 2,                             \
  1590   product(uintx, CMSOldPLABReactivityFactor, 2,                             \
  1533           "The gain in the feedback loop for on-the-fly PLAB resizing"      \
  1591           "The gain in the feedback loop for on-the-fly PLAB resizing "     \
  1534           " during a scavenge")                                             \
  1592           "during a scavenge")                                              \
  1535                                                                             \
  1593                                                                             \
  1536   product(bool, AlwaysPreTouch, false,                                      \
  1594   product(bool, AlwaysPreTouch, false,                                      \
  1537           "It forces all freshly committed pages to be pre-touched.")       \
  1595           "Force all freshly committed pages to be pre-touched")            \
  1538                                                                             \
  1596                                                                             \
  1539   product_pd(uintx, CMSYoungGenPerWorker,                                   \
  1597   product_pd(uintx, CMSYoungGenPerWorker,                                   \
  1540           "The maximum size of young gen chosen by default per GC worker "  \
  1598           "The maximum size of young gen chosen by default per GC worker "  \
  1541           "thread available")                                               \
  1599           "thread available")                                               \
  1542                                                                             \
  1600                                                                             \
  1543   product(bool, CMSIncrementalMode, false,                                  \
  1601   product(bool, CMSIncrementalMode, false,                                  \
  1544           "Whether CMS GC should operate in \"incremental\" mode")          \
  1602           "Whether CMS GC should operate in \"incremental\" mode")          \
  1545                                                                             \
  1603                                                                             \
  1546   product(uintx, CMSIncrementalDutyCycle, 10,                               \
  1604   product(uintx, CMSIncrementalDutyCycle, 10,                               \
  1547           "CMS incremental mode duty cycle (a percentage, 0-100).  If"      \
  1605           "Percentage (0-100) of CMS incremental mode duty cycle. If "      \
  1548           "CMSIncrementalPacing is enabled, then this is just the initial"  \
  1606           "CMSIncrementalPacing is enabled, then this is just the initial " \
  1549           "value")                                                          \
  1607           "value.")                                                         \
  1550                                                                             \
  1608                                                                             \
  1551   product(bool, CMSIncrementalPacing, true,                                 \
  1609   product(bool, CMSIncrementalPacing, true,                                 \
  1552           "Whether the CMS incremental mode duty cycle should be "          \
  1610           "Whether the CMS incremental mode duty cycle should be "          \
  1553           "automatically adjusted")                                         \
  1611           "automatically adjusted")                                         \
  1554                                                                             \
  1612                                                                             \
  1555   product(uintx, CMSIncrementalDutyCycleMin, 0,                             \
  1613   product(uintx, CMSIncrementalDutyCycleMin, 0,                             \
  1556           "Lower bound on the duty cycle when CMSIncrementalPacing is "     \
  1614           "Minimum percentage (0-100) of the CMS incremental duty cycle "   \
  1557           "enabled (a percentage, 0-100)")                                  \
  1615           "used when CMSIncrementalPacing is enabled")                      \
  1558                                                                             \
  1616                                                                             \
  1559   product(uintx, CMSIncrementalSafetyFactor, 10,                            \
  1617   product(uintx, CMSIncrementalSafetyFactor, 10,                            \
  1560           "Percentage (0-100) used to add conservatism when computing the " \
  1618           "Percentage (0-100) used to add conservatism when computing the " \
  1561           "duty cycle")                                                     \
  1619           "duty cycle")                                                     \
  1562                                                                             \
  1620                                                                             \
  1563   product(uintx, CMSIncrementalOffset, 0,                                   \
  1621   product(uintx, CMSIncrementalOffset, 0,                                   \
  1564           "Percentage (0-100) by which the CMS incremental mode duty cycle" \
  1622           "Percentage (0-100) by which the CMS incremental mode duty cycle "\
  1565           " is shifted to the right within the period between young GCs")   \
  1623           "is shifted to the right within the period between young GCs")    \
  1566                                                                             \
  1624                                                                             \
  1567   product(uintx, CMSExpAvgFactor, 50,                                       \
  1625   product(uintx, CMSExpAvgFactor, 50,                                       \
  1568           "Percentage (0-100) used to weight the current sample when"       \
  1626           "Percentage (0-100) used to weigh the current sample when "       \
  1569           "computing exponential averages for CMS statistics.")             \
  1627           "computing exponential averages for CMS statistics")              \
  1570                                                                             \
  1628                                                                             \
  1571   product(uintx, CMS_FLSWeight, 75,                                         \
  1629   product(uintx, CMS_FLSWeight, 75,                                         \
  1572           "Percentage (0-100) used to weight the current sample when"       \
  1630           "Percentage (0-100) used to weigh the current sample when "       \
  1573           "computing exponentially decating averages for CMS FLS statistics.") \
  1631           "computing exponentially decaying averages for CMS FLS "          \
       
  1632           "statistics")                                                     \
  1574                                                                             \
  1633                                                                             \
  1575   product(uintx, CMS_FLSPadding, 1,                                         \
  1634   product(uintx, CMS_FLSPadding, 1,                                         \
  1576           "The multiple of deviation from mean to use for buffering"        \
  1635           "The multiple of deviation from mean to use for buffering "       \
  1577           "against volatility in free list demand.")                        \
  1636           "against volatility in free list demand")                         \
  1578                                                                             \
  1637                                                                             \
  1579   product(uintx, FLSCoalescePolicy, 2,                                      \
  1638   product(uintx, FLSCoalescePolicy, 2,                                      \
  1580           "CMS: Aggression level for coalescing, increasing from 0 to 4")   \
  1639           "CMS: aggressiveness level for coalescing, increasing "           \
       
  1640           "from 0 to 4")                                                    \
  1581                                                                             \
  1641                                                                             \
  1582   product(bool, FLSAlwaysCoalesceLarge, false,                              \
  1642   product(bool, FLSAlwaysCoalesceLarge, false,                              \
  1583           "CMS: Larger free blocks are always available for coalescing")    \
  1643           "CMS: larger free blocks are always available for coalescing")    \
  1584                                                                             \
  1644                                                                             \
  1585   product(double, FLSLargestBlockCoalesceProximity, 0.99,                   \
  1645   product(double, FLSLargestBlockCoalesceProximity, 0.99,                   \
  1586           "CMS: the smaller the percentage the greater the coalition force")\
  1646           "CMS: the smaller the percentage the greater the coalescing "     \
       
  1647           "force")                                                          \
  1587                                                                             \
  1648                                                                             \
  1588   product(double, CMSSmallCoalSurplusPercent, 1.05,                         \
  1649   product(double, CMSSmallCoalSurplusPercent, 1.05,                         \
  1589           "CMS: the factor by which to inflate estimated demand of small"   \
  1650           "CMS: the factor by which to inflate estimated demand of small "  \
  1590           " block sizes to prevent coalescing with an adjoining block")     \
  1651           "block sizes to prevent coalescing with an adjoining block")      \
  1591                                                                             \
  1652                                                                             \
  1592   product(double, CMSLargeCoalSurplusPercent, 0.95,                         \
  1653   product(double, CMSLargeCoalSurplusPercent, 0.95,                         \
  1593           "CMS: the factor by which to inflate estimated demand of large"   \
  1654           "CMS: the factor by which to inflate estimated demand of large "  \
  1594           " block sizes to prevent coalescing with an adjoining block")     \
  1655           "block sizes to prevent coalescing with an adjoining block")      \
  1595                                                                             \
  1656                                                                             \
  1596   product(double, CMSSmallSplitSurplusPercent, 1.10,                        \
  1657   product(double, CMSSmallSplitSurplusPercent, 1.10,                        \
  1597           "CMS: the factor by which to inflate estimated demand of small"   \
  1658           "CMS: the factor by which to inflate estimated demand of small "  \
  1598           " block sizes to prevent splitting to supply demand for smaller"  \
  1659           "block sizes to prevent splitting to supply demand for smaller "  \
  1599           " blocks")                                                        \
  1660           "blocks")                                                         \
  1600                                                                             \
  1661                                                                             \
  1601   product(double, CMSLargeSplitSurplusPercent, 1.00,                        \
  1662   product(double, CMSLargeSplitSurplusPercent, 1.00,                        \
  1602           "CMS: the factor by which to inflate estimated demand of large"   \
  1663           "CMS: the factor by which to inflate estimated demand of large "  \
  1603           " block sizes to prevent splitting to supply demand for smaller"  \
  1664           "block sizes to prevent splitting to supply demand for smaller "  \
  1604           " blocks")                                                        \
  1665           "blocks")                                                         \
  1605                                                                             \
  1666                                                                             \
  1606   product(bool, CMSExtrapolateSweep, false,                                 \
  1667   product(bool, CMSExtrapolateSweep, false,                                 \
  1607           "CMS: cushion for block demand during sweep")                     \
  1668           "CMS: cushion for block demand during sweep")                     \
  1608                                                                             \
  1669                                                                             \
  1609   product(uintx, CMS_SweepWeight, 75,                                       \
  1670   product(uintx, CMS_SweepWeight, 75,                                       \
  1611           "computing exponentially decaying average for inter-sweep "       \
  1672           "computing exponentially decaying average for inter-sweep "       \
  1612           "duration")                                                       \
  1673           "duration")                                                       \
  1613                                                                             \
  1674                                                                             \
  1614   product(uintx, CMS_SweepPadding, 1,                                       \
  1675   product(uintx, CMS_SweepPadding, 1,                                       \
  1615           "The multiple of deviation from mean to use for buffering "       \
  1676           "The multiple of deviation from mean to use for buffering "       \
  1616           "against volatility in inter-sweep duration.")                    \
  1677           "against volatility in inter-sweep duration")                     \
  1617                                                                             \
  1678                                                                             \
  1618   product(uintx, CMS_SweepTimerThresholdMillis, 10,                         \
  1679   product(uintx, CMS_SweepTimerThresholdMillis, 10,                         \
  1619           "Skip block flux-rate sampling for an epoch unless inter-sweep "  \
  1680           "Skip block flux-rate sampling for an epoch unless inter-sweep "  \
  1620           "duration exceeds this threhold in milliseconds")                 \
  1681           "duration exceeds this threshold in milliseconds")                \
  1621                                                                             \
  1682                                                                             \
  1622   develop(bool, CMSTraceIncrementalMode, false,                             \
  1683   develop(bool, CMSTraceIncrementalMode, false,                             \
  1623           "Trace CMS incremental mode")                                     \
  1684           "Trace CMS incremental mode")                                     \
  1624                                                                             \
  1685                                                                             \
  1625   develop(bool, CMSTraceIncrementalPacing, false,                           \
  1686   develop(bool, CMSTraceIncrementalPacing, false,                           \
  1630                                                                             \
  1691                                                                             \
  1631   product(bool, CMSClassUnloadingEnabled, true,                             \
  1692   product(bool, CMSClassUnloadingEnabled, true,                             \
  1632           "Whether class unloading enabled when using CMS GC")              \
  1693           "Whether class unloading enabled when using CMS GC")              \
  1633                                                                             \
  1694                                                                             \
  1634   product(uintx, CMSClassUnloadingMaxInterval, 0,                           \
  1695   product(uintx, CMSClassUnloadingMaxInterval, 0,                           \
  1635           "When CMS class unloading is enabled, the maximum CMS cycle count"\
  1696           "When CMS class unloading is enabled, the maximum CMS cycle "     \
  1636           " for which classes may not be unloaded")                         \
  1697           "count for which classes may not be unloaded")                    \
  1637                                                                             \
  1698                                                                             \
  1638   product(bool, CMSCompactWhenClearAllSoftRefs, true,                       \
  1699   product(bool, CMSCompactWhenClearAllSoftRefs, true,                       \
  1639           "Compact when asked to collect CMS gen with clear_all_soft_refs") \
  1700           "Compact when asked to collect CMS gen with "                     \
       
  1701           "clear_all_soft_refs()")                                          \
  1640                                                                             \
  1702                                                                             \
  1641   product(bool, UseCMSCompactAtFullCollection, true,                        \
  1703   product(bool, UseCMSCompactAtFullCollection, true,                        \
  1642           "Use mark sweep compact at full collections")                     \
  1704           "Use Mark-Sweep-Compact algorithm at full collections")           \
  1643                                                                             \
  1705                                                                             \
  1644   product(uintx, CMSFullGCsBeforeCompaction, 0,                             \
  1706   product(uintx, CMSFullGCsBeforeCompaction, 0,                             \
  1645           "Number of CMS full collection done before compaction if > 0")    \
  1707           "Number of CMS full collection done before compaction if > 0")    \
  1646                                                                             \
  1708                                                                             \
  1647   develop(intx, CMSDictionaryChoice, 0,                                     \
  1709   develop(intx, CMSDictionaryChoice, 0,                                     \
  1659                                                                             \
  1721                                                                             \
  1660   product(bool, CMSLoopWarn, false,                                         \
  1722   product(bool, CMSLoopWarn, false,                                         \
  1661           "Warn in case of excessive CMS looping")                          \
  1723           "Warn in case of excessive CMS looping")                          \
  1662                                                                             \
  1724                                                                             \
  1663   develop(bool, CMSOverflowEarlyRestoration, false,                         \
  1725   develop(bool, CMSOverflowEarlyRestoration, false,                         \
  1664           "Whether preserved marks should be restored early")               \
  1726           "Restore preserved marks early")                                  \
  1665                                                                             \
  1727                                                                             \
  1666   product(uintx, MarkStackSize, NOT_LP64(32*K) LP64_ONLY(4*M),              \
  1728   product(uintx, MarkStackSize, NOT_LP64(32*K) LP64_ONLY(4*M),              \
  1667           "Size of marking stack")                                          \
  1729           "Size of marking stack")                                          \
  1668                                                                             \
  1730                                                                             \
  1669   product(uintx, MarkStackSizeMax, NOT_LP64(4*M) LP64_ONLY(512*M),          \
  1731   product(uintx, MarkStackSizeMax, NOT_LP64(4*M) LP64_ONLY(512*M),          \
  1670           "Max size of marking stack")                                      \
  1732           "Maximum size of marking stack")                                  \
  1671                                                                             \
  1733                                                                             \
  1672   notproduct(bool, CMSMarkStackOverflowALot, false,                         \
  1734   notproduct(bool, CMSMarkStackOverflowALot, false,                         \
  1673           "Whether we should simulate frequent marking stack / work queue"  \
  1735           "Simulate frequent marking stack / work queue overflow")          \
  1674           " overflow")                                                      \
       
  1675                                                                             \
  1736                                                                             \
  1676   notproduct(uintx, CMSMarkStackOverflowInterval, 1000,                     \
  1737   notproduct(uintx, CMSMarkStackOverflowInterval, 1000,                     \
  1677           "An `interval' counter that determines how frequently"            \
  1738           "An \"interval\" counter that determines how frequently "         \
  1678           " we simulate overflow; a smaller number increases frequency")    \
  1739           "to simulate overflow; a smaller number increases frequency")     \
  1679                                                                             \
  1740                                                                             \
  1680   product(uintx, CMSMaxAbortablePrecleanLoops, 0,                           \
  1741   product(uintx, CMSMaxAbortablePrecleanLoops, 0,                           \
  1681           "(Temporary, subject to experimentation)"                         \
  1742           "(Temporary, subject to experimentation) "                        \
  1682           "Maximum number of abortable preclean iterations, if > 0")        \
  1743           "Maximum number of abortable preclean iterations, if > 0")        \
  1683                                                                             \
  1744                                                                             \
  1684   product(intx, CMSMaxAbortablePrecleanTime, 5000,                          \
  1745   product(intx, CMSMaxAbortablePrecleanTime, 5000,                          \
  1685           "(Temporary, subject to experimentation)"                         \
  1746           "(Temporary, subject to experimentation) "                        \
  1686           "Maximum time in abortable preclean in ms")                       \
  1747           "Maximum time in abortable preclean (in milliseconds)")           \
  1687                                                                             \
  1748                                                                             \
  1688   product(uintx, CMSAbortablePrecleanMinWorkPerIteration, 100,              \
  1749   product(uintx, CMSAbortablePrecleanMinWorkPerIteration, 100,              \
  1689           "(Temporary, subject to experimentation)"                         \
  1750           "(Temporary, subject to experimentation) "                        \
  1690           "Nominal minimum work per abortable preclean iteration")          \
  1751           "Nominal minimum work per abortable preclean iteration")          \
  1691                                                                             \
  1752                                                                             \
  1692   manageable(intx, CMSAbortablePrecleanWaitMillis, 100,                     \
  1753   manageable(intx, CMSAbortablePrecleanWaitMillis, 100,                     \
  1693           "(Temporary, subject to experimentation)"                         \
  1754           "(Temporary, subject to experimentation) "                        \
  1694           " Time that we sleep between iterations when not given"           \
  1755           "Time that we sleep between iterations when not given "           \
  1695           " enough work per iteration")                                     \
  1756           "enough work per iteration")                                      \
  1696                                                                             \
  1757                                                                             \
  1697   product(uintx, CMSRescanMultiple, 32,                                     \
  1758   product(uintx, CMSRescanMultiple, 32,                                     \
  1698           "Size (in cards) of CMS parallel rescan task")                    \
  1759           "Size (in cards) of CMS parallel rescan task")                    \
  1699                                                                             \
  1760                                                                             \
  1700   product(uintx, CMSConcMarkMultiple, 32,                                   \
  1761   product(uintx, CMSConcMarkMultiple, 32,                                   \
  1708                                                                             \
  1769                                                                             \
  1709   product(bool, CMSParallelRemarkEnabled, true,                             \
  1770   product(bool, CMSParallelRemarkEnabled, true,                             \
  1710           "Whether parallel remark enabled (only if ParNewGC)")             \
  1771           "Whether parallel remark enabled (only if ParNewGC)")             \
  1711                                                                             \
  1772                                                                             \
  1712   product(bool, CMSParallelSurvivorRemarkEnabled, true,                     \
  1773   product(bool, CMSParallelSurvivorRemarkEnabled, true,                     \
  1713           "Whether parallel remark of survivor space"                       \
  1774           "Whether parallel remark of survivor space "                      \
  1714           " enabled (effective only if CMSParallelRemarkEnabled)")          \
  1775           "enabled (effective only if CMSParallelRemarkEnabled)")           \
  1715                                                                             \
  1776                                                                             \
  1716   product(bool, CMSPLABRecordAlways, true,                                  \
  1777   product(bool, CMSPLABRecordAlways, true,                                  \
  1717           "Whether to always record survivor space PLAB bdries"             \
  1778           "Always record survivor space PLAB boundaries (effective only "   \
  1718           " (effective only if CMSParallelSurvivorRemarkEnabled)")          \
  1779           "if CMSParallelSurvivorRemarkEnabled)")                           \
  1719                                                                             \
  1780                                                                             \
  1720   product(bool, CMSEdenChunksRecordAlways, true,                            \
  1781   product(bool, CMSEdenChunksRecordAlways, true,                            \
  1721           "Whether to always record eden chunks used for "                  \
  1782           "Always record eden chunks used for the parallel initial mark "   \
  1722           "the parallel initial mark or remark of eden" )                   \
  1783           "or remark of eden")                                              \
  1723                                                                             \
  1784                                                                             \
  1724   product(bool, CMSPrintEdenSurvivorChunks, false,                          \
  1785   product(bool, CMSPrintEdenSurvivorChunks, false,                          \
  1725           "Print the eden and the survivor chunks used for the parallel "   \
  1786           "Print the eden and the survivor chunks used for the parallel "   \
  1726           "initial mark or remark of the eden/survivor spaces")             \
  1787           "initial mark or remark of the eden/survivor spaces")             \
  1727                                                                             \
  1788                                                                             \
  1728   product(bool, CMSConcurrentMTEnabled, true,                               \
  1789   product(bool, CMSConcurrentMTEnabled, true,                               \
  1729           "Whether multi-threaded concurrent work enabled (if ParNewGC)")   \
  1790           "Whether multi-threaded concurrent work enabled "                 \
       
  1791           "(effective only if ParNewGC)")                                   \
  1730                                                                             \
  1792                                                                             \
  1731   product(bool, CMSPrecleaningEnabled, true,                                \
  1793   product(bool, CMSPrecleaningEnabled, true,                                \
  1732           "Whether concurrent precleaning enabled")                         \
  1794           "Whether concurrent precleaning enabled")                         \
  1733                                                                             \
  1795                                                                             \
  1734   product(uintx, CMSPrecleanIter, 3,                                        \
  1796   product(uintx, CMSPrecleanIter, 3,                                        \
  1735           "Maximum number of precleaning iteration passes")                 \
  1797           "Maximum number of precleaning iteration passes")                 \
  1736                                                                             \
  1798                                                                             \
  1737   product(uintx, CMSPrecleanNumerator, 2,                                   \
  1799   product(uintx, CMSPrecleanNumerator, 2,                                   \
  1738           "CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence"  \
  1800           "CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence " \
  1739           " ratio")                                                         \
  1801           "ratio")                                                          \
  1740                                                                             \
  1802                                                                             \
  1741   product(uintx, CMSPrecleanDenominator, 3,                                 \
  1803   product(uintx, CMSPrecleanDenominator, 3,                                 \
  1742           "CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence"  \
  1804           "CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence " \
  1743           " ratio")                                                         \
  1805           "ratio")                                                          \
  1744                                                                             \
  1806                                                                             \
  1745   product(bool, CMSPrecleanRefLists1, true,                                 \
  1807   product(bool, CMSPrecleanRefLists1, true,                                 \
  1746           "Preclean ref lists during (initial) preclean phase")             \
  1808           "Preclean ref lists during (initial) preclean phase")             \
  1747                                                                             \
  1809                                                                             \
  1748   product(bool, CMSPrecleanRefLists2, false,                                \
  1810   product(bool, CMSPrecleanRefLists2, false,                                \
  1753                                                                             \
  1815                                                                             \
  1754   product(bool, CMSPrecleanSurvivors2, true,                                \
  1816   product(bool, CMSPrecleanSurvivors2, true,                                \
  1755           "Preclean survivors during abortable preclean phase")             \
  1817           "Preclean survivors during abortable preclean phase")             \
  1756                                                                             \
  1818                                                                             \
  1757   product(uintx, CMSPrecleanThreshold, 1000,                                \
  1819   product(uintx, CMSPrecleanThreshold, 1000,                                \
  1758           "Don't re-iterate if #dirty cards less than this")                \
  1820           "Do not iterate again if number of dirty cards is less than this")\
  1759                                                                             \
  1821                                                                             \
  1760   product(bool, CMSCleanOnEnter, true,                                      \
  1822   product(bool, CMSCleanOnEnter, true,                                      \
  1761           "Clean-on-enter optimization for reducing number of dirty cards") \
  1823           "Clean-on-enter optimization for reducing number of dirty cards") \
  1762                                                                             \
  1824                                                                             \
  1763   product(uintx, CMSRemarkVerifyVariant, 1,                                 \
  1825   product(uintx, CMSRemarkVerifyVariant, 1,                                 \
  1764           "Choose variant (1,2) of verification following remark")          \
  1826           "Choose variant (1,2) of verification following remark")          \
  1765                                                                             \
  1827                                                                             \
  1766   product(uintx, CMSScheduleRemarkEdenSizeThreshold, 2*M,                   \
  1828   product(uintx, CMSScheduleRemarkEdenSizeThreshold, 2*M,                   \
  1767           "If Eden used is below this value, don't try to schedule remark") \
  1829           "If Eden size is below this, do not try to schedule remark")      \
  1768                                                                             \
  1830                                                                             \
  1769   product(uintx, CMSScheduleRemarkEdenPenetration, 50,                      \
  1831   product(uintx, CMSScheduleRemarkEdenPenetration, 50,                      \
  1770           "The Eden occupancy % at which to try and schedule remark pause") \
  1832           "The Eden occupancy percentage (0-100) at which "                 \
       
  1833           "to try and schedule remark pause")                               \
  1771                                                                             \
  1834                                                                             \
  1772   product(uintx, CMSScheduleRemarkSamplingRatio, 5,                         \
  1835   product(uintx, CMSScheduleRemarkSamplingRatio, 5,                         \
  1773           "Start sampling Eden top at least before yg occupancy reaches"    \
  1836           "Start sampling eden top at least before young gen "              \
  1774           " 1/<ratio> of the size at which we plan to schedule remark")     \
  1837           "occupancy reaches 1/<ratio> of the size at which "               \
       
  1838           "we plan to schedule remark")                                     \
  1775                                                                             \
  1839                                                                             \
  1776   product(uintx, CMSSamplingGrain, 16*K,                                    \
  1840   product(uintx, CMSSamplingGrain, 16*K,                                    \
  1777           "The minimum distance between eden samples for CMS (see above)")  \
  1841           "The minimum distance between eden samples for CMS (see above)")  \
  1778                                                                             \
  1842                                                                             \
  1779   product(bool, CMSScavengeBeforeRemark, false,                             \
  1843   product(bool, CMSScavengeBeforeRemark, false,                             \
  1791   develop(uintx, CMSCheckInterval, 1000,                                    \
  1855   develop(uintx, CMSCheckInterval, 1000,                                    \
  1792           "Interval in milliseconds that CMS thread checks if it "          \
  1856           "Interval in milliseconds that CMS thread checks if it "          \
  1793           "should start a collection cycle")                                \
  1857           "should start a collection cycle")                                \
  1794                                                                             \
  1858                                                                             \
  1795   product(bool, CMSYield, true,                                             \
  1859   product(bool, CMSYield, true,                                             \
  1796           "Yield between steps of concurrent mark & sweep")                 \
  1860           "Yield between steps of CMS")                                     \
  1797                                                                             \
  1861                                                                             \
  1798   product(uintx, CMSBitMapYieldQuantum, 10*M,                               \
  1862   product(uintx, CMSBitMapYieldQuantum, 10*M,                               \
  1799           "Bitmap operations should process at most this many bits"         \
  1863           "Bitmap operations should process at most this many bits "        \
  1800           "between yields")                                                 \
  1864           "between yields")                                                 \
  1801                                                                             \
  1865                                                                             \
  1802   product(bool, CMSDumpAtPromotionFailure, false,                           \
  1866   product(bool, CMSDumpAtPromotionFailure, false,                           \
  1803           "Dump useful information about the state of the CMS old "         \
  1867           "Dump useful information about the state of the CMS old "         \
  1804           " generation upon a promotion failure.")                          \
  1868           "generation upon a promotion failure")                            \
  1805                                                                             \
  1869                                                                             \
  1806   product(bool, CMSPrintChunksInDump, false,                                \
  1870   product(bool, CMSPrintChunksInDump, false,                                \
  1807           "In a dump enabled by CMSDumpAtPromotionFailure, include "        \
  1871           "In a dump enabled by CMSDumpAtPromotionFailure, include "        \
  1808           " more detailed information about the free chunks.")              \
  1872           "more detailed information about the free chunks")                \
  1809                                                                             \
  1873                                                                             \
  1810   product(bool, CMSPrintObjectsInDump, false,                               \
  1874   product(bool, CMSPrintObjectsInDump, false,                               \
  1811           "In a dump enabled by CMSDumpAtPromotionFailure, include "        \
  1875           "In a dump enabled by CMSDumpAtPromotionFailure, include "        \
  1812           " more detailed information about the allocated objects.")        \
  1876           "more detailed information about the allocated objects")          \
  1813                                                                             \
  1877                                                                             \
  1814   diagnostic(bool, FLSVerifyAllHeapReferences, false,                       \
  1878   diagnostic(bool, FLSVerifyAllHeapReferences, false,                       \
  1815           "Verify that all refs across the FLS boundary "                   \
  1879           "Verify that all references across the FLS boundary "             \
  1816           " are to valid objects")                                          \
  1880           "are to valid objects")                                           \
  1817                                                                             \
  1881                                                                             \
  1818   diagnostic(bool, FLSVerifyLists, false,                                   \
  1882   diagnostic(bool, FLSVerifyLists, false,                                   \
  1819           "Do lots of (expensive) FreeListSpace verification")              \
  1883           "Do lots of (expensive) FreeListSpace verification")              \
  1820                                                                             \
  1884                                                                             \
  1821   diagnostic(bool, FLSVerifyIndexTable, false,                              \
  1885   diagnostic(bool, FLSVerifyIndexTable, false,                              \
  1823                                                                             \
  1887                                                                             \
  1824   develop(bool, FLSVerifyDictionary, false,                                 \
  1888   develop(bool, FLSVerifyDictionary, false,                                 \
  1825           "Do lots of (expensive) FLS dictionary verification")             \
  1889           "Do lots of (expensive) FLS dictionary verification")             \
  1826                                                                             \
  1890                                                                             \
  1827   develop(bool, VerifyBlockOffsetArray, false,                              \
  1891   develop(bool, VerifyBlockOffsetArray, false,                              \
  1828           "Do (expensive!) block offset array verification")                \
  1892           "Do (expensive) block offset array verification")                 \
  1829                                                                             \
  1893                                                                             \
  1830   diagnostic(bool, BlockOffsetArrayUseUnallocatedBlock, false,              \
  1894   diagnostic(bool, BlockOffsetArrayUseUnallocatedBlock, false,              \
  1831           "Maintain _unallocated_block in BlockOffsetArray"                 \
  1895           "Maintain _unallocated_block in BlockOffsetArray "                \
  1832           " (currently applicable only to CMS collector)")                  \
  1896           "(currently applicable only to CMS collector)")                   \
  1833                                                                             \
  1897                                                                             \
  1834   develop(bool, TraceCMSState, false,                                       \
  1898   develop(bool, TraceCMSState, false,                                       \
  1835           "Trace the state of the CMS collection")                          \
  1899           "Trace the state of the CMS collection")                          \
  1836                                                                             \
  1900                                                                             \
  1837   product(intx, RefDiscoveryPolicy, 0,                                      \
  1901   product(intx, RefDiscoveryPolicy, 0,                                      \
  1838           "Whether reference-based(0) or referent-based(1)")                \
  1902           "Select type of reference discovery policy: "                     \
       
  1903           "reference-based(0) or referent-based(1)")                        \
  1839                                                                             \
  1904                                                                             \
  1840   product(bool, ParallelRefProcEnabled, false,                              \
  1905   product(bool, ParallelRefProcEnabled, false,                              \
  1841           "Enable parallel reference processing whenever possible")         \
  1906           "Enable parallel reference processing whenever possible")         \
  1842                                                                             \
  1907                                                                             \
  1843   product(bool, ParallelRefProcBalancingEnabled, true,                      \
  1908   product(bool, ParallelRefProcBalancingEnabled, true,                      \
  1861           "concurrent GC cycle based on the occupancy of the entire heap, " \
  1926           "concurrent GC cycle based on the occupancy of the entire heap, " \
  1862           "not just one of the generations (e.g., G1). A value of 0 "       \
  1927           "not just one of the generations (e.g., G1). A value of 0 "       \
  1863           "denotes 'do constant GC cycles'.")                               \
  1928           "denotes 'do constant GC cycles'.")                               \
  1864                                                                             \
  1929                                                                             \
  1865   product(bool, UseCMSInitiatingOccupancyOnly, false,                       \
  1930   product(bool, UseCMSInitiatingOccupancyOnly, false,                       \
  1866           "Only use occupancy as a crierion for starting a CMS collection") \
  1931           "Only use occupancy as a criterion for starting a CMS collection")\
  1867                                                                             \
  1932                                                                             \
  1868   product(uintx, CMSIsTooFullPercentage, 98,                                \
  1933   product(uintx, CMSIsTooFullPercentage, 98,                                \
  1869           "An absolute ceiling above which CMS will always consider the "   \
  1934           "An absolute ceiling above which CMS will always consider the "   \
  1870           "unloading of classes when class unloading is enabled")           \
  1935           "unloading of classes when class unloading is enabled")           \
  1871                                                                             \
  1936                                                                             \
  1873           "Check if the coalesced range is already in the "                 \
  1938           "Check if the coalesced range is already in the "                 \
  1874           "free lists as claimed")                                          \
  1939           "free lists as claimed")                                          \
  1875                                                                             \
  1940                                                                             \
  1876   notproduct(bool, CMSVerifyReturnedBytes, false,                           \
  1941   notproduct(bool, CMSVerifyReturnedBytes, false,                           \
  1877           "Check that all the garbage collected was returned to the "       \
  1942           "Check that all the garbage collected was returned to the "       \
  1878           "free lists.")                                                    \
  1943           "free lists")                                                     \
  1879                                                                             \
  1944                                                                             \
  1880   notproduct(bool, ScavengeALot, false,                                     \
  1945   notproduct(bool, ScavengeALot, false,                                     \
  1881           "Force scavenge at every Nth exit from the runtime system "       \
  1946           "Force scavenge at every Nth exit from the runtime system "       \
  1882           "(N=ScavengeALotInterval)")                                       \
  1947           "(N=ScavengeALotInterval)")                                       \
  1883                                                                             \
  1948                                                                             \
  1888   notproduct(bool, GCALotAtAllSafepoints, false,                            \
  1953   notproduct(bool, GCALotAtAllSafepoints, false,                            \
  1889           "Enforce ScavengeALot/GCALot at all potential safepoints")        \
  1954           "Enforce ScavengeALot/GCALot at all potential safepoints")        \
  1890                                                                             \
  1955                                                                             \
  1891   product(bool, PrintPromotionFailure, false,                               \
  1956   product(bool, PrintPromotionFailure, false,                               \
  1892           "Print additional diagnostic information following "              \
  1957           "Print additional diagnostic information following "              \
  1893           " promotion failure")                                             \
  1958           "promotion failure")                                              \
  1894                                                                             \
  1959                                                                             \
  1895   notproduct(bool, PromotionFailureALot, false,                             \
  1960   notproduct(bool, PromotionFailureALot, false,                             \
  1896           "Use promotion failure handling on every youngest generation "    \
  1961           "Use promotion failure handling on every youngest generation "    \
  1897           "collection")                                                     \
  1962           "collection")                                                     \
  1898                                                                             \
  1963                                                                             \
  1899   develop(uintx, PromotionFailureALotCount, 1000,                           \
  1964   develop(uintx, PromotionFailureALotCount, 1000,                           \
  1900           "Number of promotion failures occurring at ParGCAllocBuffer"      \
  1965           "Number of promotion failures occurring at ParGCAllocBuffer "     \
  1901           "refill attempts (ParNew) or promotion attempts "                 \
  1966           "refill attempts (ParNew) or promotion attempts "                 \
  1902           "(other young collectors) ")                                      \
  1967           "(other young collectors)")                                       \
  1903                                                                             \
  1968                                                                             \
  1904   develop(uintx, PromotionFailureALotInterval, 5,                           \
  1969   develop(uintx, PromotionFailureALotInterval, 5,                           \
  1905           "Total collections between promotion failures alot")              \
  1970           "Total collections between promotion failures alot")              \
  1906                                                                             \
  1971                                                                             \
  1907   experimental(uintx, WorkStealingSleepMillis, 1,                           \
  1972   experimental(uintx, WorkStealingSleepMillis, 1,                           \
  1916                                                                             \
  1981                                                                             \
  1917   experimental(uintx, WorkStealingSpinToYieldRatio, 10,                     \
  1982   experimental(uintx, WorkStealingSpinToYieldRatio, 10,                     \
  1918           "Ratio of hard spins to calls to yield")                          \
  1983           "Ratio of hard spins to calls to yield")                          \
  1919                                                                             \
  1984                                                                             \
  1920   develop(uintx, ObjArrayMarkingStride, 512,                                \
  1985   develop(uintx, ObjArrayMarkingStride, 512,                                \
  1921           "Number of ObjArray elements to push onto the marking stack"      \
  1986           "Number of object array elements to push onto the marking stack " \
  1922           "before pushing a continuation entry")                            \
  1987           "before pushing a continuation entry")                            \
  1923                                                                             \
  1988                                                                             \
  1924   develop(bool, MetadataAllocationFailALot, false,                          \
  1989   develop(bool, MetadataAllocationFailALot, false,                          \
  1925           "Fail metadata allocations at intervals controlled by "           \
  1990           "Fail metadata allocations at intervals controlled by "           \
  1926           "MetadataAllocationFailALotInterval")                             \
  1991           "MetadataAllocationFailALotInterval")                             \
  1927                                                                             \
  1992                                                                             \
  1928   develop(uintx, MetadataAllocationFailALotInterval, 1000,                  \
  1993   develop(uintx, MetadataAllocationFailALotInterval, 1000,                  \
  1929           "metadata allocation failure alot interval")                      \
  1994           "Metadata allocation failure a lot interval")                     \
  1930                                                                             \
       
  1931   develop(bool, MetaDataDeallocateALot, false,                              \
       
  1932           "Deallocation bunches of metadata at intervals controlled by "    \
       
  1933           "MetaDataAllocateALotInterval")                                   \
       
  1934                                                                             \
       
  1935   develop(uintx, MetaDataDeallocateALotInterval, 100,                       \
       
  1936           "Metadata deallocation alot interval")                            \
       
  1937                                                                             \
  1995                                                                             \
  1938   develop(bool, TraceMetadataChunkAllocation, false,                        \
  1996   develop(bool, TraceMetadataChunkAllocation, false,                        \
  1939           "Trace chunk metadata allocations")                               \
  1997           "Trace chunk metadata allocations")                               \
  1940                                                                             \
  1998                                                                             \
  1941   product(bool, TraceMetadataHumongousAllocation, false,                    \
  1999   product(bool, TraceMetadataHumongousAllocation, false,                    \
  1943                                                                             \
  2001                                                                             \
  1944   develop(bool, TraceMetavirtualspaceAllocation, false,                     \
  2002   develop(bool, TraceMetavirtualspaceAllocation, false,                     \
  1945           "Trace virtual space metadata allocations")                       \
  2003           "Trace virtual space metadata allocations")                       \
  1946                                                                             \
  2004                                                                             \
  1947   notproduct(bool, ExecuteInternalVMTests, false,                           \
  2005   notproduct(bool, ExecuteInternalVMTests, false,                           \
  1948           "Enable execution of internal VM tests.")                         \
  2006           "Enable execution of internal VM tests")                          \
  1949                                                                             \
  2007                                                                             \
  1950   notproduct(bool, VerboseInternalVMTests, false,                           \
  2008   notproduct(bool, VerboseInternalVMTests, false,                           \
  1951           "Turn on logging for internal VM tests.")                         \
  2009           "Turn on logging for internal VM tests.")                         \
  1952                                                                             \
  2010                                                                             \
  1953   product_pd(bool, UseTLAB, "Use thread-local object allocation")           \
  2011   product_pd(bool, UseTLAB, "Use thread-local object allocation")           \
  1954                                                                             \
  2012                                                                             \
  1955   product_pd(bool, ResizeTLAB,                                              \
  2013   product_pd(bool, ResizeTLAB,                                              \
  1956           "Dynamically resize tlab size for threads")                       \
  2014           "Dynamically resize TLAB size for threads")                       \
  1957                                                                             \
  2015                                                                             \
  1958   product(bool, ZeroTLAB, false,                                            \
  2016   product(bool, ZeroTLAB, false,                                            \
  1959           "Zero out the newly created TLAB")                                \
  2017           "Zero out the newly created TLAB")                                \
  1960                                                                             \
  2018                                                                             \
  1961   product(bool, FastTLABRefill, true,                                       \
  2019   product(bool, FastTLABRefill, true,                                       \
  1963                                                                             \
  2021                                                                             \
  1964   product(bool, PrintTLAB, false,                                           \
  2022   product(bool, PrintTLAB, false,                                           \
  1965           "Print various TLAB related information")                         \
  2023           "Print various TLAB related information")                         \
  1966                                                                             \
  2024                                                                             \
  1967   product(bool, TLABStats, true,                                            \
  2025   product(bool, TLABStats, true,                                            \
  1968           "Print various TLAB related information")                         \
  2026           "Provide more detailed and expensive TLAB statistics "            \
       
  2027           "(with PrintTLAB)")                                               \
  1969                                                                             \
  2028                                                                             \
  1970   EMBEDDED_ONLY(product(bool, LowMemoryProtection, true,                    \
  2029   EMBEDDED_ONLY(product(bool, LowMemoryProtection, true,                    \
  1971           "Enable LowMemoryProtection"))                                    \
  2030           "Enable LowMemoryProtection"))                                    \
  1972                                                                             \
  2031                                                                             \
  1973   product_pd(bool, NeverActAsServerClassMachine,                            \
  2032   product_pd(bool, NeverActAsServerClassMachine,                            \
  1997                                                                             \
  2056                                                                             \
  1998   product(uintx, InitialRAMFraction, 64,                                    \
  2057   product(uintx, InitialRAMFraction, 64,                                    \
  1999           "Fraction (1/n) of real memory used for initial heap size")       \
  2058           "Fraction (1/n) of real memory used for initial heap size")       \
  2000                                                                             \
  2059                                                                             \
  2001   develop(uintx, MaxVirtMemFraction, 2,                                     \
  2060   develop(uintx, MaxVirtMemFraction, 2,                                     \
  2002           "Maximum fraction (1/n) of virtual memory used for ergonomically" \
  2061           "Maximum fraction (1/n) of virtual memory used for ergonomically "\
  2003           "determining maximum heap size")                                  \
  2062           "determining maximum heap size")                                  \
  2004                                                                             \
  2063                                                                             \
  2005   product(bool, UseAutoGCSelectPolicy, false,                               \
  2064   product(bool, UseAutoGCSelectPolicy, false,                               \
  2006           "Use automatic collection selection policy")                      \
  2065           "Use automatic collection selection policy")                      \
  2007                                                                             \
  2066                                                                             \
  2008   product(uintx, AutoGCSelectPauseMillis, 5000,                             \
  2067   product(uintx, AutoGCSelectPauseMillis, 5000,                             \
  2009           "Automatic GC selection pause threshhold in ms")                  \
  2068           "Automatic GC selection pause threshold in milliseconds")         \
  2010                                                                             \
  2069                                                                             \
  2011   product(bool, UseAdaptiveSizePolicy, true,                                \
  2070   product(bool, UseAdaptiveSizePolicy, true,                                \
  2012           "Use adaptive generation sizing policies")                        \
  2071           "Use adaptive generation sizing policies")                        \
  2013                                                                             \
  2072                                                                             \
  2014   product(bool, UsePSAdaptiveSurvivorSizePolicy, true,                      \
  2073   product(bool, UsePSAdaptiveSurvivorSizePolicy, true,                      \
  2019                                                                             \
  2078                                                                             \
  2020   product(bool, UseAdaptiveGenerationSizePolicyAtMajorCollection, true,     \
  2079   product(bool, UseAdaptiveGenerationSizePolicyAtMajorCollection, true,     \
  2021           "Use adaptive young-old sizing policies at major collections")    \
  2080           "Use adaptive young-old sizing policies at major collections")    \
  2022                                                                             \
  2081                                                                             \
  2023   product(bool, UseAdaptiveSizePolicyWithSystemGC, false,                   \
  2082   product(bool, UseAdaptiveSizePolicyWithSystemGC, false,                   \
  2024           "Use statistics from System.GC for adaptive size policy")         \
  2083           "Include statistics from System.gc() for adaptive size policy")   \
  2025                                                                             \
  2084                                                                             \
  2026   product(bool, UseAdaptiveGCBoundary, false,                               \
  2085   product(bool, UseAdaptiveGCBoundary, false,                               \
  2027           "Allow young-old boundary to move")                               \
  2086           "Allow young-old boundary to move")                               \
  2028                                                                             \
  2087                                                                             \
  2029   develop(bool, TraceAdaptiveGCBoundary, false,                             \
  2088   develop(bool, TraceAdaptiveGCBoundary, false,                             \
  2031                                                                             \
  2090                                                                             \
  2032   develop(intx, PSAdaptiveSizePolicyResizeVirtualSpaceAlot, -1,             \
  2091   develop(intx, PSAdaptiveSizePolicyResizeVirtualSpaceAlot, -1,             \
  2033           "Resize the virtual spaces of the young or old generations")      \
  2092           "Resize the virtual spaces of the young or old generations")      \
  2034                                                                             \
  2093                                                                             \
  2035   product(uintx, AdaptiveSizeThroughPutPolicy, 0,                           \
  2094   product(uintx, AdaptiveSizeThroughPutPolicy, 0,                           \
  2036           "Policy for changeing generation size for throughput goals")      \
  2095           "Policy for changing generation size for throughput goals")       \
  2037                                                                             \
  2096                                                                             \
  2038   product(uintx, AdaptiveSizePausePolicy, 0,                                \
  2097   product(uintx, AdaptiveSizePausePolicy, 0,                                \
  2039           "Policy for changing generation size for pause goals")            \
  2098           "Policy for changing generation size for pause goals")            \
  2040                                                                             \
  2099                                                                             \
  2041   develop(bool, PSAdjustTenuredGenForMinorPause, false,                     \
  2100   develop(bool, PSAdjustTenuredGenForMinorPause, false,                     \
  2042           "Adjust tenured generation to achive a minor pause goal")         \
  2101           "Adjust tenured generation to achieve a minor pause goal")        \
  2043                                                                             \
  2102                                                                             \
  2044   develop(bool, PSAdjustYoungGenForMajorPause, false,                       \
  2103   develop(bool, PSAdjustYoungGenForMajorPause, false,                       \
  2045           "Adjust young generation to achive a major pause goal")           \
  2104           "Adjust young generation to achieve a major pause goal")          \
  2046                                                                             \
  2105                                                                             \
  2047   product(uintx, AdaptiveSizePolicyInitializingSteps, 20,                   \
  2106   product(uintx, AdaptiveSizePolicyInitializingSteps, 20,                   \
  2048           "Number of steps where heuristics is used before data is used")   \
  2107           "Number of steps where heuristics is used before data is used")   \
  2049                                                                             \
  2108                                                                             \
  2050   develop(uintx, AdaptiveSizePolicyReadyThreshold, 5,                       \
  2109   develop(uintx, AdaptiveSizePolicyReadyThreshold, 5,                       \
  2095                                                                             \
  2154                                                                             \
  2096   product(uintx, TenuredGenerationSizeSupplementDecay, 2,                   \
  2155   product(uintx, TenuredGenerationSizeSupplementDecay, 2,                   \
  2097           "Decay factor to TenuredGenerationSizeIncrement")                 \
  2156           "Decay factor to TenuredGenerationSizeIncrement")                 \
  2098                                                                             \
  2157                                                                             \
  2099   product(uintx, MaxGCPauseMillis, max_uintx,                               \
  2158   product(uintx, MaxGCPauseMillis, max_uintx,                               \
  2100           "Adaptive size policy maximum GC pause time goal in msec, "       \
  2159           "Adaptive size policy maximum GC pause time goal in millisecond, "\
  2101           "or (G1 Only) the max. GC time per MMU time slice")               \
  2160           "or (G1 Only) the maximum GC time per MMU time slice")            \
  2102                                                                             \
  2161                                                                             \
  2103   product(uintx, GCPauseIntervalMillis, 0,                                  \
  2162   product(uintx, GCPauseIntervalMillis, 0,                                  \
  2104           "Time slice for MMU specification")                               \
  2163           "Time slice for MMU specification")                               \
  2105                                                                             \
  2164                                                                             \
  2106   product(uintx, MaxGCMinorPauseMillis, max_uintx,                          \
  2165   product(uintx, MaxGCMinorPauseMillis, max_uintx,                          \
  2107           "Adaptive size policy maximum GC minor pause time goal in msec")  \
  2166           "Adaptive size policy maximum GC minor pause time goal "          \
       
  2167           "in millisecond")                                                 \
  2108                                                                             \
  2168                                                                             \
  2109   product(uintx, GCTimeRatio, 99,                                           \
  2169   product(uintx, GCTimeRatio, 99,                                           \
  2110           "Adaptive size policy application time to GC time ratio")         \
  2170           "Adaptive size policy application time to GC time ratio")         \
  2111                                                                             \
  2171                                                                             \
  2112   product(uintx, AdaptiveSizeDecrementScaleFactor, 4,                       \
  2172   product(uintx, AdaptiveSizeDecrementScaleFactor, 4,                       \
  2120                                                                             \
  2180                                                                             \
  2121   product(uintx, MinSurvivorRatio, 3,                                       \
  2181   product(uintx, MinSurvivorRatio, 3,                                       \
  2122           "Minimum ratio of young generation/survivor space size")          \
  2182           "Minimum ratio of young generation/survivor space size")          \
  2123                                                                             \
  2183                                                                             \
  2124   product(uintx, InitialSurvivorRatio, 8,                                   \
  2184   product(uintx, InitialSurvivorRatio, 8,                                   \
  2125           "Initial ratio of eden/survivor space size")                      \
  2185           "Initial ratio of young generation/survivor space size")          \
  2126                                                                             \
  2186                                                                             \
  2127   product(uintx, BaseFootPrintEstimate, 256*M,                              \
  2187   product(uintx, BaseFootPrintEstimate, 256*M,                              \
  2128           "Estimate of footprint other than Java Heap")                     \
  2188           "Estimate of footprint other than Java Heap")                     \
  2129                                                                             \
  2189                                                                             \
  2130   product(bool, UseGCOverheadLimit, true,                                   \
  2190   product(bool, UseGCOverheadLimit, true,                                   \
  2131           "Use policy to limit of proportion of time spent in GC "          \
  2191           "Use policy to limit of proportion of time spent in GC "          \
  2132           "before an OutOfMemory error is thrown")                          \
  2192           "before an OutOfMemory error is thrown")                          \
  2133                                                                             \
  2193                                                                             \
  2134   product(uintx, GCTimeLimit, 98,                                           \
  2194   product(uintx, GCTimeLimit, 98,                                           \
  2135           "Limit of proportion of time spent in GC before an OutOfMemory"   \
  2195           "Limit of the proportion of time spent in GC before "             \
  2136           "error is thrown (used with GCHeapFreeLimit)")                    \
  2196           "an OutOfMemoryError is thrown (used with GCHeapFreeLimit)")      \
  2137                                                                             \
  2197                                                                             \
  2138   product(uintx, GCHeapFreeLimit, 2,                                        \
  2198   product(uintx, GCHeapFreeLimit, 2,                                        \
  2139           "Minimum percentage of free space after a full GC before an "     \
  2199           "Minimum percentage of free space after a full GC before an "     \
  2140           "OutOfMemoryError is thrown (used with GCTimeLimit)")             \
  2200           "OutOfMemoryError is thrown (used with GCTimeLimit)")             \
  2141                                                                             \
  2201                                                                             \
  2153                                                                             \
  2213                                                                             \
  2154   product(intx, PrefetchFieldsAhead, -1,                                    \
  2214   product(intx, PrefetchFieldsAhead, -1,                                    \
  2155           "How many fields ahead to prefetch in oop scan (<= 0 means off)") \
  2215           "How many fields ahead to prefetch in oop scan (<= 0 means off)") \
  2156                                                                             \
  2216                                                                             \
  2157   diagnostic(bool, VerifySilently, false,                                   \
  2217   diagnostic(bool, VerifySilently, false,                                   \
  2158           "Don't print print the verification progress")                    \
  2218           "Do not print the verification progress")                         \
  2159                                                                             \
  2219                                                                             \
  2160   diagnostic(bool, VerifyDuringStartup, false,                              \
  2220   diagnostic(bool, VerifyDuringStartup, false,                              \
  2161           "Verify memory system before executing any Java code "            \
  2221           "Verify memory system before executing any Java code "            \
  2162           "during VM initialization")                                       \
  2222           "during VM initialization")                                       \
  2163                                                                             \
  2223                                                                             \
  2176   diagnostic(bool, GCParallelVerificationEnabled, true,                     \
  2236   diagnostic(bool, GCParallelVerificationEnabled, true,                     \
  2177           "Enable parallel memory system verification")                     \
  2237           "Enable parallel memory system verification")                     \
  2178                                                                             \
  2238                                                                             \
  2179   diagnostic(bool, DeferInitialCardMark, false,                             \
  2239   diagnostic(bool, DeferInitialCardMark, false,                             \
  2180           "When +ReduceInitialCardMarks, explicitly defer any that "        \
  2240           "When +ReduceInitialCardMarks, explicitly defer any that "        \
  2181            "may arise from new_pre_store_barrier")                          \
  2241           "may arise from new_pre_store_barrier")                           \
  2182                                                                             \
  2242                                                                             \
  2183   diagnostic(bool, VerifyRememberedSets, false,                             \
  2243   diagnostic(bool, VerifyRememberedSets, false,                             \
  2184           "Verify GC remembered sets")                                      \
  2244           "Verify GC remembered sets")                                      \
  2185                                                                             \
  2245                                                                             \
  2186   diagnostic(bool, VerifyObjectStartArray, true,                            \
  2246   diagnostic(bool, VerifyObjectStartArray, true,                            \
  2187           "Verify GC object start array if verify before/after")            \
  2247           "Verify GC object start array if verify before/after")            \
  2188                                                                             \
  2248                                                                             \
  2189   product(bool, DisableExplicitGC, false,                                   \
  2249   product(bool, DisableExplicitGC, false,                                   \
  2190           "Tells whether calling System.gc() does a full GC")               \
  2250           "Ignore calls to System.gc()")                                    \
  2191                                                                             \
  2251                                                                             \
  2192   notproduct(bool, CheckMemoryInitialization, false,                        \
  2252   notproduct(bool, CheckMemoryInitialization, false,                        \
  2193           "Checks memory initialization")                                   \
  2253           "Check memory initialization")                                    \
  2194                                                                             \
  2254                                                                             \
  2195   product(bool, CollectGen0First, false,                                    \
  2255   product(bool, CollectGen0First, false,                                    \
  2196           "Collect youngest generation before each full GC")                \
  2256           "Collect youngest generation before each full GC")                \
  2197                                                                             \
  2257                                                                             \
  2198   diagnostic(bool, BindCMSThreadToCPU, false,                               \
  2258   diagnostic(bool, BindCMSThreadToCPU, false,                               \
  2209                                                                             \
  2269                                                                             \
  2210   product(uintx, ProcessDistributionStride, 4,                              \
  2270   product(uintx, ProcessDistributionStride, 4,                              \
  2211           "Stride through processors when distributing processes")          \
  2271           "Stride through processors when distributing processes")          \
  2212                                                                             \
  2272                                                                             \
  2213   product(uintx, CMSCoordinatorYieldSleepCount, 10,                         \
  2273   product(uintx, CMSCoordinatorYieldSleepCount, 10,                         \
  2214           "number of times the coordinator GC thread will sleep while "     \
  2274           "Number of times the coordinator GC thread will sleep while "     \
  2215           "yielding before giving up and resuming GC")                      \
  2275           "yielding before giving up and resuming GC")                      \
  2216                                                                             \
  2276                                                                             \
  2217   product(uintx, CMSYieldSleepCount, 0,                                     \
  2277   product(uintx, CMSYieldSleepCount, 0,                                     \
  2218           "number of times a GC thread (minus the coordinator) "            \
  2278           "Number of times a GC thread (minus the coordinator) "            \
  2219           "will sleep while yielding before giving up and resuming GC")     \
  2279           "will sleep while yielding before giving up and resuming GC")     \
  2220                                                                             \
  2280                                                                             \
  2221   /* gc tracing */                                                          \
  2281   /* gc tracing */                                                          \
  2222   manageable(bool, PrintGC, false,                                          \
  2282   manageable(bool, PrintGC, false,                                          \
  2223           "Print message at garbage collect")                               \
  2283           "Print message at garbage collection")                            \
  2224                                                                             \
  2284                                                                             \
  2225   manageable(bool, PrintGCDetails, false,                                   \
  2285   manageable(bool, PrintGCDetails, false,                                   \
  2226           "Print more details at garbage collect")                          \
  2286           "Print more details at garbage collection")                       \
  2227                                                                             \
  2287                                                                             \
  2228   manageable(bool, PrintGCDateStamps, false,                                \
  2288   manageable(bool, PrintGCDateStamps, false,                                \
  2229           "Print date stamps at garbage collect")                           \
  2289           "Print date stamps at garbage collection")                        \
  2230                                                                             \
  2290                                                                             \
  2231   manageable(bool, PrintGCTimeStamps, false,                                \
  2291   manageable(bool, PrintGCTimeStamps, false,                                \
  2232           "Print timestamps at garbage collect")                            \
  2292           "Print timestamps at garbage collection")                         \
  2233                                                                             \
  2293                                                                             \
  2234   product(bool, PrintGCTaskTimeStamps, false,                               \
  2294   product(bool, PrintGCTaskTimeStamps, false,                               \
  2235           "Print timestamps for individual gc worker thread tasks")         \
  2295           "Print timestamps for individual gc worker thread tasks")         \
  2236                                                                             \
  2296                                                                             \
  2237   develop(intx, ConcGCYieldTimeout, 0,                                      \
  2297   develop(intx, ConcGCYieldTimeout, 0,                                      \
  2238           "If non-zero, assert that GC threads yield within this # of ms.") \
  2298           "If non-zero, assert that GC threads yield within this "          \
       
  2299           "number of milliseconds")                                         \
  2239                                                                             \
  2300                                                                             \
  2240   notproduct(bool, TraceMarkSweep, false,                                   \
  2301   notproduct(bool, TraceMarkSweep, false,                                   \
  2241           "Trace mark sweep")                                               \
  2302           "Trace mark sweep")                                               \
  2242                                                                             \
  2303                                                                             \
  2243   product(bool, PrintReferenceGC, false,                                    \
  2304   product(bool, PrintReferenceGC, false,                                    \
  2244           "Print times spent handling reference objects during GC "         \
  2305           "Print times spent handling reference objects during GC "         \
  2245           " (enabled only when PrintGCDetails)")                            \
  2306           "(enabled only when PrintGCDetails)")                             \
  2246                                                                             \
  2307                                                                             \
  2247   develop(bool, TraceReferenceGC, false,                                    \
  2308   develop(bool, TraceReferenceGC, false,                                    \
  2248           "Trace handling of soft/weak/final/phantom references")           \
  2309           "Trace handling of soft/weak/final/phantom references")           \
  2249                                                                             \
  2310                                                                             \
  2250   develop(bool, TraceFinalizerRegistration, false,                          \
  2311   develop(bool, TraceFinalizerRegistration, false,                          \
  2251          "Trace registration of final references")                          \
  2312           "Trace registration of final references")                         \
  2252                                                                             \
  2313                                                                             \
  2253   notproduct(bool, TraceScavenge, false,                                    \
  2314   notproduct(bool, TraceScavenge, false,                                    \
  2254           "Trace scavenge")                                                 \
  2315           "Trace scavenge")                                                 \
  2255                                                                             \
  2316                                                                             \
  2256   product_rw(bool, TraceClassLoading, false,                                \
  2317   product_rw(bool, TraceClassLoading, false,                                \
  2283                                                                             \
  2344                                                                             \
  2284   product_rw(bool, PrintHeapAtGC, false,                                    \
  2345   product_rw(bool, PrintHeapAtGC, false,                                    \
  2285           "Print heap layout before and after each GC")                     \
  2346           "Print heap layout before and after each GC")                     \
  2286                                                                             \
  2347                                                                             \
  2287   product_rw(bool, PrintHeapAtGCExtended, false,                            \
  2348   product_rw(bool, PrintHeapAtGCExtended, false,                            \
  2288           "Prints extended information about the layout of the heap "       \
  2349           "Print extended information about the layout of the heap "        \
  2289           "when -XX:+PrintHeapAtGC is set")                                 \
  2350           "when -XX:+PrintHeapAtGC is set")                                 \
  2290                                                                             \
  2351                                                                             \
  2291   product(bool, PrintHeapAtSIGBREAK, true,                                  \
  2352   product(bool, PrintHeapAtSIGBREAK, true,                                  \
  2292           "Print heap layout in response to SIGBREAK")                      \
  2353           "Print heap layout in response to SIGBREAK")                      \
  2293                                                                             \
  2354                                                                             \
  2320                                                                             \
  2381                                                                             \
  2321   diagnostic(bool, TraceGCTaskThread, false,                                \
  2382   diagnostic(bool, TraceGCTaskThread, false,                                \
  2322           "Trace actions of the GC task threads")                           \
  2383           "Trace actions of the GC task threads")                           \
  2323                                                                             \
  2384                                                                             \
  2324   product(bool, PrintParallelOldGCPhaseTimes, false,                        \
  2385   product(bool, PrintParallelOldGCPhaseTimes, false,                        \
  2325           "Print the time taken by each parallel old gc phase."             \
  2386           "Print the time taken by each phase in ParallelOldGC "            \
  2326           "PrintGCDetails must also be enabled.")                           \
  2387           "(PrintGCDetails must also be enabled)")                          \
  2327                                                                             \
  2388                                                                             \
  2328   develop(bool, TraceParallelOldGCMarkingPhase, false,                      \
  2389   develop(bool, TraceParallelOldGCMarkingPhase, false,                      \
  2329           "Trace parallel old gc marking phase")                            \
  2390           "Trace marking phase in ParallelOldGC")                           \
  2330                                                                             \
  2391                                                                             \
  2331   develop(bool, TraceParallelOldGCSummaryPhase, false,                      \
  2392   develop(bool, TraceParallelOldGCSummaryPhase, false,                      \
  2332           "Trace parallel old gc summary phase")                            \
  2393           "Trace summary phase in ParallelOldGC")                           \
  2333                                                                             \
  2394                                                                             \
  2334   develop(bool, TraceParallelOldGCCompactionPhase, false,                   \
  2395   develop(bool, TraceParallelOldGCCompactionPhase, false,                   \
  2335           "Trace parallel old gc compaction phase")                         \
  2396           "Trace compaction phase in ParallelOldGC")                        \
  2336                                                                             \
  2397                                                                             \
  2337   develop(bool, TraceParallelOldGCDensePrefix, false,                       \
  2398   develop(bool, TraceParallelOldGCDensePrefix, false,                       \
  2338           "Trace parallel old gc dense prefix computation")                 \
  2399           "Trace dense prefix computation for ParallelOldGC")               \
  2339                                                                             \
  2400                                                                             \
  2340   develop(bool, IgnoreLibthreadGPFault, false,                              \
  2401   develop(bool, IgnoreLibthreadGPFault, false,                              \
  2341           "Suppress workaround for libthread GP fault")                     \
  2402           "Suppress workaround for libthread GP fault")                     \
  2342                                                                             \
  2403                                                                             \
  2343   product(bool, PrintJNIGCStalls, false,                                    \
  2404   product(bool, PrintJNIGCStalls, false,                                    \
  2344           "Print diagnostic message when GC is stalled"                     \
  2405           "Print diagnostic message when GC is stalled "                    \
  2345           "by JNI critical section")                                        \
  2406           "by JNI critical section")                                        \
  2346                                                                             \
  2407                                                                             \
  2347   experimental(double, ObjectCountCutOffPercent, 0.5,                       \
  2408   experimental(double, ObjectCountCutOffPercent, 0.5,                       \
  2348           "The percentage of the used heap that the instances of a class "  \
  2409           "The percentage of the used heap that the instances of a class "  \
  2349           "must occupy for the class to generate a trace event.")           \
  2410           "must occupy for the class to generate a trace event")            \
  2350                                                                             \
  2411                                                                             \
  2351   /* GC log rotation setting */                                             \
  2412   /* GC log rotation setting */                                             \
  2352                                                                             \
  2413                                                                             \
  2353   product(bool, UseGCLogFileRotation, false,                                \
  2414   product(bool, UseGCLogFileRotation, false,                                \
  2354           "Prevent large gclog file for long running app. "                 \
  2415           "Rotate gclog files (for long running applications). It requires "\
  2355           "Requires -Xloggc:<filename>")                                    \
  2416           "-Xloggc:<filename>")                                             \
  2356                                                                             \
  2417                                                                             \
  2357   product(uintx, NumberOfGCLogFiles, 0,                                     \
  2418   product(uintx, NumberOfGCLogFiles, 0,                                     \
  2358           "Number of gclog files in rotation, "                             \
  2419           "Number of gclog files in rotation "                              \
  2359           "Default: 0, no rotation")                                        \
  2420           "(default: 0, no rotation)")                                      \
  2360                                                                             \
  2421                                                                             \
  2361   product(uintx, GCLogFileSize, 0,                                          \
  2422   product(uintx, GCLogFileSize, 0,                                          \
  2362           "GC log file size, Default: 0 bytes, no rotation "                \
  2423           "GC log file size (default: 0 bytes, no rotation). "              \
  2363           "Only valid with UseGCLogFileRotation")                           \
  2424           "It requires UseGCLogFileRotation")                               \
  2364                                                                             \
  2425                                                                             \
  2365   /* JVMTI heap profiling */                                                \
  2426   /* JVMTI heap profiling */                                                \
  2366                                                                             \
  2427                                                                             \
  2367   diagnostic(bool, TraceJVMTIObjectTagging, false,                          \
  2428   diagnostic(bool, TraceJVMTIObjectTagging, false,                          \
  2368           "Trace JVMTI object tagging calls")                               \
  2429           "Trace JVMTI object tagging calls")                               \
  2435                                                                             \
  2496                                                                             \
  2436   develop(bool, GenerateRangeChecks, true,                                  \
  2497   develop(bool, GenerateRangeChecks, true,                                  \
  2437           "Generate range checks for array accesses")                       \
  2498           "Generate range checks for array accesses")                       \
  2438                                                                             \
  2499                                                                             \
  2439   develop_pd(bool, ImplicitNullChecks,                                      \
  2500   develop_pd(bool, ImplicitNullChecks,                                      \
  2440           "generate code for implicit null checks")                         \
  2501           "Generate code for implicit null checks")                         \
  2441                                                                             \
  2502                                                                             \
  2442   product(bool, PrintSafepointStatistics, false,                            \
  2503   product(bool, PrintSafepointStatistics, false,                            \
  2443           "print statistics about safepoint synchronization")               \
  2504           "Print statistics about safepoint synchronization")               \
  2444                                                                             \
  2505                                                                             \
  2445   product(intx, PrintSafepointStatisticsCount, 300,                         \
  2506   product(intx, PrintSafepointStatisticsCount, 300,                         \
  2446           "total number of safepoint statistics collected "                 \
  2507           "Total number of safepoint statistics collected "                 \
  2447           "before printing them out")                                       \
  2508           "before printing them out")                                       \
  2448                                                                             \
  2509                                                                             \
  2449   product(intx, PrintSafepointStatisticsTimeout,  -1,                       \
  2510   product(intx, PrintSafepointStatisticsTimeout,  -1,                       \
  2450           "print safepoint statistics only when safepoint takes"            \
  2511           "Print safepoint statistics only when safepoint takes "           \
  2451           " more than PrintSafepointSatisticsTimeout in millis")            \
  2512           "more than PrintSafepointSatisticsTimeout in millis")             \
  2452                                                                             \
  2513                                                                             \
  2453   product(bool, TraceSafepointCleanupTime, false,                           \
  2514   product(bool, TraceSafepointCleanupTime, false,                           \
  2454           "print the break down of clean up tasks performed during"         \
  2515           "Print the break down of clean up tasks performed during "        \
  2455           " safepoint")                                                     \
  2516           "safepoint")                                                      \
  2456                                                                             \
  2517                                                                             \
  2457   product(bool, Inline, true,                                               \
  2518   product(bool, Inline, true,                                               \
  2458           "enable inlining")                                                \
  2519           "Enable inlining")                                                \
  2459                                                                             \
  2520                                                                             \
  2460   product(bool, ClipInlining, true,                                         \
  2521   product(bool, ClipInlining, true,                                         \
  2461           "clip inlining if aggregate method exceeds DesiredMethodLimit")   \
  2522           "Clip inlining if aggregate method exceeds DesiredMethodLimit")   \
  2462                                                                             \
  2523                                                                             \
  2463   develop(bool, UseCHA, true,                                               \
  2524   develop(bool, UseCHA, true,                                               \
  2464           "enable CHA")                                                     \
  2525           "Enable CHA")                                                     \
  2465                                                                             \
  2526                                                                             \
  2466   product(bool, UseTypeProfile, true,                                       \
  2527   product(bool, UseTypeProfile, true,                                       \
  2467           "Check interpreter profile for historically monomorphic calls")   \
  2528           "Check interpreter profile for historically monomorphic calls")   \
  2468                                                                             \
  2529                                                                             \
  2469   notproduct(bool, TimeCompiler, false,                                     \
  2530   notproduct(bool, TimeCompiler, false,                                     \
  2470           "time the compiler")                                              \
  2531           "Time the compiler")                                              \
  2471                                                                             \
  2532                                                                             \
  2472   diagnostic(bool, PrintInlining, false,                                    \
  2533   diagnostic(bool, PrintInlining, false,                                    \
  2473           "prints inlining optimizations")                                  \
  2534           "Print inlining optimizations")                                   \
  2474                                                                             \
  2535                                                                             \
  2475   product(bool, UsePopCountInstruction, false,                              \
  2536   product(bool, UsePopCountInstruction, false,                              \
  2476           "Use population count instruction")                               \
  2537           "Use population count instruction")                               \
  2477                                                                             \
  2538                                                                             \
  2478   develop(bool, EagerInitialization, false,                                 \
  2539   develop(bool, EagerInitialization, false,                                 \
  2480                                                                             \
  2541                                                                             \
  2481   develop(bool, TraceMethodReplacement, false,                              \
  2542   develop(bool, TraceMethodReplacement, false,                              \
  2482           "Print when methods are replaced do to recompilation")            \
  2543           "Print when methods are replaced do to recompilation")            \
  2483                                                                             \
  2544                                                                             \
  2484   develop(bool, PrintMethodFlushing, false,                                 \
  2545   develop(bool, PrintMethodFlushing, false,                                 \
  2485           "print the nmethods being flushed")                               \
  2546           "Print the nmethods being flushed")                               \
  2486                                                                             \
  2547                                                                             \
  2487   develop(bool, UseRelocIndex, false,                                       \
  2548   develop(bool, UseRelocIndex, false,                                       \
  2488          "use an index to speed random access to relocations")              \
  2549           "Use an index to speed random access to relocations")             \
  2489                                                                             \
  2550                                                                             \
  2490   develop(bool, StressCodeBuffers, false,                                   \
  2551   develop(bool, StressCodeBuffers, false,                                   \
  2491          "Exercise code buffer expansion and other rare state changes")     \
  2552           "Exercise code buffer expansion and other rare state changes")    \
  2492                                                                             \
  2553                                                                             \
  2493   diagnostic(bool, DebugNonSafepoints, trueInDebug,                         \
  2554   diagnostic(bool, DebugNonSafepoints, trueInDebug,                         \
  2494          "Generate extra debugging info for non-safepoints in nmethods")    \
  2555           "Generate extra debugging information for non-safepoints in "     \
       
  2556           "nmethods")                                                       \
  2495                                                                             \
  2557                                                                             \
  2496   product(bool, PrintVMOptions, false,                                      \
  2558   product(bool, PrintVMOptions, false,                                      \
  2497          "Print flags that appeared on the command line")                   \
  2559           "Print flags that appeared on the command line")                  \
  2498                                                                             \
  2560                                                                             \
  2499   product(bool, IgnoreUnrecognizedVMOptions, false,                         \
  2561   product(bool, IgnoreUnrecognizedVMOptions, false,                         \
  2500          "Ignore unrecognized VM options")                                  \
  2562           "Ignore unrecognized VM options")                                 \
  2501                                                                             \
  2563                                                                             \
  2502   product(bool, PrintCommandLineFlags, false,                               \
  2564   product(bool, PrintCommandLineFlags, false,                               \
  2503          "Print flags specified on command line or set by ergonomics")      \
  2565           "Print flags specified on command line or set by ergonomics")     \
  2504                                                                             \
  2566                                                                             \
  2505   product(bool, PrintFlagsInitial, false,                                   \
  2567   product(bool, PrintFlagsInitial, false,                                   \
  2506          "Print all VM flags before argument processing and exit VM")       \
  2568           "Print all VM flags before argument processing and exit VM")      \
  2507                                                                             \
  2569                                                                             \
  2508   product(bool, PrintFlagsFinal, false,                                     \
  2570   product(bool, PrintFlagsFinal, false,                                     \
  2509          "Print all VM flags after argument and ergonomic processing")      \
  2571           "Print all VM flags after argument and ergonomic processing")     \
  2510                                                                             \
  2572                                                                             \
  2511   notproduct(bool, PrintFlagsWithComments, false,                           \
  2573   notproduct(bool, PrintFlagsWithComments, false,                           \
  2512          "Print all VM flags with default values and descriptions and exit")\
  2574           "Print all VM flags with default values and descriptions and "    \
       
  2575           "exit")                                                           \
  2513                                                                             \
  2576                                                                             \
  2514   diagnostic(bool, SerializeVMOutput, true,                                 \
  2577   diagnostic(bool, SerializeVMOutput, true,                                 \
  2515          "Use a mutex to serialize output to tty and hotspot.log")          \
  2578           "Use a mutex to serialize output to tty and LogFile")             \
  2516                                                                             \
  2579                                                                             \
  2517   diagnostic(bool, DisplayVMOutput, true,                                   \
  2580   diagnostic(bool, DisplayVMOutput, true,                                   \
  2518          "Display all VM output on the tty, independently of LogVMOutput")  \
  2581           "Display all VM output on the tty, independently of LogVMOutput") \
  2519                                                                             \
  2582                                                                             \
  2520   diagnostic(bool, LogVMOutput, trueInDebug,                                \
  2583   diagnostic(bool, LogVMOutput, false,                                      \
  2521          "Save VM output to hotspot.log, or to LogFile")                    \
  2584           "Save VM output to LogFile")                                      \
  2522                                                                             \
  2585                                                                             \
  2523   diagnostic(ccstr, LogFile, NULL,                                          \
  2586   diagnostic(ccstr, LogFile, NULL,                                          \
  2524          "If LogVMOutput is on, save VM output to this file [hotspot.log]") \
  2587           "If LogVMOutput or LogCompilation is on, save VM output to "      \
       
  2588           "this file [default: ./hotspot_pid%p.log] (%p replaced with pid)")\
  2525                                                                             \
  2589                                                                             \
  2526   product(ccstr, ErrorFile, NULL,                                           \
  2590   product(ccstr, ErrorFile, NULL,                                           \
  2527          "If an error occurs, save the error data to this file "            \
  2591           "If an error occurs, save the error data to this file "           \
  2528          "[default: ./hs_err_pid%p.log] (%p replaced with pid)")            \
  2592           "[default: ./hs_err_pid%p.log] (%p replaced with pid)")           \
  2529                                                                             \
  2593                                                                             \
  2530   product(bool, DisplayVMOutputToStderr, false,                             \
  2594   product(bool, DisplayVMOutputToStderr, false,                             \
  2531          "If DisplayVMOutput is true, display all VM output to stderr")     \
  2595           "If DisplayVMOutput is true, display all VM output to stderr")    \
  2532                                                                             \
  2596                                                                             \
  2533   product(bool, DisplayVMOutputToStdout, false,                             \
  2597   product(bool, DisplayVMOutputToStdout, false,                             \
  2534          "If DisplayVMOutput is true, display all VM output to stdout")     \
  2598           "If DisplayVMOutput is true, display all VM output to stdout")    \
  2535                                                                             \
  2599                                                                             \
  2536   product(bool, UseHeavyMonitors, false,                                    \
  2600   product(bool, UseHeavyMonitors, false,                                    \
  2537           "use heavyweight instead of lightweight Java monitors")           \
  2601           "use heavyweight instead of lightweight Java monitors")           \
  2538                                                                             \
  2602                                                                             \
  2539   product(bool, PrintStringTableStatistics, false,                          \
  2603   product(bool, PrintStringTableStatistics, false,                          \
  2540           "print statistics about the StringTable and SymbolTable")         \
  2604           "print statistics about the StringTable and SymbolTable")         \
       
  2605                                                                             \
       
  2606   diagnostic(bool, VerifyStringTableAtExit, false,                          \
       
  2607           "verify StringTable contents at exit")                            \
  2541                                                                             \
  2608                                                                             \
  2542   notproduct(bool, PrintSymbolTableSizeHistogram, false,                    \
  2609   notproduct(bool, PrintSymbolTableSizeHistogram, false,                    \
  2543           "print histogram of the symbol table")                            \
  2610           "print histogram of the symbol table")                            \
  2544                                                                             \
  2611                                                                             \
  2545   notproduct(bool, ExitVMOnVerifyError, false,                              \
  2612   notproduct(bool, ExitVMOnVerifyError, false,                              \
  2550           "Call fatal if this exception is thrown.  Example: "              \
  2617           "Call fatal if this exception is thrown.  Example: "              \
  2551           "java -XX:AbortVMOnException=java.lang.NullPointerException Foo") \
  2618           "java -XX:AbortVMOnException=java.lang.NullPointerException Foo") \
  2552                                                                             \
  2619                                                                             \
  2553   notproduct(ccstr, AbortVMOnExceptionMessage, NULL,                        \
  2620   notproduct(ccstr, AbortVMOnExceptionMessage, NULL,                        \
  2554           "Call fatal if the exception pointed by AbortVMOnException "      \
  2621           "Call fatal if the exception pointed by AbortVMOnException "      \
  2555           "has this message.")                                              \
  2622           "has this message")                                               \
  2556                                                                             \
  2623                                                                             \
  2557   develop(bool, DebugVtables, false,                                        \
  2624   develop(bool, DebugVtables, false,                                        \
  2558           "add debugging code to vtable dispatch")                          \
  2625           "add debugging code to vtable dispatch")                          \
  2559                                                                             \
  2626                                                                             \
  2560   develop(bool, PrintVtables, false,                                        \
  2627   develop(bool, PrintVtables, false,                                        \
  2615           "Inline allocations larger than this in doublewords must go slow")\
  2682           "Inline allocations larger than this in doublewords must go slow")\
  2616                                                                             \
  2683                                                                             \
  2617   product(bool, AggressiveOpts, false,                                      \
  2684   product(bool, AggressiveOpts, false,                                      \
  2618           "Enable aggressive optimizations - see arguments.cpp")            \
  2685           "Enable aggressive optimizations - see arguments.cpp")            \
  2619                                                                             \
  2686                                                                             \
       
  2687   product_pd(uintx, TypeProfileLevel,                                       \
       
  2688           "=XYZ, with Z: Type profiling of arguments at call; "             \
       
  2689                      "Y: Type profiling of return value at call; "          \
       
  2690                      "X: Type profiling of parameters to methods; "         \
       
  2691           "X, Y and Z in 0=off ; 1=jsr292 only; 2=all methods")             \
       
  2692                                                                             \
       
  2693   product(intx, TypeProfileArgsLimit,     2,                                \
       
  2694           "max number of call arguments to consider for type profiling")    \
       
  2695                                                                             \
       
  2696   product(intx, TypeProfileParmsLimit,    2,                                \
       
  2697           "max number of incoming parameters to consider for type profiling"\
       
  2698           ", -1 for all")                                                   \
       
  2699                                                                             \
  2620   /* statistics */                                                          \
  2700   /* statistics */                                                          \
  2621   develop(bool, CountCompiledCalls, false,                                  \
  2701   develop(bool, CountCompiledCalls, false,                                  \
  2622           "counts method invocations")                                      \
  2702           "Count method invocations")                                       \
  2623                                                                             \
  2703                                                                             \
  2624   notproduct(bool, CountRuntimeCalls, false,                                \
  2704   notproduct(bool, CountRuntimeCalls, false,                                \
  2625           "counts VM runtime calls")                                        \
  2705           "Count VM runtime calls")                                         \
  2626                                                                             \
  2706                                                                             \
  2627   develop(bool, CountJNICalls, false,                                       \
  2707   develop(bool, CountJNICalls, false,                                       \
  2628           "counts jni method invocations")                                  \
  2708           "Count jni method invocations")                                   \
  2629                                                                             \
  2709                                                                             \
  2630   notproduct(bool, CountJVMCalls, false,                                    \
  2710   notproduct(bool, CountJVMCalls, false,                                    \
  2631           "counts jvm method invocations")                                  \
  2711           "Count jvm method invocations")                                   \
  2632                                                                             \
  2712                                                                             \
  2633   notproduct(bool, CountRemovableExceptions, false,                         \
  2713   notproduct(bool, CountRemovableExceptions, false,                         \
  2634           "count exceptions that could be replaced by branches due to "     \
  2714           "Count exceptions that could be replaced by branches due to "     \
  2635           "inlining")                                                       \
  2715           "inlining")                                                       \
  2636                                                                             \
  2716                                                                             \
  2637   notproduct(bool, ICMissHistogram, false,                                  \
  2717   notproduct(bool, ICMissHistogram, false,                                  \
  2638           "produce histogram of IC misses")                                 \
  2718           "Produce histogram of IC misses")                                 \
  2639                                                                             \
  2719                                                                             \
  2640   notproduct(bool, PrintClassStatistics, false,                             \
  2720   notproduct(bool, PrintClassStatistics, false,                             \
  2641           "prints class statistics at end of run")                          \
  2721           "Print class statistics at end of run")                           \
  2642                                                                             \
  2722                                                                             \
  2643   notproduct(bool, PrintMethodStatistics, false,                            \
  2723   notproduct(bool, PrintMethodStatistics, false,                            \
  2644           "prints method statistics at end of run")                         \
  2724           "Print method statistics at end of run")                          \
  2645                                                                             \
  2725                                                                             \
  2646   /* interpreter */                                                         \
  2726   /* interpreter */                                                         \
  2647   develop(bool, ClearInterpreterLocals, false,                              \
  2727   develop(bool, ClearInterpreterLocals, false,                              \
  2648           "Always clear local variables of interpreter activations upon "   \
  2728           "Always clear local variables of interpreter activations upon "   \
  2649           "entry")                                                          \
  2729           "entry")                                                          \
  2653                                                                             \
  2733                                                                             \
  2654   product_pd(bool, RewriteFrequentPairs,                                    \
  2734   product_pd(bool, RewriteFrequentPairs,                                    \
  2655           "Rewrite frequently used bytecode pairs into a single bytecode")  \
  2735           "Rewrite frequently used bytecode pairs into a single bytecode")  \
  2656                                                                             \
  2736                                                                             \
  2657   diagnostic(bool, PrintInterpreter, false,                                 \
  2737   diagnostic(bool, PrintInterpreter, false,                                 \
  2658           "Prints the generated interpreter code")                          \
  2738           "Print the generated interpreter code")                           \
  2659                                                                             \
  2739                                                                             \
  2660   product(bool, UseInterpreter, true,                                       \
  2740   product(bool, UseInterpreter, true,                                       \
  2661           "Use interpreter for non-compiled methods")                       \
  2741           "Use interpreter for non-compiled methods")                       \
  2662                                                                             \
  2742                                                                             \
  2663   develop(bool, UseFastSignatureHandlers, true,                             \
  2743   develop(bool, UseFastSignatureHandlers, true,                             \
  2671                                                                             \
  2751                                                                             \
  2672   product(bool, UseFastAccessorMethods, true,                               \
  2752   product(bool, UseFastAccessorMethods, true,                               \
  2673           "Use fast method entry code for accessor methods")                \
  2753           "Use fast method entry code for accessor methods")                \
  2674                                                                             \
  2754                                                                             \
  2675   product_pd(bool, UseOnStackReplacement,                                   \
  2755   product_pd(bool, UseOnStackReplacement,                                   \
  2676            "Use on stack replacement, calls runtime if invoc. counter "     \
  2756           "Use on stack replacement, calls runtime if invoc. counter "      \
  2677            "overflows in loop")                                             \
  2757           "overflows in loop")                                              \
  2678                                                                             \
  2758                                                                             \
  2679   notproduct(bool, TraceOnStackReplacement, false,                          \
  2759   notproduct(bool, TraceOnStackReplacement, false,                          \
  2680           "Trace on stack replacement")                                     \
  2760           "Trace on stack replacement")                                     \
  2681                                                                             \
  2761                                                                             \
  2682   product_pd(bool, PreferInterpreterNativeStubs,                            \
  2762   product_pd(bool, PreferInterpreterNativeStubs,                            \
  2720                                                                             \
  2800                                                                             \
  2721   develop(bool, TraceFrequencyInlining, false,                              \
  2801   develop(bool, TraceFrequencyInlining, false,                              \
  2722           "Trace frequency based inlining")                                 \
  2802           "Trace frequency based inlining")                                 \
  2723                                                                             \
  2803                                                                             \
  2724   develop_pd(bool, InlineIntrinsics,                                        \
  2804   develop_pd(bool, InlineIntrinsics,                                        \
  2725            "Inline intrinsics that can be statically resolved")             \
  2805           "Inline intrinsics that can be statically resolved")              \
  2726                                                                             \
  2806                                                                             \
  2727   product_pd(bool, ProfileInterpreter,                                      \
  2807   product_pd(bool, ProfileInterpreter,                                      \
  2728            "Profile at the bytecode level during interpretation")           \
  2808           "Profile at the bytecode level during interpretation")            \
  2729                                                                             \
  2809                                                                             \
  2730   develop(bool, TraceProfileInterpreter, false,                             \
  2810   develop(bool, TraceProfileInterpreter, false,                             \
  2731           "Trace profiling at the bytecode level during interpretation. "   \
  2811           "Trace profiling at the bytecode level during interpretation. "   \
  2732           "This outputs the profiling information collected to improve "    \
  2812           "This outputs the profiling information collected to improve "    \
  2733           "jit compilation.")                                               \
  2813           "jit compilation.")                                               \
  2738   product(intx, ProfileMaturityPercentage, 20,                              \
  2818   product(intx, ProfileMaturityPercentage, 20,                              \
  2739           "number of method invocations/branches (expressed as % of "       \
  2819           "number of method invocations/branches (expressed as % of "       \
  2740           "CompileThreshold) before using the method's profile")            \
  2820           "CompileThreshold) before using the method's profile")            \
  2741                                                                             \
  2821                                                                             \
  2742   develop(bool, PrintMethodData, false,                                     \
  2822   develop(bool, PrintMethodData, false,                                     \
  2743            "Print the results of +ProfileInterpreter at end of run")        \
  2823           "Print the results of +ProfileInterpreter at end of run")         \
  2744                                                                             \
  2824                                                                             \
  2745   develop(bool, VerifyDataPointer, trueInDebug,                             \
  2825   develop(bool, VerifyDataPointer, trueInDebug,                             \
  2746           "Verify the method data pointer during interpreter profiling")    \
  2826           "Verify the method data pointer during interpreter profiling")    \
  2747                                                                             \
  2827                                                                             \
  2748   develop(bool, VerifyCompiledCode, false,                                  \
  2828   develop(bool, VerifyCompiledCode, false,                                  \
  2753           "Manually make GC thread crash then dump java stack trace;  "     \
  2833           "Manually make GC thread crash then dump java stack trace;  "     \
  2754           "Test only")                                                      \
  2834           "Test only")                                                      \
  2755                                                                             \
  2835                                                                             \
  2756   /* compilation */                                                         \
  2836   /* compilation */                                                         \
  2757   product(bool, UseCompiler, true,                                          \
  2837   product(bool, UseCompiler, true,                                          \
  2758           "use compilation")                                                \
  2838           "Use Just-In-Time compilation")                                   \
  2759                                                                             \
  2839                                                                             \
  2760   develop(bool, TraceCompilationPolicy, false,                              \
  2840   develop(bool, TraceCompilationPolicy, false,                              \
  2761           "Trace compilation policy")                                       \
  2841           "Trace compilation policy")                                       \
  2762                                                                             \
  2842                                                                             \
  2763   develop(bool, TimeCompilationPolicy, false,                               \
  2843   develop(bool, TimeCompilationPolicy, false,                               \
  2764           "Time the compilation policy")                                    \
  2844           "Time the compilation policy")                                    \
  2765                                                                             \
  2845                                                                             \
  2766   product(bool, UseCounterDecay, true,                                      \
  2846   product(bool, UseCounterDecay, true,                                      \
  2767            "adjust recompilation counters")                                 \
  2847           "Adjust recompilation counters")                                  \
  2768                                                                             \
  2848                                                                             \
  2769   develop(intx, CounterHalfLifeTime,    30,                                 \
  2849   develop(intx, CounterHalfLifeTime,    30,                                 \
  2770           "half-life time of invocation counters (in secs)")                \
  2850           "Half-life time of invocation counters (in seconds)")             \
  2771                                                                             \
  2851                                                                             \
  2772   develop(intx, CounterDecayMinIntervalLength,   500,                       \
  2852   develop(intx, CounterDecayMinIntervalLength,   500,                       \
  2773           "Min. ms. between invocation of CounterDecay")                    \
  2853           "The minimum interval (in milliseconds) between invocation of "   \
       
  2854           "CounterDecay")                                                   \
  2774                                                                             \
  2855                                                                             \
  2775   product(bool, AlwaysCompileLoopMethods, false,                            \
  2856   product(bool, AlwaysCompileLoopMethods, false,                            \
  2776           "when using recompilation, never interpret methods "              \
  2857           "When using recompilation, never interpret methods "              \
  2777           "containing loops")                                               \
  2858           "containing loops")                                               \
  2778                                                                             \
  2859                                                                             \
  2779   product(bool, DontCompileHugeMethods, true,                               \
  2860   product(bool, DontCompileHugeMethods, true,                               \
  2780           "don't compile methods > HugeMethodLimit")                        \
  2861           "Do not compile methods > HugeMethodLimit")                       \
  2781                                                                             \
  2862                                                                             \
  2782   /* Bytecode escape analysis estimation. */                                \
  2863   /* Bytecode escape analysis estimation. */                                \
  2783   product(bool, EstimateArgEscape, true,                                    \
  2864   product(bool, EstimateArgEscape, true,                                    \
  2784           "Analyze bytecodes to estimate escape state of arguments")        \
  2865           "Analyze bytecodes to estimate escape state of arguments")        \
  2785                                                                             \
  2866                                                                             \
  2786   product(intx, BCEATraceLevel, 0,                                          \
  2867   product(intx, BCEATraceLevel, 0,                                          \
  2787           "How much tracing to do of bytecode escape analysis estimates")   \
  2868           "How much tracing to do of bytecode escape analysis estimates")   \
  2788                                                                             \
  2869                                                                             \
  2789   product(intx, MaxBCEAEstimateLevel, 5,                                    \
  2870   product(intx, MaxBCEAEstimateLevel, 5,                                    \
  2790           "Maximum number of nested calls that are analyzed by BC EA.")     \
  2871           "Maximum number of nested calls that are analyzed by BC EA")      \
  2791                                                                             \
  2872                                                                             \
  2792   product(intx, MaxBCEAEstimateSize, 150,                                   \
  2873   product(intx, MaxBCEAEstimateSize, 150,                                   \
  2793           "Maximum bytecode size of a method to be analyzed by BC EA.")     \
  2874           "Maximum bytecode size of a method to be analyzed by BC EA")      \
  2794                                                                             \
  2875                                                                             \
  2795   product(intx,  AllocatePrefetchStyle, 1,                                  \
  2876   product(intx,  AllocatePrefetchStyle, 1,                                  \
  2796           "0 = no prefetch, "                                               \
  2877           "0 = no prefetch, "                                               \
  2797           "1 = prefetch instructions for each allocation, "                 \
  2878           "1 = prefetch instructions for each allocation, "                 \
  2798           "2 = use TLAB watermark to gate allocation prefetch, "            \
  2879           "2 = use TLAB watermark to gate allocation prefetch, "            \
  2803                                                                             \
  2884                                                                             \
  2804   product(intx,  AllocatePrefetchLines, 3,                                  \
  2885   product(intx,  AllocatePrefetchLines, 3,                                  \
  2805           "Number of lines to prefetch ahead of array allocation pointer")  \
  2886           "Number of lines to prefetch ahead of array allocation pointer")  \
  2806                                                                             \
  2887                                                                             \
  2807   product(intx,  AllocateInstancePrefetchLines, 1,                          \
  2888   product(intx,  AllocateInstancePrefetchLines, 1,                          \
  2808           "Number of lines to prefetch ahead of instance allocation pointer") \
  2889           "Number of lines to prefetch ahead of instance allocation "       \
       
  2890           "pointer")                                                        \
  2809                                                                             \
  2891                                                                             \
  2810   product(intx,  AllocatePrefetchStepSize, 16,                              \
  2892   product(intx,  AllocatePrefetchStepSize, 16,                              \
  2811           "Step size in bytes of sequential prefetch instructions")         \
  2893           "Step size in bytes of sequential prefetch instructions")         \
  2812                                                                             \
  2894                                                                             \
  2813   product(intx,  AllocatePrefetchInstr, 0,                                  \
  2895   product(intx,  AllocatePrefetchInstr, 0,                                  \
  2823   product(intx, SelfDestructTimer, 0,                                       \
  2905   product(intx, SelfDestructTimer, 0,                                       \
  2824           "Will cause VM to terminate after a given time (in minutes) "     \
  2906           "Will cause VM to terminate after a given time (in minutes) "     \
  2825           "(0 means off)")                                                  \
  2907           "(0 means off)")                                                  \
  2826                                                                             \
  2908                                                                             \
  2827   product(intx, MaxJavaStackTraceDepth, 1024,                               \
  2909   product(intx, MaxJavaStackTraceDepth, 1024,                               \
  2828           "Max. no. of lines in the stack trace for Java exceptions "       \
  2910           "The maximum number of lines in the stack trace for Java "        \
  2829           "(0 means all)")                                                  \
  2911           "exceptions (0 means all)")                                       \
  2830                                                                             \
  2912                                                                             \
  2831   NOT_EMBEDDED(diagnostic(intx, GuaranteedSafepointInterval, 1000,          \
  2913   NOT_EMBEDDED(diagnostic(intx, GuaranteedSafepointInterval, 1000,          \
  2832           "Guarantee a safepoint (at least) every so many milliseconds "    \
  2914           "Guarantee a safepoint (at least) every so many milliseconds "    \
  2833           "(0 means none)"))                                                \
  2915           "(0 means none)"))                                                \
  2834                                                                             \
  2916                                                                             \
  2843           "Number of invocations of sweeper to cover all nmethods")         \
  2925           "Number of invocations of sweeper to cover all nmethods")         \
  2844                                                                             \
  2926                                                                             \
  2845   product(intx, NmethodSweepCheckInterval, 5,                               \
  2927   product(intx, NmethodSweepCheckInterval, 5,                               \
  2846           "Compilers wake up every n seconds to possibly sweep nmethods")   \
  2928           "Compilers wake up every n seconds to possibly sweep nmethods")   \
  2847                                                                             \
  2929                                                                             \
       
  2930   product(intx, NmethodSweepActivity, 10,                                   \
       
  2931           "Removes cold nmethods from code cache if > 0. Higher values "    \
       
  2932           "result in more aggressive sweeping")                             \
       
  2933                                                                             \
  2848   notproduct(bool, LogSweeper, false,                                       \
  2934   notproduct(bool, LogSweeper, false,                                       \
  2849             "Keep a ring buffer of sweeper activity")                       \
  2935           "Keep a ring buffer of sweeper activity")                         \
  2850                                                                             \
  2936                                                                             \
  2851   notproduct(intx, SweeperLogEntries, 1024,                                 \
  2937   notproduct(intx, SweeperLogEntries, 1024,                                 \
  2852             "Number of records in the ring buffer of sweeper activity")     \
  2938           "Number of records in the ring buffer of sweeper activity")       \
  2853                                                                             \
  2939                                                                             \
  2854   notproduct(intx, MemProfilingInterval, 500,                               \
  2940   notproduct(intx, MemProfilingInterval, 500,                               \
  2855           "Time between each invocation of the MemProfiler")                \
  2941           "Time between each invocation of the MemProfiler")                \
  2856                                                                             \
  2942                                                                             \
  2857   develop(intx, MallocCatchPtr, -1,                                         \
  2943   develop(intx, MallocCatchPtr, -1,                                         \
  2890   product_pd(intx, InlineSmallCode,                                         \
  2976   product_pd(intx, InlineSmallCode,                                         \
  2891           "Only inline already compiled methods if their code size is "     \
  2977           "Only inline already compiled methods if their code size is "     \
  2892           "less than this")                                                 \
  2978           "less than this")                                                 \
  2893                                                                             \
  2979                                                                             \
  2894   product(intx, MaxInlineSize, 35,                                          \
  2980   product(intx, MaxInlineSize, 35,                                          \
  2895           "maximum bytecode size of a method to be inlined")                \
  2981           "The maximum bytecode size of a method to be inlined")            \
  2896                                                                             \
  2982                                                                             \
  2897   product_pd(intx, FreqInlineSize,                                          \
  2983   product_pd(intx, FreqInlineSize,                                          \
  2898           "maximum bytecode size of a frequent method to be inlined")       \
  2984           "The maximum bytecode size of a frequent method to be inlined")   \
  2899                                                                             \
  2985                                                                             \
  2900   product(intx, MaxTrivialSize, 6,                                          \
  2986   product(intx, MaxTrivialSize, 6,                                          \
  2901           "maximum bytecode size of a trivial method to be inlined")        \
  2987           "The maximum bytecode size of a trivial method to be inlined")    \
  2902                                                                             \
  2988                                                                             \
  2903   product(intx, MinInliningThreshold, 250,                                  \
  2989   product(intx, MinInliningThreshold, 250,                                  \
  2904           "min. invocation count a method needs to have to be inlined")     \
  2990           "The minimum invocation count a method needs to have to be "      \
       
  2991           "inlined")                                                        \
  2905                                                                             \
  2992                                                                             \
  2906   develop(intx, MethodHistogramCutoff, 100,                                 \
  2993   develop(intx, MethodHistogramCutoff, 100,                                 \
  2907           "cutoff value for method invoc. histogram (+CountCalls)")         \
  2994           "The cutoff value for method invocation histogram (+CountCalls)") \
  2908                                                                             \
  2995                                                                             \
  2909   develop(intx, ProfilerNumberOfInterpretedMethods, 25,                     \
  2996   develop(intx, ProfilerNumberOfInterpretedMethods, 25,                     \
  2910           "# of interpreted methods to show in profile")                    \
  2997           "Number of interpreted methods to show in profile")               \
  2911                                                                             \
  2998                                                                             \
  2912   develop(intx, ProfilerNumberOfCompiledMethods, 25,                        \
  2999   develop(intx, ProfilerNumberOfCompiledMethods, 25,                        \
  2913           "# of compiled methods to show in profile")                       \
  3000           "Number of compiled methods to show in profile")                  \
  2914                                                                             \
  3001                                                                             \
  2915   develop(intx, ProfilerNumberOfStubMethods, 25,                            \
  3002   develop(intx, ProfilerNumberOfStubMethods, 25,                            \
  2916           "# of stub methods to show in profile")                           \
  3003           "Number of stub methods to show in profile")                      \
  2917                                                                             \
  3004                                                                             \
  2918   develop(intx, ProfilerNumberOfRuntimeStubNodes, 25,                       \
  3005   develop(intx, ProfilerNumberOfRuntimeStubNodes, 25,                       \
  2919           "# of runtime stub nodes to show in profile")                     \
  3006           "Number of runtime stub nodes to show in profile")                \
  2920                                                                             \
  3007                                                                             \
  2921   product(intx, ProfileIntervalsTicks, 100,                                 \
  3008   product(intx, ProfileIntervalsTicks, 100,                                 \
  2922           "# of ticks between printing of interval profile "                \
  3009           "Number of ticks between printing of interval profile "           \
  2923           "(+ProfileIntervals)")                                            \
  3010           "(+ProfileIntervals)")                                            \
  2924                                                                             \
  3011                                                                             \
  2925   notproduct(intx, ScavengeALotInterval,     1,                             \
  3012   notproduct(intx, ScavengeALotInterval,     1,                             \
  2926           "Interval between which scavenge will occur with +ScavengeALot")  \
  3013           "Interval between which scavenge will occur with +ScavengeALot")  \
  2927                                                                             \
  3014                                                                             \
  2938   develop(intx, DontYieldALotInterval,    10,                               \
  3025   develop(intx, DontYieldALotInterval,    10,                               \
  2939           "Interval between which yields will be dropped (milliseconds)")   \
  3026           "Interval between which yields will be dropped (milliseconds)")   \
  2940                                                                             \
  3027                                                                             \
  2941   develop(intx, MinSleepInterval,     1,                                    \
  3028   develop(intx, MinSleepInterval,     1,                                    \
  2942           "Minimum sleep() interval (milliseconds) when "                   \
  3029           "Minimum sleep() interval (milliseconds) when "                   \
  2943           "ConvertSleepToYield is off (used for SOLARIS)")                  \
  3030           "ConvertSleepToYield is off (used for Solaris)")                  \
  2944                                                                             \
  3031                                                                             \
  2945   develop(intx, ProfilerPCTickThreshold,    15,                             \
  3032   develop(intx, ProfilerPCTickThreshold,    15,                             \
  2946           "Number of ticks in a PC buckets to be a hotspot")                \
  3033           "Number of ticks in a PC buckets to be a hotspot")                \
  2947                                                                             \
  3034                                                                             \
  2948   notproduct(intx, DeoptimizeALotInterval,     5,                           \
  3035   notproduct(intx, DeoptimizeALotInterval,     5,                           \
  2953                                                                             \
  3040                                                                             \
  2954   develop(bool, StressNonEntrant, false,                                    \
  3041   develop(bool, StressNonEntrant, false,                                    \
  2955           "Mark nmethods non-entrant at registration")                      \
  3042           "Mark nmethods non-entrant at registration")                      \
  2956                                                                             \
  3043                                                                             \
  2957   diagnostic(intx, MallocVerifyInterval,     0,                             \
  3044   diagnostic(intx, MallocVerifyInterval,     0,                             \
  2958           "if non-zero, verify C heap after every N calls to "              \
  3045           "If non-zero, verify C heap after every N calls to "              \
  2959           "malloc/realloc/free")                                            \
  3046           "malloc/realloc/free")                                            \
  2960                                                                             \
  3047                                                                             \
  2961   diagnostic(intx, MallocVerifyStart,     0,                                \
  3048   diagnostic(intx, MallocVerifyStart,     0,                                \
  2962           "if non-zero, start verifying C heap after Nth call to "          \
  3049           "If non-zero, start verifying C heap after Nth call to "          \
  2963           "malloc/realloc/free")                                            \
  3050           "malloc/realloc/free")                                            \
  2964                                                                             \
  3051                                                                             \
  2965   diagnostic(uintx, MallocMaxTestWords,     0,                              \
  3052   diagnostic(uintx, MallocMaxTestWords,     0,                              \
  2966           "if non-zero, max # of Words that malloc/realloc can allocate "   \
  3053           "If non-zero, maximum number of words that malloc/realloc can "   \
  2967           "(for testing only)")                                             \
  3054           "allocate (for testing only)")                                    \
  2968                                                                             \
  3055                                                                             \
  2969   product(intx, TypeProfileWidth,     2,                                    \
  3056   product(intx, TypeProfileWidth,     2,                                    \
  2970           "number of receiver types to record in call/cast profile")        \
  3057           "Number of receiver types to record in call/cast profile")        \
  2971                                                                             \
  3058                                                                             \
  2972   develop(intx, BciProfileWidth,      2,                                    \
  3059   develop(intx, BciProfileWidth,      2,                                    \
  2973           "number of return bci's to record in ret profile")                \
  3060           "Number of return bci's to record in ret profile")                \
  2974                                                                             \
  3061                                                                             \
  2975   product(intx, PerMethodRecompilationCutoff, 400,                          \
  3062   product(intx, PerMethodRecompilationCutoff, 400,                          \
  2976           "After recompiling N times, stay in the interpreter (-1=>'Inf')") \
  3063           "After recompiling N times, stay in the interpreter (-1=>'Inf')") \
  2977                                                                             \
  3064                                                                             \
  2978   product(intx, PerBytecodeRecompilationCutoff, 200,                        \
  3065   product(intx, PerBytecodeRecompilationCutoff, 200,                        \
  3035                                                                             \
  3122                                                                             \
  3036   product(uintx, TLABWasteTargetPercent, 1,                                 \
  3123   product(uintx, TLABWasteTargetPercent, 1,                                 \
  3037           "Percentage of Eden that can be wasted")                          \
  3124           "Percentage of Eden that can be wasted")                          \
  3038                                                                             \
  3125                                                                             \
  3039   product(uintx, TLABRefillWasteFraction,    64,                            \
  3126   product(uintx, TLABRefillWasteFraction,    64,                            \
  3040           "Max TLAB waste at a refill (internal fragmentation)")            \
  3127           "Maximum TLAB waste at a refill (internal fragmentation)")        \
  3041                                                                             \
  3128                                                                             \
  3042   product(uintx, TLABWasteIncrement,    4,                                  \
  3129   product(uintx, TLABWasteIncrement,    4,                                  \
  3043           "Increment allowed waste at slow allocation")                     \
  3130           "Increment allowed waste at slow allocation")                     \
  3044                                                                             \
  3131                                                                             \
  3045   product(uintx, SurvivorRatio, 8,                                          \
  3132   product(uintx, SurvivorRatio, 8,                                          \
  3046           "Ratio of eden/survivor space size")                              \
  3133           "Ratio of eden/survivor space size")                              \
  3047                                                                             \
  3134                                                                             \
  3048   product(uintx, NewRatio, 2,                                               \
  3135   product(uintx, NewRatio, 2,                                               \
  3049           "Ratio of new/old generation sizes")                              \
  3136           "Ratio of old/new generation sizes")                              \
  3050                                                                             \
  3137                                                                             \
  3051   product_pd(uintx, NewSizeThreadIncrease,                                  \
  3138   product_pd(uintx, NewSizeThreadIncrease,                                  \
  3052           "Additional size added to desired new generation size per "       \
  3139           "Additional size added to desired new generation size per "       \
  3053           "non-daemon thread (in bytes)")                                   \
  3140           "non-daemon thread (in bytes)")                                   \
  3054                                                                             \
  3141                                                                             \
  3056           "Initial size of Metaspaces (in bytes)")                          \
  3143           "Initial size of Metaspaces (in bytes)")                          \
  3057                                                                             \
  3144                                                                             \
  3058   product(uintx, MaxMetaspaceSize, max_uintx,                               \
  3145   product(uintx, MaxMetaspaceSize, max_uintx,                               \
  3059           "Maximum size of Metaspaces (in bytes)")                          \
  3146           "Maximum size of Metaspaces (in bytes)")                          \
  3060                                                                             \
  3147                                                                             \
  3061   product(uintx, ClassMetaspaceSize, 1*G,                                   \
  3148   product(uintx, CompressedClassSpaceSize, 1*G,                             \
  3062           "Maximum size of InstanceKlass area in Metaspace used for "       \
  3149           "Maximum size of class area in Metaspace when compressed "        \
  3063           "UseCompressedKlassPointers")                                     \
  3150           "class pointers are used")                                        \
  3064                                                                             \
  3151                                                                             \
  3065   product(uintx, MinHeapFreeRatio,    40,                                   \
  3152   product(uintx, MinHeapFreeRatio,    40,                                   \
  3066           "Min percentage of heap free after GC to avoid expansion")        \
  3153           "The minimum percentage of heap free after GC to avoid expansion."\
       
  3154           " For most GCs this applies to the old generation. In G1 it"      \
       
  3155           " applies to the whole heap. Not supported by ParallelGC.")       \
  3067                                                                             \
  3156                                                                             \
  3068   product(uintx, MaxHeapFreeRatio,    70,                                   \
  3157   product(uintx, MaxHeapFreeRatio,    70,                                   \
  3069           "Max percentage of heap free after GC to avoid shrinking")        \
  3158           "The maximum percentage of heap free after GC to avoid shrinking."\
       
  3159           " For most GCs this applies to the old generation. In G1 it"      \
       
  3160           " applies to the whole heap. Not supported by ParallelGC.")       \
  3070                                                                             \
  3161                                                                             \
  3071   product(intx, SoftRefLRUPolicyMSPerMB, 1000,                              \
  3162   product(intx, SoftRefLRUPolicyMSPerMB, 1000,                              \
  3072           "Number of milliseconds per MB of free space in the heap")        \
  3163           "Number of milliseconds per MB of free space in the heap")        \
  3073                                                                             \
  3164                                                                             \
  3074   product(uintx, MinHeapDeltaBytes, ScaleForWordSize(128*K),                \
  3165   product(uintx, MinHeapDeltaBytes, ScaleForWordSize(128*K),                \
  3075           "Min change in heap space due to GC (in bytes)")                  \
  3166           "The minimum change in heap space due to GC (in bytes)")          \
  3076                                                                             \
  3167                                                                             \
  3077   product(uintx, MinMetaspaceExpansion, ScaleForWordSize(256*K),            \
  3168   product(uintx, MinMetaspaceExpansion, ScaleForWordSize(256*K),            \
  3078           "Min expansion of Metaspace (in bytes)")                          \
  3169           "The minimum expansion of Metaspace (in bytes)")                  \
  3079                                                                             \
  3170                                                                             \
  3080   product(uintx, MinMetaspaceFreeRatio,    40,                              \
  3171   product(uintx, MinMetaspaceFreeRatio,    40,                              \
  3081           "Min percentage of Metaspace free after GC to avoid expansion")   \
  3172           "The minimum percentage of Metaspace free after GC to avoid "     \
       
  3173           "expansion")                                                      \
  3082                                                                             \
  3174                                                                             \
  3083   product(uintx, MaxMetaspaceFreeRatio,    70,                              \
  3175   product(uintx, MaxMetaspaceFreeRatio,    70,                              \
  3084           "Max percentage of Metaspace free after GC to avoid shrinking")   \
  3176           "The maximum percentage of Metaspace free after GC to avoid "     \
       
  3177           "shrinking")                                                      \
  3085                                                                             \
  3178                                                                             \
  3086   product(uintx, MaxMetaspaceExpansion, ScaleForWordSize(4*M),              \
  3179   product(uintx, MaxMetaspaceExpansion, ScaleForWordSize(4*M),              \
  3087           "Max expansion of Metaspace without full GC (in bytes)")          \
  3180           "The maximum expansion of Metaspace without full GC (in bytes)")  \
  3088                                                                             \
  3181                                                                             \
  3089   product(uintx, QueuedAllocationWarningCount, 0,                           \
  3182   product(uintx, QueuedAllocationWarningCount, 0,                           \
  3090           "Number of times an allocation that queues behind a GC "          \
  3183           "Number of times an allocation that queues behind a GC "          \
  3091           "will retry before printing a warning")                           \
  3184           "will retry before printing a warning")                           \
  3092                                                                             \
  3185                                                                             \
  3104                                                                             \
  3197                                                                             \
  3105   product(uintx, TargetSurvivorRatio,    50,                                \
  3198   product(uintx, TargetSurvivorRatio,    50,                                \
  3106           "Desired percentage of survivor space used after scavenge")       \
  3199           "Desired percentage of survivor space used after scavenge")       \
  3107                                                                             \
  3200                                                                             \
  3108   product(uintx, MarkSweepDeadRatio,     5,                                 \
  3201   product(uintx, MarkSweepDeadRatio,     5,                                 \
  3109           "Percentage (0-100) of the old gen allowed as dead wood."         \
  3202           "Percentage (0-100) of the old gen allowed as dead wood. "        \
  3110           "Serial mark sweep treats this as both the min and max value."    \
  3203           "Serial mark sweep treats this as both the minimum and maximum "  \
  3111           "CMS uses this value only if it falls back to mark sweep."        \
  3204           "value. "                                                         \
  3112           "Par compact uses a variable scale based on the density of the"   \
  3205           "CMS uses this value only if it falls back to mark sweep. "       \
  3113           "generation and treats this as the max value when the heap is"    \
  3206           "Par compact uses a variable scale based on the density of the "  \
  3114           "either completely full or completely empty.  Par compact also"   \
  3207           "generation and treats this as the maximum value when the heap "  \
  3115           "has a smaller default value; see arguments.cpp.")                \
  3208           "is either completely full or completely empty.  Par compact "    \
       
  3209           "also has a smaller default value; see arguments.cpp.")           \
  3116                                                                             \
  3210                                                                             \
  3117   product(uintx, MarkSweepAlwaysCompactCount,     4,                        \
  3211   product(uintx, MarkSweepAlwaysCompactCount,     4,                        \
  3118           "How often should we fully compact the heap (ignoring the dead "  \
  3212           "How often should we fully compact the heap (ignoring the dead "  \
  3119           "space parameters)")                                              \
  3213           "space parameters)")                                              \
  3120                                                                             \
  3214                                                                             \
  3129                                                                             \
  3223                                                                             \
  3130   product(intx, PrintFLSCensus, 0,                                          \
  3224   product(intx, PrintFLSCensus, 0,                                          \
  3131           "Census for CMS' FreeListSpace")                                  \
  3225           "Census for CMS' FreeListSpace")                                  \
  3132                                                                             \
  3226                                                                             \
  3133   develop(uintx, GCExpandToAllocateDelayMillis, 0,                          \
  3227   develop(uintx, GCExpandToAllocateDelayMillis, 0,                          \
  3134           "Delay in ms between expansion and allocation")                   \
  3228           "Delay between expansion and allocation (in milliseconds)")       \
  3135                                                                             \
  3229                                                                             \
  3136   develop(uintx, GCWorkerDelayMillis, 0,                                    \
  3230   develop(uintx, GCWorkerDelayMillis, 0,                                    \
  3137           "Delay in ms in scheduling GC workers")                           \
  3231           "Delay in scheduling GC workers (in milliseconds)")               \
  3138                                                                             \
  3232                                                                             \
  3139   product(intx, DeferThrSuspendLoopCount,     4000,                         \
  3233   product(intx, DeferThrSuspendLoopCount,     4000,                         \
  3140           "(Unstable) Number of times to iterate in safepoint loop "        \
  3234           "(Unstable) Number of times to iterate in safepoint loop "        \
  3141           " before blocking VM threads ")                                   \
  3235           "before blocking VM threads ")                                    \
  3142                                                                             \
  3236                                                                             \
  3143   product(intx, DeferPollingPageLoopCount,     -1,                          \
  3237   product(intx, DeferPollingPageLoopCount,     -1,                          \
  3144           "(Unsafe,Unstable) Number of iterations in safepoint loop "       \
  3238           "(Unsafe,Unstable) Number of iterations in safepoint loop "       \
  3145           "before changing safepoint polling page to RO ")                  \
  3239           "before changing safepoint polling page to RO ")                  \
  3146                                                                             \
  3240                                                                             \
  3147   product(intx, SafepointSpinBeforeYield, 2000,  "(Unstable)")              \
  3241   product(intx, SafepointSpinBeforeYield, 2000, "(Unstable)")               \
  3148                                                                             \
  3242                                                                             \
  3149   product(bool, PSChunkLargeArrays, true,                                   \
  3243   product(bool, PSChunkLargeArrays, true,                                   \
  3150           "true: process large arrays in chunks")                           \
  3244           "Process large arrays in chunks")                                 \
  3151                                                                             \
  3245                                                                             \
  3152   product(uintx, GCDrainStackTargetSize, 64,                                \
  3246   product(uintx, GCDrainStackTargetSize, 64,                                \
  3153           "how many entries we'll try to leave on the stack during "        \
  3247           "Number of entries we will try to leave on the stack "            \
  3154           "parallel GC")                                                    \
  3248           "during parallel gc")                                             \
  3155                                                                             \
  3249                                                                             \
  3156   /* stack parameters */                                                    \
  3250   /* stack parameters */                                                    \
  3157   product_pd(intx, StackYellowPages,                                        \
  3251   product_pd(intx, StackYellowPages,                                        \
  3158           "Number of yellow zone (recoverable overflows) pages")            \
  3252           "Number of yellow zone (recoverable overflows) pages")            \
  3159                                                                             \
  3253                                                                             \
  3160   product_pd(intx, StackRedPages,                                           \
  3254   product_pd(intx, StackRedPages,                                           \
  3161           "Number of red zone (unrecoverable overflows) pages")             \
  3255           "Number of red zone (unrecoverable overflows) pages")             \
  3162                                                                             \
  3256                                                                             \
  3163   product_pd(intx, StackShadowPages,                                        \
  3257   product_pd(intx, StackShadowPages,                                        \
  3164           "Number of shadow zone (for overflow checking) pages"             \
  3258           "Number of shadow zone (for overflow checking) pages "            \
  3165           " this should exceed the depth of the VM and native call stack")  \
  3259           "this should exceed the depth of the VM and native call stack")   \
  3166                                                                             \
  3260                                                                             \
  3167   product_pd(intx, ThreadStackSize,                                         \
  3261   product_pd(intx, ThreadStackSize,                                         \
  3168           "Thread Stack Size (in Kbytes)")                                  \
  3262           "Thread Stack Size (in Kbytes)")                                  \
  3169                                                                             \
  3263                                                                             \
  3170   product_pd(intx, VMThreadStackSize,                                       \
  3264   product_pd(intx, VMThreadStackSize,                                       \
  3201                                                                             \
  3295                                                                             \
  3202   product_pd(uintx, ReservedCodeCacheSize,                                  \
  3296   product_pd(uintx, ReservedCodeCacheSize,                                  \
  3203           "Reserved code cache size (in bytes) - maximum code cache size")  \
  3297           "Reserved code cache size (in bytes) - maximum code cache size")  \
  3204                                                                             \
  3298                                                                             \
  3205   product(uintx, CodeCacheMinimumFreeSpace, 500*K,                          \
  3299   product(uintx, CodeCacheMinimumFreeSpace, 500*K,                          \
  3206           "When less than X space left, we stop compiling.")                \
  3300           "When less than X space left, we stop compiling")                 \
  3207                                                                             \
  3301                                                                             \
  3208   product_pd(uintx, CodeCacheExpansionSize,                                 \
  3302   product_pd(uintx, CodeCacheExpansionSize,                                 \
  3209           "Code cache expansion size (in bytes)")                           \
  3303           "Code cache expansion size (in bytes)")                           \
  3210                                                                             \
  3304                                                                             \
  3211   develop_pd(uintx, CodeCacheMinBlockLength,                                \
  3305   develop_pd(uintx, CodeCacheMinBlockLength,                                \
  3212           "Minimum number of segments in a code cache block.")              \
  3306           "Minimum number of segments in a code cache block")               \
  3213                                                                             \
  3307                                                                             \
  3214   notproduct(bool, ExitOnFullCodeCache, false,                              \
  3308   notproduct(bool, ExitOnFullCodeCache, false,                              \
  3215           "Exit the VM if we fill the code cache.")                         \
  3309           "Exit the VM if we fill the code cache")                          \
  3216                                                                             \
  3310                                                                             \
  3217   product(bool, UseCodeCacheFlushing, true,                                 \
  3311   product(bool, UseCodeCacheFlushing, true,                                 \
  3218           "Attempt to clean the code cache before shutting off compiler")   \
  3312           "Attempt to clean the code cache before shutting off compiler")   \
  3219                                                                             \
       
  3220   product(intx,  MinCodeCacheFlushingInterval, 30,                          \
       
  3221           "Min number of seconds between code cache cleaning sessions")     \
       
  3222                                                                             \
       
  3223   product(uintx,  CodeCacheFlushingMinimumFreeSpace, 1500*K,                \
       
  3224           "When less than X space left, start code cache cleaning")         \
       
  3225                                                                             \
       
  3226   product(uintx, CodeCacheFlushingFraction, 2,                              \
       
  3227           "Fraction of the code cache that is flushed when full")           \
       
  3228                                                                             \
  3313                                                                             \
  3229   /* interpreter debugging */                                               \
  3314   /* interpreter debugging */                                               \
  3230   develop(intx, BinarySwitchThreshold, 5,                                   \
  3315   develop(intx, BinarySwitchThreshold, 5,                                   \
  3231           "Minimal number of lookupswitch entries for rewriting to binary " \
  3316           "Minimal number of lookupswitch entries for rewriting to binary " \
  3232           "switch")                                                         \
  3317           "switch")                                                         \
  3233                                                                             \
  3318                                                                             \
  3234   develop(intx, StopInterpreterAt, 0,                                       \
  3319   develop(intx, StopInterpreterAt, 0,                                       \
  3235           "Stops interpreter execution at specified bytecode number")       \
  3320           "Stop interpreter execution at specified bytecode number")        \
  3236                                                                             \
  3321                                                                             \
  3237   develop(intx, TraceBytecodesAt, 0,                                        \
  3322   develop(intx, TraceBytecodesAt, 0,                                        \
  3238           "Traces bytecodes starting with specified bytecode number")       \
  3323           "Trace bytecodes starting with specified bytecode number")        \
  3239                                                                             \
  3324                                                                             \
  3240   /* compiler interface */                                                  \
  3325   /* compiler interface */                                                  \
  3241   develop(intx, CIStart, 0,                                                 \
  3326   develop(intx, CIStart, 0,                                                 \
  3242           "the id of the first compilation to permit")                      \
  3327           "The id of the first compilation to permit")                      \
  3243                                                                             \
  3328                                                                             \
  3244   develop(intx, CIStop,    -1,                                              \
  3329   develop(intx, CIStop,    -1,                                              \
  3245           "the id of the last compilation to permit")                       \
  3330           "The id of the last compilation to permit")                       \
  3246                                                                             \
  3331                                                                             \
  3247   develop(intx, CIStartOSR,     0,                                          \
  3332   develop(intx, CIStartOSR,     0,                                          \
  3248           "the id of the first osr compilation to permit "                  \
  3333           "The id of the first osr compilation to permit "                  \
  3249           "(CICountOSR must be on)")                                        \
  3334           "(CICountOSR must be on)")                                        \
  3250                                                                             \
  3335                                                                             \
  3251   develop(intx, CIStopOSR,    -1,                                           \
  3336   develop(intx, CIStopOSR,    -1,                                           \
  3252           "the id of the last osr compilation to permit "                   \
  3337           "The id of the last osr compilation to permit "                   \
  3253           "(CICountOSR must be on)")                                        \
  3338           "(CICountOSR must be on)")                                        \
  3254                                                                             \
  3339                                                                             \
  3255   develop(intx, CIBreakAtOSR,    -1,                                        \
  3340   develop(intx, CIBreakAtOSR,    -1,                                        \
  3256           "id of osr compilation to break at")                              \
  3341           "The id of osr compilation to break at")                          \
  3257                                                                             \
  3342                                                                             \
  3258   develop(intx, CIBreakAt,    -1,                                           \
  3343   develop(intx, CIBreakAt,    -1,                                           \
  3259           "id of compilation to break at")                                  \
  3344           "The id of compilation to break at")                              \
  3260                                                                             \
  3345                                                                             \
  3261   product(ccstrlist, CompileOnly, "",                                       \
  3346   product(ccstrlist, CompileOnly, "",                                       \
  3262           "List of methods (pkg/class.name) to restrict compilation to")    \
  3347           "List of methods (pkg/class.name) to restrict compilation to")    \
  3263                                                                             \
  3348                                                                             \
  3264   product(ccstr, CompileCommandFile, NULL,                                  \
  3349   product(ccstr, CompileCommandFile, NULL,                                  \
  3273   product(ccstr, ReplayDataFile, NULL,                                      \
  3358   product(ccstr, ReplayDataFile, NULL,                                      \
  3274           "File containing compilation replay information"                  \
  3359           "File containing compilation replay information"                  \
  3275           "[default: ./replay_pid%p.log] (%p replaced with pid)")           \
  3360           "[default: ./replay_pid%p.log] (%p replaced with pid)")           \
  3276                                                                             \
  3361                                                                             \
  3277   develop(intx, ReplaySuppressInitializers, 2,                              \
  3362   develop(intx, ReplaySuppressInitializers, 2,                              \
  3278           "Controls handling of class initialization during replay"         \
  3363           "Control handling of class initialization during replay: "        \
  3279           "0 - don't do anything special"                                   \
  3364           "0 - don't do anything special; "                                 \
  3280           "1 - treat all class initializers as empty"                       \
  3365           "1 - treat all class initializers as empty; "                     \
  3281           "2 - treat class initializers for application classes as empty"   \
  3366           "2 - treat class initializers for application classes as empty; " \
  3282           "3 - allow all class initializers to run during bootstrap but"    \
  3367           "3 - allow all class initializers to run during bootstrap but "   \
  3283           "    pretend they are empty after starting replay")               \
  3368           "    pretend they are empty after starting replay")               \
  3284                                                                             \
  3369                                                                             \
  3285   develop(bool, ReplayIgnoreInitErrors, false,                              \
  3370   develop(bool, ReplayIgnoreInitErrors, false,                              \
  3286           "Ignore exceptions thrown during initialization for replay")      \
  3371           "Ignore exceptions thrown during initialization for replay")      \
  3287                                                                             \
  3372                                                                             \
  3306                                                                             \
  3391                                                                             \
  3307   product(intx, ThreadPriorityPolicy, 0,                                    \
  3392   product(intx, ThreadPriorityPolicy, 0,                                    \
  3308           "0 : Normal.                                                     "\
  3393           "0 : Normal.                                                     "\
  3309           "    VM chooses priorities that are appropriate for normal       "\
  3394           "    VM chooses priorities that are appropriate for normal       "\
  3310           "    applications. On Solaris NORM_PRIORITY and above are mapped "\
  3395           "    applications. On Solaris NORM_PRIORITY and above are mapped "\
  3311           "    to normal native priority. Java priorities below NORM_PRIORITY"\
  3396           "    to normal native priority. Java priorities below "           \
  3312           "    map to lower native priority values. On Windows applications"\
  3397           "    NORM_PRIORITY map to lower native priority values. On       "\
  3313           "    are allowed to use higher native priorities. However, with  "\
  3398           "    Windows applications are allowed to use higher native       "\
  3314           "    ThreadPriorityPolicy=0, VM will not use the highest possible"\
  3399           "    priorities. However, with ThreadPriorityPolicy=0, VM will   "\
  3315           "    native priority, THREAD_PRIORITY_TIME_CRITICAL, as it may   "\
  3400           "    not use the highest possible native priority,               "\
  3316           "    interfere with system threads. On Linux thread priorities   "\
  3401           "    THREAD_PRIORITY_TIME_CRITICAL, as it may interfere with     "\
  3317           "    are ignored because the OS does not support static priority "\
  3402           "    system threads. On Linux thread priorities are ignored      "\
  3318           "    in SCHED_OTHER scheduling class which is the only choice for"\
  3403           "    because the OS does not support static priority in          "\
       
  3404           "    SCHED_OTHER scheduling class which is the only choice for   "\
  3319           "    non-root, non-realtime applications.                        "\
  3405           "    non-root, non-realtime applications.                        "\
  3320           "1 : Aggressive.                                                 "\
  3406           "1 : Aggressive.                                                 "\
  3321           "    Java thread priorities map over to the entire range of      "\
  3407           "    Java thread priorities map over to the entire range of      "\
  3322           "    native thread priorities. Higher Java thread priorities map "\
  3408           "    native thread priorities. Higher Java thread priorities map "\
  3323           "    to higher native thread priorities. This policy should be   "\
  3409           "    to higher native thread priorities. This policy should be   "\
  3344           "(Solaris only) Give compiler threads an extra quanta")           \
  3430           "(Solaris only) Give compiler threads an extra quanta")           \
  3345                                                                             \
  3431                                                                             \
  3346   product(bool, VMThreadHintNoPreempt, false,                               \
  3432   product(bool, VMThreadHintNoPreempt, false,                               \
  3347           "(Solaris only) Give VM thread an extra quanta")                  \
  3433           "(Solaris only) Give VM thread an extra quanta")                  \
  3348                                                                             \
  3434                                                                             \
  3349   product(intx, JavaPriority1_To_OSPriority, -1, "Map Java priorities to OS priorities") \
  3435   product(intx, JavaPriority1_To_OSPriority, -1,                            \
  3350   product(intx, JavaPriority2_To_OSPriority, -1, "Map Java priorities to OS priorities") \
  3436           "Map Java priorities to OS priorities")                           \
  3351   product(intx, JavaPriority3_To_OSPriority, -1, "Map Java priorities to OS priorities") \
  3437                                                                             \
  3352   product(intx, JavaPriority4_To_OSPriority, -1, "Map Java priorities to OS priorities") \
  3438   product(intx, JavaPriority2_To_OSPriority, -1,                            \
  3353   product(intx, JavaPriority5_To_OSPriority, -1, "Map Java priorities to OS priorities") \
  3439           "Map Java priorities to OS priorities")                           \
  3354   product(intx, JavaPriority6_To_OSPriority, -1, "Map Java priorities to OS priorities") \
  3440                                                                             \
  3355   product(intx, JavaPriority7_To_OSPriority, -1, "Map Java priorities to OS priorities") \
  3441   product(intx, JavaPriority3_To_OSPriority, -1,                            \
  3356   product(intx, JavaPriority8_To_OSPriority, -1, "Map Java priorities to OS priorities") \
  3442           "Map Java priorities to OS priorities")                           \
  3357   product(intx, JavaPriority9_To_OSPriority, -1, "Map Java priorities to OS priorities") \
  3443                                                                             \
  3358   product(intx, JavaPriority10_To_OSPriority,-1, "Map Java priorities to OS priorities") \
  3444   product(intx, JavaPriority4_To_OSPriority, -1,                            \
       
  3445           "Map Java priorities to OS priorities")                           \
       
  3446                                                                             \
       
  3447   product(intx, JavaPriority5_To_OSPriority, -1,                            \
       
  3448           "Map Java priorities to OS priorities")                           \
       
  3449                                                                             \
       
  3450   product(intx, JavaPriority6_To_OSPriority, -1,                            \
       
  3451           "Map Java priorities to OS priorities")                           \
       
  3452                                                                             \
       
  3453   product(intx, JavaPriority7_To_OSPriority, -1,                            \
       
  3454           "Map Java priorities to OS priorities")                           \
       
  3455                                                                             \
       
  3456   product(intx, JavaPriority8_To_OSPriority, -1,                            \
       
  3457           "Map Java priorities to OS priorities")                           \
       
  3458                                                                             \
       
  3459   product(intx, JavaPriority9_To_OSPriority, -1,                            \
       
  3460           "Map Java priorities to OS priorities")                           \
       
  3461                                                                             \
       
  3462   product(intx, JavaPriority10_To_OSPriority,-1,                            \
       
  3463           "Map Java priorities to OS priorities")                           \
  3359                                                                             \
  3464                                                                             \
  3360   experimental(bool, UseCriticalJavaThreadPriority, false,                  \
  3465   experimental(bool, UseCriticalJavaThreadPriority, false,                  \
  3361           "Java thread priority 10 maps to critical scheduling priority")   \
  3466           "Java thread priority 10 maps to critical scheduling priority")   \
  3362                                                                             \
  3467                                                                             \
  3363   experimental(bool, UseCriticalCompilerThreadPriority, false,              \
  3468   experimental(bool, UseCriticalCompilerThreadPriority, false,              \
  3384   /* Background Compilation */                                              \
  3489   /* Background Compilation */                                              \
  3385   develop(intx, LongCompileThreshold,     50,                               \
  3490   develop(intx, LongCompileThreshold,     50,                               \
  3386           "Used with +TraceLongCompiles")                                   \
  3491           "Used with +TraceLongCompiles")                                   \
  3387                                                                             \
  3492                                                                             \
  3388   product(intx, StarvationMonitorInterval,    200,                          \
  3493   product(intx, StarvationMonitorInterval,    200,                          \
  3389           "Pause between each check in ms")                                 \
  3494           "Pause between each check (in milliseconds)")                     \
  3390                                                                             \
  3495                                                                             \
  3391   /* recompilation */                                                       \
  3496   /* recompilation */                                                       \
  3392   product_pd(intx, CompileThreshold,                                        \
  3497   product_pd(intx, CompileThreshold,                                        \
  3393           "number of interpreted method invocations before (re-)compiling") \
  3498           "number of interpreted method invocations before (re-)compiling") \
  3394                                                                             \
  3499                                                                             \
  3395   product_pd(intx, BackEdgeThreshold,                                       \
  3500   product_pd(intx, BackEdgeThreshold,                                       \
  3396           "Interpreter Back edge threshold at which an OSR compilation is invoked")\
  3501           "Interpreter Back edge threshold at which an OSR compilation is " \
       
  3502           "invoked")                                                        \
  3397                                                                             \
  3503                                                                             \
  3398   product(intx, Tier0InvokeNotifyFreqLog, 7,                                \
  3504   product(intx, Tier0InvokeNotifyFreqLog, 7,                                \
  3399           "Interpreter (tier 0) invocation notification frequency.")        \
  3505           "Interpreter (tier 0) invocation notification frequency")         \
  3400                                                                             \
  3506                                                                             \
  3401   product(intx, Tier2InvokeNotifyFreqLog, 11,                               \
  3507   product(intx, Tier2InvokeNotifyFreqLog, 11,                               \
  3402           "C1 without MDO (tier 2) invocation notification frequency.")     \
  3508           "C1 without MDO (tier 2) invocation notification frequency")      \
  3403                                                                             \
  3509                                                                             \
  3404   product(intx, Tier3InvokeNotifyFreqLog, 10,                               \
  3510   product(intx, Tier3InvokeNotifyFreqLog, 10,                               \
  3405           "C1 with MDO profiling (tier 3) invocation notification "         \
  3511           "C1 with MDO profiling (tier 3) invocation notification "         \
  3406           "frequency.")                                                     \
  3512           "frequency")                                                      \
  3407                                                                             \
  3513                                                                             \
  3408   product(intx, Tier23InlineeNotifyFreqLog, 20,                             \
  3514   product(intx, Tier23InlineeNotifyFreqLog, 20,                             \
  3409           "Inlinee invocation (tiers 2 and 3) notification frequency")      \
  3515           "Inlinee invocation (tiers 2 and 3) notification frequency")      \
  3410                                                                             \
  3516                                                                             \
  3411   product(intx, Tier0BackedgeNotifyFreqLog, 10,                             \
  3517   product(intx, Tier0BackedgeNotifyFreqLog, 10,                             \
  3412           "Interpreter (tier 0) invocation notification frequency.")        \
  3518           "Interpreter (tier 0) invocation notification frequency")         \
  3413                                                                             \
  3519                                                                             \
  3414   product(intx, Tier2BackedgeNotifyFreqLog, 14,                             \
  3520   product(intx, Tier2BackedgeNotifyFreqLog, 14,                             \
  3415           "C1 without MDO (tier 2) invocation notification frequency.")     \
  3521           "C1 without MDO (tier 2) invocation notification frequency")      \
  3416                                                                             \
  3522                                                                             \
  3417   product(intx, Tier3BackedgeNotifyFreqLog, 13,                             \
  3523   product(intx, Tier3BackedgeNotifyFreqLog, 13,                             \
  3418           "C1 with MDO profiling (tier 3) invocation notification "         \
  3524           "C1 with MDO profiling (tier 3) invocation notification "         \
  3419           "frequency.")                                                     \
  3525           "frequency")                                                      \
  3420                                                                             \
  3526                                                                             \
  3421   product(intx, Tier2CompileThreshold, 0,                                   \
  3527   product(intx, Tier2CompileThreshold, 0,                                   \
  3422           "threshold at which tier 2 compilation is invoked")               \
  3528           "threshold at which tier 2 compilation is invoked")               \
  3423                                                                             \
  3529                                                                             \
  3424   product(intx, Tier2BackEdgeThreshold, 0,                                  \
  3530   product(intx, Tier2BackEdgeThreshold, 0,                                  \
  3431   product(intx, Tier3MinInvocationThreshold, 100,                           \
  3537   product(intx, Tier3MinInvocationThreshold, 100,                           \
  3432           "Minimum invocation to compile at tier 3")                        \
  3538           "Minimum invocation to compile at tier 3")                        \
  3433                                                                             \
  3539                                                                             \
  3434   product(intx, Tier3CompileThreshold, 2000,                                \
  3540   product(intx, Tier3CompileThreshold, 2000,                                \
  3435           "Threshold at which tier 3 compilation is invoked (invocation "   \
  3541           "Threshold at which tier 3 compilation is invoked (invocation "   \
  3436           "minimum must be satisfied.")                                     \
  3542           "minimum must be satisfied")                                      \
  3437                                                                             \
  3543                                                                             \
  3438   product(intx, Tier3BackEdgeThreshold,  60000,                             \
  3544   product(intx, Tier3BackEdgeThreshold,  60000,                             \
  3439           "Back edge threshold at which tier 3 OSR compilation is invoked") \
  3545           "Back edge threshold at which tier 3 OSR compilation is invoked") \
  3440                                                                             \
  3546                                                                             \
  3441   product(intx, Tier4InvocationThreshold, 5000,                             \
  3547   product(intx, Tier4InvocationThreshold, 5000,                             \
  3445   product(intx, Tier4MinInvocationThreshold, 600,                           \
  3551   product(intx, Tier4MinInvocationThreshold, 600,                           \
  3446           "Minimum invocation to compile at tier 4")                        \
  3552           "Minimum invocation to compile at tier 4")                        \
  3447                                                                             \
  3553                                                                             \
  3448   product(intx, Tier4CompileThreshold, 15000,                               \
  3554   product(intx, Tier4CompileThreshold, 15000,                               \
  3449           "Threshold at which tier 4 compilation is invoked (invocation "   \
  3555           "Threshold at which tier 4 compilation is invoked (invocation "   \
  3450           "minimum must be satisfied.")                                     \
  3556           "minimum must be satisfied")                                      \
  3451                                                                             \
  3557                                                                             \
  3452   product(intx, Tier4BackEdgeThreshold, 40000,                              \
  3558   product(intx, Tier4BackEdgeThreshold, 40000,                              \
  3453           "Back edge threshold at which tier 4 OSR compilation is invoked") \
  3559           "Back edge threshold at which tier 4 OSR compilation is invoked") \
  3454                                                                             \
  3560                                                                             \
  3455   product(intx, Tier3DelayOn, 5,                                            \
  3561   product(intx, Tier3DelayOn, 5,                                            \
  3474                                                                             \
  3580                                                                             \
  3475   product(intx, TieredStopAtLevel, 4,                                       \
  3581   product(intx, TieredStopAtLevel, 4,                                       \
  3476           "Stop at given compilation level")                                \
  3582           "Stop at given compilation level")                                \
  3477                                                                             \
  3583                                                                             \
  3478   product(intx, Tier0ProfilingStartPercentage, 200,                         \
  3584   product(intx, Tier0ProfilingStartPercentage, 200,                         \
  3479           "Start profiling in interpreter if the counters exceed tier 3"    \
  3585           "Start profiling in interpreter if the counters exceed tier 3 "   \
  3480           "thresholds by the specified percentage")                         \
  3586           "thresholds by the specified percentage")                         \
  3481                                                                             \
  3587                                                                             \
  3482   product(uintx, IncreaseFirstTierCompileThresholdAt, 50,                   \
  3588   product(uintx, IncreaseFirstTierCompileThresholdAt, 50,                   \
  3483           "Increase the compile threshold for C1 compilation if the code"   \
  3589           "Increase the compile threshold for C1 compilation if the code "  \
  3484           "cache is filled by the specified percentage.")                   \
  3590           "cache is filled by the specified percentage")                    \
  3485                                                                             \
  3591                                                                             \
  3486   product(intx, TieredRateUpdateMinTime, 1,                                 \
  3592   product(intx, TieredRateUpdateMinTime, 1,                                 \
  3487           "Minimum rate sampling interval (in milliseconds)")               \
  3593           "Minimum rate sampling interval (in milliseconds)")               \
  3488                                                                             \
  3594                                                                             \
  3489   product(intx, TieredRateUpdateMaxTime, 25,                                \
  3595   product(intx, TieredRateUpdateMaxTime, 25,                                \
  3494                                                                             \
  3600                                                                             \
  3495   product(bool, PrintTieredEvents, false,                                   \
  3601   product(bool, PrintTieredEvents, false,                                   \
  3496           "Print tiered events notifications")                              \
  3602           "Print tiered events notifications")                              \
  3497                                                                             \
  3603                                                                             \
  3498   product_pd(intx, OnStackReplacePercentage,                                \
  3604   product_pd(intx, OnStackReplacePercentage,                                \
  3499           "NON_TIERED number of method invocations/branches (expressed as %"\
  3605           "NON_TIERED number of method invocations/branches (expressed as " \
  3500           "of CompileThreshold) before (re-)compiling OSR code")            \
  3606           "% of CompileThreshold) before (re-)compiling OSR code")          \
  3501                                                                             \
  3607                                                                             \
  3502   product(intx, InterpreterProfilePercentage, 33,                           \
  3608   product(intx, InterpreterProfilePercentage, 33,                           \
  3503           "NON_TIERED number of method invocations/branches (expressed as %"\
  3609           "NON_TIERED number of method invocations/branches (expressed as " \
  3504           "of CompileThreshold) before profiling in the interpreter")       \
  3610           "% of CompileThreshold) before profiling in the interpreter")     \
  3505                                                                             \
  3611                                                                             \
  3506   develop(intx, MaxRecompilationSearchLength,    10,                        \
  3612   develop(intx, MaxRecompilationSearchLength,    10,                        \
  3507           "max. # frames to inspect searching for recompilee")              \
  3613           "The maximum number of frames to inspect when searching for "     \
       
  3614           "recompilee")                                                     \
  3508                                                                             \
  3615                                                                             \
  3509   develop(intx, MaxInterpretedSearchLength,     3,                          \
  3616   develop(intx, MaxInterpretedSearchLength,     3,                          \
  3510           "max. # interp. frames to skip when searching for recompilee")    \
  3617           "The maximum number of interpreted frames to skip when searching "\
       
  3618           "for recompilee")                                                 \
  3511                                                                             \
  3619                                                                             \
  3512   develop(intx, DesiredMethodLimit,  8000,                                  \
  3620   develop(intx, DesiredMethodLimit,  8000,                                  \
  3513           "desired max. method size (in bytecodes) after inlining")         \
  3621           "The desired maximum method size (in bytecodes) after inlining")  \
  3514                                                                             \
  3622                                                                             \
  3515   develop(intx, HugeMethodLimit,  8000,                                     \
  3623   develop(intx, HugeMethodLimit,  8000,                                     \
  3516           "don't compile methods larger than this if "                      \
  3624           "Don't compile methods larger than this if "                      \
  3517           "+DontCompileHugeMethods")                                        \
  3625           "+DontCompileHugeMethods")                                        \
  3518                                                                             \
  3626                                                                             \
  3519   /* New JDK 1.4 reflection implementation */                               \
  3627   /* New JDK 1.4 reflection implementation */                               \
  3520                                                                             \
  3628                                                                             \
  3521   develop(bool, UseNewReflection, true,                                     \
  3629   develop(bool, UseNewReflection, true,                                     \
  3532                                                                             \
  3640                                                                             \
  3533   product(bool, ReflectionWrapResolutionErrors, true,                       \
  3641   product(bool, ReflectionWrapResolutionErrors, true,                       \
  3534           "Temporary flag for transition to AbstractMethodError wrapped "   \
  3642           "Temporary flag for transition to AbstractMethodError wrapped "   \
  3535           "in InvocationTargetException. See 6531596")                      \
  3643           "in InvocationTargetException. See 6531596")                      \
  3536                                                                             \
  3644                                                                             \
       
  3645   develop(bool, VerifyLambdaBytecodes, false,                               \
       
  3646           "Force verification of jdk 8 lambda metafactory bytecodes")       \
  3537                                                                             \
  3647                                                                             \
  3538   develop(intx, FastSuperclassLimit, 8,                                     \
  3648   develop(intx, FastSuperclassLimit, 8,                                     \
  3539           "Depth of hardwired instanceof accelerator array")                \
  3649           "Depth of hardwired instanceof accelerator array")                \
  3540                                                                             \
  3650                                                                             \
  3541   /* Properties for Java libraries  */                                      \
  3651   /* Properties for Java libraries  */                                      \
  3555           "Testing Only: Use the new version while testing")                \
  3665           "Testing Only: Use the new version while testing")                \
  3556                                                                             \
  3666                                                                             \
  3557   /* flags for performance data collection */                               \
  3667   /* flags for performance data collection */                               \
  3558                                                                             \
  3668                                                                             \
  3559   product(bool, UsePerfData, falseInEmbedded,                               \
  3669   product(bool, UsePerfData, falseInEmbedded,                               \
  3560           "Flag to disable jvmstat instrumentation for performance testing" \
  3670           "Flag to disable jvmstat instrumentation for performance testing "\
  3561           "and problem isolation purposes.")                                \
  3671           "and problem isolation purposes")                                 \
  3562                                                                             \
  3672                                                                             \
  3563   product(bool, PerfDataSaveToFile, false,                                  \
  3673   product(bool, PerfDataSaveToFile, false,                                  \
  3564           "Save PerfData memory to hsperfdata_<pid> file on exit")          \
  3674           "Save PerfData memory to hsperfdata_<pid> file on exit")          \
  3565                                                                             \
  3675                                                                             \
  3566   product(ccstr, PerfDataSaveFile, NULL,                                    \
  3676   product(ccstr, PerfDataSaveFile, NULL,                                    \
  3567           "Save PerfData memory to the specified absolute pathname,"        \
  3677           "Save PerfData memory to the specified absolute pathname. "       \
  3568            "%p in the file name if present will be replaced by pid")        \
  3678           "The string %p in the file name (if present) "                    \
  3569                                                                             \
  3679           "will be replaced by pid")                                        \
  3570   product(intx, PerfDataSamplingInterval, 50 /*ms*/,                        \
  3680                                                                             \
  3571           "Data sampling interval in milliseconds")                         \
  3681   product(intx, PerfDataSamplingInterval, 50,                               \
       
  3682           "Data sampling interval (in milliseconds)")                       \
  3572                                                                             \
  3683                                                                             \
  3573   develop(bool, PerfTraceDataCreation, false,                               \
  3684   develop(bool, PerfTraceDataCreation, false,                               \
  3574           "Trace creation of Performance Data Entries")                     \
  3685           "Trace creation of Performance Data Entries")                     \
  3575                                                                             \
  3686                                                                             \
  3576   develop(bool, PerfTraceMemOps, false,                                     \
  3687   develop(bool, PerfTraceMemOps, false,                                     \
  3591                                                                             \
  3702                                                                             \
  3592   product(bool, PerfBypassFileSystemCheck, false,                           \
  3703   product(bool, PerfBypassFileSystemCheck, false,                           \
  3593           "Bypass Win32 file system criteria checks (Windows Only)")        \
  3704           "Bypass Win32 file system criteria checks (Windows Only)")        \
  3594                                                                             \
  3705                                                                             \
  3595   product(intx, UnguardOnExecutionViolation, 0,                             \
  3706   product(intx, UnguardOnExecutionViolation, 0,                             \
  3596           "Unguard page and retry on no-execute fault (Win32 only)"         \
  3707           "Unguard page and retry on no-execute fault (Win32 only) "        \
  3597           "0=off, 1=conservative, 2=aggressive")                            \
  3708           "0=off, 1=conservative, 2=aggressive")                            \
  3598                                                                             \
  3709                                                                             \
  3599   /* Serviceability Support */                                              \
  3710   /* Serviceability Support */                                              \
  3600                                                                             \
  3711                                                                             \
  3601   product(bool, ManagementServer, false,                                    \
  3712   product(bool, ManagementServer, false,                                    \
  3602           "Create JMX Management Server")                                   \
  3713           "Create JMX Management Server")                                   \
  3603                                                                             \
  3714                                                                             \
  3604   product(bool, DisableAttachMechanism, false,                              \
  3715   product(bool, DisableAttachMechanism, false,                              \
  3605          "Disable mechanism that allows tools to attach to this VM")        \
  3716           "Disable mechanism that allows tools to attach to this VM")       \
  3606                                                                             \
  3717                                                                             \
  3607   product(bool, StartAttachListener, false,                                 \
  3718   product(bool, StartAttachListener, false,                                 \
  3608           "Always start Attach Listener at VM startup")                     \
  3719           "Always start Attach Listener at VM startup")                     \
  3609                                                                             \
  3720                                                                             \
  3610   manageable(bool, PrintConcurrentLocks, false,                             \
  3721   manageable(bool, PrintConcurrentLocks, false,                             \
  3623                                                                             \
  3734                                                                             \
  3624   product(bool, RequireSharedSpaces, false,                                 \
  3735   product(bool, RequireSharedSpaces, false,                                 \
  3625           "Require shared spaces for metadata")                             \
  3736           "Require shared spaces for metadata")                             \
  3626                                                                             \
  3737                                                                             \
  3627   product(bool, DumpSharedSpaces, false,                                    \
  3738   product(bool, DumpSharedSpaces, false,                                    \
  3628            "Special mode: JVM reads a class list, loads classes, builds "   \
  3739           "Special mode: JVM reads a class list, loads classes, builds "    \
  3629             "shared spaces, and dumps the shared spaces to a file to be "   \
  3740           "shared spaces, and dumps the shared spaces to a file to be "     \
  3630             "used in future JVM runs.")                                     \
  3741           "used in future JVM runs")                                        \
  3631                                                                             \
  3742                                                                             \
  3632   product(bool, PrintSharedSpaces, false,                                   \
  3743   product(bool, PrintSharedSpaces, false,                                   \
  3633           "Print usage of shared spaces")                                   \
  3744           "Print usage of shared spaces")                                   \
  3634                                                                             \
  3745                                                                             \
  3635   product(uintx, SharedReadWriteSize,  NOT_LP64(12*M) LP64_ONLY(16*M),      \
  3746   product(uintx, SharedReadWriteSize,  NOT_LP64(12*M) LP64_ONLY(16*M),      \
  3665           "show method handle implementation frames (usually hidden)")      \
  3776           "show method handle implementation frames (usually hidden)")      \
  3666                                                                             \
  3777                                                                             \
  3667   experimental(bool, TrustFinalNonStaticFields, false,                      \
  3778   experimental(bool, TrustFinalNonStaticFields, false,                      \
  3668           "trust final non-static declarations for constant folding")       \
  3779           "trust final non-static declarations for constant folding")       \
  3669                                                                             \
  3780                                                                             \
       
  3781   experimental(bool, FoldStableValues, false,                               \
       
  3782           "Private flag to control optimizations for stable variables")     \
       
  3783                                                                             \
  3670   develop(bool, TraceInvokeDynamic, false,                                  \
  3784   develop(bool, TraceInvokeDynamic, false,                                  \
  3671           "trace internal invoke dynamic operations")                       \
  3785           "trace internal invoke dynamic operations")                       \
  3672                                                                             \
  3786                                                                             \
  3673   diagnostic(bool, PauseAtStartup,      false,                              \
  3787   diagnostic(bool, PauseAtStartup,      false,                              \
  3674           "Causes the VM to pause at startup time and wait for the pause "  \
  3788           "Causes the VM to pause at startup time and wait for the pause "  \
  3695                                                                             \
  3809                                                                             \
  3696   product(bool, RelaxAccessControlCheck, false,                             \
  3810   product(bool, RelaxAccessControlCheck, false,                             \
  3697           "Relax the access control checks in the verifier")                \
  3811           "Relax the access control checks in the verifier")                \
  3698                                                                             \
  3812                                                                             \
  3699   diagnostic(bool, PrintDTraceDOF, false,                                   \
  3813   diagnostic(bool, PrintDTraceDOF, false,                                   \
  3700              "Print the DTrace DOF passed to the system for JSDT probes")   \
  3814           "Print the DTrace DOF passed to the system for JSDT probes")      \
  3701                                                                             \
  3815                                                                             \
  3702   product(uintx, StringTableSize, defaultStringTableSize,                   \
  3816   product(uintx, StringTableSize, defaultStringTableSize,                   \
  3703           "Number of buckets in the interned String table")                 \
  3817           "Number of buckets in the interned String table")                 \
  3704                                                                             \
  3818                                                                             \
       
  3819   experimental(uintx, SymbolTableSize, defaultSymbolTableSize,              \
       
  3820           "Number of buckets in the JVM internal Symbol table")             \
       
  3821                                                                             \
  3705   develop(bool, TraceDefaultMethods, false,                                 \
  3822   develop(bool, TraceDefaultMethods, false,                                 \
  3706           "Trace the default method processing steps")                      \
  3823           "Trace the default method processing steps")                      \
  3707                                                                             \
  3824                                                                             \
  3708   develop(bool, ParseAllGenericSignatures, false,                           \
       
  3709           "Parse all generic signatures while classloading")                \
       
  3710                                                                             \
       
  3711   develop(bool, VerifyGenericSignatures, false,                             \
  3825   develop(bool, VerifyGenericSignatures, false,                             \
  3712           "Abort VM on erroneous or inconsistent generic signatures")       \
  3826           "Abort VM on erroneous or inconsistent generic signatures")       \
  3713                                                                             \
  3827                                                                             \
  3714   product(bool, ParseGenericDefaults, false,                                \
       
  3715           "Parse generic signatures for default method handling")           \
       
  3716                                                                             \
       
  3717   product(bool, UseVMInterruptibleIO, false,                                \
  3828   product(bool, UseVMInterruptibleIO, false,                                \
  3718           "(Unstable, Solaris-specific) Thread interrupt before or with "   \
  3829           "(Unstable, Solaris-specific) Thread interrupt before or with "   \
  3719           "EINTR for I/O operations results in OS_INTRPT. The default value"\
  3830           "EINTR for I/O operations results in OS_INTRPT. The default "     \
  3720           " of this flag is true for JDK 6 and earlier")                    \
  3831           "value of this flag is true for JDK 6 and earlier")               \
  3721                                                                             \
  3832                                                                             \
  3722   diagnostic(bool, WhiteBoxAPI, false,                                      \
  3833   diagnostic(bool, WhiteBoxAPI, false,                                      \
  3723           "Enable internal testing APIs")                                   \
  3834           "Enable internal testing APIs")                                   \
  3724                                                                             \
  3835                                                                             \
  3725   product(bool, PrintGCCause, true,                                         \
  3836   product(bool, PrintGCCause, true,                                         \
  3736           "Allocation less than this value will be allocated "              \
  3847           "Allocation less than this value will be allocated "              \
  3737           "using malloc. Larger allocations will use mmap.")                \
  3848           "using malloc. Larger allocations will use mmap.")                \
  3738                                                                             \
  3849                                                                             \
  3739   product(bool, EnableTracing, false,                                       \
  3850   product(bool, EnableTracing, false,                                       \
  3740           "Enable event-based tracing")                                     \
  3851           "Enable event-based tracing")                                     \
       
  3852                                                                             \
  3741   product(bool, UseLockedTracing, false,                                    \
  3853   product(bool, UseLockedTracing, false,                                    \
  3742           "Use locked-tracing when doing event-based tracing")
  3854           "Use locked-tracing when doing event-based tracing")
  3743 
       
  3744 
  3855 
  3745 /*
  3856 /*
  3746  *  Macros for factoring of globals
  3857  *  Macros for factoring of globals
  3747  */
  3858  */
  3748 
  3859 
  3749 // Interface macros
  3860 // Interface macros
  3750 #define DECLARE_PRODUCT_FLAG(type, name, value, doc)    extern "C" type name;
  3861 #define DECLARE_PRODUCT_FLAG(type, name, value, doc)      extern "C" type name;
  3751 #define DECLARE_PD_PRODUCT_FLAG(type, name, doc)        extern "C" type name;
  3862 #define DECLARE_PD_PRODUCT_FLAG(type, name, doc)          extern "C" type name;
  3752 #define DECLARE_DIAGNOSTIC_FLAG(type, name, value, doc) extern "C" type name;
  3863 #define DECLARE_DIAGNOSTIC_FLAG(type, name, value, doc)   extern "C" type name;
  3753 #define DECLARE_EXPERIMENTAL_FLAG(type, name, value, doc) extern "C" type name;
  3864 #define DECLARE_EXPERIMENTAL_FLAG(type, name, value, doc) extern "C" type name;
  3754 #define DECLARE_MANAGEABLE_FLAG(type, name, value, doc) extern "C" type name;
  3865 #define DECLARE_MANAGEABLE_FLAG(type, name, value, doc)   extern "C" type name;
  3755 #define DECLARE_PRODUCT_RW_FLAG(type, name, value, doc) extern "C" type name;
  3866 #define DECLARE_PRODUCT_RW_FLAG(type, name, value, doc)   extern "C" type name;
  3756 #ifdef PRODUCT
  3867 #ifdef PRODUCT
  3757 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc)  const type name = value;
  3868 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc)    extern "C" type CONST_##name; const type name = value;
  3758 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc)      const type name = pd_##name;
  3869 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc)        extern "C" type CONST_##name; const type name = pd_##name;
  3759 #define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc)
  3870 #define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc)   extern "C" type CONST_##name;
  3760 #else
  3871 #else
  3761 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc)  extern "C" type name;
  3872 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc)    extern "C" type name;
  3762 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc)      extern "C" type name;
  3873 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc)        extern "C" type name;
  3763 #define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc)  extern "C" type name;
  3874 #define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc)   extern "C" type name;
  3764 #endif
  3875 #endif
  3765 // Special LP64 flags, product only needed for now.
  3876 // Special LP64 flags, product only needed for now.
  3766 #ifdef _LP64
  3877 #ifdef _LP64
  3767 #define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) extern "C" type name;
  3878 #define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) extern "C" type name;
  3768 #else
  3879 #else
  3769 #define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) const type name = value;
  3880 #define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) const type name = value;
  3770 #endif // _LP64
  3881 #endif // _LP64
  3771 
  3882 
  3772 // Implementation macros
  3883 // Implementation macros
  3773 #define MATERIALIZE_PRODUCT_FLAG(type, name, value, doc)   type name = value;
  3884 #define MATERIALIZE_PRODUCT_FLAG(type, name, value, doc)      type name = value;
  3774 #define MATERIALIZE_PD_PRODUCT_FLAG(type, name, doc)       type name = pd_##name;
  3885 #define MATERIALIZE_PD_PRODUCT_FLAG(type, name, doc)          type name = pd_##name;
  3775 #define MATERIALIZE_DIAGNOSTIC_FLAG(type, name, value, doc) type name = value;
  3886 #define MATERIALIZE_DIAGNOSTIC_FLAG(type, name, value, doc)   type name = value;
  3776 #define MATERIALIZE_EXPERIMENTAL_FLAG(type, name, value, doc) type name = value;
  3887 #define MATERIALIZE_EXPERIMENTAL_FLAG(type, name, value, doc) type name = value;
  3777 #define MATERIALIZE_MANAGEABLE_FLAG(type, name, value, doc) type name = value;
  3888 #define MATERIALIZE_MANAGEABLE_FLAG(type, name, value, doc)   type name = value;
  3778 #define MATERIALIZE_PRODUCT_RW_FLAG(type, name, value, doc) type name = value;
  3889 #define MATERIALIZE_PRODUCT_RW_FLAG(type, name, value, doc)   type name = value;
  3779 #ifdef PRODUCT
  3890 #ifdef PRODUCT
  3780 #define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc) /* flag name is constant */
  3891 #define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc)    type CONST_##name = value;
  3781 #define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc)     /* flag name is constant */
  3892 #define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc)        type CONST_##name = pd_##name;
  3782 #define MATERIALIZE_NOTPRODUCT_FLAG(type, name, value, doc)
  3893 #define MATERIALIZE_NOTPRODUCT_FLAG(type, name, value, doc)   type CONST_##name = value;
  3783 #else
  3894 #else
  3784 #define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc) type name = value;
  3895 #define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc)    type name = value;
  3785 #define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc)     type name = pd_##name;
  3896 #define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc)        type name = pd_##name;
  3786 #define MATERIALIZE_NOTPRODUCT_FLAG(type, name, value, doc) type name = value;
  3897 #define MATERIALIZE_NOTPRODUCT_FLAG(type, name, value, doc)   type name = value;
  3787 #endif
  3898 #endif
  3788 #ifdef _LP64
  3899 #ifdef _LP64
  3789 #define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc)   type name = value;
  3900 #define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc) type name = value;
  3790 #else
  3901 #else
  3791 #define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc) /* flag is constant */
  3902 #define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc) /* flag is constant */
  3792 #endif // _LP64
  3903 #endif // _LP64
  3793 
  3904 
  3794 RUNTIME_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_EXPERIMENTAL_FLAG, DECLARE_NOTPRODUCT_FLAG, DECLARE_MANAGEABLE_FLAG, DECLARE_PRODUCT_RW_FLAG, DECLARE_LP64_PRODUCT_FLAG)
  3905 RUNTIME_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_EXPERIMENTAL_FLAG, DECLARE_NOTPRODUCT_FLAG, DECLARE_MANAGEABLE_FLAG, DECLARE_PRODUCT_RW_FLAG, DECLARE_LP64_PRODUCT_FLAG)