globals.hpp revision 4419:754c24457b20
1132718Skan/*
2132718Skan * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
3169689Skan * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
450397Sobrien *
550397Sobrien * This code is free software; you can redistribute it and/or modify it
650397Sobrien * under the terms of the GNU General Public License version 2 only, as
750397Sobrien * published by the Free Software Foundation.
890075Sobrien *
950397Sobrien * This code is distributed in the hope that it will be useful, but WITHOUT
1090075Sobrien * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1190075Sobrien * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1290075Sobrien * version 2 for more details (a copy is included in the LICENSE file that
1390075Sobrien * accompanied this code).
1450397Sobrien *
1590075Sobrien * You should have received a copy of the GNU General Public License version
1690075Sobrien * 2 along with this work; if not, write to the Free Software Foundation,
1790075Sobrien * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
1890075Sobrien *
1950397Sobrien * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2050397Sobrien * or visit www.oracle.com if you need additional information or have any
2190075Sobrien * questions.
22169689Skan *
23169689Skan */
2450397Sobrien
2590075Sobrien#ifndef SHARE_VM_RUNTIME_GLOBALS_HPP
2690075Sobrien#define SHARE_VM_RUNTIME_GLOBALS_HPP
2790075Sobrien
2890075Sobrien#include "utilities/debug.hpp"
2990075Sobrien
3090075Sobrien// use this for flags that are true per default in the tiered build
3150397Sobrien// but false in non-tiered builds, and vice versa
3250397Sobrien#ifdef TIERED
3350397Sobrien#define  trueInTiered true
3450397Sobrien#define falseInTiered false
3550397Sobrien#else
3650397Sobrien#define  trueInTiered false
3750397Sobrien#define falseInTiered true
3850397Sobrien#endif
39132718Skan
40132718Skan#ifdef TARGET_ARCH_x86
4150397Sobrien# include "globals_x86.hpp"
42169689Skan#endif
4350397Sobrien#ifdef TARGET_ARCH_sparc
44117395Skan# include "globals_sparc.hpp"
4550397Sobrien#endif
4650397Sobrien#ifdef TARGET_ARCH_zero
4750397Sobrien# include "globals_zero.hpp"
4850397Sobrien#endif
4950397Sobrien#ifdef TARGET_ARCH_arm
5090075Sobrien# include "globals_arm.hpp"
5150397Sobrien#endif
5250397Sobrien#ifdef TARGET_ARCH_ppc
5390075Sobrien# include "globals_ppc.hpp"
5450397Sobrien#endif
5550397Sobrien#ifdef TARGET_OS_FAMILY_linux
5650397Sobrien# include "globals_linux.hpp"
5790075Sobrien#endif
5850397Sobrien#ifdef TARGET_OS_FAMILY_solaris
5990075Sobrien# include "globals_solaris.hpp"
6090075Sobrien#endif
6190075Sobrien#ifdef TARGET_OS_FAMILY_windows
6290075Sobrien# include "globals_windows.hpp"
6390075Sobrien#endif
6490075Sobrien#ifdef TARGET_OS_FAMILY_bsd
6590075Sobrien# include "globals_bsd.hpp"
6690075Sobrien#endif
67117395Skan#ifdef TARGET_OS_ARCH_linux_x86
68132718Skan# include "globals_linux_x86.hpp"
69169689Skan#endif
7050397Sobrien#ifdef TARGET_OS_ARCH_linux_sparc
7190075Sobrien# include "globals_linux_sparc.hpp"
72132718Skan#endif
7350397Sobrien#ifdef TARGET_OS_ARCH_linux_zero
7450397Sobrien# include "globals_linux_zero.hpp"
7590075Sobrien#endif
7690075Sobrien#ifdef TARGET_OS_ARCH_solaris_x86
7790075Sobrien# include "globals_solaris_x86.hpp"
7890075Sobrien#endif
7990075Sobrien#ifdef TARGET_OS_ARCH_solaris_sparc
8090075Sobrien# include "globals_solaris_sparc.hpp"
8190075Sobrien#endif
8290075Sobrien#ifdef TARGET_OS_ARCH_windows_x86
8390075Sobrien# include "globals_windows_x86.hpp"
8490075Sobrien#endif
8590075Sobrien#ifdef TARGET_OS_ARCH_linux_arm
8690075Sobrien# include "globals_linux_arm.hpp"
8790075Sobrien#endif
8890075Sobrien#ifdef TARGET_OS_ARCH_linux_ppc
8990075Sobrien# include "globals_linux_ppc.hpp"
9090075Sobrien#endif
9190075Sobrien#ifdef TARGET_OS_ARCH_bsd_x86
9290075Sobrien# include "globals_bsd_x86.hpp"
93169689Skan#endif
94169689Skan#ifdef TARGET_OS_ARCH_bsd_zero
95169689Skan# include "globals_bsd_zero.hpp"
96169689Skan#endif
97169689Skan#ifdef COMPILER1
98169689Skan#ifdef TARGET_ARCH_x86
99169689Skan# include "c1_globals_x86.hpp"
100169689Skan#endif
101169689Skan#ifdef TARGET_ARCH_sparc
102169689Skan# include "c1_globals_sparc.hpp"
103169689Skan#endif
104169689Skan#ifdef TARGET_ARCH_arm
105169689Skan# include "c1_globals_arm.hpp"
106169689Skan#endif
107169689Skan#ifdef TARGET_ARCH_ppc
108169689Skan# include "c1_globals_ppc.hpp"
10950397Sobrien#endif
11050397Sobrien#ifdef TARGET_OS_FAMILY_linux
11150397Sobrien# include "c1_globals_linux.hpp"
11250397Sobrien#endif
113132718Skan#ifdef TARGET_OS_FAMILY_solaris
11450397Sobrien# include "c1_globals_solaris.hpp"
115169689Skan#endif
116169689Skan#ifdef TARGET_OS_FAMILY_windows
117169689Skan# include "c1_globals_windows.hpp"
11850397Sobrien#endif
11990075Sobrien#ifdef TARGET_OS_FAMILY_bsd
12090075Sobrien# include "c1_globals_bsd.hpp"
12150397Sobrien#endif
122169689Skan#endif
123169689Skan#ifdef COMPILER2
124169689Skan#ifdef TARGET_ARCH_x86
12550397Sobrien# include "c2_globals_x86.hpp"
12650397Sobrien#endif
12750397Sobrien#ifdef TARGET_ARCH_sparc
12850397Sobrien# include "c2_globals_sparc.hpp"
12990075Sobrien#endif
13090075Sobrien#ifdef TARGET_ARCH_arm
13190075Sobrien# include "c2_globals_arm.hpp"
13290075Sobrien#endif
13390075Sobrien#ifdef TARGET_OS_FAMILY_linux
134117395Skan# include "c2_globals_linux.hpp"
135117395Skan#endif
136169689Skan#ifdef TARGET_OS_FAMILY_solaris
137117395Skan# include "c2_globals_solaris.hpp"
138117395Skan#endif
139169689Skan#ifdef TARGET_OS_FAMILY_windows
140169689Skan# include "c2_globals_windows.hpp"
141169689Skan#endif
142169689Skan#ifdef TARGET_OS_FAMILY_bsd
143117395Skan# include "c2_globals_bsd.hpp"
144117395Skan#endif
145117395Skan#endif
146117395Skan#ifdef SHARK
147117395Skan#ifdef TARGET_ARCH_zero
148117395Skan# include "shark_globals_zero.hpp"
149169689Skan#endif
150117395Skan#endif
151169689Skan
152169689Skan#if !defined(COMPILER1) && !defined(COMPILER2) && !defined(SHARK)
153169689Skandefine_pd_global(bool, BackgroundCompilation,        false);
154169689Skandefine_pd_global(bool, UseTLAB,                      false);
155169689Skandefine_pd_global(bool, CICompileOSR,                 false);
156169689Skandefine_pd_global(bool, UseTypeProfile,               false);
157169689Skandefine_pd_global(bool, UseOnStackReplacement,        false);
158169689Skandefine_pd_global(bool, InlineIntrinsics,             false);
159169689Skandefine_pd_global(bool, PreferInterpreterNativeStubs, true);
160169689Skandefine_pd_global(bool, ProfileInterpreter,           false);
161169689Skandefine_pd_global(bool, ProfileTraps,                 false);
162169689Skandefine_pd_global(bool, TieredCompilation,            false);
16350397Sobrien
16450397Sobriendefine_pd_global(intx, CompileThreshold,             0);
16550397Sobriendefine_pd_global(intx, BackEdgeThreshold,            0);
16650397Sobrien
16750397Sobriendefine_pd_global(intx, OnStackReplacePercentage,     0);
16850397Sobriendefine_pd_global(bool, ResizeTLAB,                   false);
16950397Sobriendefine_pd_global(intx, FreqInlineSize,               0);
17050397Sobriendefine_pd_global(intx, InlineSmallCode,              0);
17150397Sobriendefine_pd_global(intx, NewSizeThreadIncrease,        4*K);
17250397Sobriendefine_pd_global(intx, InlineClassNatives,           true);
17350397Sobriendefine_pd_global(intx, InlineUnsafeOps,              true);
17450397Sobriendefine_pd_global(intx, InitialCodeCacheSize,         160*K);
17550397Sobriendefine_pd_global(intx, ReservedCodeCacheSize,        32*M);
17650397Sobriendefine_pd_global(intx, CodeCacheExpansionSize,       32*K);
177132718Skandefine_pd_global(intx, CodeCacheMinBlockLength,      1);
178132718Skandefine_pd_global(uintx,MetaspaceSize,    ScaleForWordSize(4*M));
179132718Skandefine_pd_global(bool, NeverActAsServerClassMachine, true);
180132718Skandefine_pd_global(uint64_t,MaxRAM,                    1ULL*G);
181132718Skan#define CI_COMPILER_COUNT 0
182132718Skan#else
183132718Skan
184132718Skan#ifdef COMPILER2
185132718Skan#define CI_COMPILER_COUNT 2
18650397Sobrien#else
187169689Skan#define CI_COMPILER_COUNT 1
188132718Skan#endif // COMPILER2
189132718Skan
190132718Skan#endif // no compilers
19150397Sobrien
19250397Sobrien// string type aliases used only in this file
19350397Sobrientypedef const char* ccstr;
194132718Skantypedef const char* ccstrlist;   // represents string arguments which accumulate
19550397Sobrien
19650397Sobrienenum FlagValueOrigin {
19750397Sobrien  DEFAULT          = 0,
198132718Skan  COMMAND_LINE     = 1,
199132718Skan  ENVIRON_VAR      = 2,
200132718Skan  CONFIG_FILE      = 3,
201132718Skan  MANAGEMENT       = 4,
20250397Sobrien  ERGONOMIC        = 5,
20350397Sobrien  ATTACH_ON_DEMAND = 6,
20450397Sobrien  INTERNAL         = 99
20590075Sobrien};
20690075Sobrien
20790075Sobrienstruct Flag {
20890075Sobrien  const char *type;
20990075Sobrien  const char *name;
210132718Skan  void*       addr;
21190075Sobrien
212132718Skan  NOT_PRODUCT(const char *doc;)
213132718Skan
214169689Skan  const char *kind;
21590075Sobrien  FlagValueOrigin origin;
21690075Sobrien
21790075Sobrien  // points to all Flags static array
21850397Sobrien  static Flag *flags;
21950397Sobrien
22090075Sobrien  // number of flags
22150397Sobrien  static size_t numFlags;
22250397Sobrien
22350397Sobrien  static Flag* find_flag(char* name, size_t length, bool allow_locked = false);
224132718Skan
22550397Sobrien  bool is_bool() const        { return strcmp(type, "bool") == 0; }
226169689Skan  bool get_bool() const       { return *((bool*) addr); }
22790075Sobrien  void set_bool(bool value)   { *((bool*) addr) = value; }
22890075Sobrien
22990075Sobrien  bool is_intx()  const       { return strcmp(type, "intx")  == 0; }
230169689Skan  intx get_intx() const       { return *((intx*) addr); }
231169689Skan  void set_intx(intx value)   { *((intx*) addr) = value; }
232169689Skan
233169689Skan  bool is_uintx() const       { return strcmp(type, "uintx") == 0; }
234169689Skan  uintx get_uintx() const     { return *((uintx*) addr); }
23550397Sobrien  void set_uintx(uintx value) { *((uintx*) addr) = value; }
23690075Sobrien
237117395Skan  bool is_uint64_t() const          { return strcmp(type, "uint64_t") == 0; }
23890075Sobrien  uint64_t get_uint64_t() const     { return *((uint64_t*) addr); }
23990075Sobrien  void set_uint64_t(uint64_t value) { *((uint64_t*) addr) = value; }
24050397Sobrien
24150397Sobrien  bool is_double() const        { return strcmp(type, "double") == 0; }
24250397Sobrien  double get_double() const     { return *((double*) addr); }
24390075Sobrien  void set_double(double value) { *((double*) addr) = value; }
24450397Sobrien
24550397Sobrien  bool is_ccstr() const          { return strcmp(type, "ccstr") == 0 || strcmp(type, "ccstrlist") == 0; }
24690075Sobrien  bool ccstr_accumulates() const { return strcmp(type, "ccstrlist") == 0; }
24790075Sobrien  ccstr get_ccstr() const     { return *((ccstr*) addr); }
24890075Sobrien  void set_ccstr(ccstr value) { *((ccstr*) addr) = value; }
24990075Sobrien
25090075Sobrien  bool is_unlocker() const;
25190075Sobrien  bool is_unlocked() const;
25290075Sobrien  bool is_writeable() const;
25350397Sobrien  bool is_external() const;
25450397Sobrien
25550397Sobrien  bool is_unlocker_ext() const;
25690075Sobrien  bool is_unlocked_ext() const;
25790075Sobrien  bool is_writeable_ext() const;
25890075Sobrien  bool is_external_ext() const;
25950397Sobrien
26050397Sobrien  void get_locked_message(char*, int) const;
26150397Sobrien  void get_locked_message_ext(char*, int) const;
26250397Sobrien
26350397Sobrien  void print_on(outputStream* st, bool withComments = false );
264132718Skan  void print_as_flag(outputStream* st);
265132718Skan};
266132718Skan
267132718Skan// debug flags control various aspects of the VM and are global accessible
268132718Skan
269132718Skan// use FlagSetting to temporarily change some debug flag
270132718Skan// e.g. FlagSetting fs(DebugThisAndThat, true);
271132718Skan// restored to previous value upon leaving scope
272132718Skanclass FlagSetting {
273132718Skan  bool val;
274132718Skan  bool* flag;
275132718Skan public:
27650397Sobrien  FlagSetting(bool& fl, bool newValue) { flag = &fl; val = fl; fl = newValue; }
27750397Sobrien  ~FlagSetting()                       { *flag = val; }
27850397Sobrien};
27950397Sobrien
28090075Sobrien
28150397Sobrienclass CounterSetting {
28250397Sobrien  intx* counter;
28390075Sobrien public:
28450397Sobrien  CounterSetting(intx* cnt) { counter = cnt; (*counter)++; }
28590075Sobrien  ~CounterSetting()         { (*counter)--; }
28650397Sobrien};
28790075Sobrien
28850397Sobrien
28990075Sobrienclass IntFlagSetting {
29050397Sobrien  intx val;
291169689Skan  intx* flag;
292169689Skan public:
293169689Skan  IntFlagSetting(intx& fl, intx newValue) { flag = &fl; val = fl; fl = newValue; }
294169689Skan  ~IntFlagSetting()                       { *flag = val; }
295169689Skan};
296169689Skan
297169689Skan
298169689Skanclass DoubleFlagSetting {
29950397Sobrien  double val;
30050397Sobrien  double* flag;
301132718Skan public:
30250397Sobrien  DoubleFlagSetting(double& fl, double newValue) { flag = &fl; val = fl; fl = newValue; }
30350397Sobrien  ~DoubleFlagSetting()                           { *flag = val; }
304132718Skan};
30550397Sobrien
30650397Sobrien
307132718Skanclass CommandLineFlags {
30850397Sobrien public:
30950397Sobrien  static bool boolAt(char* name, size_t len, bool* value);
31050397Sobrien  static bool boolAt(char* name, bool* value)      { return boolAt(name, strlen(name), value); }
31150397Sobrien  static bool boolAtPut(char* name, size_t len, bool* value, FlagValueOrigin origin);
31250397Sobrien  static bool boolAtPut(char* name, bool* value, FlagValueOrigin origin)   { return boolAtPut(name, strlen(name), value, origin); }
31350397Sobrien
314132718Skan  static bool intxAt(char* name, size_t len, intx* value);
31550397Sobrien  static bool intxAt(char* name, intx* value)      { return intxAt(name, strlen(name), value); }
316132718Skan  static bool intxAtPut(char* name, size_t len, intx* value, FlagValueOrigin origin);
31750397Sobrien  static bool intxAtPut(char* name, intx* value, FlagValueOrigin origin)   { return intxAtPut(name, strlen(name), value, origin); }
31850397Sobrien
31990075Sobrien  static bool uintxAt(char* name, size_t len, uintx* value);
32050397Sobrien  static bool uintxAt(char* name, uintx* value)    { return uintxAt(name, strlen(name), value); }
32150397Sobrien  static bool uintxAtPut(char* name, size_t len, uintx* value, FlagValueOrigin origin);
322132718Skan  static bool uintxAtPut(char* name, uintx* value, FlagValueOrigin origin) { return uintxAtPut(name, strlen(name), value, origin); }
32350397Sobrien
324132718Skan  static bool uint64_tAt(char* name, size_t len, uint64_t* value);
32590075Sobrien  static bool uint64_tAt(char* name, uint64_t* value) { return uint64_tAt(name, strlen(name), value); }
326132718Skan  static bool uint64_tAtPut(char* name, size_t len, uint64_t* value, FlagValueOrigin origin);
32790075Sobrien  static bool uint64_tAtPut(char* name, uint64_t* value, FlagValueOrigin origin) { return uint64_tAtPut(name, strlen(name), value, origin); }
32890075Sobrien
32990075Sobrien  static bool doubleAt(char* name, size_t len, double* value);
33090075Sobrien  static bool doubleAt(char* name, double* value)    { return doubleAt(name, strlen(name), value); }
33190075Sobrien  static bool doubleAtPut(char* name, size_t len, double* value, FlagValueOrigin origin);
332132718Skan  static bool doubleAtPut(char* name, double* value, FlagValueOrigin origin) { return doubleAtPut(name, strlen(name), value, origin); }
333132718Skan
334132718Skan  static bool ccstrAt(char* name, size_t len, ccstr* value);
335132718Skan  static bool ccstrAt(char* name, ccstr* value)    { return ccstrAt(name, strlen(name), value); }
336132718Skan  static bool ccstrAtPut(char* name, size_t len, ccstr* value, FlagValueOrigin origin);
337132718Skan  static bool ccstrAtPut(char* name, ccstr* value, FlagValueOrigin origin) { return ccstrAtPut(name, strlen(name), value, origin); }
338132718Skan
33950397Sobrien  // Returns false if name is not a command line flag.
34050397Sobrien  static bool wasSetOnCmdline(const char* name, bool* value);
341132718Skan  static void printSetFlags(outputStream* out);
342132718Skan
343132718Skan  static void printFlags(outputStream* out, bool withComments);
344132718Skan
345132718Skan  static void verify() PRODUCT_RETURN;
346132718Skan};
347132718Skan
348132718Skan// use this for flags that are true by default in the debug version but
349132718Skan// false in the optimized version, and vice versa
350132718Skan#ifdef ASSERT
351132718Skan#define trueInDebug  true
352132718Skan#define falseInDebug false
353169689Skan#else
354132718Skan#define trueInDebug  false
355132718Skan#define falseInDebug true
356132718Skan#endif
35750397Sobrien
35890075Sobrien// use this for flags that are true per default in the product build
359132718Skan// but false in development builds, and vice versa
360132718Skan#ifdef PRODUCT
361132718Skan#define trueInProduct  true
36290075Sobrien#define falseInProduct false
363169689Skan#else
364132718Skan#define trueInProduct  false
36550397Sobrien#define falseInProduct true
36690075Sobrien#endif
36790075Sobrien
36890075Sobrien#ifdef JAVASE_EMBEDDED
36950397Sobrien#define falseInEmbedded false
37050397Sobrien#else
37150397Sobrien#define falseInEmbedded true
37250397Sobrien#endif
37350397Sobrien
37450397Sobrien// develop flags are settable / visible only during development and are constant in the PRODUCT version
37590075Sobrien// product flags are always settable / visible
37690075Sobrien// notproduct flags are settable / visible only during development and are not declared in the PRODUCT version
37750397Sobrien
37850397Sobrien// A flag must be declared with one of the following types:
37950397Sobrien// bool, intx, uintx, ccstr.
38050397Sobrien// The type "ccstr" is an alias for "const char*" and is used
38150397Sobrien// only in this file, because the macrology requires single-token type names.
38290075Sobrien
38350397Sobrien// Note: Diagnostic options not meant for VM tuning or for product modes.
38450397Sobrien// They are to be used for VM quality assurance or field diagnosis
38550397Sobrien// of VM bugs.  They are hidden so that users will not be encouraged to
38690075Sobrien// try them as if they were VM ordinary execution options.  However, they
387169689Skan// are available in the product version of the VM.  Under instruction
38890075Sobrien// from support engineers, VM customers can turn them on to collect
389169689Skan// diagnostic information about VM problems.  To use a VM diagnostic
39050397Sobrien// option, you must first specify +UnlockDiagnosticVMOptions.
39150397Sobrien// (This master switch also affects the behavior of -Xprintflags.)
39290075Sobrien//
39390075Sobrien// experimental flags are in support of features that are not
39450397Sobrien//    part of the officially supported product, but are available
39590075Sobrien//    for experimenting with. They could, for example, be performance
39690075Sobrien//    features that may not have undergone full or rigorous QA, but which may
39790075Sobrien//    help performance in some cases and released for experimentation
39890075Sobrien//    by the community of users and developers. This flag also allows one to
39990075Sobrien//    be able to build a fully supported product that nonetheless also
40050397Sobrien//    ships with some unsupported, lightly tested, experimental features.
40150397Sobrien//    Like the UnlockDiagnosticVMOptions flag above, there is a corresponding
40250397Sobrien//    UnlockExperimentalVMOptions flag, which allows the control and
40350397Sobrien//    modification of the experimental flags.
40450397Sobrien//
40550397Sobrien// Nota bene: neither diagnostic nor experimental options should be used casually,
406132718Skan//    and they are not supported on production loads, except under explicit
40750397Sobrien//    direction from support engineers.
408132718Skan//
40950397Sobrien// manageable flags are writeable external product flags.
41050397Sobrien//    They are dynamically writeable through the JDK management interface
41150397Sobrien//    (com.sun.management.HotSpotDiagnosticMXBean API) and also through JConsole.
41250397Sobrien//    These flags are external exported interface (see CCC).  The list of
41350397Sobrien//    manageable flags can be queried programmatically through the management
41450397Sobrien//    interface.
41550397Sobrien//
41650397Sobrien//    A flag can be made as "manageable" only if
41790075Sobrien//    - the flag is defined in a CCC as an external exported interface.
41850397Sobrien//    - the VM implementation supports dynamic setting of the flag.
41950397Sobrien//      This implies that the VM must *always* query the flag variable
42050397Sobrien//      and not reuse state related to the flag state at any given time.
421132718Skan//    - you want the flag to be queried programmatically by the customers.
42250397Sobrien//
423169689Skan// product_rw flags are writeable internal product flags.
424169689Skan//    They are like "manageable" flags but for internal/private use.
42550397Sobrien//    The list of product_rw flags are internal/private flags which
42650397Sobrien//    may be changed/removed in a future release.  It can be set
42750397Sobrien//    through the management interface to get/set value
42850397Sobrien//    when the name of flag is supplied.
42950397Sobrien//
43050397Sobrien//    A flag can be made as "product_rw" only if
431132718Skan//    - the VM implementation supports dynamic setting of the flag.
43250397Sobrien//      This implies that the VM must *always* query the flag variable
433169689Skan//      and not reuse state related to the flag state at any given time.
43450397Sobrien//
43550397Sobrien// Note that when there is a need to support develop flags to be writeable,
43650397Sobrien// it can be done in the same way as product_rw.
43750397Sobrien
43850397Sobrien#define RUNTIME_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct, manageable, product_rw, lp64_product) \
43950397Sobrien                                                                            \
44050397Sobrien  lp64_product(bool, UseCompressedOops, false,                              \
44150397Sobrien            "Use 32-bit object references in 64-bit VM  "                   \
44250397Sobrien            "lp64_product means flag is always constant in 32 bit VM")      \
44350397Sobrien                                                                            \
44450397Sobrien  lp64_product(bool, UseCompressedKlassPointers, false,                     \
44590075Sobrien            "Use 32-bit klass pointers in 64-bit VM  "                      \
44650397Sobrien            "lp64_product means flag is always constant in 32 bit VM")      \
44790075Sobrien                                                                            \
448132718Skan  notproduct(bool, CheckCompressedOops, true,                               \
44950397Sobrien            "generate checks in encoding/decoding code in debug VM")        \
450169689Skan                                                                            \
45190075Sobrien  product_pd(uintx, HeapBaseMinAddress,                                     \
452169689Skan            "OS specific low limit for heap base address")                  \
45390075Sobrien                                                                            \
454132718Skan  diagnostic(bool, PrintCompressedOopsMode, false,                          \
45550397Sobrien            "Print compressed oops base address and encoding mode")         \
456102780Skan                                                                            \
457169689Skan  lp64_product(intx, ObjectAlignmentInBytes, 8,                             \
458169689Skan          "Default object alignment in bytes, 8 is minimum")                \
459169689Skan                                                                            \
460169689Skan  /* UseMembar is theoretically a temp flag used for memory barrier         \
461169689Skan   * removal testing.  It was supposed to be removed before FCS but has     \
462169689Skan   * been re-added (see 6401008) */                                         \
463169689Skan  product_pd(bool, UseMembar,                                               \
464169689Skan          "(Unstable) Issues membars on thread state transitions")          \
465169689Skan                                                                            \
466169689Skan  /* Temp PPC Flag to allow disabling the use of lwsync on ppc platforms    \
467169689Skan   * that don't support it.  This will be replaced by processor detection   \
468169689Skan   * logic.                                                                 \
469169689Skan   */                                                                       \
470169689Skan  product(bool, UsePPCLWSYNC, true,                                         \
471169689Skan          "Use lwsync instruction if true, else use slower sync")           \
472169689Skan                                                                            \
473169689Skan  develop(bool, CleanChunkPoolAsync, falseInEmbedded,                       \
474169689Skan          "Whether to clean the chunk pool asynchronously")                 \
475169689Skan                                                                            \
476169689Skan  /* Temporary: See 6948537 */                                              \
477169689Skan  experimental(bool, UseMemSetInBOT, true,                                  \
478169689Skan          "(Unstable) uses memset in BOT updates in GC code")               \
479169689Skan                                                                            \
480169689Skan  diagnostic(bool, UnlockDiagnosticVMOptions, trueInDebug,                  \
481169689Skan          "Enable normal processing of flags relating to field diagnostics")\
48250397Sobrien                                                                            \
483122180Skan  experimental(bool, UnlockExperimentalVMOptions, false,                    \
484169689Skan          "Enable normal processing of flags relating to experimental features")\
485132718Skan                                                                            \
486132718Skan  product(bool, JavaMonitorsInStackTrace, true,                             \
487132718Skan          "Print info. about Java monitor locks when the stacks are dumped")\
488132718Skan                                                                            \
489122180Skan  product_pd(bool, UseLargePages,                                           \
490132718Skan          "Use large page memory")                                          \
491132718Skan                                                                            \
492132718Skan  product_pd(bool, UseLargePagesIndividualAllocation,                       \
493132718Skan          "Allocate large pages individually for better affinity")          \
494132718Skan                                                                            \
495132718Skan  develop(bool, LargePagesIndividualAllocationInjectError, false,           \
496132718Skan          "Fail large pages individual allocation")                         \
497132718Skan                                                                            \
49850397Sobrien  develop(bool, TracePageSizes, false,                                      \
49950397Sobrien          "Trace page size selection and usage.")                           \
50050397Sobrien                                                                            \
50150397Sobrien  product(bool, UseNUMA, false,                                             \
50290075Sobrien          "Use NUMA if available")                                          \
503132718Skan                                                                            \
50450397Sobrien  product(bool, UseNUMAInterleaving, false,                                 \
50550397Sobrien          "Interleave memory across NUMA nodes if available")               \
50650397Sobrien                                                                            \
50750397Sobrien  product(uintx, NUMAInterleaveGranularity, 2*M,                            \
50850397Sobrien          "Granularity to use for NUMA interleaving on Windows OS")         \
50950397Sobrien                                                                            \
51050397Sobrien  product(bool, ForceNUMA, false,                                           \
51150397Sobrien          "Force NUMA optimizations on single-node/UMA systems")            \
51250397Sobrien                                                                            \
51350397Sobrien  product(intx, NUMAChunkResizeWeight, 20,                                  \
51450397Sobrien          "Percentage (0-100) used to weight the current sample when "      \
51550397Sobrien          "computing exponentially decaying average for "                   \
51650397Sobrien          "AdaptiveNUMAChunkSizing")                                        \
51750397Sobrien                                                                            \
51850397Sobrien  product(intx, NUMASpaceResizeRate, 1*G,                                   \
51950397Sobrien          "Do not reallocate more that this amount per collection")         \
52050397Sobrien                                                                            \
52150397Sobrien  product(bool, UseAdaptiveNUMAChunkSizing, true,                           \
52250397Sobrien          "Enable adaptive chunk sizing for NUMA")                          \
52350397Sobrien                                                                            \
52450397Sobrien  product(bool, NUMAStats, false,                                           \
52550397Sobrien          "Print NUMA stats in detailed heap information")                  \
52650397Sobrien                                                                            \
52750397Sobrien  product(intx, NUMAPageScanRate, 256,                                      \
52850397Sobrien          "Maximum number of pages to include in the page scan procedure")  \
52950397Sobrien                                                                            \
53050397Sobrien  product_pd(bool, NeedsDeoptSuspend,                                       \
53150397Sobrien          "True for register window machines (sparc/ia64)")                 \
53250397Sobrien                                                                            \
53350397Sobrien  product(intx, UseSSE, 99,                                                 \
53450397Sobrien          "Highest supported SSE instructions set on x86/x64")              \
53550397Sobrien                                                                            \
53650397Sobrien  product(bool, UseAES, false,                                               \
53750397Sobrien          "Control whether AES instructions can be used on x86/x64")        \
53850397Sobrien                                                                            \
53950397Sobrien  product(uintx, LargePageSizeInBytes, 0,                                   \
54050397Sobrien          "Large page size (0 to let VM choose the page size")              \
54150397Sobrien                                                                            \
54250397Sobrien  product(uintx, LargePageHeapSizeThreshold, 128*M,                         \
54350397Sobrien          "Use large pages if max heap is at least this big")               \
54490075Sobrien                                                                            \
54590075Sobrien  product(bool, ForceTimeHighResolution, false,                             \
54690075Sobrien          "Using high time resolution(For Win32 only)")                     \
54790075Sobrien                                                                            \
54890075Sobrien  develop(bool, TraceItables, false,                                        \
54990075Sobrien          "Trace initialization and use of itables")                        \
55090075Sobrien                                                                            \
55190075Sobrien  develop(bool, TracePcPatching, false,                                     \
55290075Sobrien          "Trace usage of frame::patch_pc")                                 \
55390075Sobrien                                                                            \
55490075Sobrien  develop(bool, TraceJumps, false,                                          \
55590075Sobrien          "Trace assembly jumps in thread ring buffer")                     \
55650397Sobrien                                                                            \
55750397Sobrien  develop(bool, TraceRelocator, false,                                      \
55850397Sobrien          "Trace the bytecode relocator")                                   \
55950397Sobrien                                                                            \
56050397Sobrien  develop(bool, TraceLongCompiles, false,                                   \
56150397Sobrien          "Print out every time compilation is longer than "                \
56250397Sobrien          "a given threashold")                                             \
56350397Sobrien                                                                            \
56450397Sobrien  develop(bool, SafepointALot, false,                                       \
56570635Sobrien          "Generates a lot of safepoints. Works with "                      \
56670635Sobrien          "GuaranteedSafepointInterval")                                    \
56750397Sobrien                                                                            \
56850397Sobrien  product_pd(bool, BackgroundCompilation,                                   \
56950397Sobrien          "A thread requesting compilation is not blocked during "          \
57050397Sobrien          "compilation")                                                    \
57150397Sobrien                                                                            \
57250397Sobrien  product(bool, PrintVMQWaitTime, false,                                    \
57350397Sobrien          "Prints out the waiting time in VM operation queue")              \
57450397Sobrien                                                                            \
57550397Sobrien  develop(bool, NoYieldsInMicrolock, false,                                 \
576132718Skan          "Disable yields in microlock")                                    \
57750397Sobrien                                                                            \
578132718Skan  develop(bool, TraceOopMapGeneration, false,                               \
57950397Sobrien          "Shows oopmap generation")                                        \
58050397Sobrien                                                                            \
58150397Sobrien  product(bool, MethodFlushing, true,                                       \
58250397Sobrien          "Reclamation of zombie and not-entrant methods")                  \
58350397Sobrien                                                                            \
58450397Sobrien  develop(bool, VerifyStack, false,                                         \
58550397Sobrien          "Verify stack of each thread when it is entering a runtime call") \
58650397Sobrien                                                                            \
58750397Sobrien  diagnostic(bool, ForceUnreachable, false,                                 \
58850397Sobrien          "Make all non code cache addresses to be unreachable with forcing use of 64bit literal fixups") \
58950397Sobrien                                                                            \
590132718Skan  notproduct(bool, StressDerivedPointers, false,                            \
59150397Sobrien          "Force scavenge when a derived pointers is detected on stack "    \
59290075Sobrien          "after rtm call")                                                 \
59350397Sobrien                                                                            \
59450397Sobrien  develop(bool, TraceDerivedPointers, false,                                \
59550397Sobrien          "Trace traversal of derived pointers on stack")                   \
59650397Sobrien                                                                            \
59750397Sobrien  notproduct(bool, TraceCodeBlobStacks, false,                              \
59850397Sobrien          "Trace stack-walk of codeblobs")                                  \
59950397Sobrien                                                                            \
60050397Sobrien  product(bool, PrintJNIResolving, false,                                   \
60150397Sobrien          "Used to implement -v:jni")                                       \
60250397Sobrien                                                                            \
60350397Sobrien  notproduct(bool, PrintRewrites, false,                                    \
604132718Skan          "Print methods that are being rewritten")                         \
60550397Sobrien                                                                            \
60650397Sobrien  product(bool, UseInlineCaches, true,                                      \
60790075Sobrien          "Use Inline Caches for virtual calls ")                           \
608132718Skan                                                                            \
60950397Sobrien  develop(bool, InlineArrayCopy, true,                                      \
61050397Sobrien          "inline arraycopy native that is known to be part of "            \
61150397Sobrien          "base library DLL")                                               \
61250397Sobrien                                                                            \
61350397Sobrien  develop(bool, InlineObjectHash, true,                                     \
61450397Sobrien          "inline Object::hashCode() native that is known to be part "      \
61550397Sobrien          "of base library DLL")                                            \
61650397Sobrien                                                                            \
617132718Skan  develop(bool, InlineNatives, true,                                        \
61850397Sobrien          "inline natives that are known to be part of base library DLL")   \
61950397Sobrien                                                                            \
62050397Sobrien  develop(bool, InlineMathNatives, true,                                    \
62190075Sobrien          "inline SinD, CosD, etc.")                                        \
62250397Sobrien                                                                            \
62350397Sobrien  develop(bool, InlineClassNatives, true,                                   \
62450397Sobrien          "inline Class.isInstance, etc")                                   \
62550397Sobrien                                                                            \
62650397Sobrien  develop(bool, InlineThreadNatives, true,                                  \
62750397Sobrien          "inline Thread.currentThread, etc")                               \
62850397Sobrien                                                                            \
62990075Sobrien  develop(bool, InlineUnsafeOps, true,                                      \
63050397Sobrien          "inline memory ops (native methods) from sun.misc.Unsafe")        \
631169689Skan                                                                            \
63250397Sobrien  product(bool, CriticalJNINatives, true,                                   \
63350397Sobrien          "check for critical JNI entry points")                            \
63450397Sobrien                                                                            \
635169689Skan  notproduct(bool, StressCriticalJNINatives, false,                         \
636169689Skan            "Exercise register saving code in critical natives")            \
637169689Skan                                                                            \
638169689Skan  product(bool, UseSSE42Intrinsics, false,                                  \
639169689Skan          "SSE4.2 versions of intrinsics")                                  \
64050397Sobrien                                                                            \
64150397Sobrien  product(bool, UseAESIntrinsics, false,                                    \
642169689Skan          "use intrinsics for AES versions of crypto")                      \
643169689Skan                                                                            \
64450397Sobrien  develop(bool, TraceCallFixup, false,                                      \
64550397Sobrien          "traces all call fixups")                                         \
64650397Sobrien                                                                            \
64750397Sobrien  develop(bool, DeoptimizeALot, false,                                      \
64850397Sobrien          "deoptimize at every exit from the runtime system")               \
64950397Sobrien                                                                            \
65050397Sobrien  notproduct(ccstrlist, DeoptimizeOnlyAt, "",                               \
65150397Sobrien          "a comma separated list of bcis to deoptimize at")                \
65250397Sobrien                                                                            \
65350397Sobrien  product(bool, DeoptimizeRandom, false,                                    \
65450397Sobrien          "deoptimize random frames on random exit from the runtime system")\
655169689Skan                                                                            \
656132718Skan  notproduct(bool, ZombieALot, false,                                       \
65750397Sobrien          "creates zombies (non-entrant) at exit from the runt. system")    \
65850397Sobrien                                                                            \
65950397Sobrien  product(bool, UnlinkSymbolsALot, false,                                   \
66050397Sobrien          "unlink unreferenced symbols from the symbol table at safepoints")\
66190075Sobrien                                                                            \
66250397Sobrien  notproduct(bool, WalkStackALot, false,                                    \
663169689Skan          "trace stack (no print) at every exit from the runtime system")   \
664169689Skan                                                                            \
665169689Skan  product(bool, Debugging, false,                                           \
666169689Skan          "set when executing debug methods in debug.ccp "                  \
66750397Sobrien          "(to prevent triggering assertions)")                             \
66890075Sobrien                                                                            \
66950397Sobrien  notproduct(bool, StrictSafepointChecks, trueInDebug,                      \
67050397Sobrien          "Enable strict checks that safepoints cannot happen for threads " \
67190075Sobrien          "that used No_Safepoint_Verifier")                                \
67290075Sobrien                                                                            \
67350397Sobrien  notproduct(bool, VerifyLastFrame, false,                                  \
674169689Skan          "Verify oops on last frame on entry to VM")                       \
675169689Skan                                                                            \
676169689Skan  develop(bool, TraceHandleAllocation, false,                               \
677169689Skan          "Prints out warnings when suspicious many handles are allocated") \
678169689Skan                                                                            \
67990075Sobrien  product(bool, UseCompilerSafepoints, true,                                \
68090075Sobrien          "Stop at safepoints in compiled code")                            \
68190075Sobrien                                                                            \
68250397Sobrien  product(bool, UseSplitVerifier, true,                                     \
68350397Sobrien          "use split verifier with StackMapTable attributes")               \
68450397Sobrien                                                                            \
68550397Sobrien  product(bool, FailOverToOldVerifier, true,                                \
68650397Sobrien          "fail over to old verifier when split verifier fails")            \
68750397Sobrien                                                                            \
68850397Sobrien  develop(bool, ShowSafepointMsgs, false,                                   \
68950397Sobrien          "Show msg. about safepoint synch.")                               \
690132718Skan                                                                            \
69150397Sobrien  product(bool, SafepointTimeout, false,                                    \
69290075Sobrien          "Time out and warn or fail after SafepointTimeoutDelay "          \
69350397Sobrien          "milliseconds if failed to reach safepoint")                      \
694169689Skan                                                                            \
69590075Sobrien  develop(bool, DieOnSafepointTimeout, false,                               \
69690075Sobrien          "Die upon failure to reach safepoint (see SafepointTimeout)")     \
69790075Sobrien                                                                            \
69850397Sobrien  /* 50 retries * (5 * current_retry_count) millis = ~6.375 seconds */      \
69950397Sobrien  /* typically, at most a few retries are needed */                         \
70090075Sobrien  product(intx, SuspendRetryCount, 50,                                      \
70150397Sobrien          "Maximum retry count for an external suspend request")            \
70250397Sobrien                                                                            \
70350397Sobrien  product(intx, SuspendRetryDelay, 5,                                       \
70490075Sobrien          "Milliseconds to delay per retry (* current_retry_count)")        \
70550397Sobrien                                                                            \
70690075Sobrien  product(bool, AssertOnSuspendWaitFailure, false,                          \
70750397Sobrien          "Assert/Guarantee on external suspend wait failure")              \
70850397Sobrien                                                                            \
70950397Sobrien  product(bool, TraceSuspendWaitFailures, false,                            \
71050397Sobrien          "Trace external suspend wait failures")                           \
71190075Sobrien                                                                            \
71250397Sobrien  product(bool, MaxFDLimit, true,                                           \
71350397Sobrien          "Bump the number of file descriptors to max in solaris.")         \
71450397Sobrien                                                                            \
71590075Sobrien  diagnostic(bool, LogEvents, true,                                         \
71650397Sobrien             "Enable the various ring buffer event logs")                   \
71750397Sobrien                                                                            \
718132718Skan  diagnostic(intx, LogEventsBufferEntries, 10,                              \
71950397Sobrien             "Enable the various ring buffer event logs")                   \
72050397Sobrien                                                                            \
721132718Skan  product(bool, BytecodeVerificationRemote, true,                           \
72250397Sobrien          "Enables the Java bytecode verifier for remote classes")          \
72350397Sobrien                                                                            \
72450397Sobrien  product(bool, BytecodeVerificationLocal, false,                           \
72550397Sobrien          "Enables the Java bytecode verifier for local classes")           \
72650397Sobrien                                                                            \
72750397Sobrien  develop(bool, ForceFloatExceptions, trueInDebug,                          \
728132718Skan          "Force exceptions on FP stack under/overflow")                    \
72950397Sobrien                                                                            \
73090075Sobrien  develop(bool, VerifyStackAtCalls, false,                                  \
73190075Sobrien          "Verify that the stack pointer is unchanged after calls")         \
73290075Sobrien                                                                            \
73390075Sobrien  develop(bool, TraceJavaAssertions, false,                                 \
73490075Sobrien          "Trace java language assertions")                                 \
73590075Sobrien                                                                            \
73690075Sobrien  notproduct(bool, CheckAssertionStatusDirectives, false,                   \
73750397Sobrien          "temporary - see javaClasses.cpp")                                \
738169689Skan                                                                            \
739169689Skan  notproduct(bool, PrintMallocFree, false,                                  \
740169689Skan          "Trace calls to C heap malloc/free allocation")                   \
741169689Skan                                                                            \
742169689Skan  product(bool, PrintOopAddress, false,                                     \
743169689Skan          "Always print the location of the oop")                           \
744169689Skan                                                                            \
745169689Skan  notproduct(bool, VerifyCodeCacheOften, false,                             \
746169689Skan          "Verify compiled-code cache often")                               \
747169689Skan                                                                            \
748169689Skan  develop(bool, ZapDeadCompiledLocals, false,                               \
749169689Skan          "Zap dead locals in compiler frames")                             \
75090075Sobrien                                                                            \
75190075Sobrien  notproduct(bool, ZapDeadLocalsOld, false,                                 \
75250397Sobrien          "Zap dead locals (old version, zaps all frames when "             \
75390075Sobrien          "entering the VM")                                                \
754132718Skan                                                                            \
75590075Sobrien  notproduct(bool, CheckOopishValues, false,                                \
75690075Sobrien          "Warn if value contains oop ( requires ZapDeadLocals)")           \
75790075Sobrien                                                                            \
75850397Sobrien  develop(bool, UseMallocOnly, false,                                       \
75990075Sobrien          "use only malloc/free for allocation (no resource area/arena)")   \
76090075Sobrien                                                                            \
76190075Sobrien  develop(bool, PrintMalloc, false,                                         \
76290075Sobrien          "print all malloc/free calls")                                    \
76390075Sobrien                                                                            \
76490075Sobrien  develop(bool, PrintMallocStatistics, false,                               \
76590075Sobrien          "print malloc/free statistics")                                   \
76690075Sobrien                                                                            \
76790075Sobrien  develop(bool, ZapResourceArea, trueInDebug,                               \
76890075Sobrien          "Zap freed resource/arena space with 0xABABABAB")                 \
769169689Skan                                                                            \
77050397Sobrien  notproduct(bool, ZapVMHandleArea, trueInDebug,                            \
77150397Sobrien          "Zap freed VM handle space with 0xBCBCBCBC")                      \
77250397Sobrien                                                                            \
77350397Sobrien  develop(bool, ZapJNIHandleArea, trueInDebug,                              \
77490075Sobrien          "Zap freed JNI handle space with 0xFEFEFEFE")                     \
77550397Sobrien                                                                            \
776169689Skan  notproduct(bool, ZapStackSegments, trueInDebug,                           \
777169689Skan             "Zap allocated/freed Stack segments with 0xFADFADED")          \
778169689Skan                                                                            \
779169689Skan  develop(bool, ZapUnusedHeapArea, trueInDebug,                             \
780169689Skan          "Zap unused heap space with 0xBAADBABE")                          \
781169689Skan                                                                            \
782169689Skan  develop(bool, TraceZapUnusedHeapArea, false,                              \
783169689Skan          "Trace zapping of unused heap space")                             \
784169689Skan                                                                            \
785169689Skan  develop(bool, CheckZapUnusedHeapArea, false,                              \
786169689Skan          "Check zapping of unused heap space")                             \
787169689Skan                                                                            \
788169689Skan  develop(bool, ZapFillerObjects, trueInDebug,                              \
789169689Skan          "Zap filler objects with 0xDEAFBABE")                             \
790169689Skan                                                                            \
79150397Sobrien  develop(bool, PrintVMMessages, true,                                      \
79250397Sobrien          "Print vm messages on console")                                   \
79350397Sobrien                                                                            \
794169689Skan  product(bool, PrintGCApplicationConcurrentTime, false,                    \
795169689Skan          "Print the time the application has been running")                \
79690075Sobrien                                                                            \
79750397Sobrien  product(bool, PrintGCApplicationStoppedTime, false,                       \
79890075Sobrien          "Print the time the application has been stopped")                \
79990075Sobrien                                                                            \
80090075Sobrien  diagnostic(bool, VerboseVerification, false,                              \
80150397Sobrien             "Display detailed verification details")                       \
80290075Sobrien                                                                            \
80350397Sobrien  notproduct(uintx, ErrorHandlerTest, 0,                                    \
80450397Sobrien          "If > 0, provokes an error after VM initialization; the value"    \
80550397Sobrien          "determines which error to provoke.  See test_error_handler()"    \
80690075Sobrien          "in debug.cpp.")                                                  \
80750397Sobrien                                                                            \
80890075Sobrien  develop(bool, Verbose, false,                                             \
80990075Sobrien          "Prints additional debugging information from other modes")       \
81090075Sobrien                                                                            \
811169689Skan  develop(bool, PrintMiscellaneous, false,                                  \
812169689Skan          "Prints uncategorized debugging information (requires +Verbose)") \
813169689Skan                                                                            \
814169689Skan  develop(bool, WizardMode, false,                                          \
815169689Skan          "Prints much more debugging information")                         \
816169689Skan                                                                            \
817169689Skan  product(bool, ShowMessageBoxOnError, false,                               \
818169689Skan          "Keep process alive on VM fatal error")                           \
819169689Skan                                                                            \
820169689Skan  product(bool, CreateMinidumpOnCrash, false,                               \
821169689Skan          "Create minidump on VM fatal error")                              \
822169689Skan                                                                            \
823169689Skan  product_pd(bool, UseOSErrorReporting,                                     \
824169689Skan          "Let VM fatal error propagate to the OS (ie. WER on Windows)")    \
825169689Skan                                                                            \
82650397Sobrien  product(bool, SuppressFatalErrorMessage, false,                           \
82790075Sobrien          "Do NO Fatal Error report [Avoid deadlock]")                      \
82890075Sobrien                                                                            \
82990075Sobrien  product(ccstrlist, OnError, "",                                           \
83090075Sobrien          "Run user-defined commands on fatal error; see VMError.cpp "      \
83190075Sobrien          "for examples")                                                   \
83290075Sobrien                                                                            \
83350397Sobrien  product(ccstrlist, OnOutOfMemoryError, "",                                \
83490075Sobrien          "Run user-defined commands on first java.lang.OutOfMemoryError")  \
835169689Skan                                                                            \
83690075Sobrien  manageable(bool, HeapDumpBeforeFullGC, false,                             \
83790075Sobrien          "Dump heap to file before any major stop-world GC")               \
83890075Sobrien                                                                            \
83950397Sobrien  manageable(bool, HeapDumpAfterFullGC, false,                              \
84050397Sobrien          "Dump heap to file after any major stop-world GC")                \
84150397Sobrien                                                                            \
84250397Sobrien  manageable(bool, HeapDumpOnOutOfMemoryError, false,                       \
84350397Sobrien          "Dump heap to file when java.lang.OutOfMemoryError is thrown")    \
84450397Sobrien                                                                            \
84550397Sobrien  manageable(ccstr, HeapDumpPath, NULL,                                     \
84650397Sobrien          "When HeapDumpOnOutOfMemoryError is on, the path (filename or"    \
84750397Sobrien          "directory) of the dump file (defaults to java_pid<pid>.hprof"    \
848132718Skan          "in the working directory)")                                      \
84950397Sobrien                                                                            \
85090075Sobrien  develop(uintx, SegmentedHeapDumpThreshold, 2*G,                           \
85150397Sobrien          "Generate a segmented heap dump (JAVA PROFILE 1.0.2 format) "     \
85250397Sobrien          "when the heap usage is larger than this")                        \
85350397Sobrien                                                                            \
854169689Skan  develop(uintx, HeapDumpSegmentSize, 1*G,                                  \
85550397Sobrien          "Approximate segment size when generating a segmented heap dump") \
85650397Sobrien                                                                            \
85750397Sobrien  develop(bool, BreakAtWarning, false,                                      \
85850397Sobrien          "Execute breakpoint upon encountering VM warning")                \
85950397Sobrien                                                                            \
86050397Sobrien  develop(bool, TraceVMOperation, false,                                    \
86150397Sobrien          "Trace vm operations")                                            \
86250397Sobrien                                                                            \
86390075Sobrien  develop(bool, UseFakeTimers, false,                                       \
86490075Sobrien          "Tells whether the VM should use system time or a fake timer")    \
86590075Sobrien                                                                            \
86690075Sobrien  product(ccstr, NativeMemoryTracking, "off",                               \
86790075Sobrien          "Native memory tracking options")                                 \
86890075Sobrien                                                                            \
869132718Skan  diagnostic(bool, PrintNMTStatistics, false,                               \
87090075Sobrien          "Print native memory tracking summary data if it is on")          \
871169689Skan                                                                            \
87290075Sobrien  diagnostic(bool, LogCompilation, false,                                   \
87390075Sobrien          "Log compilation activity in detail to hotspot.log or LogFile")   \
87450397Sobrien                                                                            \
87550397Sobrien  product(bool, PrintCompilation, false,                                    \
87690075Sobrien          "Print compilations")                                             \
87790075Sobrien                                                                            \
87850397Sobrien  diagnostic(bool, TraceNMethodInstalls, false,                             \
87950397Sobrien             "Trace nmethod intallation")                                   \
88090075Sobrien                                                                            \
881169689Skan  diagnostic(intx, ScavengeRootsInCode, 2,                                  \
88250397Sobrien             "0: do not allow scavengable oops in the code cache; "         \
88350397Sobrien             "1: allow scavenging from the code cache; "                    \
88450397Sobrien             "2: emit as many constants as the compiler can see")           \
88550397Sobrien                                                                            \
88650397Sobrien  product(bool, AlwaysRestoreFPU, false,                                    \
88750397Sobrien          "Restore the FPU control word after every JNI call (expensive)")  \
88850397Sobrien                                                                            \
88950397Sobrien  diagnostic(bool, PrintCompilation2, false,                                \
89050397Sobrien          "Print additional statistics per compilation")                    \
89150397Sobrien                                                                            \
89250397Sobrien  diagnostic(bool, PrintAdapterHandlers, false,                             \
89350397Sobrien          "Print code generated for i2c/c2i adapters")                      \
89490075Sobrien                                                                            \
89550397Sobrien  diagnostic(bool, VerifyAdapterCalls, trueInDebug,                         \
89650397Sobrien          "Verify that i2c/c2i adapters are called properly")               \
89750397Sobrien                                                                            \
89850397Sobrien  develop(bool, VerifyAdapterSharing, false,                                \
899132718Skan          "Verify that the code for shared adapters is the equivalent")     \
90050397Sobrien                                                                            \
90190075Sobrien  diagnostic(bool, PrintAssembly, false,                                    \
90290075Sobrien          "Print assembly code (using external disassembler.so)")           \
90350397Sobrien                                                                            \
90450397Sobrien  diagnostic(ccstr, PrintAssemblyOptions, NULL,                             \
90550397Sobrien          "Options string passed to disassembler.so")                       \
90650397Sobrien                                                                            \
90750397Sobrien  diagnostic(bool, PrintNMethods, false,                                    \
90850397Sobrien          "Print assembly code for nmethods when generated")                \
90950397Sobrien                                                                            \
91050397Sobrien  diagnostic(bool, PrintNativeNMethods, false,                              \
911132718Skan          "Print assembly code for native nmethods when generated")         \
91250397Sobrien                                                                            \
91390075Sobrien  develop(bool, PrintDebugInfo, false,                                      \
91450397Sobrien          "Print debug information for all nmethods when generated")        \
91550397Sobrien                                                                            \
91650397Sobrien  develop(bool, PrintRelocations, false,                                    \
91790075Sobrien          "Print relocation information for all nmethods when generated")   \
91850397Sobrien                                                                            \
91950397Sobrien  develop(bool, PrintDependencies, false,                                   \
92050397Sobrien          "Print dependency information for all nmethods when generated")   \
92150397Sobrien                                                                            \
92250397Sobrien  develop(bool, PrintExceptionHandlers, false,                              \
92350397Sobrien          "Print exception handler tables for all nmethods when generated") \
92450397Sobrien                                                                            \
92550397Sobrien  develop(bool, StressCompiledExceptionHandlers, false,                     \
92650397Sobrien         "Exercise compiled exception handlers")                            \
92750397Sobrien                                                                            \
92850397Sobrien  develop(bool, InterceptOSException, false,                                \
92950397Sobrien          "Starts debugger when an implicit OS (e.g., NULL) "               \
930132718Skan          "exception happens")                                              \
93150397Sobrien                                                                            \
932169689Skan  product(bool, PrintCodeCache, false,                                      \
93350397Sobrien          "Print the code cache memory usage when exiting")                 \
93450397Sobrien                                                                            \
93550397Sobrien  develop(bool, PrintCodeCache2, false,                                     \
93650397Sobrien          "Print detailed usage info on the code cache when exiting")       \
93750397Sobrien                                                                            \
93850397Sobrien  product(bool, PrintCodeCacheOnCompilation, false,                         \
939132718Skan          "Print the code cache memory usage each time a method is compiled") \
94050397Sobrien                                                                            \
941169689Skan  diagnostic(bool, PrintStubCode, false,                                    \
94250397Sobrien          "Print generated stub code")                                      \
94350397Sobrien                                                                            \
94450397Sobrien  product(bool, StackTraceInThrowable, true,                                \
94550397Sobrien          "Collect backtrace in throwable when exception happens")          \
94650397Sobrien                                                                            \
94750397Sobrien  product(bool, OmitStackTraceInFastThrow, true,                            \
948132718Skan          "Omit backtraces for some 'hot' exceptions in optimized code")    \
94950397Sobrien                                                                            \
950169689Skan  product(bool, ProfilerPrintByteCodeStatistics, false,                     \
95150397Sobrien          "Prints byte code statictics when dumping profiler output")       \
95250397Sobrien                                                                            \
95350397Sobrien  product(bool, ProfilerRecordPC, false,                                    \
95450397Sobrien          "Collects tick for each 16 byte interval of compiled code")       \
95550397Sobrien                                                                            \
95650397Sobrien  product(bool, ProfileVM, false,                                           \
957132718Skan          "Profiles ticks that fall within VM (either in the VM Thread "    \
95850397Sobrien          "or VM code called through stubs)")                               \
959169689Skan                                                                            \
96090075Sobrien  product(bool, ProfileIntervals, false,                                    \
96150397Sobrien          "Prints profiles for each interval (see ProfileIntervalsTicks)")  \
96250397Sobrien                                                                            \
96350397Sobrien  notproduct(bool, ProfilerCheckIntervals, false,                           \
96450397Sobrien          "Collect and print info on spacing of profiler ticks")            \
96550397Sobrien                                                                            \
96690075Sobrien  develop(bool, PrintJVMWarnings, false,                                    \
96750397Sobrien          "Prints warnings for unimplemented JVM functions")                \
96890075Sobrien                                                                            \
96950397Sobrien  product(bool, PrintWarnings, true,                                        \
97050397Sobrien          "Prints JVM warnings to output stream")                           \
97150397Sobrien                                                                            \
97250397Sobrien  notproduct(uintx, WarnOnStalledSpinLock, 0,                               \
97350397Sobrien          "Prints warnings for stalled SpinLocks")                          \
97450397Sobrien                                                                            \
975169689Skan  product(bool, RegisterFinalizersAtInit, true,                             \
97650397Sobrien          "Register finalizable objects at end of Object.<init> or "        \
97750397Sobrien          "after allocation")                                               \
97890075Sobrien                                                                            \
97950397Sobrien  develop(bool, RegisterReferences, true,                                   \
980169689Skan          "Tells whether the VM should register soft/weak/final/phantom "   \
98150397Sobrien          "references")                                                     \
98250397Sobrien                                                                            \
98390075Sobrien  develop(bool, IgnoreRewrites, false,                                      \
98450397Sobrien          "Supress rewrites of bytecodes in the oopmap generator. "         \
985169689Skan          "This is unsafe!")                                                \
98650397Sobrien                                                                            \
98750397Sobrien  develop(bool, PrintCodeCacheExtension, false,                             \
98890075Sobrien          "Print extension of code cache")                                  \
98950397Sobrien                                                                            \
990169689Skan  develop(bool, UsePrivilegedStack, true,                                   \
99150397Sobrien          "Enable the security JVM functions")                              \
99290075Sobrien                                                                            \
99350397Sobrien  develop(bool, ProtectionDomainVerification, true,                         \
99490075Sobrien          "Verifies protection domain before resolution in system "         \
99550397Sobrien          "dictionary")                                                     \
99650397Sobrien                                                                            \
99750397Sobrien  product(bool, ClassUnloading, true,                                       \
99850397Sobrien          "Do unloading of classes")                                        \
999169689Skan                                                                            \
100050397Sobrien  develop(bool, DisableStartThread, false,                                  \
100150397Sobrien          "Disable starting of additional Java threads "                    \
100290075Sobrien          "(for debugging only)")                                           \
100350397Sobrien                                                                            \
1004169689Skan  develop(bool, MemProfiling, false,                                        \
100550397Sobrien          "Write memory usage profiling to log file")                       \
100650397Sobrien                                                                            \
1007169689Skan  notproduct(bool, PrintSystemDictionaryAtExit, false,                      \
1008169689Skan          "Prints the system dictionary at exit")                           \
100950397Sobrien                                                                            \
101050397Sobrien  experimental(intx, PredictedLoadedClassCount, 0,                          \
101190075Sobrien          "Experimental: Tune loaded class cache starting size.")           \
101290075Sobrien                                                                            \
101390075Sobrien  diagnostic(bool, UnsyncloadClass, false,                                  \
1014132718Skan          "Unstable: VM calls loadClass unsynchronized. Custom "            \
1015132718Skan          "class loader  must call VM synchronized for findClass "          \
101690075Sobrien          "and defineClass.")                                               \
101790075Sobrien                                                                            \
101890075Sobrien  product(bool, AlwaysLockClassLoader, false,                               \
101990075Sobrien          "Require the VM to acquire the class loader lock before calling " \
102090075Sobrien          "loadClass() even for class loaders registering "                 \
102190075Sobrien          "as parallel capable")                                            \
102290075Sobrien                                                                            \
102390075Sobrien  product(bool, AllowParallelDefineClass, false,                            \
102490075Sobrien          "Allow parallel defineClass requests for class loaders "          \
102590075Sobrien          "registering as parallel capable")                                \
102690075Sobrien                                                                            \
102790075Sobrien  product(bool, MustCallLoadClassInternal, false,                           \
102890075Sobrien          "Call loadClassInternal() rather than loadClass()")               \
102990075Sobrien                                                                            \
103090075Sobrien  product_pd(bool, DontYieldALot,                                           \
103190075Sobrien          "Throw away obvious excess yield calls (for SOLARIS only)")       \
1032117395Skan                                                                            \
1033117395Skan  product_pd(bool, ConvertSleepToYield,                                     \
103490075Sobrien          "Converts sleep(0) to thread yield "                              \
1035169689Skan          "(may be off for SOLARIS to improve GUI)")                        \
103690075Sobrien                                                                            \
103790075Sobrien  product(bool, ConvertYieldToSleep, false,                                 \
103890075Sobrien          "Converts yield to a sleep of MinSleepInterval to simulate Win32 "\
103990075Sobrien          "behavior (SOLARIS only)")                                        \
104090075Sobrien                                                                            \
1041117395Skan  product(bool, UseBoundThreads, true,                                      \
104290075Sobrien          "Bind user level threads to kernel threads (for SOLARIS only)")   \
1043117395Skan                                                                            \
1044117395Skan  develop(bool, UseDetachedThreads, true,                                   \
1045117395Skan          "Use detached threads that are recycled upon termination "        \
1046117395Skan          "(for SOLARIS only)")                                             \
1047117395Skan                                                                            \
1048117395Skan  product(bool, UseLWPSynchronization, true,                                \
1049169689Skan          "Use LWP-based instead of libthread-based synchronization "       \
1050169689Skan          "(SPARC only)")                                                   \
1051117395Skan                                                                            \
1052117395Skan  product(ccstr, SyncKnobs, NULL,                                           \
1053117395Skan          "(Unstable) Various monitor synchronization tunables")            \
1054117395Skan                                                                            \
105590075Sobrien  product(intx, EmitSync, 0,                                                \
1056117395Skan          "(Unsafe,Unstable) "                                              \
1057117395Skan          " Controls emission of inline sync fast-path code")               \
1058117395Skan                                                                            \
1059117395Skan  product(intx, MonitorBound, 0, "Bound Monitor population")                \
1060117395Skan                                                                            \
1061117395Skan  product(bool, MonitorInUseLists, false, "Track Monitors for Deflation")   \
1062117395Skan                                                                            \
1063117395Skan  product(intx, SyncFlags, 0, "(Unsafe,Unstable) Experimental Sync flags" ) \
106490075Sobrien                                                                            \
1065117395Skan  product(intx, SyncVerbose, 0, "(Unstable)" )                              \
1066117395Skan                                                                            \
1067117395Skan  product(intx, ClearFPUAtPark, 0, "(Unsafe,Unstable)" )                    \
1068117395Skan                                                                            \
1069117395Skan  product(intx, hashCode, 5,                                                \
1070117395Skan         "(Unstable) select hashCode generation algorithm" )                \
1071117395Skan                                                                            \
1072117395Skan  product(intx, WorkAroundNPTLTimedWaitHang, 1,                             \
1073117395Skan         "(Unstable, Linux-specific)"                                       \
1074117395Skan         " avoid NPTL-FUTEX hang pthread_cond_timedwait" )                  \
1075117395Skan                                                                            \
107690075Sobrien  product(bool, FilterSpuriousWakeups, true,                                \
107790075Sobrien          "Prevent spurious or premature wakeups from object.wait "         \
107890075Sobrien          "(Solaris only)")                                                 \
107990075Sobrien                                                                            \
108090075Sobrien  product(intx, NativeMonitorTimeout, -1, "(Unstable)" )                    \
108190075Sobrien  product(intx, NativeMonitorFlags, 0, "(Unstable)" )                       \
108290075Sobrien  product(intx, NativeMonitorSpinLimit, 20, "(Unstable)" )                  \
108390075Sobrien                                                                            \
108450397Sobrien  develop(bool, UsePthreads, false,                                         \
108550397Sobrien          "Use pthread-based instead of libthread-based synchronization "   \
108650397Sobrien          "(SPARC only)")                                                   \
108750397Sobrien                                                                            \
108850397Sobrien  product(bool, AdjustConcurrency, false,                                   \
1089169689Skan          "call thr_setconcurrency at thread create time to avoid "         \
109050397Sobrien          "LWP starvation on MP systems (For Solaris Only)")                \
109190075Sobrien                                                                            \
109290075Sobrien  product(bool, ReduceSignalUsage, false,                                   \
109390075Sobrien          "Reduce the use of OS signals in Java and/or the VM")             \
109450397Sobrien                                                                            \
1095132718Skan  develop_pd(bool, ShareVtableStubs,                                        \
1096132718Skan          "Share vtable stubs (smaller code but worse branch prediction")   \
1097132718Skan                                                                            \
1098132718Skan  develop(bool, LoadLineNumberTables, true,                                 \
1099132718Skan          "Tells whether the class file parser loads line number tables")   \
1100132718Skan                                                                            \
1101132718Skan  develop(bool, LoadLocalVariableTables, true,                              \
1102169689Skan          "Tells whether the class file parser loads local variable tables")\
1103169689Skan                                                                            \
1104169689Skan  develop(bool, LoadLocalVariableTypeTables, true,                          \
110550397Sobrien          "Tells whether the class file parser loads local variable type tables")\
1106169689Skan                                                                            \
1107169689Skan  product(bool, AllowUserSignalHandlers, false,                             \
1108169689Skan          "Do not complain if the application installs signal handlers "    \
1109169689Skan          "(Solaris & Linux only)")                                         \
1110169689Skan                                                                            \
1111169689Skan  product(bool, UseSignalChaining, true,                                    \
1112169689Skan          "Use signal-chaining to invoke signal handlers installed "        \
1113169689Skan          "by the application (Solaris & Linux only)")                      \
1114169689Skan                                                                            \
1115169689Skan  product(bool, UseAltSigs, false,                                          \
1116169689Skan          "Use alternate signals instead of SIGUSR1 & SIGUSR2 for VM "      \
111750397Sobrien          "internal signals (Solaris only)")                                \
111850397Sobrien                                                                            \
111950397Sobrien  product(bool, AllowJNIEnvProxy, false,                                    \
1120169689Skan          "Allow JNIEnv proxies for jdbx")                                  \
112150397Sobrien                                                                            \
1122169689Skan  product(bool, JNIDetachReleasesMonitors, true,                            \
1123169689Skan          "JNI DetachCurrentThread releases monitors owned by thread")      \
1124169689Skan                                                                            \
1125169689Skan  product(bool, RestoreMXCSROnJNICalls, false,                              \
1126169689Skan          "Restore MXCSR when returning from JNI calls")                    \
1127169689Skan                                                                            \
112850397Sobrien  product(bool, CheckJNICalls, false,                                       \
112950397Sobrien          "Verify all arguments to JNI calls")                              \
113050397Sobrien                                                                            \
113150397Sobrien  product(bool, UseFastJNIAccessors, true,                                  \
113250397Sobrien          "Use optimized versions of Get<Primitive>Field")                  \
113350397Sobrien                                                                            \
113450397Sobrien  product(bool, EagerXrunInit, false,                                       \
113550397Sobrien          "Eagerly initialize -Xrun libraries; allows startup profiling, "  \
113650397Sobrien          " but not all -Xrun libraries may support the state of the VM at this time") \
113750397Sobrien                                                                            \
113890075Sobrien  product(bool, PreserveAllAnnotations, false,                              \
113990075Sobrien          "Preserve RuntimeInvisibleAnnotations as well as RuntimeVisibleAnnotations") \
114090075Sobrien                                                                            \
114150397Sobrien  develop(uintx, PreallocatedOutOfMemoryErrorCount, 4,                      \
114290075Sobrien          "Number of OutOfMemoryErrors preallocated with backtrace")        \
114390075Sobrien                                                                            \
114490075Sobrien  product(bool, LazyBootClassLoader, true,                                  \
114590075Sobrien          "Enable/disable lazy opening of boot class path entries")         \
114690075Sobrien                                                                            \
114750397Sobrien  product(bool, UseXMMForArrayCopy, false,                                  \
114850397Sobrien          "Use SSE2 MOVQ instruction for Arraycopy")                        \
114950397Sobrien                                                                            \
115050397Sobrien  product(intx, FieldsAllocationStyle, 1,                                   \
115150397Sobrien          "0 - type based with oops first, 1 - with oops last, "            \
115250397Sobrien          "2 - oops in super and sub classes are together")                 \
115350397Sobrien                                                                            \
115490075Sobrien  product(bool, CompactFields, true,                                        \
115590075Sobrien          "Allocate nonstatic fields in gaps between previous fields")      \
115650397Sobrien                                                                            \
115750397Sobrien  notproduct(bool, PrintCompactFieldsSavings, false,                        \
115850397Sobrien          "Print how many words were saved with CompactFields")             \
115950397Sobrien                                                                            \
116090075Sobrien  notproduct(bool, PrintFieldLayout, false,                                 \
116150397Sobrien          "Print field layout for each class")                              \
116250397Sobrien                                                                            \
116350397Sobrien  product(intx, ContendedPaddingWidth, 128,                                 \
116450397Sobrien          "How many bytes to pad the fields/classes marked @Contended with")\
116550397Sobrien                                                                            \
116690075Sobrien  product(bool, EnableContended, true,                                      \
1167169689Skan          "Enable @Contended annotation support")                           \
1168169689Skan                                                                            \
116950397Sobrien  product(bool, RestrictContended, true,                                    \
117050397Sobrien          "Restrict @Contended to trusted classes")                         \
1171132718Skan                                                                            \
1172132718Skan  product(bool, UseBiasedLocking, true,                                     \
117390075Sobrien          "Enable biased locking in JVM")                                   \
117490075Sobrien                                                                            \
117590075Sobrien  product(intx, BiasedLockingStartupDelay, 4000,                            \
117652284Sobrien          "Number of milliseconds to wait before enabling biased locking")  \
1177132718Skan                                                                            \
117890075Sobrien  diagnostic(bool, PrintBiasedLockingStatistics, false,                     \
117990075Sobrien          "Print statistics of biased locking in JVM")                      \
118090075Sobrien                                                                            \
1181132718Skan  product(intx, BiasedLockingBulkRebiasThreshold, 20,                       \
1182169689Skan          "Threshold of number of revocations per type to try to "          \
118390075Sobrien          "rebias all objects in the heap of that type")                    \
118452284Sobrien                                                                            \
1185132718Skan  product(intx, BiasedLockingBulkRevokeThreshold, 40,                       \
1186132718Skan          "Threshold of number of revocations per type to permanently "     \
1187169689Skan          "revoke biases of all objects in the heap of that type")          \
1188169689Skan                                                                            \
1189169689Skan  product(intx, BiasedLockingDecayTime, 25000,                              \
1190169689Skan          "Decay time (in milliseconds) to re-enable bulk rebiasing of a "  \
1191169689Skan          "type after previous bulk rebias")                                \
1192169689Skan                                                                            \
1193169689Skan  /* tracing */                                                             \
1194169689Skan                                                                            \
1195169689Skan  notproduct(bool, TraceRuntimeCalls, false,                                \
1196169689Skan          "Trace run-time calls")                                           \
1197169689Skan                                                                            \
1198169689Skan  develop(bool, TraceJNICalls, false,                                       \
1199169689Skan          "Trace JNI calls")                                                \
1200132718Skan                                                                            \
120190075Sobrien  notproduct(bool, TraceJVMCalls, false,                                    \
120250397Sobrien          "Trace JVM calls")                                                \
1203169689Skan                                                                            \
1204169689Skan  product(ccstr, TraceJVMTI, NULL,                                          \
1205169689Skan          "Trace flags for JVMTI functions and events")                     \
120652284Sobrien                                                                            \
1207169689Skan  /* This option can change an EMCP method into an obsolete method. */      \
120890075Sobrien  /* This can affect tests that except specific methods to be EMCP. */      \
1209169689Skan  /* This option should be used with caution. */                            \
121090075Sobrien  product(bool, StressLdcRewrite, false,                                    \
1211169689Skan          "Force ldc -> ldc_w rewrite during RedefineClasses")              \
1212169689Skan                                                                            \
1213169689Skan  product(intx, TraceRedefineClasses, 0,                                    \
1214169689Skan          "Trace level for JVMTI RedefineClasses")                          \
1215169689Skan                                                                            \
1216169689Skan  develop(bool, StressMethodComparator, false,                              \
1217169689Skan          "run the MethodComparator on all loaded methods")                 \
1218169689Skan                                                                            \
1219169689Skan  /* change to false by default sometime after Mustang */                   \
1220169689Skan  product(bool, VerifyMergedCPBytecodes, true,                              \
1221169689Skan          "Verify bytecodes after RedefineClasses constant pool merging")   \
1222169689Skan                                                                            \
1223169689Skan  develop(bool, TraceJNIHandleAllocation, false,                            \
1224169689Skan          "Trace allocation/deallocation of JNI handle blocks")             \
122590075Sobrien                                                                            \
122690075Sobrien  develop(bool, TraceThreadEvents, false,                                   \
1227169689Skan          "Trace all thread events")                                        \
122890075Sobrien                                                                            \
122990075Sobrien  develop(bool, TraceBytecodes, false,                                      \
123090075Sobrien          "Trace bytecode execution")                                       \
123190075Sobrien                                                                            \
1232169689Skan  develop(bool, TraceClassInitialization, false,                            \
1233169689Skan          "Trace class initialization")                                     \
123490075Sobrien                                                                            \
1235132718Skan  develop(bool, TraceExceptions, false,                                     \
123690075Sobrien          "Trace exceptions")                                               \
1237169689Skan                                                                            \
123890075Sobrien  develop(bool, TraceICs, false,                                            \
1239169689Skan          "Trace inline cache changes")                                     \
124090075Sobrien                                                                            \
1241169689Skan  notproduct(bool, TraceInvocationCounterOverflow, false,                   \
1242169689Skan          "Trace method invocation counter overflow")                       \
1243169689Skan                                                                            \
1244169689Skan  develop(bool, TraceInlineCacheClearing, false,                            \
1245169689Skan          "Trace clearing of inline caches in nmethods")                    \
1246169689Skan                                                                            \
1247169689Skan  develop(bool, TraceDependencies, false,                                   \
1248169689Skan          "Trace dependencies")                                             \
1249169689Skan                                                                            \
1250169689Skan  develop(bool, VerifyDependencies, trueInDebug,                            \
1251169689Skan         "Exercise and verify the compilation dependency mechanism")        \
1252169689Skan                                                                            \
1253169689Skan  develop(bool, TraceNewOopMapGeneration, false,                            \
1254169689Skan          "Trace OopMapGeneration")                                         \
1255169689Skan                                                                            \
1256169689Skan  develop(bool, TraceNewOopMapGenerationDetailed, false,                    \
1257169689Skan          "Trace OopMapGeneration: print detailed cell states")             \
1258169689Skan                                                                            \
1259169689Skan  develop(bool, TimeOopMap, false,                                          \
1260169689Skan          "Time calls to GenerateOopMap::compute_map() in sum")             \
1261169689Skan                                                                            \
1262169689Skan  develop(bool, TimeOopMap2, false,                                         \
1263169689Skan          "Time calls to GenerateOopMap::compute_map() individually")       \
126490075Sobrien                                                                            \
126590075Sobrien  develop(bool, TraceMonitorMismatch, false,                                \
126690075Sobrien          "Trace monitor matching failures during OopMapGeneration")        \
126790075Sobrien                                                                            \
126890075Sobrien  develop(bool, TraceOopMapRewrites, false,                                 \
126990075Sobrien          "Trace rewritting of method oops during oop map generation")      \
1270169689Skan                                                                            \
1271169689Skan  develop(bool, TraceSafepoint, false,                                      \
1272169689Skan          "Trace safepoint operations")                                     \
1273169689Skan                                                                            \
1274169689Skan  develop(bool, TraceICBuffer, false,                                       \
127590075Sobrien          "Trace usage of IC buffer")                                       \
1276132718Skan                                                                            \
127790075Sobrien  develop(bool, TraceCompiledIC, false,                                     \
127890075Sobrien          "Trace changes of compiled IC")                                   \
127990075Sobrien                                                                            \
1280117395Skan  notproduct(bool, TraceZapDeadLocals, false,                               \
1281169689Skan          "Trace zapping dead locals")                                      \
1282169689Skan                                                                            \
1283169689Skan  develop(bool, TraceStartupTime, false,                                    \
1284169689Skan          "Trace setup time")                                               \
1285169689Skan                                                                            \
1286169689Skan  develop(bool, TraceProtectionDomainVerification, false,                   \
1287169689Skan          "Trace protection domain verifcation")                            \
1288169689Skan                                                                            \
1289169689Skan  develop(bool, TraceClearedExceptions, false,                              \
129090075Sobrien          "Prints when an exception is forcibly cleared")                   \
129190075Sobrien                                                                            \
129290075Sobrien  product(bool, TraceClassResolution, false,                                \
129390075Sobrien          "Trace all constant pool resolutions (for debugging)")            \
1294169689Skan                                                                            \
1295117395Skan  product(bool, TraceBiasedLocking, false,                                  \
1296169689Skan          "Trace biased locking in JVM")                                    \
1297169689Skan                                                                            \
1298169689Skan  product(bool, TraceMonitorInflation, false,                               \
1299169689Skan          "Trace monitor inflation in JVM")                                 \
1300169689Skan                                                                            \
1301169689Skan  /* gc */                                                                  \
1302169689Skan                                                                            \
1303169689Skan  product(bool, UseSerialGC, false,                                         \
1304169689Skan          "Use the serial garbage collector")                               \
1305169689Skan                                                                            \
1306169689Skan  product(bool, UseG1GC, false,                                             \
1307169689Skan          "Use the Garbage-First garbage collector")                        \
1308169689Skan                                                                            \
1309169689Skan  product(bool, UseParallelGC, false,                                       \
1310169689Skan          "Use the Parallel Scavenge garbage collector")                    \
1311169689Skan                                                                            \
1312169689Skan  product(bool, UseParallelOldGC, false,                                    \
1313169689Skan          "Use the Parallel Old garbage collector")                         \
1314169689Skan                                                                            \
1315169689Skan  product(uintx, HeapMaximumCompactionInterval, 20,                         \
1316169689Skan          "How often should we maximally compact the heap (not allowing "   \
1317169689Skan          "any dead space)")                                                \
1318169689Skan                                                                            \
1319169689Skan  product(uintx, HeapFirstMaximumCompactionCount, 3,                        \
1320169689Skan          "The collection count for the first maximum compaction")          \
1321169689Skan                                                                            \
1322169689Skan  product(bool, UseMaximumCompactionOnSystemGC, true,                       \
1323169689Skan          "In the Parallel Old garbage collector maximum compaction for "   \
1324169689Skan          "a system GC")                                                    \
1325169689Skan                                                                            \
1326169689Skan  product(uintx, ParallelOldDeadWoodLimiterMean, 50,                        \
1327169689Skan          "The mean used by the par compact dead wood"                      \
1328169689Skan          "limiter (a number between 0-100).")                              \
1329169689Skan                                                                            \
1330169689Skan  product(uintx, ParallelOldDeadWoodLimiterStdDev, 80,                      \
1331169689Skan          "The standard deviation used by the par compact dead wood"        \
1332169689Skan          "limiter (a number between 0-100).")                              \
1333169689Skan                                                                            \
1334169689Skan  product(uintx, ParallelGCThreads, 0,                                      \
1335169689Skan          "Number of parallel threads parallel gc will use")                \
1336169689Skan                                                                            \
1337169689Skan  product(bool, UseDynamicNumberOfGCThreads, false,                         \
1338169689Skan          "Dynamically choose the number of parallel threads "              \
1339169689Skan          "parallel gc will use")                                           \
134090075Sobrien                                                                            \
134190075Sobrien  diagnostic(bool, ForceDynamicNumberOfGCThreads, false,                    \
134290075Sobrien          "Force dynamic selection of the number of"                        \
134390075Sobrien          "parallel threads parallel gc will use to aid debugging")         \
134490075Sobrien                                                                            \
134590075Sobrien  product(uintx, HeapSizePerGCThread, ScaleForWordSize(64*M),               \
134690075Sobrien          "Size of heap (bytes) per GC thread used in calculating the "     \
1347169689Skan          "number of GC threads")                                           \
1348169689Skan                                                                            \
134990075Sobrien  product(bool, TraceDynamicGCThreads, false,                               \
135090075Sobrien          "Trace the dynamic GC thread usage")                              \
135190075Sobrien                                                                            \
135290075Sobrien  develop(bool, ParallelOldGCSplitALot, false,                              \
135390075Sobrien          "Provoke splitting (copying data from a young gen space to"       \
135490075Sobrien          "multiple destination spaces)")                                   \
135590075Sobrien                                                                            \
135690075Sobrien  develop(uintx, ParallelOldGCSplitInterval, 3,                             \
135790075Sobrien          "How often to provoke splitting a young gen space")               \
135890075Sobrien                                                                            \
135990075Sobrien  product(uintx, ConcGCThreads, 0,                                          \
136090075Sobrien          "Number of threads concurrent gc will use")                       \
136190075Sobrien                                                                            \
136290075Sobrien  product(uintx, YoungPLABSize, 4096,                                       \
136390075Sobrien          "Size of young gen promotion labs (in HeapWords)")                \
136490075Sobrien                                                                            \
136590075Sobrien  product(uintx, OldPLABSize, 1024,                                         \
136690075Sobrien          "Size of old gen promotion labs (in HeapWords)")                  \
136790075Sobrien                                                                            \
136890075Sobrien  product(uintx, GCTaskTimeStampEntries, 200,                               \
136990075Sobrien          "Number of time stamp entries per gc worker thread")              \
137090075Sobrien                                                                            \
137190075Sobrien  product(bool, AlwaysTenure, false,                                        \
1372169689Skan          "Always tenure objects in eden. (ParallelGC only)")               \
1373169689Skan                                                                            \
1374169689Skan  product(bool, NeverTenure, false,                                         \
1375169689Skan          "Never tenure objects in eden, May tenure on overflow "           \
1376169689Skan          "(ParallelGC only)")                                              \
137790075Sobrien                                                                            \
137890075Sobrien  product(bool, ScavengeBeforeFullGC, true,                                 \
1379117395Skan          "Scavenge youngest generation before each full GC, "              \
138090075Sobrien          "used with UseParallelGC")                                        \
138190075Sobrien                                                                            \
138290075Sobrien  develop(bool, ScavengeWithObjectsInToSpace, false,                        \
1383169689Skan          "Allow scavenges to occur when to_space contains objects.")       \
1384169689Skan                                                                            \
1385169689Skan  product(bool, UseConcMarkSweepGC, false,                                  \
138690075Sobrien          "Use Concurrent Mark-Sweep GC in the old generation")             \
138790075Sobrien                                                                            \
138890075Sobrien  product(bool, ExplicitGCInvokesConcurrent, false,                         \
138990075Sobrien          "A System.gc() request invokes a concurrent collection;"          \
139090075Sobrien          " (effective only when UseConcMarkSweepGC)")                      \
139190075Sobrien                                                                            \
139290075Sobrien  product(bool, ExplicitGCInvokesConcurrentAndUnloadsClasses, false,        \
139390075Sobrien          "A System.gc() request invokes a concurrent collection and "      \
139490075Sobrien          "also unloads classes during such a concurrent gc cycle "         \
139590075Sobrien          "(effective only when UseConcMarkSweepGC)")                       \
139690075Sobrien                                                                            \
1397117395Skan  product(bool, GCLockerInvokesConcurrent, false,                           \
139890075Sobrien          "The exit of a JNI CS necessitating a scavenge also"              \
1399132718Skan          " kicks off a bkgrd concurrent collection")                       \
140090075Sobrien                                                                            \
140190075Sobrien  product(uintx, GCLockerEdenExpansionPercent, 5,                           \
140290075Sobrien          "How much the GC can expand the eden by while the GC locker  "    \
140390075Sobrien          "is active (as a percentage)")                                    \
140490075Sobrien                                                                            \
140590075Sobrien  diagnostic(intx, GCLockerRetryAllocationCount, 2,                         \
140690075Sobrien          "Number of times to retry allocations when"                       \
140790075Sobrien          " blocked by the GC locker")                                      \
140890075Sobrien                                                                            \
140990075Sobrien  develop(bool, UseCMSAdaptiveFreeLists, true,                              \
141090075Sobrien          "Use Adaptive Free Lists in the CMS generation")                  \
141190075Sobrien                                                                            \
141290075Sobrien  develop(bool, UseAsyncConcMarkSweepGC, true,                              \
141390075Sobrien          "Use Asynchronous Concurrent Mark-Sweep GC in the old generation")\
141490075Sobrien                                                                            \
141590075Sobrien  develop(bool, RotateCMSCollectionTypes, false,                            \
141690075Sobrien          "Rotate the CMS collections among concurrent and STW")            \
141790075Sobrien                                                                            \
141890075Sobrien  product(bool, UseCMSBestFit, true,                                        \
141990075Sobrien          "Use CMS best fit allocation strategy")                           \
142090075Sobrien                                                                            \
142190075Sobrien  product(bool, UseCMSCollectionPassing, true,                              \
1422132718Skan          "Use passing of collection from background to foreground")        \
142390075Sobrien                                                                            \
142490075Sobrien  product(bool, UseParNewGC, false,                                         \
142590075Sobrien          "Use parallel threads in the new generation.")                    \
142690075Sobrien                                                                            \
142790075Sobrien  product(bool, ParallelGCVerbose, false,                                   \
142890075Sobrien          "Verbose output for parallel GC.")                                \
142990075Sobrien                                                                            \
1430132718Skan  product(intx, ParallelGCBufferWastePct, 10,                               \
143190075Sobrien          "wasted fraction of parallel allocation buffer.")                 \
143290075Sobrien                                                                            \
143390075Sobrien  diagnostic(bool, ParallelGCRetainPLAB, false,                             \
143490075Sobrien             "Retain parallel allocation buffers across scavenges; "        \
143590075Sobrien             " -- disabled because this currently conflicts with "          \
143690075Sobrien             " parallel card scanning under certain conditions ")           \
1437132718Skan                                                                            \
143890075Sobrien  product(intx, TargetPLABWastePct, 10,                                     \
143990075Sobrien          "target wasted space in last buffer as pct of overall allocation")\
144090075Sobrien                                                                            \
144190075Sobrien  product(uintx, PLABWeight, 75,                                            \
1442132718Skan          "Percentage (0-100) used to weight the current sample when"       \
144390075Sobrien          "computing exponentially decaying average for ResizePLAB.")       \
144490075Sobrien                                                                            \
144590075Sobrien  product(bool, ResizePLAB, true,                                           \
144690075Sobrien          "Dynamically resize (survivor space) promotion labs")             \
144790075Sobrien                                                                            \
144890075Sobrien  product(bool, PrintPLAB, false,                                           \
144990075Sobrien          "Print (survivor space) promotion labs sizing decisions")         \
1450132718Skan                                                                            \
145190075Sobrien  product(intx, ParGCArrayScanChunk, 50,                                    \
1452132718Skan          "Scan a subset and push remainder, if array is bigger than this") \
145390075Sobrien                                                                            \
145490075Sobrien  product(bool, ParGCUseLocalOverflow, false,                               \
145590075Sobrien          "Instead of a global overflow list, use local overflow stacks")   \
145690075Sobrien                                                                            \
1457132718Skan  product(bool, ParGCTrimOverflow, true,                                    \
145890075Sobrien          "Eagerly trim the local overflow lists (when ParGCUseLocalOverflow") \
145990075Sobrien                                                                            \
146090075Sobrien  notproduct(bool, ParGCWorkQueueOverflowALot, false,                       \
146190075Sobrien          "Whether we should simulate work queue overflow in ParNew")       \
146290075Sobrien                                                                            \
146390075Sobrien  notproduct(uintx, ParGCWorkQueueOverflowInterval, 1000,                   \
146490075Sobrien          "An `interval' counter that determines how frequently "           \
146590075Sobrien          "we simulate overflow; a smaller number increases frequency")     \
146690075Sobrien                                                                            \
146790075Sobrien  product(uintx, ParGCDesiredObjsFromOverflowList, 20,                      \
146890075Sobrien          "The desired number of objects to claim from the overflow list")  \
146990075Sobrien                                                                            \
147090075Sobrien  diagnostic(uintx, ParGCStridesPerThread, 2,                               \
1471132718Skan          "The number of strides per worker thread that we divide up the "  \
147290075Sobrien          "card table scanning work into")                                  \
147390075Sobrien                                                                            \
147490075Sobrien  diagnostic(intx, ParGCCardsPerStrideChunk, 256,                           \
147590075Sobrien          "The number of cards in each chunk of the parallel chunks used "  \
147690075Sobrien          "during card table scanning")                                     \
147790075Sobrien                                                                            \
147890075Sobrien  product(uintx, CMSParPromoteBlocksToClaim, 16,                            \
147990075Sobrien          "Number of blocks to attempt to claim when refilling CMS LAB for "\
148090075Sobrien          "parallel GC.")                                                   \
148190075Sobrien                                                                            \
148290075Sobrien  product(uintx, OldPLABWeight, 50,                                         \
148390075Sobrien          "Percentage (0-100) used to weight the current sample when"       \
148490075Sobrien          "computing exponentially decaying average for resizing CMSParPromoteBlocksToClaim.") \
148590075Sobrien                                                                            \
148690075Sobrien  product(bool, ResizeOldPLAB, true,                                        \
148790075Sobrien          "Dynamically resize (old gen) promotion labs")                    \
148890075Sobrien                                                                            \
148990075Sobrien  product(bool, PrintOldPLAB, false,                                        \
149090075Sobrien          "Print (old gen) promotion labs sizing decisions")                \
149190075Sobrien                                                                            \
149290075Sobrien  product(uintx, CMSOldPLABMin, 16,                                         \
149390075Sobrien          "Min size of CMS gen promotion lab caches per worker per blksize")\
149490075Sobrien                                                                            \
149590075Sobrien  product(uintx, CMSOldPLABMax, 1024,                                       \
149690075Sobrien          "Max size of CMS gen promotion lab caches per worker per blksize")\
149790075Sobrien                                                                            \
149890075Sobrien  product(uintx, CMSOldPLABNumRefills, 4,                                   \
149990075Sobrien          "Nominal number of refills of CMS gen promotion lab cache"        \
150090075Sobrien          " per worker per block size")                                     \
150190075Sobrien                                                                            \
150290075Sobrien  product(bool, CMSOldPLABResizeQuicker, false,                             \
1503169689Skan          "Whether to react on-the-fly during a scavenge to a sudden"       \
150490075Sobrien          " change in block demand rate")                                   \
1505169689Skan                                                                            \
1506169689Skan  product(uintx, CMSOldPLABToleranceFactor, 4,                              \
1507169689Skan          "The tolerance of the phase-change detector for on-the-fly"       \
1508169689Skan          " PLAB resizing during a scavenge")                               \
150990075Sobrien                                                                            \
1510132718Skan  product(uintx, CMSOldPLABReactivityFactor, 2,                             \
151150397Sobrien          "The gain in the feedback loop for on-the-fly PLAB resizing"      \
151250397Sobrien          " during a scavenge")                                             \
151390075Sobrien                                                                            \
151450397Sobrien  product(bool, AlwaysPreTouch, false,                                      \
151590075Sobrien          "It forces all freshly committed pages to be pre-touched.")       \
151690075Sobrien                                                                            \
151790075Sobrien  product_pd(intx, CMSYoungGenPerWorker,                                    \
151890075Sobrien          "The maximum size of young gen chosen by default per GC worker "  \
151990075Sobrien          "thread available")                                               \
152090075Sobrien                                                                            \
152190075Sobrien  product(bool, CMSIncrementalMode, false,                                  \
152252284Sobrien          "Whether CMS GC should operate in \"incremental\" mode")          \
152352284Sobrien                                                                            \
152450397Sobrien  product(uintx, CMSIncrementalDutyCycle, 10,                               \
152552284Sobrien          "CMS incremental mode duty cycle (a percentage, 0-100).  If"      \
152690075Sobrien          "CMSIncrementalPacing is enabled, then this is just the initial"  \
152790075Sobrien          "value")                                                          \
152890075Sobrien                                                                            \
152990075Sobrien  product(bool, CMSIncrementalPacing, true,                                 \
153090075Sobrien          "Whether the CMS incremental mode duty cycle should be "          \
153150397Sobrien          "automatically adjusted")                                         \
153250397Sobrien                                                                            \
153390075Sobrien  product(uintx, CMSIncrementalDutyCycleMin, 0,                             \
1534169689Skan          "Lower bound on the duty cycle when CMSIncrementalPacing is "     \
153550397Sobrien          "enabled (a percentage, 0-100)")                                  \
153652284Sobrien                                                                            \
153752284Sobrien  product(uintx, CMSIncrementalSafetyFactor, 10,                            \
153850397Sobrien          "Percentage (0-100) used to add conservatism when computing the " \
1539169689Skan          "duty cycle")                                                     \
1540169689Skan                                                                            \
1541169689Skan  product(uintx, CMSIncrementalOffset, 0,                                   \
1542169689Skan          "Percentage (0-100) by which the CMS incremental mode duty cycle" \
1543169689Skan          " is shifted to the right within the period between young GCs")   \
1544169689Skan                                                                            \
1545169689Skan  product(uintx, CMSExpAvgFactor, 50,                                       \
154650397Sobrien          "Percentage (0-100) used to weight the current sample when"       \
154750397Sobrien          "computing exponential averages for CMS statistics.")             \
154850397Sobrien                                                                            \
154950397Sobrien  product(uintx, CMS_FLSWeight, 75,                                         \
155090075Sobrien          "Percentage (0-100) used to weight the current sample when"       \
155190075Sobrien          "computing exponentially decating averages for CMS FLS statistics.") \
155290075Sobrien                                                                            \
155390075Sobrien  product(uintx, CMS_FLSPadding, 1,                                         \
1554169689Skan          "The multiple of deviation from mean to use for buffering"        \
1555169689Skan          "against volatility in free list demand.")                        \
1556169689Skan                                                                            \
1557169689Skan  product(uintx, FLSCoalescePolicy, 2,                                      \
1558169689Skan          "CMS: Aggression level for coalescing, increasing from 0 to 4")   \
1559169689Skan                                                                            \
1560169689Skan  product(bool, FLSAlwaysCoalesceLarge, false,                              \
1561169689Skan          "CMS: Larger free blocks are always available for coalescing")    \
1562169689Skan                                                                            \
1563169689Skan  product(double, FLSLargestBlockCoalesceProximity, 0.99,                   \
1564169689Skan          "CMS: the smaller the percentage the greater the coalition force")\
1565169689Skan                                                                            \
1566169689Skan  product(double, CMSSmallCoalSurplusPercent, 1.05,                         \
156790075Sobrien          "CMS: the factor by which to inflate estimated demand of small"   \
1568169689Skan          " block sizes to prevent coalescing with an adjoining block")     \
1569169689Skan                                                                            \
1570169689Skan  product(double, CMSLargeCoalSurplusPercent, 0.95,                         \
1571169689Skan          "CMS: the factor by which to inflate estimated demand of large"   \
1572169689Skan          " block sizes to prevent coalescing with an adjoining block")     \
1573169689Skan                                                                            \
1574169689Skan  product(double, CMSSmallSplitSurplusPercent, 1.10,                        \
1575169689Skan          "CMS: the factor by which to inflate estimated demand of small"   \
157690075Sobrien          " block sizes to prevent splitting to supply demand for smaller"  \
157750397Sobrien          " blocks")                                                        \
157890075Sobrien                                                                            \
157990075Sobrien  product(double, CMSLargeSplitSurplusPercent, 1.00,                        \
158090075Sobrien          "CMS: the factor by which to inflate estimated demand of large"   \
158190075Sobrien          " block sizes to prevent splitting to supply demand for smaller"  \
158290075Sobrien          " blocks")                                                        \
158390075Sobrien                                                                            \
158490075Sobrien  product(bool, CMSExtrapolateSweep, false,                                 \
158590075Sobrien          "CMS: cushion for block demand during sweep")                     \
158690075Sobrien                                                                            \
158790075Sobrien  product(uintx, CMS_SweepWeight, 75,                                       \
158890075Sobrien          "Percentage (0-100) used to weight the current sample when "      \
158990075Sobrien          "computing exponentially decaying average for inter-sweep "       \
159090075Sobrien          "duration")                                                       \
1591169689Skan                                                                            \
1592169689Skan  product(uintx, CMS_SweepPadding, 1,                                       \
159390075Sobrien          "The multiple of deviation from mean to use for buffering "       \
159490075Sobrien          "against volatility in inter-sweep duration.")                    \
159590075Sobrien                                                                            \
1596169689Skan  product(uintx, CMS_SweepTimerThresholdMillis, 10,                         \
159790075Sobrien          "Skip block flux-rate sampling for an epoch unless inter-sweep "  \
159850397Sobrien          "duration exceeds this threhold in milliseconds")                 \
159990075Sobrien                                                                            \
160090075Sobrien  develop(bool, CMSTraceIncrementalMode, false,                             \
160190075Sobrien          "Trace CMS incremental mode")                                     \
1602169689Skan                                                                            \
160390075Sobrien  develop(bool, CMSTraceIncrementalPacing, false,                           \
160490075Sobrien          "Trace CMS incremental mode pacing computation")                  \
160590075Sobrien                                                                            \
160690075Sobrien  develop(bool, CMSTraceThreadState, false,                                 \
160790075Sobrien          "Trace the CMS thread state (enable the trace_state() method)")   \
1608169689Skan                                                                            \
1609169689Skan  product(bool, CMSClassUnloadingEnabled, true,                             \
161050397Sobrien          "Whether class unloading enabled when using CMS GC")              \
161190075Sobrien                                                                            \
161290075Sobrien  product(uintx, CMSClassUnloadingMaxInterval, 0,                           \
161390075Sobrien          "When CMS class unloading is enabled, the maximum CMS cycle count"\
161490075Sobrien          " for which classes may not be unloaded")                         \
161590075Sobrien                                                                            \
161690075Sobrien  product(bool, CMSCompactWhenClearAllSoftRefs, true,                       \
161790075Sobrien          "Compact when asked to collect CMS gen with clear_all_soft_refs") \
161890075Sobrien                                                                            \
161990075Sobrien  product(bool, UseCMSCompactAtFullCollection, true,                        \
162090075Sobrien          "Use mark sweep compact at full collections")                     \
162190075Sobrien                                                                            \
162290075Sobrien  product(uintx, CMSFullGCsBeforeCompaction, 0,                             \
1623169689Skan          "Number of CMS full collection done before compaction if > 0")    \
162450397Sobrien                                                                            \
1625169689Skan  develop(intx, CMSDictionaryChoice, 0,                                     \
1626169689Skan          "Use BinaryTreeDictionary as default in the CMS generation")      \
1627169689Skan                                                                            \
1628169689Skan  product(uintx, CMSIndexedFreeListReplenish, 4,                            \
1629169689Skan          "Replenish an indexed free list with this number of chunks")      \
1630169689Skan                                                                            \
1631169689Skan  product(bool, CMSReplenishIntermediate, true,                             \
1632169689Skan          "Replenish all intermediate free-list caches")                    \
163390075Sobrien                                                                            \
163490075Sobrien  product(bool, CMSSplitIndexedFreeListBlocks, true,                        \
163590075Sobrien          "When satisfying batched demand, split blocks from the "          \
1636169689Skan          "IndexedFreeList whose size is a multiple of requested size")     \
163750397Sobrien                                                                            \
163890075Sobrien  product(bool, CMSLoopWarn, false,                                         \
1639169689Skan          "Warn in case of excessive CMS looping")                          \
164090075Sobrien                                                                            \
164190075Sobrien  develop(bool, CMSOverflowEarlyRestoration, false,                         \
164290075Sobrien          "Whether preserved marks should be restored early")               \
164390075Sobrien                                                                            \
164490075Sobrien  product(uintx, MarkStackSize, NOT_LP64(32*K) LP64_ONLY(4*M),              \
164590075Sobrien          "Size of marking stack")                                          \
164690075Sobrien                                                                            \
164790075Sobrien  product(uintx, MarkStackSizeMax, NOT_LP64(4*M) LP64_ONLY(512*M),          \
164890075Sobrien          "Max size of marking stack")                                      \
164990075Sobrien                                                                            \
165090075Sobrien  notproduct(bool, CMSMarkStackOverflowALot, false,                         \
165190075Sobrien          "Whether we should simulate frequent marking stack / work queue"  \
165250397Sobrien          " overflow")                                                      \
165390075Sobrien                                                                            \
1654169689Skan  notproduct(uintx, CMSMarkStackOverflowInterval, 1000,                     \
165590075Sobrien          "An `interval' counter that determines how frequently"            \
165690075Sobrien          " we simulate overflow; a smaller number increases frequency")    \
165790075Sobrien                                                                            \
165890075Sobrien  product(uintx, CMSMaxAbortablePrecleanLoops, 0,                           \
165990075Sobrien          "(Temporary, subject to experimentation)"                         \
1660169689Skan          "Maximum number of abortable preclean iterations, if > 0")        \
166190075Sobrien                                                                            \
166290075Sobrien  product(intx, CMSMaxAbortablePrecleanTime, 5000,                          \
166390075Sobrien          "(Temporary, subject to experimentation)"                         \
166450397Sobrien          "Maximum time in abortable preclean in ms")                       \
166590075Sobrien                                                                            \
166690075Sobrien  product(uintx, CMSAbortablePrecleanMinWorkPerIteration, 100,              \
166790075Sobrien          "(Temporary, subject to experimentation)"                         \
166890075Sobrien          "Nominal minimum work per abortable preclean iteration")          \
166990075Sobrien                                                                            \
167090075Sobrien  manageable(intx, CMSAbortablePrecleanWaitMillis, 100,                     \
167190075Sobrien          "(Temporary, subject to experimentation)"                         \
167290075Sobrien          " Time that we sleep between iterations when not given"           \
1673169689Skan          " enough work per iteration")                                     \
167490075Sobrien                                                                            \
167590075Sobrien  product(uintx, CMSRescanMultiple, 32,                                     \
167650397Sobrien          "Size (in cards) of CMS parallel rescan task")                    \
167790075Sobrien                                                                            \
167890075Sobrien  product(uintx, CMSConcMarkMultiple, 32,                                   \
167990075Sobrien          "Size (in cards) of CMS concurrent MT marking task")              \
168090075Sobrien                                                                            \
168190075Sobrien  product(bool, CMSAbortSemantics, false,                                   \
168250397Sobrien          "Whether abort-on-overflow semantics is implemented")             \
168390075Sobrien                                                                            \
168490075Sobrien  product(bool, CMSParallelRemarkEnabled, true,                             \
1685169689Skan          "Whether parallel remark enabled (only if ParNewGC)")             \
1686169689Skan                                                                            \
1687169689Skan  product(bool, CMSParallelSurvivorRemarkEnabled, true,                     \
168850397Sobrien          "Whether parallel remark of survivor space"                       \
168990075Sobrien          " enabled (effective only if CMSParallelRemarkEnabled)")          \
169090075Sobrien                                                                            \
169190075Sobrien  product(bool, CMSPLABRecordAlways, true,                                  \
169290075Sobrien          "Whether to always record survivor space PLAB bdries"             \
169350397Sobrien          " (effective only if CMSParallelSurvivorRemarkEnabled)")          \
169490075Sobrien                                                                            \
169590075Sobrien  product(bool, CMSConcurrentMTEnabled, true,                               \
169690075Sobrien          "Whether multi-threaded concurrent work enabled (if ParNewGC)")   \
169790075Sobrien                                                                            \
169890075Sobrien  product(bool, CMSPrecleaningEnabled, true,                                \
169950397Sobrien          "Whether concurrent precleaning enabled")                         \
1700169689Skan                                                                            \
1701169689Skan  product(uintx, CMSPrecleanIter, 3,                                        \
1702169689Skan          "Maximum number of precleaning iteration passes")                 \
1703169689Skan                                                                            \
1704169689Skan  product(uintx, CMSPrecleanNumerator, 2,                                   \
1705169689Skan          "CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence"  \
1706169689Skan          " ratio")                                                         \
170790075Sobrien                                                                            \
1708169689Skan  product(uintx, CMSPrecleanDenominator, 3,                                 \
170990075Sobrien          "CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence"  \
171050397Sobrien          " ratio")                                                         \
171190075Sobrien                                                                            \
171290075Sobrien  product(bool, CMSPrecleanRefLists1, true,                                 \
171350397Sobrien          "Preclean ref lists during (initial) preclean phase")             \
171490075Sobrien                                                                            \
1715169689Skan  product(bool, CMSPrecleanRefLists2, false,                                \
171652284Sobrien          "Preclean ref lists during abortable preclean phase")             \
171790075Sobrien                                                                            \
171890075Sobrien  product(bool, CMSPrecleanSurvivors1, false,                               \
171990075Sobrien          "Preclean survivors during (initial) preclean phase")             \
172090075Sobrien                                                                            \
172190075Sobrien  product(bool, CMSPrecleanSurvivors2, true,                                \
172290075Sobrien          "Preclean survivors during abortable preclean phase")             \
172390075Sobrien                                                                            \
172490075Sobrien  product(uintx, CMSPrecleanThreshold, 1000,                                \
1725169689Skan          "Don't re-iterate if #dirty cards less than this")                \
1726169689Skan                                                                            \
172790075Sobrien  product(bool, CMSCleanOnEnter, true,                                      \
172890075Sobrien          "Clean-on-enter optimization for reducing number of dirty cards") \
1729169689Skan                                                                            \
1730169689Skan  product(uintx, CMSRemarkVerifyVariant, 1,                                 \
173190075Sobrien          "Choose variant (1,2) of verification following remark")          \
173290075Sobrien                                                                            \
173390075Sobrien  product(uintx, CMSScheduleRemarkEdenSizeThreshold, 2*M,                   \
173490075Sobrien          "If Eden used is below this value, don't try to schedule remark") \
173590075Sobrien                                                                            \
173690075Sobrien  product(uintx, CMSScheduleRemarkEdenPenetration, 50,                      \
173790075Sobrien          "The Eden occupancy % at which to try and schedule remark pause") \
173890075Sobrien                                                                            \
173990075Sobrien  product(uintx, CMSScheduleRemarkSamplingRatio, 5,                         \
174090075Sobrien          "Start sampling Eden top at least before yg occupancy reaches"    \
174190075Sobrien          " 1/<ratio> of the size at which we plan to schedule remark")     \
174290075Sobrien                                                                            \
174390075Sobrien  product(uintx, CMSSamplingGrain, 16*K,                                    \
174490075Sobrien          "The minimum distance between eden samples for CMS (see above)")  \
174590075Sobrien                                                                            \
1746169689Skan  product(bool, CMSScavengeBeforeRemark, false,                             \
1747169689Skan          "Attempt scavenge before the CMS remark step")                    \
174890075Sobrien                                                                            \
174990075Sobrien  develop(bool, CMSTraceSweeper, false,                                     \
175090075Sobrien          "Trace some actions of the CMS sweeper")                          \
175190075Sobrien                                                                            \
175290075Sobrien  product(uintx, CMSWorkQueueDrainThreshold, 10,                            \
175390075Sobrien          "Don't drain below this size per parallel worker/thief")          \
175490075Sobrien                                                                            \
175590075Sobrien  manageable(intx, CMSWaitDuration, 2000,                                   \
175690075Sobrien          "Time in milliseconds that CMS thread waits for young GC")        \
175790075Sobrien                                                                            \
175890075Sobrien  develop(uintx, CMSCheckInterval, 1000,                                    \
175990075Sobrien          "Interval in milliseconds that CMS thread checks if it "          \
176090075Sobrien          "should start a collection cycle")                                \
1761169689Skan                                                                            \
1762169689Skan  product(bool, CMSYield, true,                                             \
176390075Sobrien          "Yield between steps of concurrent mark & sweep")                 \
1764169689Skan                                                                            \
1765169689Skan  product(uintx, CMSBitMapYieldQuantum, 10*M,                               \
1766169689Skan          "Bitmap operations should process at most this many bits"         \
1767169689Skan          "between yields")                                                 \
1768169689Skan                                                                            \
1769169689Skan  product(bool, CMSDumpAtPromotionFailure, false,                           \
1770169689Skan          "Dump useful information about the state of the CMS old "         \
1771169689Skan          " generation upon a promotion failure.")                          \
1772169689Skan                                                                            \
1773169689Skan  product(bool, CMSPrintChunksInDump, false,                                \
1774169689Skan          "In a dump enabled by CMSDumpAtPromotionFailure, include "        \
1775169689Skan          " more detailed information about the free chunks.")              \
1776169689Skan                                                                            \
1777169689Skan  product(bool, CMSPrintObjectsInDump, false,                               \
1778169689Skan          "In a dump enabled by CMSDumpAtPromotionFailure, include "        \
1779169689Skan          " more detailed information about the allocated objects.")        \
178090075Sobrien                                                                            \
178190075Sobrien  diagnostic(bool, FLSVerifyAllHeapReferences, false,                       \
178290075Sobrien          "Verify that all refs across the FLS boundary "                   \
178390075Sobrien          " are to valid objects")                                          \
178490075Sobrien                                                                            \
1785169689Skan  diagnostic(bool, FLSVerifyLists, false,                                   \
1786169689Skan          "Do lots of (expensive) FreeListSpace verification")              \
1787169689Skan                                                                            \
1788169689Skan  diagnostic(bool, FLSVerifyIndexTable, false,                              \
1789169689Skan          "Do lots of (expensive) FLS index table verification")            \
1790169689Skan                                                                            \
1791169689Skan  develop(bool, FLSVerifyDictionary, false,                                 \
1792169689Skan          "Do lots of (expensive) FLS dictionary verification")             \
1793169689Skan                                                                            \
1794169689Skan  develop(bool, VerifyBlockOffsetArray, false,                              \
1795169689Skan          "Do (expensive!) block offset array verification")                \
179690075Sobrien                                                                            \
179790075Sobrien  diagnostic(bool, BlockOffsetArrayUseUnallocatedBlock, false,              \
179890075Sobrien          "Maintain _unallocated_block in BlockOffsetArray"                 \
179990075Sobrien          " (currently applicable only to CMS collector)")                  \
1800169689Skan                                                                            \
1801169689Skan  develop(bool, TraceCMSState, false,                                       \
180290075Sobrien          "Trace the state of the CMS collection")                          \
180390075Sobrien                                                                            \
180490075Sobrien  product(intx, RefDiscoveryPolicy, 0,                                      \
180590075Sobrien          "Whether reference-based(0) or referent-based(1)")                \
180690075Sobrien                                                                            \
1807169689Skan  product(bool, ParallelRefProcEnabled, false,                              \
180890075Sobrien          "Enable parallel reference processing whenever possible")         \
180990075Sobrien                                                                            \
181090075Sobrien  product(bool, ParallelRefProcBalancingEnabled, true,                      \
181190075Sobrien          "Enable balancing of reference processing queues")                \
181290075Sobrien                                                                            \
181390075Sobrien  product(uintx, CMSTriggerRatio, 80,                                       \
181490075Sobrien          "Percentage of MinHeapFreeRatio in CMS generation that is "       \
181590075Sobrien          "allocated before a CMS collection cycle commences")              \
181690075Sobrien                                                                            \
181790075Sobrien  product(uintx, CMSBootstrapOccupancy, 50,                                 \
181890075Sobrien          "Percentage CMS generation occupancy at which to "                \
181990075Sobrien          "initiate CMS collection for bootstrapping collection stats")     \
182090075Sobrien                                                                            \
182190075Sobrien  product(intx, CMSInitiatingOccupancyFraction, -1,                         \
1822169689Skan          "Percentage CMS generation occupancy to start a CMS collection "  \
182390075Sobrien          "cycle. A negative value means that CMSTriggerRatio is used")     \
182490075Sobrien                                                                            \
182590075Sobrien  product(uintx, InitiatingHeapOccupancyPercent, 45,                        \
182690075Sobrien          "Percentage of the (entire) heap occupancy to start a "           \
182790075Sobrien          "concurrent GC cycle. It is used by GCs that trigger a "          \
1828132718Skan          "concurrent GC cycle based on the occupancy of the entire heap, " \
182990075Sobrien          "not just one of the generations (e.g., G1). A value of 0 "       \
183090075Sobrien          "denotes 'do constant GC cycles'.")                               \
1831169689Skan                                                                            \
183290075Sobrien  product(bool, UseCMSInitiatingOccupancyOnly, false,                       \
1833169689Skan          "Only use occupancy as a crierion for starting a CMS collection") \
183490075Sobrien                                                                            \
183590075Sobrien  product(intx, CMSIsTooFullPercentage, 98,                                 \
183690075Sobrien          "An absolute ceiling above which CMS will always consider the "   \
183790075Sobrien          "unloading of classes when class unloading is enabled")           \
183890075Sobrien                                                                            \
183990075Sobrien  develop(bool, CMSTestInFreeList, false,                                   \
184090075Sobrien          "Check if the coalesced range is already in the "                 \
184190075Sobrien          "free lists as claimed")                                          \
184290075Sobrien                                                                            \
184390075Sobrien  notproduct(bool, CMSVerifyReturnedBytes, false,                           \
1844169689Skan          "Check that all the garbage collected was returned to the "       \
184590075Sobrien          "free lists.")                                                    \
184690075Sobrien                                                                            \
184790075Sobrien  notproduct(bool, ScavengeALot, false,                                     \
1848169689Skan          "Force scavenge at every Nth exit from the runtime system "       \
184990075Sobrien          "(N=ScavengeALotInterval)")                                       \
185052284Sobrien                                                                            \
185152284Sobrien  develop(bool, FullGCALot, false,                                          \
185252284Sobrien          "Force full gc at every Nth exit from the runtime system "        \
185352284Sobrien          "(N=FullGCALotInterval)")                                         \
1854169689Skan                                                                            \
185552284Sobrien  notproduct(bool, GCALotAtAllSafepoints, false,                            \
1856169689Skan          "Enforce ScavengeALot/GCALot at all potential safepoints")        \
1857169689Skan                                                                            \
1858169689Skan  product(bool, PrintPromotionFailure, false,                               \
185952284Sobrien          "Print additional diagnostic information following "              \
1860169689Skan          " promotion failure")                                             \
186152284Sobrien                                                                            \
186290075Sobrien  notproduct(bool, PromotionFailureALot, false,                             \
186352284Sobrien          "Use promotion failure handling on every youngest generation "    \
186452284Sobrien          "collection")                                                     \
186552284Sobrien                                                                            \
186652284Sobrien  develop(uintx, PromotionFailureALotCount, 1000,                           \
1867169689Skan          "Number of promotion failures occurring at ParGCAllocBuffer"      \
1868169689Skan          "refill attempts (ParNew) or promotion attempts "                 \
186990075Sobrien          "(other young collectors) ")                                      \
187090075Sobrien                                                                            \
187190075Sobrien  develop(uintx, PromotionFailureALotInterval, 5,                           \
187252284Sobrien          "Total collections between promotion failures alot")              \
187390075Sobrien                                                                            \
1874169689Skan  experimental(intx, WorkStealingSleepMillis, 1,                            \
1875169689Skan          "Sleep time when sleep is used for yields")                       \
187690075Sobrien                                                                            \
187790075Sobrien  experimental(uintx, WorkStealingYieldsBeforeSleep, 5000,                  \
187890075Sobrien          "Number of yields before a sleep is done during workstealing")    \
187990075Sobrien                                                                            \
188090075Sobrien  experimental(uintx, WorkStealingHardSpins, 4096,                          \
1881169689Skan          "Number of iterations in a spin loop between checks on "          \
1882169689Skan          "time out of hard spin")                                          \
1883169689Skan                                                                            \
1884169689Skan  experimental(uintx, WorkStealingSpinToYieldRatio, 10,                     \
1885169689Skan          "Ratio of hard spins to calls to yield")                          \
1886169689Skan                                                                            \
1887169689Skan  develop(uintx, ObjArrayMarkingStride, 512,                                \
188852284Sobrien          "Number of ObjArray elements to push onto the marking stack"      \
188950397Sobrien          "before pushing a continuation entry")                            \
189052284Sobrien                                                                            \
1891169689Skan  develop(bool, MetadataAllocationFailALot, false,                          \
189290075Sobrien          "Fail metadata allocations at intervals controlled by "           \
189390075Sobrien          "MetadataAllocationFailALotInterval")                             \
189452284Sobrien                                                                            \
189552284Sobrien  develop(uintx, MetadataAllocationFailALotInterval, 1000,                  \
189690075Sobrien          "metadata allocation failure alot interval")                      \
1897169689Skan                                                                            \
189852284Sobrien  develop(bool, MetaDataDeallocateALot, false,                              \
189952284Sobrien          "Deallocation bunches of metadata at intervals controlled by "    \
190052284Sobrien          "MetaDataAllocateALotInterval")                                   \
190152284Sobrien                                                                            \
190252284Sobrien  develop(uintx, MetaDataDeallocateALotInterval, 100,                       \
190352284Sobrien          "Metadata deallocation alot interval")                            \
190452284Sobrien                                                                            \
190590075Sobrien  develop(bool, TraceMetadataChunkAllocation, false,                        \
190652284Sobrien          "Trace chunk metadata allocations")                               \
190752284Sobrien                                                                            \
190852284Sobrien  product(bool, TraceMetadataHumongousAllocation, false,                    \
190950397Sobrien          "Trace humongous metadata allocations")                           \
191050397Sobrien                                                                            \
1911132718Skan  develop(bool, TraceMetavirtualspaceAllocation, false,                     \
1912132718Skan          "Trace virtual space metadata allocations")                       \
1913132718Skan                                                                            \
1914132718Skan  notproduct(bool, ExecuteInternalVMTests, false,                           \
1915132718Skan          "Enable execution of internal VM tests.")                         \
1916132718Skan                                                                            \
1917132718Skan  product_pd(bool, UseTLAB, "Use thread-local object allocation")           \
1918132718Skan                                                                            \
1919132718Skan  product_pd(bool, ResizeTLAB,                                              \
1920132718Skan          "Dynamically resize tlab size for threads")                       \
1921132718Skan                                                                            \
1922132718Skan  product(bool, ZeroTLAB, false,                                            \
1923132718Skan          "Zero out the newly created TLAB")                                \
1924132718Skan                                                                            \
1925132718Skan  product(bool, FastTLABRefill, true,                                       \
1926132718Skan          "Use fast TLAB refill code")                                      \
1927132718Skan                                                                            \
1928132718Skan  product(bool, PrintTLAB, false,                                           \
1929132718Skan          "Print various TLAB related information")                         \
1930132718Skan                                                                            \
1931132718Skan  product(bool, TLABStats, true,                                            \
1932132718Skan          "Print various TLAB related information")                         \
1933132718Skan                                                                            \
1934132718Skan  EMBEDDED_ONLY(product(bool, LowMemoryProtection, true,                    \
1935132718Skan          "Enable LowMemoryProtection"))                                    \
1936132718Skan                                                                            \
1937132718Skan  product_pd(bool, NeverActAsServerClassMachine,                            \
1938132718Skan          "Never act like a server-class machine")                          \
1939132718Skan                                                                            \
1940132718Skan  product(bool, AlwaysActAsServerClassMachine, false,                       \
1941132718Skan          "Always act like a server-class machine")                         \
1942132718Skan                                                                            \
1943132718Skan  product_pd(uint64_t, MaxRAM,                                              \
1944132718Skan          "Real memory size (in bytes) used to set maximum heap size")      \
1945132718Skan                                                                            \
1946132718Skan  product(uintx, ErgoHeapSizeLimit, 0,                                      \
1947132718Skan          "Maximum ergonomically set heap size (in bytes); zero means use " \
1948132718Skan          "MaxRAM / MaxRAMFraction")                                        \
1949132718Skan                                                                            \
1950132718Skan  product(uintx, MaxRAMFraction, 4,                                         \
1951132718Skan          "Maximum fraction (1/n) of real memory used for maximum heap "    \
1952132718Skan          "size")                                                           \
1953132718Skan                                                                            \
1954132718Skan  product(uintx, DefaultMaxRAMFraction, 4,                                  \
1955169689Skan          "Maximum fraction (1/n) of real memory used for maximum heap "    \
1956132718Skan          "size; deprecated: to be renamed to MaxRAMFraction")              \
1957132718Skan                                                                            \
1958132718Skan  product(uintx, MinRAMFraction, 2,                                         \
1959132718Skan          "Minimum fraction (1/n) of real memory used for maxmimum heap "   \
1960132718Skan          "size on systems with small physical memory size")                \
1961132718Skan                                                                            \
1962132718Skan  product(uintx, InitialRAMFraction, 64,                                    \
1963132718Skan          "Fraction (1/n) of real memory used for initial heap size")       \
1964132718Skan                                                                            \
1965132718Skan  develop(uintx, MaxVirtMemFraction, 2,                                     \
1966132718Skan          "Maximum fraction (1/n) of virtual memory used for ergonomically" \
1967132718Skan          "determining maximum heap size")                                  \
1968132718Skan                                                                            \
1969132718Skan  product(bool, UseAutoGCSelectPolicy, false,                               \
1970132718Skan          "Use automatic collection selection policy")                      \
1971132718Skan                                                                            \
1972132718Skan  product(uintx, AutoGCSelectPauseMillis, 5000,                             \
1973132718Skan          "Automatic GC selection pause threshhold in ms")                  \
1974132718Skan                                                                            \
1975132718Skan  product(bool, UseAdaptiveSizePolicy, true,                                \
1976132718Skan          "Use adaptive generation sizing policies")                        \
1977132718Skan                                                                            \
1978132718Skan  product(bool, UsePSAdaptiveSurvivorSizePolicy, true,                      \
1979132718Skan          "Use adaptive survivor sizing policies")                          \
1980132718Skan                                                                            \
1981132718Skan  product(bool, UseAdaptiveGenerationSizePolicyAtMinorCollection, true,     \
1982132718Skan          "Use adaptive young-old sizing policies at minor collections")    \
1983132718Skan                                                                            \
1984132718Skan  product(bool, UseAdaptiveGenerationSizePolicyAtMajorCollection, true,     \
1985169689Skan          "Use adaptive young-old sizing policies at major collections")    \
1986169689Skan                                                                            \
1987169689Skan  product(bool, UseAdaptiveSizePolicyWithSystemGC, false,                   \
1988169689Skan          "Use statistics from System.GC for adaptive size policy")         \
1989169689Skan                                                                            \
1990169689Skan  product(bool, UseAdaptiveGCBoundary, false,                               \
1991169689Skan          "Allow young-old boundary to move")                               \
1992169689Skan                                                                            \
1993169689Skan  develop(bool, TraceAdaptiveGCBoundary, false,                             \
1994169689Skan          "Trace young-old boundary moves")                                 \
1995169689Skan                                                                            \
1996169689Skan  develop(intx, PSAdaptiveSizePolicyResizeVirtualSpaceAlot, -1,             \
1997169689Skan          "Resize the virtual spaces of the young or old generations")      \
1998169689Skan                                                                            \
1999169689Skan  product(uintx, AdaptiveSizeThroughPutPolicy, 0,                           \
2000169689Skan          "Policy for changeing generation size for throughput goals")      \
2001169689Skan                                                                            \
2002169689Skan  product(uintx, AdaptiveSizePausePolicy, 0,                                \
2003169689Skan          "Policy for changing generation size for pause goals")            \
2004169689Skan                                                                            \
2005169689Skan  develop(bool, PSAdjustTenuredGenForMinorPause, false,                     \
2006169689Skan          "Adjust tenured generation to achive a minor pause goal")         \
2007169689Skan                                                                            \
2008169689Skan  develop(bool, PSAdjustYoungGenForMajorPause, false,                       \
2009169689Skan          "Adjust young generation to achive a major pause goal")           \
2010169689Skan                                                                            \
2011169689Skan  product(uintx, AdaptiveSizePolicyInitializingSteps, 20,                   \
2012169689Skan          "Number of steps where heuristics is used before data is used")   \
2013169689Skan                                                                            \
2014169689Skan  develop(uintx, AdaptiveSizePolicyReadyThreshold, 5,                       \
2015169689Skan          "Number of collections before the adaptive sizing is started")    \
2016169689Skan                                                                            \
2017169689Skan  product(uintx, AdaptiveSizePolicyOutputInterval, 0,                       \
2018169689Skan          "Collecton interval for printing information; zero => never")     \
2019169689Skan                                                                            \
2020169689Skan  product(bool, UseAdaptiveSizePolicyFootprintGoal, true,                   \
2021169689Skan          "Use adaptive minimum footprint as a goal")                       \
2022169689Skan                                                                            \
2023169689Skan  product(uintx, AdaptiveSizePolicyWeight, 10,                              \
2024132718Skan          "Weight given to exponential resizing, between 0 and 100")        \
2025132718Skan                                                                            \
2026169689Skan  product(uintx, AdaptiveTimeWeight,       25,                              \
2027169689Skan          "Weight given to time in adaptive policy, between 0 and 100")     \
2028169689Skan                                                                            \
2029169689Skan  product(uintx, PausePadding, 1,                                           \
2030169689Skan          "How much buffer to keep for pause time")                         \
2031169689Skan                                                                            \
2032169689Skan  product(uintx, PromotedPadding, 3,                                        \
2033169689Skan          "How much buffer to keep for promotion failure")                  \
2034169689Skan                                                                            \
2035169689Skan  product(uintx, SurvivorPadding, 3,                                        \
2036169689Skan          "How much buffer to keep for survivor overflow")                  \
2037169689Skan                                                                            \
2038169689Skan  product(uintx, ThresholdTolerance, 10,                                    \
2039169689Skan          "Allowed collection cost difference between generations")         \
2040169689Skan                                                                            \
204150397Sobrien  product(uintx, AdaptiveSizePolicyCollectionCostMargin, 50,                \
204250397Sobrien          "If collection costs are within margin, reduce both by full "     \
204350397Sobrien          "delta")                                                          \
2044132718Skan                                                                            \
204550397Sobrien  product(uintx, YoungGenerationSizeIncrement, 20,                          \
2046132718Skan          "Adaptive size percentage change in young generation")            \
204750397Sobrien                                                                            \
204890075Sobrien  product(uintx, YoungGenerationSizeSupplement, 80,                         \
204990075Sobrien          "Supplement to YoungedGenerationSizeIncrement used at startup")   \
2050132718Skan                                                                            \
205190075Sobrien  product(uintx, YoungGenerationSizeSupplementDecay, 8,                     \
205250397Sobrien          "Decay factor to YoungedGenerationSizeSupplement")                \
205350397Sobrien                                                                            \
2054132718Skan  product(uintx, TenuredGenerationSizeIncrement, 20,                        \
2055132718Skan          "Adaptive size percentage change in tenured generation")          \
2056132718Skan                                                                            \
205790075Sobrien  product(uintx, TenuredGenerationSizeSupplement, 80,                       \
205850397Sobrien          "Supplement to TenuredGenerationSizeIncrement used at startup")   \
205950397Sobrien                                                                            \
2060132718Skan  product(uintx, TenuredGenerationSizeSupplementDecay, 2,                   \
2061132718Skan          "Decay factor to TenuredGenerationSizeIncrement")                 \
2062132718Skan                                                                            \
2063132718Skan  product(uintx, MaxGCPauseMillis, max_uintx,                               \
2064132718Skan          "Adaptive size policy maximum GC pause time goal in msec, "       \
206550397Sobrien          "or (G1 Only) the max. GC time per MMU time slice")               \
206650397Sobrien                                                                            \
206790075Sobrien  product(uintx, GCPauseIntervalMillis, 0,                                  \
206890075Sobrien          "Time slice for MMU specification")                               \
206950397Sobrien                                                                            \
207050397Sobrien  product(uintx, MaxGCMinorPauseMillis, max_uintx,                          \
207150397Sobrien          "Adaptive size policy maximum GC minor pause time goal in msec")  \
207250397Sobrien                                                                            \
207390075Sobrien  product(uintx, GCTimeRatio, 99,                                           \
207490075Sobrien          "Adaptive size policy application time to GC time ratio")         \
207590075Sobrien                                                                            \
207690075Sobrien  product(uintx, AdaptiveSizeDecrementScaleFactor, 4,                       \
2077169689Skan          "Adaptive size scale down factor for shrinking")                  \
207890075Sobrien                                                                            \
207990075Sobrien  product(bool, UseAdaptiveSizeDecayMajorGCCost, true,                      \
208090075Sobrien          "Adaptive size decays the major cost for long major intervals")   \
2081169689Skan                                                                            \
208250397Sobrien  product(uintx, AdaptiveSizeMajorGCDecayTimeScale, 10,                     \
208390075Sobrien          "Time scale over which major costs decay")                        \
208450397Sobrien                                                                            \
208590075Sobrien  product(uintx, MinSurvivorRatio, 3,                                       \
208690075Sobrien          "Minimum ratio of young generation/survivor space size")          \
208750397Sobrien                                                                            \
208850397Sobrien  product(uintx, InitialSurvivorRatio, 8,                                   \
208990075Sobrien          "Initial ratio of eden/survivor space size")                      \
209050397Sobrien                                                                            \
209190075Sobrien  product(uintx, BaseFootPrintEstimate, 256*M,                              \
209290075Sobrien          "Estimate of footprint other than Java Heap")                     \
209350397Sobrien                                                                            \
209450397Sobrien  product(bool, UseGCOverheadLimit, true,                                   \
209590075Sobrien          "Use policy to limit of proportion of time spent in GC "          \
209650397Sobrien          "before an OutOfMemory error is thrown")                          \
209790075Sobrien                                                                            \
209890075Sobrien  product(uintx, GCTimeLimit, 98,                                           \
209950397Sobrien          "Limit of proportion of time spent in GC before an OutOfMemory"   \
210050397Sobrien          "error is thrown (used with GCHeapFreeLimit)")                    \
210190075Sobrien                                                                            \
210250397Sobrien  product(uintx, GCHeapFreeLimit, 2,                                        \
210390075Sobrien          "Minimum percentage of free space after a full GC before an "     \
210490075Sobrien          "OutOfMemoryError is thrown (used with GCTimeLimit)")             \
210590075Sobrien                                                                            \
210650397Sobrien  develop(uintx, AdaptiveSizePolicyGCTimeLimitThreshold, 5,                 \
210790075Sobrien          "Number of consecutive collections before gc time limit fires")   \
210850397Sobrien                                                                            \
210950397Sobrien  product(bool, PrintAdaptiveSizePolicy, false,                             \
2110132718Skan          "Print information about AdaptiveSizePolicy")                     \
2111132718Skan                                                                            \
211290075Sobrien  product(intx, PrefetchCopyIntervalInBytes, -1,                            \
211350397Sobrien          "How far ahead to prefetch destination area (<= 0 means off)")    \
211490075Sobrien                                                                            \
211590075Sobrien  product(intx, PrefetchScanIntervalInBytes, -1,                            \
211690075Sobrien          "How far ahead to prefetch scan area (<= 0 means off)")           \
2117132718Skan                                                                            \
2118132718Skan  product(intx, PrefetchFieldsAhead, -1,                                    \
211990075Sobrien          "How many fields ahead to prefetch in oop scan (<= 0 means off)") \
212090075Sobrien                                                                            \
212190075Sobrien  diagnostic(bool, VerifyBeforeExit, trueInDebug,                           \
212250397Sobrien          "Verify system before exiting")                                   \
212350397Sobrien                                                                            \
212450397Sobrien  diagnostic(bool, VerifyBeforeGC, false,                                   \
212550397Sobrien          "Verify memory system before GC")                                 \
2126132718Skan                                                                            \
2127132718Skan  diagnostic(bool, VerifyAfterGC, false,                                    \
212850397Sobrien          "Verify memory system after GC")                                  \
212990075Sobrien                                                                            \
213050397Sobrien  diagnostic(bool, VerifyDuringGC, false,                                   \
2131132718Skan          "Verify memory system during GC (between phases)")                \
2132132718Skan                                                                            \
2133132718Skan  diagnostic(bool, GCParallelVerificationEnabled, true,                     \
2134132718Skan          "Enable parallel memory system verification")                     \
213550397Sobrien                                                                            \
213690075Sobrien  diagnostic(bool, DeferInitialCardMark, false,                             \
213750397Sobrien          "When +ReduceInitialCardMarks, explicitly defer any that "        \
213890075Sobrien           "may arise from new_pre_store_barrier")                          \
213990075Sobrien                                                                            \
214050397Sobrien  diagnostic(bool, VerifyRememberedSets, false,                             \
214190075Sobrien          "Verify GC remembered sets")                                      \
214290075Sobrien                                                                            \
214390075Sobrien  diagnostic(bool, VerifyObjectStartArray, true,                            \
214490075Sobrien          "Verify GC object start array if verify before/after")            \
214590075Sobrien                                                                            \
214650397Sobrien  product(bool, DisableExplicitGC, false,                                   \
214750397Sobrien          "Tells whether calling System.gc() does a full GC")               \
214890075Sobrien                                                                            \
214990075Sobrien  notproduct(bool, CheckMemoryInitialization, false,                        \
215090075Sobrien          "Checks memory initialization")                                   \
215190075Sobrien                                                                            \
215250397Sobrien  product(bool, CollectGen0First, false,                                    \
215390075Sobrien          "Collect youngest generation before each full GC")                \
215490075Sobrien                                                                            \
215590075Sobrien  diagnostic(bool, BindCMSThreadToCPU, false,                               \
2156169689Skan          "Bind CMS Thread to CPU if possible")                             \
215790075Sobrien                                                                            \
215850397Sobrien  diagnostic(uintx, CPUForCMSThread, 0,                                     \
215950397Sobrien          "When BindCMSThreadToCPU is true, the CPU to bind CMS thread to") \
216050397Sobrien                                                                            \
216190075Sobrien  product(bool, BindGCTaskThreadsToCPUs, false,                             \
216250397Sobrien          "Bind GCTaskThreads to CPUs if possible")                         \
216350397Sobrien                                                                            \
2164132718Skan  product(bool, UseGCTaskAffinity, false,                                   \
216550397Sobrien          "Use worker affinity when asking for GCTasks")                    \
216650397Sobrien                                                                            \
216750397Sobrien  product(uintx, ProcessDistributionStride, 4,                              \
216850397Sobrien          "Stride through processors when distributing processes")          \
2169132718Skan                                                                            \
217050397Sobrien  product(uintx, CMSCoordinatorYieldSleepCount, 10,                         \
217190075Sobrien          "number of times the coordinator GC thread will sleep while "     \
217290075Sobrien          "yielding before giving up and resuming GC")                      \
217390075Sobrien                                                                            \
217490075Sobrien  product(uintx, CMSYieldSleepCount, 0,                                     \
2175117395Skan          "number of times a GC thread (minus the coordinator) "            \
217690075Sobrien          "will sleep while yielding before giving up and resuming GC")     \
217790075Sobrien                                                                            \
217890075Sobrien  /* gc tracing */                                                          \
217990075Sobrien  manageable(bool, PrintGC, false,                                          \
218090075Sobrien          "Print message at garbage collect")                               \
2181169689Skan                                                                            \
218250397Sobrien  manageable(bool, PrintGCDetails, false,                                   \
2183117395Skan          "Print more details at garbage collect")                          \
2184117395Skan                                                                            \
2185117395Skan  manageable(bool, PrintGCDateStamps, false,                                \
2186117395Skan          "Print date stamps at garbage collect")                           \
2187169689Skan                                                                            \
2188169689Skan  manageable(bool, PrintGCTimeStamps, false,                                \
2189169689Skan          "Print timestamps at garbage collect")                            \
2190169689Skan                                                                            \
2191169689Skan  product(bool, PrintGCTaskTimeStamps, false,                               \
2192169689Skan          "Print timestamps for individual gc worker thread tasks")         \
2193169689Skan                                                                            \
2194169689Skan  develop(intx, ConcGCYieldTimeout, 0,                                      \
2195169689Skan          "If non-zero, assert that GC threads yield within this # of ms.") \
2196169689Skan                                                                            \
2197169689Skan  notproduct(bool, TraceMarkSweep, false,                                   \
2198169689Skan          "Trace mark sweep")                                               \
2199169689Skan                                                                            \
2200169689Skan  product(bool, PrintReferenceGC, false,                                    \
2201169689Skan          "Print times spent handling reference objects during GC "         \
2202169689Skan          " (enabled only when PrintGCDetails)")                            \
2203117395Skan                                                                            \
2204117395Skan  develop(bool, TraceReferenceGC, false,                                    \
2205117395Skan          "Trace handling of soft/weak/final/phantom references")           \
2206117395Skan                                                                            \
220790075Sobrien  develop(bool, TraceFinalizerRegistration, false,                          \
220890075Sobrien         "Trace registration of final references")                          \
2209117395Skan                                                                            \
221050397Sobrien  notproduct(bool, TraceScavenge, false,                                    \
221190075Sobrien          "Trace scavenge")                                                 \
221290075Sobrien                                                                            \
2213117395Skan  product_rw(bool, TraceClassLoading, false,                                \
2214169689Skan          "Trace all classes loaded")                                       \
2215169689Skan                                                                            \
2216132718Skan  product(bool, TraceClassLoadingPreorder, false,                           \
2217132718Skan          "Trace all classes loaded in order referenced (not loaded)")      \
2218117395Skan                                                                            \
221950397Sobrien  product_rw(bool, TraceClassUnloading, false,                              \
222090075Sobrien          "Trace unloading of classes")                                     \
222190075Sobrien                                                                            \
222290075Sobrien  product_rw(bool, TraceLoaderConstraints, false,                           \
222390075Sobrien          "Trace loader constraints")                                       \
222450397Sobrien                                                                            \
222550397Sobrien  develop(bool, TraceClassLoaderData, false,                                \
222650397Sobrien          "Trace class loader loader_data lifetime")                        \
222750397Sobrien                                                                            \
222850397Sobrien  product(uintx, InitialBootClassLoaderMetaspaceSize,                       \
2229169689Skan          NOT_LP64(2200*K) LP64_ONLY(4*M),                                  \
223050397Sobrien          "Initial size of the boot class loader data metaspace")           \
2231169689Skan                                                                            \
2232169689Skan  product(bool, TraceGen0Time, false,                                       \
2233169689Skan          "Trace accumulated time for Gen 0 collection")                    \
2234169689Skan                                                                            \
2235169689Skan  product(bool, TraceGen1Time, false,                                       \
2236169689Skan          "Trace accumulated time for Gen 1 collection")                    \
223750397Sobrien                                                                            \
223890075Sobrien  product(bool, PrintTenuringDistribution, false,                           \
223990075Sobrien          "Print tenuring age information")                                 \
224090075Sobrien                                                                            \
224190075Sobrien  product_rw(bool, PrintHeapAtGC, false,                                    \
224250397Sobrien          "Print heap layout before and after each GC")                     \
224350397Sobrien                                                                            \
2244169689Skan  product_rw(bool, PrintHeapAtGCExtended, false,                            \
2245169689Skan          "Prints extended information about the layout of the heap "       \
2246169689Skan          "when -XX:+PrintHeapAtGC is set")                                 \
224790075Sobrien                                                                            \
224890075Sobrien  product(bool, PrintHeapAtSIGBREAK, true,                                  \
224950397Sobrien          "Print heap layout in response to SIGBREAK")                      \
225050397Sobrien                                                                            \
225190075Sobrien  manageable(bool, PrintClassHistogramBeforeFullGC, false,                  \
225290075Sobrien          "Print a class histogram before any major stop-world GC")         \
225390075Sobrien                                                                            \
2254169689Skan  manageable(bool, PrintClassHistogramAfterFullGC, false,                   \
225590075Sobrien          "Print a class histogram after any major stop-world GC")          \
225650397Sobrien                                                                            \
225790075Sobrien  manageable(bool, PrintClassHistogram, false,                              \
225850397Sobrien          "Print a histogram of class instances")                           \
225990075Sobrien                                                                            \
226090075Sobrien  develop(bool, TraceWorkGang, false,                                       \
226190075Sobrien          "Trace activities of work gangs")                                 \
226250397Sobrien                                                                            \
226390075Sobrien  product(bool, TraceParallelOldGCTasks, false,                             \
226450397Sobrien          "Trace multithreaded GC activity")                                \
226590075Sobrien                                                                            \
226690075Sobrien  develop(bool, TraceBlockOffsetTable, false,                               \
2267132718Skan          "Print BlockOffsetTable maps")                                    \
226890075Sobrien                                                                            \
226990075Sobrien  develop(bool, TraceCardTableModRefBS, false,                              \
227090075Sobrien          "Print CardTableModRefBS maps")                                   \
227190075Sobrien                                                                            \
227290075Sobrien  develop(bool, TraceGCTaskManager, false,                                  \
227390075Sobrien          "Trace actions of the GC task manager")                           \
227450397Sobrien                                                                            \
227590075Sobrien  develop(bool, TraceGCTaskQueue, false,                                    \
227690075Sobrien          "Trace actions of the GC task queues")                            \
227790075Sobrien                                                                            \
227890075Sobrien  diagnostic(bool, TraceGCTaskThread, false,                                \
227990075Sobrien          "Trace actions of the GC task threads")                           \
228090075Sobrien                                                                            \
228150397Sobrien  product(bool, PrintParallelOldGCPhaseTimes, false,                        \
228290075Sobrien          "Print the time taken by each parallel old gc phase."             \
228390075Sobrien          "PrintGCDetails must also be enabled.")                           \
228450397Sobrien                                                                            \
228590075Sobrien  develop(bool, TraceParallelOldGCMarkingPhase, false,                      \
228650397Sobrien          "Trace parallel old gc marking phase")                            \
228790075Sobrien                                                                            \
228890075Sobrien  develop(bool, TraceParallelOldGCSummaryPhase, false,                      \
228950397Sobrien          "Trace parallel old gc summary phase")                            \
229090075Sobrien                                                                            \
229190075Sobrien  develop(bool, TraceParallelOldGCCompactionPhase, false,                   \
229290075Sobrien          "Trace parallel old gc compaction phase")                         \
229390075Sobrien                                                                            \
229490075Sobrien  develop(bool, TraceParallelOldGCDensePrefix, false,                       \
229590075Sobrien          "Trace parallel old gc dense prefix computation")                 \
229690075Sobrien                                                                            \
229790075Sobrien  develop(bool, IgnoreLibthreadGPFault, false,                              \
2298117395Skan          "Suppress workaround for libthread GP fault")                     \
229990075Sobrien                                                                            \
230050397Sobrien  product(bool, PrintJNIGCStalls, false,                                    \
230190075Sobrien          "Print diagnostic message when GC is stalled"                     \
230290075Sobrien          "by JNI critical section")                                        \
230390075Sobrien                                                                            \
230490075Sobrien  /* GC log rotation setting */                                             \
230590075Sobrien                                                                            \
230690075Sobrien  product(bool, UseGCLogFileRotation, false,                                \
230790075Sobrien          "Prevent large gclog file for long running app. "                 \
230890075Sobrien          "Requires -Xloggc:<filename>")                                    \
230990075Sobrien                                                                            \
231090075Sobrien  product(uintx, NumberOfGCLogFiles, 0,                                     \
231190075Sobrien          "Number of gclog files in rotation, "                             \
231290075Sobrien          "Default: 0, no rotation")                                        \
231390075Sobrien                                                                            \
231490075Sobrien  product(uintx, GCLogFileSize, 0,                                          \
231590075Sobrien          "GC log file size, Default: 0 bytes, no rotation "                \
231690075Sobrien          "Only valid with UseGCLogFileRotation")                           \
231790075Sobrien                                                                            \
231890075Sobrien  /* JVMTI heap profiling */                                                \
2319169689Skan                                                                            \
232090075Sobrien  diagnostic(bool, TraceJVMTIObjectTagging, false,                          \
232150397Sobrien          "Trace JVMTI object tagging calls")                               \
232250397Sobrien                                                                            \
232390075Sobrien  diagnostic(bool, VerifyBeforeIteration, false,                            \
232490075Sobrien          "Verify memory system before JVMTI iteration")                    \
232590075Sobrien                                                                            \
232690075Sobrien  /* compiler interface */                                                  \
232750397Sobrien                                                                            \
2328169689Skan  develop(bool, CIPrintCompilerName, false,                                 \
2329169689Skan          "when CIPrint is active, print the name of the active compiler")  \
2330169689Skan                                                                            \
2331169689Skan  develop(bool, CIPrintCompileQueue, false,                                 \
2332169689Skan          "display the contents of the compile queue whenever a "           \
2333169689Skan          "compilation is enqueued")                                        \
233490075Sobrien                                                                            \
233590075Sobrien  develop(bool, CIPrintRequests, false,                                     \
233690075Sobrien          "display every request for compilation")                          \
233790075Sobrien                                                                            \
233890075Sobrien  product(bool, CITime, false,                                              \
233990075Sobrien          "collect timing information for compilation")                     \
234090075Sobrien                                                                            \
234190075Sobrien  develop(bool, CITimeEach, false,                                          \
2342169689Skan          "display timing information after each successful compilation")   \
2343169689Skan                                                                            \
234490075Sobrien  develop(bool, CICountOSR, false,                                          \
234550397Sobrien          "use a separate counter when assigning ids to osr compilations")  \
234690075Sobrien                                                                            \
234790075Sobrien  develop(bool, CICompileNatives, true,                                     \
234890075Sobrien          "compile native methods if supported by the compiler")            \
234950397Sobrien                                                                            \
235090075Sobrien  develop_pd(bool, CICompileOSR,                                            \
235190075Sobrien          "compile on stack replacement methods if supported by the "       \
235290075Sobrien          "compiler")                                                       \
235390075Sobrien                                                                            \
235450397Sobrien  develop(bool, CIPrintMethodCodes, false,                                  \
235550397Sobrien          "print method bytecodes of the compiled code")                    \
235690075Sobrien                                                                            \
235750397Sobrien  develop(bool, CIPrintTypeFlow, false,                                     \
235850397Sobrien          "print the results of ciTypeFlow analysis")                       \
2359117395Skan                                                                            \
236090075Sobrien  develop(bool, CITraceTypeFlow, false,                                     \
236150397Sobrien          "detailed per-bytecode tracing of ciTypeFlow analysis")           \
236250397Sobrien                                                                            \
236350397Sobrien  develop(intx, OSROnlyBCI, -1,                                             \
236490075Sobrien          "OSR only at this bci.  Negative values mean exclude that bci")   \
236550397Sobrien                                                                            \
236650397Sobrien  /* compiler */                                                            \
236750397Sobrien                                                                            \
236890075Sobrien  product(intx, CICompilerCount, CI_COMPILER_COUNT,                         \
2369117395Skan          "Number of compiler threads to run")                              \
2370117395Skan                                                                            \
2371169689Skan  product(intx, CompilationPolicyChoice, 0,                                 \
2372117395Skan          "which compilation policy (0/1)")                                 \
237390075Sobrien                                                                            \
237490075Sobrien  develop(bool, UseStackBanging, true,                                      \
2375169689Skan          "use stack banging for stack overflow checks (required for "      \
2376169689Skan          "proper StackOverflow handling; disable only to measure cost "    \
237790075Sobrien          "of stackbanging)")                                               \
237890075Sobrien                                                                            \
2379169689Skan  develop(bool, UseStrictFP, true,                                          \
2380169689Skan          "use strict fp if modifier strictfp is set")                      \
2381169689Skan                                                                            \
238290075Sobrien  develop(bool, GenerateSynchronizationCode, true,                          \
238390075Sobrien          "generate locking/unlocking code for synchronized methods and "   \
238490075Sobrien          "monitors")                                                       \
238590075Sobrien                                                                            \
238650397Sobrien  develop(bool, GenerateCompilerNullChecks, true,                           \
238790075Sobrien          "Generate explicit null checks for loads/stores/calls")           \
238850397Sobrien                                                                            \
238990075Sobrien  develop(bool, GenerateRangeChecks, true,                                  \
2390169689Skan          "Generate range checks for array accesses")                       \
239150397Sobrien                                                                            \
239250397Sobrien  develop_pd(bool, ImplicitNullChecks,                                      \
239390075Sobrien          "generate code for implicit null checks")                         \
2394169689Skan                                                                            \
2395169689Skan  product(bool, PrintSafepointStatistics, false,                            \
239690075Sobrien          "print statistics about safepoint synchronization")               \
2397169689Skan                                                                            \
2398169689Skan  product(intx, PrintSafepointStatisticsCount, 300,                         \
2399169689Skan          "total number of safepoint statistics collected "                 \
2400169689Skan          "before printing them out")                                       \
2401169689Skan                                                                            \
2402169689Skan  product(intx, PrintSafepointStatisticsTimeout,  -1,                       \
2403169689Skan          "print safepoint statistics only when safepoint takes"            \
2404169689Skan          " more than PrintSafepointSatisticsTimeout in millis")            \
2405169689Skan                                                                            \
2406169689Skan  product(bool, TraceSafepointCleanupTime, false,                           \
2407169689Skan          "print the break down of clean up tasks performed during"         \
2408169689Skan          " safepoint")                                                     \
2409169689Skan                                                                            \
2410169689Skan  product(bool, Inline, true,                                               \
2411169689Skan          "enable inlining")                                                \
2412169689Skan                                                                            \
2413169689Skan  product(bool, ClipInlining, true,                                         \
2414169689Skan          "clip inlining if aggregate method exceeds DesiredMethodLimit")   \
2415169689Skan                                                                            \
2416169689Skan  develop(bool, UseCHA, true,                                               \
2417169689Skan          "enable CHA")                                                     \
2418169689Skan                                                                            \
2419169689Skan  product(bool, UseTypeProfile, true,                                       \
2420169689Skan          "Check interpreter profile for historically monomorphic calls")   \
2421169689Skan                                                                            \
2422169689Skan  notproduct(bool, TimeCompiler, false,                                     \
2423169689Skan          "time the compiler")                                              \
2424169689Skan                                                                            \
242590075Sobrien  diagnostic(bool, PrintInlining, false,                                    \
242650397Sobrien          "prints inlining optimizations")                                  \
242790075Sobrien                                                                            \
242890075Sobrien  product(bool, UsePopCountInstruction, false,                              \
242990075Sobrien          "Use population count instruction")                               \
2430169689Skan                                                                            \
2431169689Skan  develop(bool, EagerInitialization, false,                                 \
2432169689Skan          "Eagerly initialize classes if possible")                         \
2433169689Skan                                                                            \
2434169689Skan  develop(bool, TraceMethodReplacement, false,                              \
2435169689Skan          "Print when methods are replaced do to recompilation")            \
2436169689Skan                                                                            \
2437169689Skan  develop(bool, PrintMethodFlushing, false,                                 \
2438169689Skan          "print the nmethods being flushed")                               \
2439169689Skan                                                                            \
2440169689Skan  develop(bool, UseRelocIndex, false,                                       \
2441169689Skan         "use an index to speed random access to relocations")              \
2442169689Skan                                                                            \
2443169689Skan  develop(bool, StressCodeBuffers, false,                                   \
2444169689Skan         "Exercise code buffer expansion and other rare state changes")     \
2445169689Skan                                                                            \
2446169689Skan  diagnostic(bool, DebugNonSafepoints, trueInDebug,                         \
2447169689Skan         "Generate extra debugging info for non-safepoints in nmethods")    \
2448169689Skan                                                                            \
2449169689Skan  product(bool, PrintVMOptions, false,                                      \
2450169689Skan         "Print flags that appeared on the command line")                   \
245190075Sobrien                                                                            \
245250397Sobrien  product(bool, IgnoreUnrecognizedVMOptions, false,                         \
245390075Sobrien         "Ignore unrecognized VM options")                                  \
245490075Sobrien                                                                            \
245590075Sobrien  product(bool, PrintCommandLineFlags, false,                               \
245690075Sobrien         "Print flags specified on command line or set by ergonomics")      \
245790075Sobrien                                                                            \
245850397Sobrien  product(bool, PrintFlagsInitial, false,                                   \
245990075Sobrien         "Print all VM flags before argument processing and exit VM")       \
246090075Sobrien                                                                            \
246190075Sobrien  product(bool, PrintFlagsFinal, false,                                     \
246290075Sobrien         "Print all VM flags after argument and ergonomic processing")      \
246390075Sobrien                                                                            \
246490075Sobrien  notproduct(bool, PrintFlagsWithComments, false,                           \
246590075Sobrien         "Print all VM flags with default values and descriptions and exit")\
246650397Sobrien                                                                            \
246790075Sobrien  diagnostic(bool, SerializeVMOutput, true,                                 \
2468169689Skan         "Use a mutex to serialize output to tty and hotspot.log")          \
246990075Sobrien                                                                            \
247050397Sobrien  diagnostic(bool, DisplayVMOutput, true,                                   \
247190075Sobrien         "Display all VM output on the tty, independently of LogVMOutput")  \
247290075Sobrien                                                                            \
247390075Sobrien  diagnostic(bool, LogVMOutput, trueInDebug,                                \
2474132718Skan         "Save VM output to hotspot.log, or to LogFile")                    \
2475132718Skan                                                                            \
247690075Sobrien  diagnostic(ccstr, LogFile, NULL,                                          \
2477132718Skan         "If LogVMOutput is on, save VM output to this file [hotspot.log]") \
247890075Sobrien                                                                            \
2479169689Skan  product(ccstr, ErrorFile, NULL,                                           \
2480132718Skan         "If an error occurs, save the error data to this file "            \
248190075Sobrien         "[default: ./hs_err_pid%p.log] (%p replaced with pid)")            \
248290075Sobrien                                                                            \
248390075Sobrien  product(bool, DisplayVMOutputToStderr, false,                             \
248490075Sobrien         "If DisplayVMOutput is true, display all VM output to stderr")     \
248590075Sobrien                                                                            \
248690075Sobrien  product(bool, DisplayVMOutputToStdout, false,                             \
248790075Sobrien         "If DisplayVMOutput is true, display all VM output to stdout")     \
248890075Sobrien                                                                            \
248990075Sobrien  product(bool, UseHeavyMonitors, false,                                    \
249090075Sobrien          "use heavyweight instead of lightweight Java monitors")           \
249190075Sobrien                                                                            \
249290075Sobrien  product(bool, PrintStringTableStatistics, false,                          \
249390075Sobrien          "print statistics about the StringTable and SymbolTable")         \
249450397Sobrien                                                                            \
249550397Sobrien  notproduct(bool, PrintSymbolTableSizeHistogram, false,                    \
249650397Sobrien          "print histogram of the symbol table")                            \
249750397Sobrien                                                                            \
249890075Sobrien  notproduct(bool, ExitVMOnVerifyError, false,                              \
249950397Sobrien          "standard exit from VM if bytecode verify error "                 \
250050397Sobrien          "(only in debug mode)")                                           \
2501117395Skan                                                                            \
2502132718Skan  notproduct(ccstr, AbortVMOnException, NULL,                               \
250350397Sobrien          "Call fatal if this exception is thrown.  Example: "              \
250450397Sobrien          "java -XX:AbortVMOnException=java.lang.NullPointerException Foo") \
250590075Sobrien                                                                            \
2506117395Skan  notproduct(ccstr, AbortVMOnExceptionMessage, NULL,                        \
250790075Sobrien          "Call fatal if the exception pointed by AbortVMOnException "      \
250850397Sobrien          "has this message.")                                              \
250950397Sobrien                                                                            \
251050397Sobrien  develop(bool, DebugVtables, false,                                        \
251150397Sobrien          "add debugging code to vtable dispatch")                          \
251250397Sobrien                                                                            \
251350397Sobrien  develop(bool, PrintVtables, false,                                        \
251450397Sobrien          "print vtables when printing klass")                              \
251550397Sobrien                                                                            \
251650397Sobrien  notproduct(bool, PrintVtableStats, false,                                 \
251750397Sobrien          "print vtables stats at end of run")                              \
251850397Sobrien                                                                            \
251950397Sobrien  develop(bool, TraceCreateZombies, false,                                  \
252050397Sobrien          "trace creation of zombie nmethods")                              \
252150397Sobrien                                                                            \
252250397Sobrien  notproduct(bool, IgnoreLockingAssertions, false,                          \
2523132718Skan          "disable locking assertions (for speed)")                         \
2524132718Skan                                                                            \
252550397Sobrien  product(bool, RangeCheckElimination, true,                                \
252650397Sobrien          "Split loop iterations to eliminate range checks")                \
2527169689Skan                                                                            \
252890075Sobrien  develop_pd(bool, UncommonNullCast,                                        \
252950397Sobrien          "track occurrences of null in casts; adjust compiler tactics")    \
2530169689Skan                                                                            \
253150397Sobrien  develop(bool, TypeProfileCasts,  true,                                    \
2532169689Skan          "treat casts like calls for purposes of type profiling")          \
253390075Sobrien                                                                            \
253490075Sobrien  develop(bool, DelayCompilationDuringStartup, true,                        \
253590075Sobrien          "Delay invoking the compiler until main application class is "    \
253690075Sobrien          "loaded")                                                         \
253790075Sobrien                                                                            \
253890075Sobrien  develop(bool, CompileTheWorld, false,                                     \
253990075Sobrien          "Compile all methods in all classes in bootstrap class path "     \
254090075Sobrien          "(stress test)")                                                  \
254190075Sobrien                                                                            \
254290075Sobrien  develop(bool, CompileTheWorldPreloadClasses, true,                        \
254390075Sobrien          "Preload all classes used by a class before start loading")       \
2544169689Skan                                                                            \
254550397Sobrien  notproduct(intx, CompileTheWorldSafepointInterval, 100,                   \
2546117395Skan          "Force a safepoint every n compiles so sweeper can keep up")      \
254790075Sobrien                                                                            \
2548117395Skan  develop(bool, FillDelaySlots, true,                                       \
2549169689Skan          "Fill delay slots (on SPARC only)")                               \
2550169689Skan                                                                            \
255150397Sobrien  develop(bool, TimeLivenessAnalysis, false,                                \
2552169689Skan          "Time computation of bytecode liveness analysis")                 \
255390075Sobrien                                                                            \
255490075Sobrien  develop(bool, TraceLivenessGen, false,                                    \
255590075Sobrien          "Trace the generation of liveness analysis information")          \
255690075Sobrien                                                                            \
255790075Sobrien  notproduct(bool, TraceLivenessQuery, false,                               \
255850397Sobrien          "Trace queries of liveness analysis information")                 \
255950397Sobrien                                                                            \
256050397Sobrien  notproduct(bool, CollectIndexSetStatistics, false,                        \
256150397Sobrien          "Collect information about IndexSets")                            \
2562132718Skan                                                                            \
2563132718Skan  develop(bool, UseLoopSafepoints, true,                                    \
2564132718Skan          "Generate Safepoint nodes in every loop")                         \
2565132718Skan                                                                            \
256650397Sobrien  develop(intx, FastAllocateSizeLimit, 128*K,                               \
256750397Sobrien          /* Note:  This value is zero mod 1<<13 for a cheap sparc set. */  \
256850397Sobrien          "Inline allocations larger than this in doublewords must go slow")\
256950397Sobrien                                                                            \
257050397Sobrien  product(bool, AggressiveOpts, false,                                      \
257150397Sobrien          "Enable aggressive optimizations - see arguments.cpp")            \
257250397Sobrien                                                                            \
2573169689Skan  product(bool, UseStringCache, false,                                      \
2574169689Skan          "Enable String cache capabilities on String.java")                \
2575169689Skan                                                                            \
2576169689Skan  /* statistics */                                                          \
2577169689Skan  develop(bool, CountCompiledCalls, false,                                  \
2578169689Skan          "counts method invocations")                                      \
2579169689Skan                                                                            \
2580169689Skan  notproduct(bool, CountRuntimeCalls, false,                                \
258150397Sobrien          "counts VM runtime calls")                                        \
258250397Sobrien                                                                            \
2583117395Skan  develop(bool, CountJNICalls, false,                                       \
2584169689Skan          "counts jni method invocations")                                  \
258590075Sobrien                                                                            \
2586117395Skan  notproduct(bool, CountJVMCalls, false,                                    \
258750397Sobrien          "counts jvm method invocations")                                  \
258850397Sobrien                                                                            \
258990075Sobrien  notproduct(bool, CountRemovableExceptions, false,                         \
259090075Sobrien          "count exceptions that could be replaced by branches due to "     \
259190075Sobrien          "inlining")                                                       \
259290075Sobrien                                                                            \
259390075Sobrien  notproduct(bool, ICMissHistogram, false,                                  \
259490075Sobrien          "produce histogram of IC misses")                                 \
259590075Sobrien                                                                            \
259650397Sobrien  notproduct(bool, PrintClassStatistics, false,                             \
259750397Sobrien          "prints class statistics at end of run")                          \
259850397Sobrien                                                                            \
259950397Sobrien  notproduct(bool, PrintMethodStatistics, false,                            \
260050397Sobrien          "prints method statistics at end of run")                         \
260150397Sobrien                                                                            \
260250397Sobrien  /* interpreter */                                                         \
2603132718Skan  develop(bool, ClearInterpreterLocals, false,                              \
2604132718Skan          "Always clear local variables of interpreter activations upon "   \
260550397Sobrien          "entry")                                                          \
260650397Sobrien                                                                            \
260750397Sobrien  product_pd(bool, RewriteBytecodes,                                        \
260850397Sobrien          "Allow rewriting of bytecodes (bytecodes are not immutable)")     \
260950397Sobrien                                                                            \
261090075Sobrien  product_pd(bool, RewriteFrequentPairs,                                    \
2611117395Skan          "Rewrite frequently used bytecode pairs into a single bytecode")  \
2612117395Skan                                                                            \
261350397Sobrien  diagnostic(bool, PrintInterpreter, false,                                 \
261450397Sobrien          "Prints the generated interpreter code")                          \
261550397Sobrien                                                                            \
261650397Sobrien  product(bool, UseInterpreter, true,                                       \
261750397Sobrien          "Use interpreter for non-compiled methods")                       \
261850397Sobrien                                                                            \
2619132718Skan  develop(bool, UseFastSignatureHandlers, true,                             \
262050397Sobrien          "Use fast signature handlers for native calls")                   \
262150397Sobrien                                                                            \
2622132718Skan  product(bool, UseLoopCounter, true,                                       \
262350397Sobrien          "Increment invocation counter on backward branch")                \
262450397Sobrien                                                                            \
262550397Sobrien  product(bool, UseFastEmptyMethods, true,                                  \
262650397Sobrien          "Use fast method entry code for empty methods")                   \
262750397Sobrien                                                                            \
262850397Sobrien  product(bool, UseFastAccessorMethods, true,                               \
262950397Sobrien          "Use fast method entry code for accessor methods")                \
263050397Sobrien                                                                            \
2631169689Skan  product_pd(bool, UseOnStackReplacement,                                   \
2632169689Skan           "Use on stack replacement, calls runtime if invoc. counter "     \
2633169689Skan           "overflows in loop")                                             \
2634169689Skan                                                                            \
263550397Sobrien  notproduct(bool, TraceOnStackReplacement, false,                          \
263650397Sobrien          "Trace on stack replacement")                                     \
263750397Sobrien                                                                            \
263850397Sobrien  product_pd(bool, PreferInterpreterNativeStubs,                            \
2639132718Skan          "Use always interpreter stubs for native methods invoked via "    \
264050397Sobrien          "interpreter")                                                    \
264150397Sobrien                                                                            \
2642169689Skan  develop(bool, CountBytecodes, false,                                      \
264350397Sobrien          "Count number of bytecodes executed")                             \
264490075Sobrien                                                                            \
2645169689Skan  develop(bool, PrintBytecodeHistogram, false,                              \
2646169689Skan          "Print histogram of the executed bytecodes")                      \
264790075Sobrien                                                                            \
264850397Sobrien  develop(bool, PrintBytecodePairHistogram, false,                          \
2649169689Skan          "Print histogram of the executed bytecode pairs")                 \
265090075Sobrien                                                                            \
2651132718Skan  diagnostic(bool, PrintSignatureHandlers, false,                           \
265290075Sobrien          "Print code generated for native method signature handlers")      \
265390075Sobrien                                                                            \
265490075Sobrien  develop(bool, VerifyOops, false,                                          \
265550397Sobrien          "Do plausibility checks for oops")                                \
2656169689Skan                                                                            \
2657169689Skan  develop(bool, CheckUnhandledOops, false,                                  \
2658169689Skan          "Check for unhandled oops in VM code")                            \
2659169689Skan                                                                            \
2660169689Skan  develop(bool, VerifyJNIFields, trueInDebug,                               \
2661169689Skan          "Verify jfieldIDs for instance fields")                           \
2662169689Skan                                                                            \
2663117395Skan  notproduct(bool, VerifyJNIEnvThread, false,                               \
2664117395Skan          "Verify JNIEnv.thread == Thread::current() when entering VM "     \
2665117395Skan          "from JNI")                                                       \
2666117395Skan                                                                            \
2667117395Skan  develop(bool, VerifyFPU, false,                                           \
266890075Sobrien          "Verify FPU state (check for NaN's, etc.)")                       \
266990075Sobrien                                                                            \
267090075Sobrien  develop(bool, VerifyThread, false,                                        \
267190075Sobrien          "Watch the thread register for corruption (SPARC only)")          \
267250397Sobrien                                                                            \
267350397Sobrien  develop(bool, VerifyActivationFrameSize, false,                           \
267450397Sobrien          "Verify that activation frame didn't become smaller than its "    \
267550397Sobrien          "minimal size")                                                   \
267650397Sobrien                                                                            \
2677132718Skan  develop(bool, TraceFrequencyInlining, false,                              \
267850397Sobrien          "Trace frequency based inlining")                                 \
267950397Sobrien                                                                            \
268090075Sobrien  develop_pd(bool, InlineIntrinsics,                                        \
268150397Sobrien           "Inline intrinsics that can be statically resolved")             \
268290075Sobrien                                                                            \
268390075Sobrien  product_pd(bool, ProfileInterpreter,                                      \
268450397Sobrien           "Profile at the bytecode level during interpretation")           \
268550397Sobrien                                                                            \
268650397Sobrien  develop_pd(bool, ProfileTraps,                                            \
2687132718Skan          "Profile deoptimization traps at the bytecode level")             \
268850397Sobrien                                                                            \
268950397Sobrien  product(intx, ProfileMaturityPercentage, 20,                              \
269050397Sobrien          "number of method invocations/branches (expressed as % of "       \
269150397Sobrien          "CompileThreshold) before using the method's profile")            \
2692169689Skan                                                                            \
2693169689Skan  develop(bool, PrintMethodData, false,                                     \
2694169689Skan           "Print the results of +ProfileInterpreter at end of run")        \
2695169689Skan                                                                            \
2696132718Skan  develop(bool, VerifyDataPointer, trueInDebug,                             \
269750397Sobrien          "Verify the method data pointer during interpreter profiling")    \
269850397Sobrien                                                                            \
269990075Sobrien  develop(bool, VerifyCompiledCode, false,                                  \
270050397Sobrien          "Include miscellaneous runtime verifications in nmethod code; "   \
2701132718Skan          "default off because it disturbs nmethod size heuristics")        \
270250397Sobrien                                                                            \
270350397Sobrien  notproduct(bool, CrashGCForDumpingJavaThread, false,                      \
270450397Sobrien          "Manually make GC thread crash then dump java stack trace;  "     \
270550397Sobrien          "Test only")                                                      \
270650397Sobrien                                                                            \
270750397Sobrien  /* compilation */                                                         \
2708132718Skan  product(bool, UseCompiler, true,                                          \
270950397Sobrien          "use compilation")                                                \
2710132718Skan                                                                            \
271150397Sobrien  develop(bool, TraceCompilationPolicy, false,                              \
2712132718Skan          "Trace compilation policy")                                       \
271350397Sobrien                                                                            \
2714132718Skan  develop(bool, TimeCompilationPolicy, false,                               \
271550397Sobrien          "Time the compilation policy")                                    \
2716132718Skan                                                                            \
271750397Sobrien  product(bool, UseCounterDecay, true,                                      \
271850397Sobrien           "adjust recompilation counters")                                 \
271950397Sobrien                                                                            \
272050397Sobrien  develop(intx, CounterHalfLifeTime,    30,                                 \
2721132718Skan          "half-life time of invocation counters (in secs)")                \
272250397Sobrien                                                                            \
2723132718Skan  develop(intx, CounterDecayMinIntervalLength,   500,                       \
2724132718Skan          "Min. ms. between invocation of CounterDecay")                    \
272550397Sobrien                                                                            \
2726132718Skan  product(bool, AlwaysCompileLoopMethods, false,                            \
2727132718Skan          "when using recompilation, never interpret methods "              \
2728132718Skan          "containing loops")                                               \
2729132718Skan                                                                            \
2730169689Skan  product(bool, DontCompileHugeMethods, true,                               \
2731132718Skan          "don't compile methods > HugeMethodLimit")                        \
2732132718Skan                                                                            \
2733132718Skan  /* Bytecode escape analysis estimation. */                                \
2734132718Skan  product(bool, EstimateArgEscape, true,                                    \
273590075Sobrien          "Analyze bytecodes to estimate escape state of arguments")        \
273690075Sobrien                                                                            \
273790075Sobrien  product(intx, BCEATraceLevel, 0,                                          \
2738132718Skan          "How much tracing to do of bytecode escape analysis estimates")   \
2739132718Skan                                                                            \
2740132718Skan  product(intx, MaxBCEAEstimateLevel, 5,                                    \
2741132718Skan          "Maximum number of nested calls that are analyzed by BC EA.")     \
2742132718Skan                                                                            \
2743169689Skan  product(intx, MaxBCEAEstimateSize, 150,                                   \
274450397Sobrien          "Maximum bytecode size of a method to be analyzed by BC EA.")     \
2745132718Skan                                                                            \
274650397Sobrien  product(intx,  AllocatePrefetchStyle, 1,                                  \
274750397Sobrien          "0 = no prefetch, "                                               \
274850397Sobrien          "1 = prefetch instructions for each allocation, "                 \
274950397Sobrien          "2 = use TLAB watermark to gate allocation prefetch, "            \
275050397Sobrien          "3 = use BIS instruction on Sparc for allocation prefetch")       \
275150397Sobrien                                                                            \
2752132718Skan  product(intx,  AllocatePrefetchDistance, -1,                              \
275350397Sobrien          "Distance to prefetch ahead of allocation pointer")               \
275450397Sobrien                                                                            \
275550397Sobrien  product(intx,  AllocatePrefetchLines, 3,                                  \
275650397Sobrien          "Number of lines to prefetch ahead of array allocation pointer")  \
275750397Sobrien                                                                            \
275890075Sobrien  product(intx,  AllocateInstancePrefetchLines, 1,                          \
275950397Sobrien          "Number of lines to prefetch ahead of instance allocation pointer") \
276050397Sobrien                                                                            \
276150397Sobrien  product(intx,  AllocatePrefetchStepSize, 16,                              \
276290075Sobrien          "Step size in bytes of sequential prefetch instructions")         \
276390075Sobrien                                                                            \
276490075Sobrien  product(intx,  AllocatePrefetchInstr, 0,                                  \
2765132718Skan          "Prefetch instruction to prefetch ahead of allocation pointer")   \
276690075Sobrien                                                                            \
276790075Sobrien  /* deoptimization */                                                      \
276890075Sobrien  develop(bool, TraceDeoptimization, false,                                 \
276990075Sobrien          "Trace deoptimization")                                           \
277090075Sobrien                                                                            \
277190075Sobrien  develop(bool, DebugDeoptimization, false,                                 \
277290075Sobrien          "Tracing various information while debugging deoptimization")     \
277390075Sobrien                                                                            \
277490075Sobrien  product(intx, SelfDestructTimer, 0,                                       \
277590075Sobrien          "Will cause VM to terminate after a given time (in minutes) "     \
2776132718Skan          "(0 means off)")                                                  \
277790075Sobrien                                                                            \
2778132718Skan  product(intx, MaxJavaStackTraceDepth, 1024,                               \
2779132718Skan          "Max. no. of lines in the stack trace for Java exceptions "       \
2780132718Skan          "(0 means all)")                                                  \
2781132718Skan                                                                            \
2782132718Skan  NOT_EMBEDDED(diagnostic(intx, GuaranteedSafepointInterval, 1000,          \
2783132718Skan          "Guarantee a safepoint (at least) every so many milliseconds "    \
2784132718Skan          "(0 means none)"))                                                \
2785132718Skan                                                                            \
2786132718Skan  EMBEDDED_ONLY(product(intx, GuaranteedSafepointInterval, 0,               \
278790075Sobrien          "Guarantee a safepoint (at least) every so many milliseconds "    \
278890075Sobrien          "(0 means none)"))                                                \
278990075Sobrien                                                                            \
2790132718Skan  product(intx, SafepointTimeoutDelay, 10000,                               \
279190075Sobrien          "Delay in milliseconds for option SafepointTimeout")              \
279290075Sobrien                                                                            \
279390075Sobrien  product(intx, NmethodSweepFraction, 16,                                   \
279490075Sobrien          "Number of invocations of sweeper to cover all nmethods")         \
2795117395Skan                                                                            \
279690075Sobrien  product(intx, NmethodSweepCheckInterval, 5,                               \
279790075Sobrien          "Compilers wake up every n seconds to possibly sweep nmethods")   \
279890075Sobrien                                                                            \
279990075Sobrien  notproduct(bool, LogSweeper, false,                                       \
280090075Sobrien            "Keep a ring buffer of sweeper activity")                       \
280190075Sobrien                                                                            \
280290075Sobrien  notproduct(intx, SweeperLogEntries, 1024,                                 \
280390075Sobrien            "Number of records in the ring buffer of sweeper activity")     \
280490075Sobrien                                                                            \
280590075Sobrien  notproduct(intx, MemProfilingInterval, 500,                               \
280690075Sobrien          "Time between each invocation of the MemProfiler")                \
280790075Sobrien                                                                            \
280890075Sobrien  develop(intx, MallocCatchPtr, -1,                                         \
280990075Sobrien          "Hit breakpoint when mallocing/freeing this pointer")             \
281090075Sobrien                                                                            \
281190075Sobrien  notproduct(intx, AssertRepeat, 1,                                         \
281290075Sobrien          "number of times to evaluate expression in assert "               \
281390075Sobrien          "(to estimate overhead); only works with -DUSE_REPEATED_ASSERTS") \
281490075Sobrien                                                                            \
281590075Sobrien  notproduct(ccstrlist, SuppressErrorAt, "",                                \
281690075Sobrien          "List of assertions (file:line) to muzzle")                       \
281790075Sobrien                                                                            \
281890075Sobrien  notproduct(uintx, HandleAllocationLimit, 1024,                            \
281990075Sobrien          "Threshold for HandleMark allocation when +TraceHandleAllocation "\
282090075Sobrien          "is used")                                                        \
282190075Sobrien                                                                            \
282290075Sobrien  develop(uintx, TotalHandleAllocationLimit, 1024,                          \
282390075Sobrien          "Threshold for total handle allocation when "                     \
282490075Sobrien          "+TraceHandleAllocation is used")                                 \
282590075Sobrien                                                                            \
282690075Sobrien  develop(intx, StackPrintLimit, 100,                                       \
282790075Sobrien          "number of stack frames to print in VM-level stack dump")         \
282890075Sobrien                                                                            \
282990075Sobrien  notproduct(intx, MaxElementPrintSize, 256,                                \
283090075Sobrien          "maximum number of elements to print")                            \
283190075Sobrien                                                                            \
283290075Sobrien  notproduct(intx, MaxSubklassPrintSize, 4,                                 \
283390075Sobrien          "maximum number of subklasses to print when printing klass")      \
283490075Sobrien                                                                            \
283590075Sobrien  product(intx, MaxInlineLevel, 9,                                          \
283690075Sobrien          "maximum number of nested calls that are inlined")                \
283790075Sobrien                                                                            \
283890075Sobrien  product(intx, MaxRecursiveInlineLevel, 1,                                 \
283990075Sobrien          "maximum number of nested recursive calls that are inlined")      \
284090075Sobrien                                                                            \
284190075Sobrien  product_pd(intx, InlineSmallCode,                                         \
284290075Sobrien          "Only inline already compiled methods if their code size is "     \
284390075Sobrien          "less than this")                                                 \
284490075Sobrien                                                                            \
284590075Sobrien  product(intx, MaxInlineSize, 35,                                          \
284690075Sobrien          "maximum bytecode size of a method to be inlined")                \
284790075Sobrien                                                                            \
284890075Sobrien  product_pd(intx, FreqInlineSize,                                          \
284990075Sobrien          "maximum bytecode size of a frequent method to be inlined")       \
285090075Sobrien                                                                            \
285190075Sobrien  product(intx, MaxTrivialSize, 6,                                          \
285290075Sobrien          "maximum bytecode size of a trivial method to be inlined")        \
285390075Sobrien                                                                            \
285490075Sobrien  product(intx, MinInliningThreshold, 250,                                  \
285590075Sobrien          "min. invocation count a method needs to have to be inlined")     \
285690075Sobrien                                                                            \
285790075Sobrien  develop(intx, MethodHistogramCutoff, 100,                                 \
285890075Sobrien          "cutoff value for method invoc. histogram (+CountCalls)")         \
285990075Sobrien                                                                            \
286090075Sobrien  develop(intx, ProfilerNumberOfInterpretedMethods, 25,                     \
286190075Sobrien          "# of interpreted methods to show in profile")                    \
286290075Sobrien                                                                            \
286390075Sobrien  develop(intx, ProfilerNumberOfCompiledMethods, 25,                        \
286490075Sobrien          "# of compiled methods to show in profile")                       \
286590075Sobrien                                                                            \
286690075Sobrien  develop(intx, ProfilerNumberOfStubMethods, 25,                            \
286790075Sobrien          "# of stub methods to show in profile")                           \
286890075Sobrien                                                                            \
286990075Sobrien  develop(intx, ProfilerNumberOfRuntimeStubNodes, 25,                       \
287090075Sobrien          "# of runtime stub nodes to show in profile")                     \
287190075Sobrien                                                                            \
287290075Sobrien  product(intx, ProfileIntervalsTicks, 100,                                 \
287390075Sobrien          "# of ticks between printing of interval profile "                \
287490075Sobrien          "(+ProfileIntervals)")                                            \
287590075Sobrien                                                                            \
287690075Sobrien  notproduct(intx, ScavengeALotInterval,     1,                             \
287790075Sobrien          "Interval between which scavenge will occur with +ScavengeALot")  \
287890075Sobrien                                                                            \
287990075Sobrien  notproduct(intx, FullGCALotInterval,     1,                               \
288090075Sobrien          "Interval between which full gc will occur with +FullGCALot")     \
288190075Sobrien                                                                            \
288290075Sobrien  notproduct(intx, FullGCALotStart,     0,                                  \
288390075Sobrien          "For which invocation to start FullGCAlot")                       \
288490075Sobrien                                                                            \
288590075Sobrien  notproduct(intx, FullGCALotDummies,  32*K,                                \
288690075Sobrien          "Dummy object allocated with +FullGCALot, forcing all objects "   \
288790075Sobrien          "to move")                                                        \
288890075Sobrien                                                                            \
288990075Sobrien  develop(intx, DontYieldALotInterval,    10,                               \
289090075Sobrien          "Interval between which yields will be dropped (milliseconds)")   \
289190075Sobrien                                                                            \
289290075Sobrien  develop(intx, MinSleepInterval,     1,                                    \
289390075Sobrien          "Minimum sleep() interval (milliseconds) when "                   \
289490075Sobrien          "ConvertSleepToYield is off (used for SOLARIS)")                  \
289590075Sobrien                                                                            \
289690075Sobrien  develop(intx, ProfilerPCTickThreshold,    15,                             \
289790075Sobrien          "Number of ticks in a PC buckets to be a hotspot")                \
289890075Sobrien                                                                            \
289990075Sobrien  notproduct(intx, DeoptimizeALotInterval,     5,                           \
290090075Sobrien          "Number of exits until DeoptimizeALot kicks in")                  \
290190075Sobrien                                                                            \
290290075Sobrien  notproduct(intx, ZombieALotInterval,     5,                               \
290390075Sobrien          "Number of exits until ZombieALot kicks in")                      \
290490075Sobrien                                                                            \
290590075Sobrien  develop(bool, StressNonEntrant, false,                                    \
290690075Sobrien          "Mark nmethods non-entrant at registration")                      \
290790075Sobrien                                                                            \
290890075Sobrien  diagnostic(intx, MallocVerifyInterval,     0,                             \
290990075Sobrien          "if non-zero, verify C heap after every N calls to "              \
291090075Sobrien          "malloc/realloc/free")                                            \
291190075Sobrien                                                                            \
291290075Sobrien  diagnostic(intx, MallocVerifyStart,     0,                                \
291390075Sobrien          "if non-zero, start verifying C heap after Nth call to "          \
291490075Sobrien          "malloc/realloc/free")                                            \
291590075Sobrien                                                                            \
291690075Sobrien  product(intx, TypeProfileWidth,     2,                                    \
291790075Sobrien          "number of receiver types to record in call/cast profile")        \
291890075Sobrien                                                                            \
291990075Sobrien  develop(intx, BciProfileWidth,      2,                                    \
292090075Sobrien          "number of return bci's to record in ret profile")                \
292190075Sobrien                                                                            \
292290075Sobrien  product(intx, PerMethodRecompilationCutoff, 400,                          \
292390075Sobrien          "After recompiling N times, stay in the interpreter (-1=>'Inf')") \
292490075Sobrien                                                                            \
292590075Sobrien  product(intx, PerBytecodeRecompilationCutoff, 200,                        \
292690075Sobrien          "Per-BCI limit on repeated recompilation (-1=>'Inf')")            \
292790075Sobrien                                                                            \
292890075Sobrien  product(intx, PerMethodTrapLimit,  100,                                   \
292990075Sobrien          "Limit on traps (of one kind) in a method (includes inlines)")    \
293090075Sobrien                                                                            \
293190075Sobrien  product(intx, PerBytecodeTrapLimit,  4,                                   \
293290075Sobrien          "Limit on traps (of one kind) at a particular BCI")               \
293390075Sobrien                                                                            \
293490075Sobrien  develop(intx, InlineFrequencyRatio,    20,                                \
293590075Sobrien          "Ratio of call site execution to caller method invocation")       \
293690075Sobrien                                                                            \
293790075Sobrien  develop_pd(intx, InlineFrequencyCount,                                    \
293890075Sobrien          "Count of call site execution necessary to trigger frequent "     \
293990075Sobrien          "inlining")                                                       \
294090075Sobrien                                                                            \
294190075Sobrien  develop(intx, InlineThrowCount,    50,                                    \
294290075Sobrien          "Force inlining of interpreted methods that throw this often")    \
294390075Sobrien                                                                            \
294490075Sobrien  develop(intx, InlineThrowMaxSize,   200,                                  \
294590075Sobrien          "Force inlining of throwing methods smaller than this")           \
294690075Sobrien                                                                            \
294790075Sobrien  develop(intx, ProfilerNodeSize,  1024,                                    \
294890075Sobrien          "Size in K to allocate for the Profile Nodes of each thread")     \
294990075Sobrien                                                                            \
295090075Sobrien  product_pd(intx, PreInflateSpin,                                          \
295190075Sobrien          "Number of times to spin wait before inflation")                  \
295290075Sobrien                                                                            \
295390075Sobrien  /* gc parameters */                                                       \
295490075Sobrien  product(uintx, InitialHeapSize, 0,                                        \
295590075Sobrien          "Initial heap size (in bytes); zero means OldSize + NewSize")     \
295690075Sobrien                                                                            \
295790075Sobrien  product(uintx, MaxHeapSize, ScaleForWordSize(96*M),                       \
295890075Sobrien          "Maximum heap size (in bytes)")                                   \
295990075Sobrien                                                                            \
296090075Sobrien  product(uintx, OldSize, ScaleForWordSize(4*M),                            \
296190075Sobrien          "Initial tenured generation size (in bytes)")                     \
296290075Sobrien                                                                            \
296390075Sobrien  product(uintx, NewSize, ScaleForWordSize(1*M),                            \
296490075Sobrien          "Initial new generation size (in bytes)")                         \
296590075Sobrien                                                                            \
296690075Sobrien  product(uintx, MaxNewSize, max_uintx,                                     \
296790075Sobrien          "Maximum new generation size (in bytes), max_uintx means set "    \
296890075Sobrien          "ergonomically")                                                  \
296990075Sobrien                                                                            \
297090075Sobrien  product(uintx, PretenureSizeThreshold, 0,                                 \
297190075Sobrien          "Maximum size in bytes of objects allocated in DefNew "           \
297290075Sobrien          "generation; zero means no maximum")                              \
297390075Sobrien                                                                            \
297490075Sobrien  product(uintx, TLABSize, 0,                                               \
297590075Sobrien          "Starting TLAB size (in bytes); zero means set ergonomically")    \
297690075Sobrien                                                                            \
297790075Sobrien  product(uintx, MinTLABSize, 2*K,                                          \
297890075Sobrien          "Minimum allowed TLAB size (in bytes)")                           \
297990075Sobrien                                                                            \
298090075Sobrien  product(uintx, TLABAllocationWeight, 35,                                  \
298190075Sobrien          "Allocation averaging weight")                                    \
298290075Sobrien                                                                            \
298390075Sobrien  product(uintx, TLABWasteTargetPercent, 1,                                 \
298490075Sobrien          "Percentage of Eden that can be wasted")                          \
298590075Sobrien                                                                            \
298690075Sobrien  product(uintx, TLABRefillWasteFraction,    64,                            \
298790075Sobrien          "Max TLAB waste at a refill (internal fragmentation)")            \
298890075Sobrien                                                                            \
298990075Sobrien  product(uintx, TLABWasteIncrement,    4,                                  \
299090075Sobrien          "Increment allowed waste at slow allocation")                     \
299190075Sobrien                                                                            \
299290075Sobrien  product(uintx, SurvivorRatio, 8,                                          \
299390075Sobrien          "Ratio of eden/survivor space size")                              \
299490075Sobrien                                                                            \
299590075Sobrien  product(uintx, NewRatio, 2,                                               \
299690075Sobrien          "Ratio of new/old generation sizes")                              \
299790075Sobrien                                                                            \
299890075Sobrien  product_pd(uintx, NewSizeThreadIncrease,                                  \
299990075Sobrien          "Additional size added to desired new generation size per "       \
300090075Sobrien          "non-daemon thread (in bytes)")                                   \
300190075Sobrien                                                                            \
300290075Sobrien  product_pd(uintx, MetaspaceSize,                                          \
300390075Sobrien          "Initial size of Metaspaces (in bytes)")                          \
300490075Sobrien                                                                            \
300590075Sobrien  product(uintx, MaxMetaspaceSize, max_uintx,                               \
300690075Sobrien          "Maximum size of Metaspaces (in bytes)")                          \
300790075Sobrien                                                                            \
300890075Sobrien  product(uintx, ClassMetaspaceSize, 2*M,                                   \
300990075Sobrien          "Maximum size of InstanceKlass area in Metaspace used for "       \
301090075Sobrien          "UseCompressedKlassPointers")                                     \
301190075Sobrien                                                                            \
301290075Sobrien  product(uintx, MinHeapFreeRatio,    40,                                   \
301390075Sobrien          "Min percentage of heap free after GC to avoid expansion")        \
301490075Sobrien                                                                            \
301590075Sobrien  product(uintx, MaxHeapFreeRatio,    70,                                   \
301690075Sobrien          "Max percentage of heap free after GC to avoid shrinking")        \
301790075Sobrien                                                                            \
301890075Sobrien  product(intx, SoftRefLRUPolicyMSPerMB, 1000,                              \
301990075Sobrien          "Number of milliseconds per MB of free space in the heap")        \
302090075Sobrien                                                                            \
302190075Sobrien  product(uintx, MinHeapDeltaBytes, ScaleForWordSize(128*K),                \
302290075Sobrien          "Min change in heap space due to GC (in bytes)")                  \
302390075Sobrien                                                                            \
302490075Sobrien  product(uintx, MinMetaspaceExpansion, ScaleForWordSize(256*K),            \
302590075Sobrien          "Min expansion of Metaspace (in bytes)")                          \
302690075Sobrien                                                                            \
302790075Sobrien  product(uintx, MinMetaspaceFreeRatio,    40,                              \
302890075Sobrien          "Min percentage of Metaspace free after GC to avoid expansion")   \
302990075Sobrien                                                                            \
303090075Sobrien  product(uintx, MaxMetaspaceFreeRatio,    70,                              \
303190075Sobrien          "Max percentage of Metaspace free after GC to avoid shrinking")   \
303290075Sobrien                                                                            \
303390075Sobrien  product(uintx, MaxMetaspaceExpansion, ScaleForWordSize(4*M),              \
303490075Sobrien          "Max expansion of Metaspace without full GC (in bytes)")          \
303590075Sobrien                                                                            \
303690075Sobrien  product(intx, QueuedAllocationWarningCount, 0,                            \
303790075Sobrien          "Number of times an allocation that queues behind a GC "          \
303890075Sobrien          "will retry before printing a warning")                           \
303990075Sobrien                                                                            \
304090075Sobrien  diagnostic(uintx, VerifyGCStartAt,   0,                                   \
304190075Sobrien          "GC invoke count where +VerifyBefore/AfterGC kicks in")           \
304290075Sobrien                                                                            \
304390075Sobrien  diagnostic(intx, VerifyGCLevel,     0,                                    \
304490075Sobrien          "Generation level at which to start +VerifyBefore/AfterGC")       \
304590075Sobrien                                                                            \
304690075Sobrien  product(uintx, MaxTenuringThreshold,    15,                               \
304790075Sobrien          "Maximum value for tenuring threshold")                           \
304890075Sobrien                                                                            \
304990075Sobrien  product(uintx, InitialTenuringThreshold,    7,                            \
305090075Sobrien          "Initial value for tenuring threshold")                           \
305190075Sobrien                                                                            \
305290075Sobrien  product(uintx, TargetSurvivorRatio,    50,                                \
305390075Sobrien          "Desired percentage of survivor space used after scavenge")       \
305490075Sobrien                                                                            \
305590075Sobrien  product(uintx, MarkSweepDeadRatio,     5,                                 \
305690075Sobrien          "Percentage (0-100) of the old gen allowed as dead wood."         \
305790075Sobrien          "Serial mark sweep treats this as both the min and max value."    \
305890075Sobrien          "CMS uses this value only if it falls back to mark sweep."        \
305990075Sobrien          "Par compact uses a variable scale based on the density of the"   \
306090075Sobrien          "generation and treats this as the max value when the heap is"    \
306190075Sobrien          "either completely full or completely empty.  Par compact also"   \
306290075Sobrien          "has a smaller default value; see arguments.cpp.")                \
306390075Sobrien                                                                            \
306490075Sobrien  product(intx, MarkSweepAlwaysCompactCount,     4,                         \
306590075Sobrien          "How often should we fully compact the heap (ignoring the dead "  \
306690075Sobrien          "space parameters)")                                              \
306790075Sobrien                                                                            \
306890075Sobrien  product(intx, PrintCMSStatistics, 0,                                      \
306990075Sobrien          "Statistics for CMS")                                             \
307090075Sobrien                                                                            \
307190075Sobrien  product(bool, PrintCMSInitiationStatistics, false,                        \
307290075Sobrien          "Statistics for initiating a CMS collection")                     \
307390075Sobrien                                                                            \
307490075Sobrien  product(intx, PrintFLSStatistics, 0,                                      \
307590075Sobrien          "Statistics for CMS' FreeListSpace")                              \
307690075Sobrien                                                                            \
307790075Sobrien  product(intx, PrintFLSCensus, 0,                                          \
307890075Sobrien          "Census for CMS' FreeListSpace")                                  \
307990075Sobrien                                                                            \
308090075Sobrien  develop(uintx, GCExpandToAllocateDelayMillis, 0,                          \
308190075Sobrien          "Delay in ms between expansion and allocation")                   \
308290075Sobrien                                                                            \
308390075Sobrien  develop(uintx, GCWorkerDelayMillis, 0,                                    \
308490075Sobrien          "Delay in ms in scheduling GC workers")                           \
3085117395Skan                                                                            \
3086117395Skan  product(intx, DeferThrSuspendLoopCount,     4000,                         \
3087117395Skan          "(Unstable) Number of times to iterate in safepoint loop "        \
3088117395Skan          " before blocking VM threads ")                                   \
3089117395Skan                                                                            \
3090117395Skan  product(intx, DeferPollingPageLoopCount,     -1,                          \
3091117395Skan          "(Unsafe,Unstable) Number of iterations in safepoint loop "       \
3092117395Skan          "before changing safepoint polling page to RO ")                  \
3093117395Skan                                                                            \
3094117395Skan  product(intx, SafepointSpinBeforeYield, 2000,  "(Unstable)")              \
309590075Sobrien                                                                            \
309690075Sobrien  product(bool, PSChunkLargeArrays, true,                                   \
309790075Sobrien          "true: process large arrays in chunks")                           \
309890075Sobrien                                                                            \
309990075Sobrien  product(uintx, GCDrainStackTargetSize, 64,                                \
310090075Sobrien          "how many entries we'll try to leave on the stack during "        \
310190075Sobrien          "parallel GC")                                                    \
310290075Sobrien                                                                            \
310390075Sobrien  /* stack parameters */                                                    \
310490075Sobrien  product_pd(intx, StackYellowPages,                                        \
3105132718Skan          "Number of yellow zone (recoverable overflows) pages")            \
3106132718Skan                                                                            \
310790075Sobrien  product_pd(intx, StackRedPages,                                           \
3108132718Skan          "Number of red zone (unrecoverable overflows) pages")             \
310990075Sobrien                                                                            \
311090075Sobrien  product_pd(intx, StackShadowPages,                                        \
311190075Sobrien          "Number of shadow zone (for overflow checking) pages"             \
311290075Sobrien          " this should exceed the depth of the VM and native call stack")  \
311390075Sobrien                                                                            \
311490075Sobrien  product_pd(intx, ThreadStackSize,                                         \
311590075Sobrien          "Thread Stack Size (in Kbytes)")                                  \
311690075Sobrien                                                                            \
311790075Sobrien  product_pd(intx, VMThreadStackSize,                                       \
311890075Sobrien          "Non-Java Thread Stack Size (in Kbytes)")                         \
311990075Sobrien                                                                            \
312090075Sobrien  product_pd(intx, CompilerThreadStackSize,                                 \
312190075Sobrien          "Compiler Thread Stack Size (in Kbytes)")                         \
3122132718Skan                                                                            \
312390075Sobrien  develop_pd(uintx, JVMInvokeMethodSlack,                                   \
312490075Sobrien          "Stack space (bytes) required for JVM_InvokeMethod to complete")  \
312590075Sobrien                                                                            \
312690075Sobrien  product(uintx, ThreadSafetyMargin, 50*M,                                  \
312790075Sobrien          "Thread safety margin is used on fixed-stack LinuxThreads (on "   \
312890075Sobrien          "Linux/x86 only) to prevent heap-stack collision. Set to 0 to "   \
312990075Sobrien          "disable this feature")                                           \
313090075Sobrien                                                                            \
313190075Sobrien  /* code cache parameters */                                               \
313290075Sobrien  develop(uintx, CodeCacheSegmentSize, 64,                                  \
313390075Sobrien          "Code cache segment size (in bytes) - smallest unit of "          \
313490075Sobrien          "allocation")                                                     \
313590075Sobrien                                                                            \
3136132718Skan  develop_pd(intx, CodeEntryAlignment,                                      \
313790075Sobrien          "Code entry alignment for generated code (in bytes)")             \
313890075Sobrien                                                                            \
313990075Sobrien  product_pd(intx, OptoLoopAlignment,                                       \
314090075Sobrien          "Align inner loops to zero relative to this modulus")             \
314190075Sobrien                                                                            \
314290075Sobrien  product_pd(uintx, InitialCodeCacheSize,                                   \
3143117395Skan          "Initial code cache size (in bytes)")                             \
314490075Sobrien                                                                            \
314590075Sobrien  product_pd(uintx, ReservedCodeCacheSize,                                  \
314690075Sobrien          "Reserved code cache size (in bytes) - maximum code cache size")  \
314790075Sobrien                                                                            \
314890075Sobrien  product(uintx, CodeCacheMinimumFreeSpace, 500*K,                          \
314990075Sobrien          "When less than X space left, we stop compiling.")                \
315090075Sobrien                                                                            \
315190075Sobrien  product_pd(uintx, CodeCacheExpansionSize,                                 \
315290075Sobrien          "Code cache expansion size (in bytes)")                           \
315390075Sobrien                                                                            \
315490075Sobrien  develop_pd(uintx, CodeCacheMinBlockLength,                                \
315590075Sobrien          "Minimum number of segments in a code cache block.")              \
315690075Sobrien                                                                            \
315790075Sobrien  notproduct(bool, ExitOnFullCodeCache, false,                              \
315890075Sobrien          "Exit the VM if we fill the code cache.")                         \
315990075Sobrien                                                                            \
316090075Sobrien  product(bool, UseCodeCacheFlushing, true,                                 \
316190075Sobrien          "Attempt to clean the code cache before shutting off compiler")   \
316290075Sobrien                                                                            \
316390075Sobrien  product(intx,  MinCodeCacheFlushingInterval, 30,                          \
316490075Sobrien          "Min number of seconds between code cache cleaning sessions")     \
316590075Sobrien                                                                            \
316690075Sobrien  product(uintx,  CodeCacheFlushingMinimumFreeSpace, 1500*K,                \
316790075Sobrien          "When less than X space left, start code cache cleaning")         \
316890075Sobrien                                                                            \
316990075Sobrien  /* interpreter debugging */                                               \
317090075Sobrien  develop(intx, BinarySwitchThreshold, 5,                                   \
317190075Sobrien          "Minimal number of lookupswitch entries for rewriting to binary " \
317290075Sobrien          "switch")                                                         \
317390075Sobrien                                                                            \
317490075Sobrien  develop(intx, StopInterpreterAt, 0,                                       \
317590075Sobrien          "Stops interpreter execution at specified bytecode number")       \
317690075Sobrien                                                                            \
317790075Sobrien  develop(intx, TraceBytecodesAt, 0,                                        \
317890075Sobrien          "Traces bytecodes starting with specified bytecode number")       \
317990075Sobrien                                                                            \
318090075Sobrien  /* compiler interface */                                                  \
318190075Sobrien  develop(intx, CIStart, 0,                                                 \
318290075Sobrien          "the id of the first compilation to permit")                      \
318390075Sobrien                                                                            \
318490075Sobrien  develop(intx, CIStop,    -1,                                              \
318590075Sobrien          "the id of the last compilation to permit")                       \
318690075Sobrien                                                                            \
318790075Sobrien  develop(intx, CIStartOSR,     0,                                          \
318890075Sobrien          "the id of the first osr compilation to permit "                  \
318990075Sobrien          "(CICountOSR must be on)")                                        \
319090075Sobrien                                                                            \
319190075Sobrien  develop(intx, CIStopOSR,    -1,                                           \
319290075Sobrien          "the id of the last osr compilation to permit "                   \
319390075Sobrien          "(CICountOSR must be on)")                                        \
319490075Sobrien                                                                            \
319590075Sobrien  develop(intx, CIBreakAtOSR,    -1,                                        \
319690075Sobrien          "id of osr compilation to break at")                              \
319790075Sobrien                                                                            \
319890075Sobrien  develop(intx, CIBreakAt,    -1,                                           \
319990075Sobrien          "id of compilation to break at")                                  \
320090075Sobrien                                                                            \
320190075Sobrien  product(ccstrlist, CompileOnly, "",                                       \
320290075Sobrien          "List of methods (pkg/class.name) to restrict compilation to")    \
320390075Sobrien                                                                            \
320490075Sobrien  product(ccstr, CompileCommandFile, NULL,                                  \
320590075Sobrien          "Read compiler commands from this file [.hotspot_compiler]")      \
320690075Sobrien                                                                            \
320790075Sobrien  product(ccstrlist, CompileCommand, "",                                    \
320890075Sobrien          "Prepend to .hotspot_compiler; e.g. log,java/lang/String.<init>") \
320990075Sobrien                                                                            \
321090075Sobrien  develop(bool, ReplayCompiles, false,                                      \
321190075Sobrien          "Enable replay of compilations from ReplayDataFile")              \
321290075Sobrien                                                                            \
321390075Sobrien  develop(ccstr, ReplayDataFile, "replay.txt",                              \
321490075Sobrien          "file containing compilation replay information")                 \
321590075Sobrien                                                                            \
321690075Sobrien  develop(intx, ReplaySuppressInitializers, 2,                              \
321790075Sobrien          "Controls handling of class initialization during replay"         \
321890075Sobrien          "0 - don't do anything special"                                   \
321990075Sobrien          "1 - treat all class initializers as empty"                       \
322090075Sobrien          "2 - treat class initializers for application classes as empty"   \
322190075Sobrien          "3 - allow all class initializers to run during bootstrap but"    \
322290075Sobrien          "    pretend they are empty after starting replay")               \
322390075Sobrien                                                                            \
322490075Sobrien  develop(bool, ReplayIgnoreInitErrors, false,                              \
322590075Sobrien          "Ignore exceptions thrown during initialization for replay")      \
322690075Sobrien                                                                            \
322790075Sobrien  develop(bool, DumpReplayDataOnError, true,                                \
322890075Sobrien          "record replay data for crashing compiler threads")               \
3229117395Skan                                                                            \
3230117395Skan  product(bool, CICompilerCountPerCPU, false,                               \
3231117395Skan          "1 compiler thread for log(N CPUs)")                              \
3232117395Skan                                                                            \
3233117395Skan  develop(intx, CIFireOOMAt,    -1,                                         \
3234117395Skan          "Fire OutOfMemoryErrors throughout CI for testing the compiler "  \
3235117395Skan          "(non-negative value throws OOM after this many CI accesses "     \
3236117395Skan          "in each compile)")                                               \
3237117395Skan                                                                            \
323890075Sobrien  notproduct(bool, CIObjectFactoryVerify, false,                            \
323990075Sobrien          "enable potentially expensive verification in ciObjectFactory")   \
324090075Sobrien                                                                            \
324190075Sobrien  /* Priorities */                                                          \
324290075Sobrien  product_pd(bool, UseThreadPriorities,  "Use native thread priorities")    \
324390075Sobrien                                                                            \
324490075Sobrien  product(intx, ThreadPriorityPolicy, 0,                                    \
324590075Sobrien          "0 : Normal.                                                     "\
324690075Sobrien          "    VM chooses priorities that are appropriate for normal       "\
324790075Sobrien          "    applications. On Solaris NORM_PRIORITY and above are mapped "\
3248132718Skan          "    to normal native priority. Java priorities below NORM_PRIORITY"\
324990075Sobrien          "    map to lower native priority values. On Windows applications"\
3250169689Skan          "    are allowed to use higher native priorities. However, with  "\
325190075Sobrien          "    ThreadPriorityPolicy=0, VM will not use the highest possible"\
325290075Sobrien          "    native priority, THREAD_PRIORITY_TIME_CRITICAL, as it may   "\
3253169689Skan          "    interfere with system threads. On Linux thread priorities   "\
3254169689Skan          "    are ignored because the OS does not support static priority "\
3255169689Skan          "    in SCHED_OTHER scheduling class which is the only choice for"\
325690075Sobrien          "    non-root, non-realtime applications.                        "\
3257169689Skan          "1 : Aggressive.                                                 "\
3258169689Skan          "    Java thread priorities map over to the entire range of      "\
3259169689Skan          "    native thread priorities. Higher Java thread priorities map "\
326090075Sobrien          "    to higher native thread priorities. This policy should be   "\
3261169689Skan          "    used with care, as sometimes it can cause performance       "\
3262169689Skan          "    degradation in the application and/or the entire system. On "\
326390075Sobrien          "    Linux this policy requires root privilege.")                 \
3264169689Skan                                                                            \
3265169689Skan  product(bool, ThreadPriorityVerbose, false,                               \
3266169689Skan          "Print priority changes")                                         \
3267169689Skan                                                                            \
3268169689Skan  product(intx, DefaultThreadPriority, -1,                                  \
3269169689Skan          "The native priority at which threads run if not elsewhere "      \
327090075Sobrien          "specified (-1 means no change)")                                 \
327190075Sobrien                                                                            \
327290075Sobrien  product(intx, CompilerThreadPriority, -1,                                 \
327390075Sobrien          "The native priority at which compiler threads should run "       \
327490075Sobrien          "(-1 means no change)")                                           \
327590075Sobrien                                                                            \
3276132718Skan  product(intx, VMThreadPriority, -1,                                       \
327790075Sobrien          "The native priority at which the VM thread should run "          \
327890075Sobrien          "(-1 means no change)")                                           \
327990075Sobrien                                                                            \
328090075Sobrien  product(bool, CompilerThreadHintNoPreempt, true,                          \
328190075Sobrien          "(Solaris only) Give compiler threads an extra quanta")           \
328290075Sobrien                                                                            \
328390075Sobrien  product(bool, VMThreadHintNoPreempt, false,                               \
328490075Sobrien          "(Solaris only) Give VM thread an extra quanta")                  \
328590075Sobrien                                                                            \
328690075Sobrien  product(intx, JavaPriority1_To_OSPriority, -1, "Map Java priorities to OS priorities") \
328790075Sobrien  product(intx, JavaPriority2_To_OSPriority, -1, "Map Java priorities to OS priorities") \
328890075Sobrien  product(intx, JavaPriority3_To_OSPriority, -1, "Map Java priorities to OS priorities") \
328990075Sobrien  product(intx, JavaPriority4_To_OSPriority, -1, "Map Java priorities to OS priorities") \
329090075Sobrien  product(intx, JavaPriority5_To_OSPriority, -1, "Map Java priorities to OS priorities") \
329190075Sobrien  product(intx, JavaPriority6_To_OSPriority, -1, "Map Java priorities to OS priorities") \
329290075Sobrien  product(intx, JavaPriority7_To_OSPriority, -1, "Map Java priorities to OS priorities") \
329390075Sobrien  product(intx, JavaPriority8_To_OSPriority, -1, "Map Java priorities to OS priorities") \
329490075Sobrien  product(intx, JavaPriority9_To_OSPriority, -1, "Map Java priorities to OS priorities") \
329590075Sobrien  product(intx, JavaPriority10_To_OSPriority,-1, "Map Java priorities to OS priorities") \
329690075Sobrien                                                                            \
3297169689Skan  experimental(bool, UseCriticalJavaThreadPriority, false,                  \
329890075Sobrien          "Java thread priority 10 maps to critical scheduling priority")   \
329990075Sobrien                                                                            \
330090075Sobrien  experimental(bool, UseCriticalCompilerThreadPriority, false,              \
330190075Sobrien          "Compiler thread(s) run at critical scheduling priority")         \
330290075Sobrien                                                                            \
330390075Sobrien  experimental(bool, UseCriticalCMSThreadPriority, false,                   \
330490075Sobrien          "ConcurrentMarkSweep thread runs at critical scheduling priority")\
3305169689Skan                                                                            \
3306169689Skan  /* compiler debugging */                                                  \
330790075Sobrien  notproduct(intx, CompileTheWorldStartAt,     1,                           \
330890075Sobrien          "First class to consider when using +CompileTheWorld")            \
330990075Sobrien                                                                            \
331090075Sobrien  notproduct(intx, CompileTheWorldStopAt, max_jint,                         \
331190075Sobrien          "Last class to consider when using +CompileTheWorld")             \
331290075Sobrien                                                                            \
331390075Sobrien  develop(intx, NewCodeParameter,      0,                                   \
331490075Sobrien          "Testing Only: Create a dedicated integer parameter before "      \
331590075Sobrien          "putback")                                                        \
331690075Sobrien                                                                            \
331790075Sobrien  /* new oopmap storage allocation */                                       \
331890075Sobrien  develop(intx, MinOopMapAllocation,     8,                                 \
331990075Sobrien          "Minimum number of OopMap entries in an OopMapSet")               \
332090075Sobrien                                                                            \
332190075Sobrien  /* Background Compilation */                                              \
3322132718Skan  develop(intx, LongCompileThreshold,     50,                               \
3323132718Skan          "Used with +TraceLongCompiles")                                   \
3324132718Skan                                                                            \
3325169689Skan  product(intx, StarvationMonitorInterval,    200,                          \
332690075Sobrien          "Pause between each check in ms")                                 \
332790075Sobrien                                                                            \
332890075Sobrien  /* recompilation */                                                       \
332990075Sobrien  product_pd(intx, CompileThreshold,                                        \
333090075Sobrien          "number of interpreted method invocations before (re-)compiling") \
333190075Sobrien                                                                            \
333290075Sobrien  product_pd(intx, BackEdgeThreshold,                                       \
333390075Sobrien          "Interpreter Back edge threshold at which an OSR compilation is invoked")\
333490075Sobrien                                                                            \
333590075Sobrien  product(intx, Tier0InvokeNotifyFreqLog, 7,                                \
333690075Sobrien          "Interpreter (tier 0) invocation notification frequency.")        \
333790075Sobrien                                                                            \
333890075Sobrien  product(intx, Tier2InvokeNotifyFreqLog, 11,                               \
333990075Sobrien          "C1 without MDO (tier 2) invocation notification frequency.")     \
334090075Sobrien                                                                            \
334190075Sobrien  product(intx, Tier3InvokeNotifyFreqLog, 10,                               \
334290075Sobrien          "C1 with MDO profiling (tier 3) invocation notification "         \
334390075Sobrien          "frequency.")                                                     \
334490075Sobrien                                                                            \
334590075Sobrien  product(intx, Tier23InlineeNotifyFreqLog, 20,                             \
334690075Sobrien          "Inlinee invocation (tiers 2 and 3) notification frequency")      \
334790075Sobrien                                                                            \
334890075Sobrien  product(intx, Tier0BackedgeNotifyFreqLog, 10,                             \
334990075Sobrien          "Interpreter (tier 0) invocation notification frequency.")        \
335090075Sobrien                                                                            \
335190075Sobrien  product(intx, Tier2BackedgeNotifyFreqLog, 14,                             \
335290075Sobrien          "C1 without MDO (tier 2) invocation notification frequency.")     \
335390075Sobrien                                                                            \
335490075Sobrien  product(intx, Tier3BackedgeNotifyFreqLog, 13,                             \
335590075Sobrien          "C1 with MDO profiling (tier 3) invocation notification "         \
335690075Sobrien          "frequency.")                                                     \
335790075Sobrien                                                                            \
335890075Sobrien  product(intx, Tier2CompileThreshold, 0,                                   \
335990075Sobrien          "threshold at which tier 2 compilation is invoked")               \
336090075Sobrien                                                                            \
336190075Sobrien  product(intx, Tier2BackEdgeThreshold, 0,                                  \
336290075Sobrien          "Back edge threshold at which tier 2 compilation is invoked")     \
336390075Sobrien                                                                            \
336490075Sobrien  product(intx, Tier3InvocationThreshold, 200,                              \
336590075Sobrien          "Compile if number of method invocations crosses this "           \
336690075Sobrien          "threshold")                                                      \
336790075Sobrien                                                                            \
336890075Sobrien  product(intx, Tier3MinInvocationThreshold, 100,                           \
336990075Sobrien          "Minimum invocation to compile at tier 3")                        \
337090075Sobrien                                                                            \
337190075Sobrien  product(intx, Tier3CompileThreshold, 2000,                                \
337290075Sobrien          "Threshold at which tier 3 compilation is invoked (invocation "   \
337390075Sobrien          "minimum must be satisfied.")                                     \
337490075Sobrien                                                                            \
337590075Sobrien  product(intx, Tier3BackEdgeThreshold,  60000,                             \
337690075Sobrien          "Back edge threshold at which tier 3 OSR compilation is invoked") \
337790075Sobrien                                                                            \
337890075Sobrien  product(intx, Tier4InvocationThreshold, 5000,                             \
337990075Sobrien          "Compile if number of method invocations crosses this "           \
338090075Sobrien          "threshold")                                                      \
338190075Sobrien                                                                            \
338290075Sobrien  product(intx, Tier4MinInvocationThreshold, 600,                           \
338390075Sobrien          "Minimum invocation to compile at tier 4")                        \
338490075Sobrien                                                                            \
338590075Sobrien  product(intx, Tier4CompileThreshold, 15000,                               \
338690075Sobrien          "Threshold at which tier 4 compilation is invoked (invocation "   \
338790075Sobrien          "minimum must be satisfied.")                                     \
338890075Sobrien                                                                            \
338990075Sobrien  product(intx, Tier4BackEdgeThreshold, 40000,                              \
339090075Sobrien          "Back edge threshold at which tier 4 OSR compilation is invoked") \
339190075Sobrien                                                                            \
339290075Sobrien  product(intx, Tier3DelayOn, 5,                                            \
339390075Sobrien          "If C2 queue size grows over this amount per compiler thread "    \
3394117395Skan          "stop compiling at tier 3 and start compiling at tier 2")         \
3395117395Skan                                                                            \
3396169689Skan  product(intx, Tier3DelayOff, 2,                                           \
3397169689Skan          "If C2 queue size is less than this amount per compiler thread "  \
3398169689Skan          "allow methods compiled at tier 2 transition to tier 3")          \
3399169689Skan                                                                            \
3400169689Skan  product(intx, Tier3LoadFeedback, 5,                                       \
3401169689Skan          "Tier 3 thresholds will increase twofold when C1 queue size "     \
3402169689Skan          "reaches this amount per compiler thread")                        \
3403169689Skan                                                                            \
3404169689Skan  product(intx, Tier4LoadFeedback, 3,                                       \
3405117395Skan          "Tier 4 thresholds will increase twofold when C2 queue size "     \
3406117395Skan          "reaches this amount per compiler thread")                        \
340790075Sobrien                                                                            \
340890075Sobrien  product(intx, TieredCompileTaskTimeout, 50,                               \
340990075Sobrien          "Kill compile task if method was not used within "                \
341090075Sobrien          "given timeout in milliseconds")                                  \
341190075Sobrien                                                                            \
341290075Sobrien  product(intx, TieredStopAtLevel, 4,                                       \
341390075Sobrien          "Stop at given compilation level")                                \
341490075Sobrien                                                                            \
341590075Sobrien  product(intx, Tier0ProfilingStartPercentage, 200,                         \
3416132718Skan          "Start profiling in interpreter if the counters exceed tier 3"    \
341790075Sobrien          "thresholds by the specified percentage")                         \
341890075Sobrien                                                                            \
341990075Sobrien  product(intx, TieredRateUpdateMinTime, 1,                                 \
342090075Sobrien          "Minimum rate sampling interval (in milliseconds)")               \
342190075Sobrien                                                                            \
342290075Sobrien  product(intx, TieredRateUpdateMaxTime, 25,                                \
342390075Sobrien          "Maximum rate sampling interval (in milliseconds)")               \
342490075Sobrien                                                                            \
342590075Sobrien  product_pd(bool, TieredCompilation,                                       \
342690075Sobrien          "Enable tiered compilation")                                      \
342790075Sobrien                                                                            \
342890075Sobrien  product(bool, PrintTieredEvents, false,                                   \
342990075Sobrien          "Print tiered events notifications")                              \
343090075Sobrien                                                                            \
343190075Sobrien  product_pd(intx, OnStackReplacePercentage,                                \
343290075Sobrien          "NON_TIERED number of method invocations/branches (expressed as %"\
3433132718Skan          "of CompileThreshold) before (re-)compiling OSR code")            \
343490075Sobrien                                                                            \
343590075Sobrien  product(intx, InterpreterProfilePercentage, 33,                           \
343690075Sobrien          "NON_TIERED number of method invocations/branches (expressed as %"\
343790075Sobrien          "of CompileThreshold) before profiling in the interpreter")       \
343890075Sobrien                                                                            \
343990075Sobrien  develop(intx, MaxRecompilationSearchLength,    10,                        \
344090075Sobrien          "max. # frames to inspect searching for recompilee")              \
344190075Sobrien                                                                            \
344290075Sobrien  develop(intx, MaxInterpretedSearchLength,     3,                          \
344390075Sobrien          "max. # interp. frames to skip when searching for recompilee")    \
344490075Sobrien                                                                            \
344590075Sobrien  develop(intx, DesiredMethodLimit,  8000,                                  \
344690075Sobrien          "desired max. method size (in bytecodes) after inlining")         \
3447169689Skan                                                                            \
3448169689Skan  develop(intx, HugeMethodLimit,  8000,                                     \
3449169689Skan          "don't compile methods larger than this if "                      \
345090075Sobrien          "+DontCompileHugeMethods")                                        \
345190075Sobrien                                                                            \
3452169689Skan  /* New JDK 1.4 reflection implementation */                               \
345390075Sobrien                                                                            \
345490075Sobrien  develop(bool, UseNewReflection, true,                                     \
345590075Sobrien          "Temporary flag for transition to reflection based on dynamic "   \
3456169689Skan          "bytecode generation in 1.4; can no longer be turned off in 1.4 " \
345790075Sobrien          "JDK, and is unneeded in 1.3 JDK, but marks most places VM "      \
3458169689Skan          "changes were needed")                                            \
345990075Sobrien                                                                            \
3460169689Skan  develop(bool, VerifyReflectionBytecodes, false,                           \
3461169689Skan          "Force verification of 1.4 reflection bytecodes. Does not work "  \
3462169689Skan          "in situations like that described in 4486457 or for "            \
3463169689Skan          "constructors generated for serialization, so can not be enabled "\
3464169689Skan          "in product.")                                                    \
3465169689Skan                                                                            \
3466169689Skan  product(bool, ReflectionWrapResolutionErrors, true,                       \
3467169689Skan          "Temporary flag for transition to AbstractMethodError wrapped "   \
3468169689Skan          "in InvocationTargetException. See 6531596")                      \
346990075Sobrien                                                                            \
3470169689Skan                                                                            \
3471169689Skan  develop(intx, FastSuperclassLimit, 8,                                     \
3472169689Skan          "Depth of hardwired instanceof accelerator array")                \
3473169689Skan                                                                            \
3474169689Skan  /* Properties for Java libraries  */                                      \
3475169689Skan                                                                            \
3476169689Skan  product(uintx, MaxDirectMemorySize, 0,                                    \
3477169689Skan          "Maximum total size of NIO direct-buffer allocations")            \
3478169689Skan                                                                            \
3479169689Skan  /* temporary developer defined flags  */                                  \
348090075Sobrien                                                                            \
348190075Sobrien  diagnostic(bool, UseNewCode, false,                                       \
348290075Sobrien          "Testing Only: Use the new version while testing")                \
3483169689Skan                                                                            \
3484169689Skan  diagnostic(bool, UseNewCode2, false,                                      \
3485169689Skan          "Testing Only: Use the new version while testing")                \
3486169689Skan                                                                            \
3487169689Skan  diagnostic(bool, UseNewCode3, false,                                      \
3488169689Skan          "Testing Only: Use the new version while testing")                \
3489169689Skan                                                                            \
3490169689Skan  /* flags for performance data collection */                               \
3491169689Skan                                                                            \
349290075Sobrien  product(bool, UsePerfData, falseInEmbedded,                               \
349390075Sobrien          "Flag to disable jvmstat instrumentation for performance testing" \
349490075Sobrien          "and problem isolation purposes.")                                \
349590075Sobrien                                                                            \
349690075Sobrien  product(bool, PerfDataSaveToFile, false,                                  \
349790075Sobrien          "Save PerfData memory to hsperfdata_<pid> file on exit")          \
349890075Sobrien                                                                            \
349990075Sobrien  product(ccstr, PerfDataSaveFile, NULL,                                    \
350090075Sobrien          "Save PerfData memory to the specified absolute pathname,"        \
3501132718Skan           "%p in the file name if present will be replaced by pid")        \
350290075Sobrien                                                                            \
350390075Sobrien  product(intx, PerfDataSamplingInterval, 50 /*ms*/,                        \
350490075Sobrien          "Data sampling interval in milliseconds")                         \
350590075Sobrien                                                                            \
350690075Sobrien  develop(bool, PerfTraceDataCreation, false,                               \
350790075Sobrien          "Trace creation of Performance Data Entries")                     \
350890075Sobrien                                                                            \
350990075Sobrien  develop(bool, PerfTraceMemOps, false,                                     \
351090075Sobrien          "Trace PerfMemory create/attach/detach calls")                    \
351190075Sobrien                                                                            \
351290075Sobrien  product(bool, PerfDisableSharedMem, false,                                \
351390075Sobrien          "Store performance data in standard memory")                      \
351490075Sobrien                                                                            \
351590075Sobrien  product(intx, PerfDataMemorySize, 32*K,                                   \
351690075Sobrien          "Size of performance data memory region. Will be rounded "        \
351790075Sobrien          "up to a multiple of the native os page size.")                   \
351890075Sobrien                                                                            \
351990075Sobrien  product(intx, PerfMaxStringConstLength, 1024,                             \
352090075Sobrien          "Maximum PerfStringConstant string length before truncation")     \
352190075Sobrien                                                                            \
352290075Sobrien  product(bool, PerfAllowAtExitRegistration, false,                         \
352390075Sobrien          "Allow registration of atexit() methods")                         \
352490075Sobrien                                                                            \
352590075Sobrien  product(bool, PerfBypassFileSystemCheck, false,                           \
352690075Sobrien          "Bypass Win32 file system criteria checks (Windows Only)")        \
352790075Sobrien                                                                            \
352890075Sobrien  product(intx, UnguardOnExecutionViolation, 0,                             \
352990075Sobrien          "Unguard page and retry on no-execute fault (Win32 only)"         \
353090075Sobrien          "0=off, 1=conservative, 2=aggressive")                            \
353190075Sobrien                                                                            \
353290075Sobrien  /* Serviceability Support */                                              \
353390075Sobrien                                                                            \
353490075Sobrien  product(bool, ManagementServer, false,                                    \
353590075Sobrien          "Create JMX Management Server")                                   \
353690075Sobrien                                                                            \
353790075Sobrien  product(bool, DisableAttachMechanism, false,                              \
353890075Sobrien         "Disable mechanism that allows tools to attach to this VM")        \
353990075Sobrien                                                                            \
354090075Sobrien  product(bool, StartAttachListener, false,                                 \
354190075Sobrien          "Always start Attach Listener at VM startup")                     \
354290075Sobrien                                                                            \
354390075Sobrien  manageable(bool, PrintConcurrentLocks, false,                             \
354490075Sobrien          "Print java.util.concurrent locks in thread dump")                \
354590075Sobrien                                                                            \
354690075Sobrien  product(bool, TransmitErrorReport, false,                                 \
354790075Sobrien          "Enable error report transmission on erroneous termination")      \
354890075Sobrien                                                                            \
354990075Sobrien  product(ccstr, ErrorReportServer, NULL,                                   \
355090075Sobrien          "Override built-in error report server address")                  \
355190075Sobrien                                                                            \
355290075Sobrien  /* Shared spaces */                                                       \
355390075Sobrien                                                                            \
355490075Sobrien  product(bool, UseSharedSpaces, true,                                      \
355590075Sobrien          "Use shared spaces for metadata")                                 \
355690075Sobrien                                                                            \
355790075Sobrien  product(bool, RequireSharedSpaces, false,                                 \
355890075Sobrien          "Require shared spaces for metadata")                             \
355990075Sobrien                                                                            \
356090075Sobrien  product(bool, DumpSharedSpaces, false,                                    \
356190075Sobrien           "Special mode: JVM reads a class list, loads classes, builds "   \
356290075Sobrien            "shared spaces, and dumps the shared spaces to a file to be "   \
356390075Sobrien            "used in future JVM runs.")                                     \
356490075Sobrien                                                                            \
356590075Sobrien  product(bool, PrintSharedSpaces, false,                                   \
356690075Sobrien          "Print usage of shared spaces")                                   \
356790075Sobrien                                                                            \
356890075Sobrien  product(uintx, SharedReadWriteSize,  NOT_LP64(12*M) LP64_ONLY(16*M),      \
356990075Sobrien          "Size of read-write space for metadata (in bytes)")               \
357090075Sobrien                                                                            \
357190075Sobrien  product(uintx, SharedReadOnlySize,  NOT_LP64(12*M) LP64_ONLY(16*M),       \
357290075Sobrien          "Size of read-only space for metadata (in bytes)")                \
357390075Sobrien                                                                            \
357490075Sobrien  product(uintx, SharedMiscDataSize,    NOT_LP64(2*M) LP64_ONLY(4*M),       \
357590075Sobrien          "Size of the shared miscellaneous data area (in bytes)")          \
357690075Sobrien                                                                            \
357790075Sobrien  product(uintx, SharedMiscCodeSize,    120*K,                              \
357890075Sobrien          "Size of the shared miscellaneous code area (in bytes)")          \
357990075Sobrien                                                                            \
358090075Sobrien  product(uintx, SharedDummyBlockSize, 0,                                   \
358190075Sobrien          "Size of dummy block used to shift heap addresses (in bytes)")    \
358290075Sobrien                                                                            \
358390075Sobrien  diagnostic(bool, EnableInvokeDynamic, true,                               \
358490075Sobrien          "support JSR 292 (method handles, invokedynamic, "                \
358590075Sobrien          "anonymous classes")                                              \
358690075Sobrien                                                                            \
358790075Sobrien  diagnostic(bool, PrintMethodHandleStubs, false,                           \
358890075Sobrien          "Print generated stub code for method handles")                   \
358990075Sobrien                                                                            \
359090075Sobrien  develop(bool, TraceMethodHandles, false,                                  \
359190075Sobrien          "trace internal method handle operations")                        \
359290075Sobrien                                                                            \
359390075Sobrien  diagnostic(bool, VerifyMethodHandles, trueInDebug,                        \
359490075Sobrien          "perform extra checks when constructing method handles")          \
359590075Sobrien                                                                            \
359690075Sobrien  diagnostic(bool, ShowHiddenFrames, false,                                 \
359790075Sobrien          "show method handle implementation frames (usually hidden)")      \
3598169689Skan                                                                            \
359990075Sobrien  experimental(bool, TrustFinalNonStaticFields, false,                      \
360090075Sobrien          "trust final non-static declarations for constant folding")       \
360190075Sobrien                                                                            \
360290075Sobrien  develop(bool, TraceInvokeDynamic, false,                                  \
360390075Sobrien          "trace internal invoke dynamic operations")                       \
360490075Sobrien                                                                            \
360590075Sobrien  diagnostic(bool, PauseAtStartup,      false,                              \
360690075Sobrien          "Causes the VM to pause at startup time and wait for the pause "  \
360790075Sobrien          "file to be removed (default: ./vm.paused.<pid>)")                \
360890075Sobrien                                                                            \
3609132718Skan  diagnostic(ccstr, PauseAtStartupFile, NULL,                               \
361090075Sobrien          "The file to create and for whose removal to await when pausing " \
3611132718Skan          "at startup. (default: ./vm.paused.<pid>)")                       \
3612132718Skan                                                                            \
3613132718Skan  diagnostic(bool, PauseAtExit, false,                                      \
3614132718Skan          "Pause and wait for keypress on exit if a debugger is attached")  \
3615132718Skan                                                                            \
3616132718Skan  product(bool, ExtendedDTraceProbes,    false,                             \
3617132718Skan          "Enable performance-impacting dtrace probes")                     \
3618132718Skan                                                                            \
3619132718Skan  product(bool, DTraceMethodProbes, false,                                  \
3620132718Skan          "Enable dtrace probes for method-entry and method-exit")          \
3621169689Skan                                                                            \
3622169689Skan  product(bool, DTraceAllocProbes, false,                                   \
3623132718Skan          "Enable dtrace probes for object allocation")                     \
3624169689Skan                                                                            \
3625169689Skan  product(bool, DTraceMonitorProbes, false,                                 \
3626169689Skan          "Enable dtrace probes for monitor events")                        \
362790075Sobrien                                                                            \
362890075Sobrien  product(bool, RelaxAccessControlCheck, false,                             \
362990075Sobrien          "Relax the access control checks in the verifier")                \
3630117395Skan                                                                            \
363190075Sobrien  diagnostic(bool, PrintDTraceDOF, false,                                   \
363290075Sobrien             "Print the DTrace DOF passed to the system for JSDT probes")   \
363390075Sobrien                                                                            \
363490075Sobrien  product(uintx, StringTableSize, defaultStringTableSize,                   \
363590075Sobrien          "Number of buckets in the interned String table")                 \
363690075Sobrien                                                                            \
363790075Sobrien  develop(bool, TraceDefaultMethods, false,                                 \
363890075Sobrien          "Trace the default method processing steps")                      \
363990075Sobrien                                                                            \
364090075Sobrien  develop(bool, ParseAllGenericSignatures, false,                           \
364190075Sobrien          "Parse all generic signatures while classloading")                \
364290075Sobrien                                                                            \
3643117395Skan  develop(bool, VerifyGenericSignatures, false,                             \
364490075Sobrien          "Abort VM on erroneous or inconsistent generic signatures")       \
3645169689Skan                                                                            \
364690075Sobrien  product(bool, UseVMInterruptibleIO, false,                                \
364790075Sobrien          "(Unstable, Solaris-specific) Thread interrupt before or with "   \
364890075Sobrien          "EINTR for I/O operations results in OS_INTRPT. The default value"\
3649169689Skan          " of this flag is true for JDK 6 and earlier")                    \
3650169689Skan                                                                            \
365190075Sobrien  diagnostic(bool, WhiteBoxAPI, false,                                      \
365290075Sobrien          "Enable internal testing APIs")                                   \
365390075Sobrien                                                                            \
365490075Sobrien  product(bool, PrintGCCause, true,                                         \
365590075Sobrien          "Include GC cause in GC logging")                                 \
3656132718Skan                                                                            \
3657169689Skan  product(bool, AllowNonVirtualCalls, false,                                \
3658169689Skan          "Obey the ACC_SUPER flag and allow invokenonvirtual calls")
3659169689Skan
3660169689Skan/*
366190075Sobrien *  Macros for factoring of globals
3662132718Skan */
366390075Sobrien
366490075Sobrien// Interface macros
366590075Sobrien#define DECLARE_PRODUCT_FLAG(type, name, value, doc)    extern "C" type name;
366690075Sobrien#define DECLARE_PD_PRODUCT_FLAG(type, name, doc)        extern "C" type name;
366790075Sobrien#define DECLARE_DIAGNOSTIC_FLAG(type, name, value, doc) extern "C" type name;
366890075Sobrien#define DECLARE_EXPERIMENTAL_FLAG(type, name, value, doc) extern "C" type name;
366990075Sobrien#define DECLARE_MANAGEABLE_FLAG(type, name, value, doc) extern "C" type name;
367090075Sobrien#define DECLARE_PRODUCT_RW_FLAG(type, name, value, doc) extern "C" type name;
367190075Sobrien#ifdef PRODUCT
367290075Sobrien#define DECLARE_DEVELOPER_FLAG(type, name, value, doc)  const type name = value;
367390075Sobrien#define DECLARE_PD_DEVELOPER_FLAG(type, name, doc)      const type name = pd_##name;
367490075Sobrien#define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc)
367590075Sobrien#else
367690075Sobrien#define DECLARE_DEVELOPER_FLAG(type, name, value, doc)  extern "C" type name;
367790075Sobrien#define DECLARE_PD_DEVELOPER_FLAG(type, name, doc)      extern "C" type name;
367890075Sobrien#define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc)  extern "C" type name;
367990075Sobrien#endif
368090075Sobrien// Special LP64 flags, product only needed for now.
368190075Sobrien#ifdef _LP64
368290075Sobrien#define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) extern "C" type name;
368390075Sobrien#else
368490075Sobrien#define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) const type name = value;
368590075Sobrien#endif // _LP64
368690075Sobrien
368790075Sobrien// Implementation macros
368890075Sobrien#define MATERIALIZE_PRODUCT_FLAG(type, name, value, doc)   type name = value;
368990075Sobrien#define MATERIALIZE_PD_PRODUCT_FLAG(type, name, doc)       type name = pd_##name;
369090075Sobrien#define MATERIALIZE_DIAGNOSTIC_FLAG(type, name, value, doc) type name = value;
3691132718Skan#define MATERIALIZE_EXPERIMENTAL_FLAG(type, name, value, doc) type name = value;
369290075Sobrien#define MATERIALIZE_MANAGEABLE_FLAG(type, name, value, doc) type name = value;
369390075Sobrien#define MATERIALIZE_PRODUCT_RW_FLAG(type, name, value, doc) type name = value;
369490075Sobrien#ifdef PRODUCT
369590075Sobrien#define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc) /* flag name is constant */
369690075Sobrien#define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc)     /* flag name is constant */
369790075Sobrien#define MATERIALIZE_NOTPRODUCT_FLAG(type, name, value, doc)
369890075Sobrien#else
369990075Sobrien#define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc) type name = value;
3700132718Skan#define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc)     type name = pd_##name;
370190075Sobrien#define MATERIALIZE_NOTPRODUCT_FLAG(type, name, value, doc) type name = value;
370290075Sobrien#endif
370390075Sobrien#ifdef _LP64
370490075Sobrien#define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc)   type name = value;
370590075Sobrien#else
370690075Sobrien#define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc) /* flag is constant */
370790075Sobrien#endif // _LP64
370850397Sobrien
370950397SobrienRUNTIME_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)
371050397Sobrien
371150397SobrienRUNTIME_OS_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_NOTPRODUCT_FLAG)
3712132718Skan
371350397SobrienARCH_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_EXPERIMENTAL_FLAG, DECLARE_NOTPRODUCT_FLAG)
371450397Sobrien
371550397Sobrien// Extensions
371650397Sobrien
371750397Sobrien#include "runtime/globals_ext.hpp"
371850397Sobrien
3719169689Skan#endif // SHARE_VM_RUNTIME_GLOBALS_HPP
3720169689Skan