hotspot/src/share/vm/runtime/globals.hpp
author ysr
Mon, 16 Aug 2010 15:58:42 -0700
changeset 6258 68f252c6e825
parent 6255 0cbe4eb819f0
child 6419 6b7a06ace8ab
permissions -rw-r--r--
6948538: CMS: BOT walkers can fall into object allocation and initialization cracks Summary: GC workers now recognize an intermediate transient state of blocks which are allocated but have not yet completed initialization. blk_start() calls do not attempt to determine the size of a block in the transient state, rather waiting for the block to become initialized so that it is safe to query its size. Audited and ensured the order of initialization of object fields (klass, free bit and size) to respect block state transition protocol. Also included some new assertion checking code enabled in debug mode. Reviewed-by: chrisphi, johnc, poonam
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
     1
/*
5547
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 5539
diff changeset
     2
 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     4
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
489c9b5090e2 Initial load
duke
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
489c9b5090e2 Initial load
duke
parents:
diff changeset
     7
 * published by the Free Software Foundation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     8
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
489c9b5090e2 Initial load
duke
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
489c9b5090e2 Initial load
duke
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
489c9b5090e2 Initial load
duke
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
489c9b5090e2 Initial load
duke
parents:
diff changeset
    13
 * accompanied this code).
489c9b5090e2 Initial load
duke
parents:
diff changeset
    14
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
489c9b5090e2 Initial load
duke
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    18
 *
5547
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 5539
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 5539
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 5539
diff changeset
    21
 * questions.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    22
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
    23
 */
489c9b5090e2 Initial load
duke
parents:
diff changeset
    24
6187
4fa7845f7c14 6976186: integrate Shark HotSpot changes
twisti
parents: 6184
diff changeset
    25
#if !defined(COMPILER1) && !defined(COMPILER2) && !defined(SHARK)
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    26
define_pd_global(bool, BackgroundCompilation,        false);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    27
define_pd_global(bool, UseTLAB,                      false);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    28
define_pd_global(bool, CICompileOSR,                 false);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    29
define_pd_global(bool, UseTypeProfile,               false);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    30
define_pd_global(bool, UseOnStackReplacement,        false);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    31
define_pd_global(bool, InlineIntrinsics,             false);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    32
define_pd_global(bool, PreferInterpreterNativeStubs, true);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    33
define_pd_global(bool, ProfileInterpreter,           false);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    34
define_pd_global(bool, ProfileTraps,                 false);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    35
define_pd_global(bool, TieredCompilation,            false);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    36
489c9b5090e2 Initial load
duke
parents:
diff changeset
    37
define_pd_global(intx, CompileThreshold,             0);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    38
define_pd_global(intx, Tier2CompileThreshold,        0);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    39
define_pd_global(intx, Tier3CompileThreshold,        0);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    40
define_pd_global(intx, Tier4CompileThreshold,        0);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    41
489c9b5090e2 Initial load
duke
parents:
diff changeset
    42
define_pd_global(intx, BackEdgeThreshold,            0);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    43
define_pd_global(intx, Tier2BackEdgeThreshold,       0);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    44
define_pd_global(intx, Tier3BackEdgeThreshold,       0);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    45
define_pd_global(intx, Tier4BackEdgeThreshold,       0);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    46
489c9b5090e2 Initial load
duke
parents:
diff changeset
    47
define_pd_global(intx, OnStackReplacePercentage,     0);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    48
define_pd_global(bool, ResizeTLAB,                   false);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    49
define_pd_global(intx, FreqInlineSize,               0);
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
    50
define_pd_global(intx, InlineSmallCode,              0);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    51
define_pd_global(intx, NewSizeThreadIncrease,        4*K);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    52
define_pd_global(intx, InlineClassNatives,           true);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    53
define_pd_global(intx, InlineUnsafeOps,              true);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    54
define_pd_global(intx, InitialCodeCacheSize,         160*K);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    55
define_pd_global(intx, ReservedCodeCacheSize,        32*M);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    56
define_pd_global(intx, CodeCacheExpansionSize,       32*K);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    57
define_pd_global(intx, CodeCacheMinBlockLength,      1);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    58
define_pd_global(uintx,PermSize,    ScaleForWordSize(4*M));
489c9b5090e2 Initial load
duke
parents:
diff changeset
    59
define_pd_global(uintx,MaxPermSize, ScaleForWordSize(64*M));
489c9b5090e2 Initial load
duke
parents:
diff changeset
    60
define_pd_global(bool, NeverActAsServerClassMachine, true);
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
    61
define_pd_global(uint64_t,MaxRAM,                    1ULL*G);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    62
#define CI_COMPILER_COUNT 0
489c9b5090e2 Initial load
duke
parents:
diff changeset
    63
#else
489c9b5090e2 Initial load
duke
parents:
diff changeset
    64
489c9b5090e2 Initial load
duke
parents:
diff changeset
    65
#ifdef COMPILER2
489c9b5090e2 Initial load
duke
parents:
diff changeset
    66
#define CI_COMPILER_COUNT 2
489c9b5090e2 Initial load
duke
parents:
diff changeset
    67
#else
489c9b5090e2 Initial load
duke
parents:
diff changeset
    68
#define CI_COMPILER_COUNT 1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    69
#endif // COMPILER2
489c9b5090e2 Initial load
duke
parents:
diff changeset
    70
489c9b5090e2 Initial load
duke
parents:
diff changeset
    71
#endif // no compilers
489c9b5090e2 Initial load
duke
parents:
diff changeset
    72
489c9b5090e2 Initial load
duke
parents:
diff changeset
    73
489c9b5090e2 Initial load
duke
parents:
diff changeset
    74
// string type aliases used only in this file
489c9b5090e2 Initial load
duke
parents:
diff changeset
    75
typedef const char* ccstr;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    76
typedef const char* ccstrlist;   // represents string arguments which accumulate
489c9b5090e2 Initial load
duke
parents:
diff changeset
    77
489c9b5090e2 Initial load
duke
parents:
diff changeset
    78
enum FlagValueOrigin {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    79
  DEFAULT          = 0,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    80
  COMMAND_LINE     = 1,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    81
  ENVIRON_VAR      = 2,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    82
  CONFIG_FILE      = 3,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    83
  MANAGEMENT       = 4,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    84
  ERGONOMIC        = 5,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    85
  ATTACH_ON_DEMAND = 6,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    86
  INTERNAL         = 99
489c9b5090e2 Initial load
duke
parents:
diff changeset
    87
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
    88
489c9b5090e2 Initial load
duke
parents:
diff changeset
    89
struct Flag {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    90
  const char *type;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    91
  const char *name;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    92
  void*       addr;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    93
  const char *kind;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    94
  FlagValueOrigin origin;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    95
489c9b5090e2 Initial load
duke
parents:
diff changeset
    96
  // points to all Flags static array
489c9b5090e2 Initial load
duke
parents:
diff changeset
    97
  static Flag *flags;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    98
489c9b5090e2 Initial load
duke
parents:
diff changeset
    99
  // number of flags
489c9b5090e2 Initial load
duke
parents:
diff changeset
   100
  static size_t numFlags;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   101
489c9b5090e2 Initial load
duke
parents:
diff changeset
   102
  static Flag* find_flag(char* name, size_t length);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   103
489c9b5090e2 Initial load
duke
parents:
diff changeset
   104
  bool is_bool() const        { return strcmp(type, "bool") == 0; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   105
  bool get_bool() const       { return *((bool*) addr); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   106
  void set_bool(bool value)   { *((bool*) addr) = value; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   107
489c9b5090e2 Initial load
duke
parents:
diff changeset
   108
  bool is_intx()  const       { return strcmp(type, "intx")  == 0; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   109
  intx get_intx() const       { return *((intx*) addr); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   110
  void set_intx(intx value)   { *((intx*) addr) = value; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   111
489c9b5090e2 Initial load
duke
parents:
diff changeset
   112
  bool is_uintx() const       { return strcmp(type, "uintx") == 0; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   113
  uintx get_uintx() const     { return *((uintx*) addr); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   114
  void set_uintx(uintx value) { *((uintx*) addr) = value; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   115
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
   116
  bool is_uint64_t() const          { return strcmp(type, "uint64_t") == 0; }
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
   117
  uint64_t get_uint64_t() const     { return *((uint64_t*) addr); }
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
   118
  void set_uint64_t(uint64_t value) { *((uint64_t*) addr) = value; }
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
   119
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   120
  bool is_double() const        { return strcmp(type, "double") == 0; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   121
  double get_double() const     { return *((double*) addr); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   122
  void set_double(double value) { *((double*) addr) = value; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   123
489c9b5090e2 Initial load
duke
parents:
diff changeset
   124
  bool is_ccstr() const          { return strcmp(type, "ccstr") == 0 || strcmp(type, "ccstrlist") == 0; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   125
  bool ccstr_accumulates() const { return strcmp(type, "ccstrlist") == 0; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   126
  ccstr get_ccstr() const     { return *((ccstr*) addr); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   127
  void set_ccstr(ccstr value) { *((ccstr*) addr) = value; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   128
489c9b5090e2 Initial load
duke
parents:
diff changeset
   129
  bool is_unlocker() const;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   130
  bool is_unlocked() const;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   131
  bool is_writeable() const;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   132
  bool is_external() const;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   133
489c9b5090e2 Initial load
duke
parents:
diff changeset
   134
  void print_on(outputStream* st);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   135
  void print_as_flag(outputStream* st);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   136
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
   137
489c9b5090e2 Initial load
duke
parents:
diff changeset
   138
// debug flags control various aspects of the VM and are global accessible
489c9b5090e2 Initial load
duke
parents:
diff changeset
   139
489c9b5090e2 Initial load
duke
parents:
diff changeset
   140
// use FlagSetting to temporarily change some debug flag
489c9b5090e2 Initial load
duke
parents:
diff changeset
   141
// e.g. FlagSetting fs(DebugThisAndThat, true);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   142
// restored to previous value upon leaving scope
489c9b5090e2 Initial load
duke
parents:
diff changeset
   143
class FlagSetting {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   144
  bool val;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   145
  bool* flag;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   146
 public:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   147
  FlagSetting(bool& fl, bool newValue) { flag = &fl; val = fl; fl = newValue; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   148
  ~FlagSetting()                       { *flag = val; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   149
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
   150
489c9b5090e2 Initial load
duke
parents:
diff changeset
   151
489c9b5090e2 Initial load
duke
parents:
diff changeset
   152
class CounterSetting {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   153
  intx* counter;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   154
 public:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   155
  CounterSetting(intx* cnt) { counter = cnt; (*counter)++; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   156
  ~CounterSetting()         { (*counter)--; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   157
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
   158
489c9b5090e2 Initial load
duke
parents:
diff changeset
   159
489c9b5090e2 Initial load
duke
parents:
diff changeset
   160
class IntFlagSetting {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   161
  intx val;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   162
  intx* flag;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   163
 public:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   164
  IntFlagSetting(intx& fl, intx newValue) { flag = &fl; val = fl; fl = newValue; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   165
  ~IntFlagSetting()                       { *flag = val; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   166
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
   167
489c9b5090e2 Initial load
duke
parents:
diff changeset
   168
489c9b5090e2 Initial load
duke
parents:
diff changeset
   169
class DoubleFlagSetting {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   170
  double val;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   171
  double* flag;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   172
 public:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   173
  DoubleFlagSetting(double& fl, double newValue) { flag = &fl; val = fl; fl = newValue; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   174
  ~DoubleFlagSetting()                           { *flag = val; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   175
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
   176
489c9b5090e2 Initial load
duke
parents:
diff changeset
   177
489c9b5090e2 Initial load
duke
parents:
diff changeset
   178
class CommandLineFlags {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   179
 public:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   180
  static bool boolAt(char* name, size_t len, bool* value);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   181
  static bool boolAt(char* name, bool* value)      { return boolAt(name, strlen(name), value); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   182
  static bool boolAtPut(char* name, size_t len, bool* value, FlagValueOrigin origin);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   183
  static bool boolAtPut(char* name, bool* value, FlagValueOrigin origin)   { return boolAtPut(name, strlen(name), value, origin); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   184
489c9b5090e2 Initial load
duke
parents:
diff changeset
   185
  static bool intxAt(char* name, size_t len, intx* value);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   186
  static bool intxAt(char* name, intx* value)      { return intxAt(name, strlen(name), value); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   187
  static bool intxAtPut(char* name, size_t len, intx* value, FlagValueOrigin origin);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   188
  static bool intxAtPut(char* name, intx* value, FlagValueOrigin origin)   { return intxAtPut(name, strlen(name), value, origin); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   189
489c9b5090e2 Initial load
duke
parents:
diff changeset
   190
  static bool uintxAt(char* name, size_t len, uintx* value);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   191
  static bool uintxAt(char* name, uintx* value)    { return uintxAt(name, strlen(name), value); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   192
  static bool uintxAtPut(char* name, size_t len, uintx* value, FlagValueOrigin origin);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   193
  static bool uintxAtPut(char* name, uintx* value, FlagValueOrigin origin) { return uintxAtPut(name, strlen(name), value, origin); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   194
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
   195
  static bool uint64_tAt(char* name, size_t len, uint64_t* value);
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
   196
  static bool uint64_tAt(char* name, uint64_t* value) { return uint64_tAt(name, strlen(name), value); }
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
   197
  static bool uint64_tAtPut(char* name, size_t len, uint64_t* value, FlagValueOrigin origin);
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
   198
  static bool uint64_tAtPut(char* name, uint64_t* value, FlagValueOrigin origin) { return uint64_tAtPut(name, strlen(name), value, origin); }
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
   199
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   200
  static bool doubleAt(char* name, size_t len, double* value);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   201
  static bool doubleAt(char* name, double* value)    { return doubleAt(name, strlen(name), value); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   202
  static bool doubleAtPut(char* name, size_t len, double* value, FlagValueOrigin origin);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   203
  static bool doubleAtPut(char* name, double* value, FlagValueOrigin origin) { return doubleAtPut(name, strlen(name), value, origin); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   204
489c9b5090e2 Initial load
duke
parents:
diff changeset
   205
  static bool ccstrAt(char* name, size_t len, ccstr* value);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   206
  static bool ccstrAt(char* name, ccstr* value)    { return ccstrAt(name, strlen(name), value); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   207
  static bool ccstrAtPut(char* name, size_t len, ccstr* value, FlagValueOrigin origin);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   208
  static bool ccstrAtPut(char* name, ccstr* value, FlagValueOrigin origin) { return ccstrAtPut(name, strlen(name), value, origin); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   209
489c9b5090e2 Initial load
duke
parents:
diff changeset
   210
  // Returns false if name is not a command line flag.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   211
  static bool wasSetOnCmdline(const char* name, bool* value);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   212
  static void printSetFlags();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   213
4579
62478db2dc78 6914622: Print values of all flags for product VM
kvn
parents: 4489
diff changeset
   214
  static void printFlags();
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   215
489c9b5090e2 Initial load
duke
parents:
diff changeset
   216
  static void verify() PRODUCT_RETURN;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   217
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
   218
489c9b5090e2 Initial load
duke
parents:
diff changeset
   219
// use this for flags that are true by default in the debug version but
489c9b5090e2 Initial load
duke
parents:
diff changeset
   220
// false in the optimized version, and vice versa
489c9b5090e2 Initial load
duke
parents:
diff changeset
   221
#ifdef ASSERT
489c9b5090e2 Initial load
duke
parents:
diff changeset
   222
#define trueInDebug  true
489c9b5090e2 Initial load
duke
parents:
diff changeset
   223
#define falseInDebug false
489c9b5090e2 Initial load
duke
parents:
diff changeset
   224
#else
489c9b5090e2 Initial load
duke
parents:
diff changeset
   225
#define trueInDebug  false
489c9b5090e2 Initial load
duke
parents:
diff changeset
   226
#define falseInDebug true
489c9b5090e2 Initial load
duke
parents:
diff changeset
   227
#endif
489c9b5090e2 Initial load
duke
parents:
diff changeset
   228
489c9b5090e2 Initial load
duke
parents:
diff changeset
   229
// use this for flags that are true per default in the product build
489c9b5090e2 Initial load
duke
parents:
diff changeset
   230
// but false in development builds, and vice versa
489c9b5090e2 Initial load
duke
parents:
diff changeset
   231
#ifdef PRODUCT
489c9b5090e2 Initial load
duke
parents:
diff changeset
   232
#define trueInProduct  true
489c9b5090e2 Initial load
duke
parents:
diff changeset
   233
#define falseInProduct false
489c9b5090e2 Initial load
duke
parents:
diff changeset
   234
#else
489c9b5090e2 Initial load
duke
parents:
diff changeset
   235
#define trueInProduct  false
489c9b5090e2 Initial load
duke
parents:
diff changeset
   236
#define falseInProduct true
489c9b5090e2 Initial load
duke
parents:
diff changeset
   237
#endif
489c9b5090e2 Initial load
duke
parents:
diff changeset
   238
489c9b5090e2 Initial load
duke
parents:
diff changeset
   239
// use this for flags that are true per default in the tiered build
489c9b5090e2 Initial load
duke
parents:
diff changeset
   240
// but false in non-tiered builds, and vice versa
489c9b5090e2 Initial load
duke
parents:
diff changeset
   241
#ifdef TIERED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   242
#define  trueInTiered true
489c9b5090e2 Initial load
duke
parents:
diff changeset
   243
#define falseInTiered false
489c9b5090e2 Initial load
duke
parents:
diff changeset
   244
#else
489c9b5090e2 Initial load
duke
parents:
diff changeset
   245
#define  trueInTiered false
489c9b5090e2 Initial load
duke
parents:
diff changeset
   246
#define falseInTiered true
489c9b5090e2 Initial load
duke
parents:
diff changeset
   247
#endif
489c9b5090e2 Initial load
duke
parents:
diff changeset
   248
489c9b5090e2 Initial load
duke
parents:
diff changeset
   249
// develop flags are settable / visible only during development and are constant in the PRODUCT version
489c9b5090e2 Initial load
duke
parents:
diff changeset
   250
// product flags are always settable / visible
489c9b5090e2 Initial load
duke
parents:
diff changeset
   251
// notproduct flags are settable / visible only during development and are not declared in the PRODUCT version
489c9b5090e2 Initial load
duke
parents:
diff changeset
   252
489c9b5090e2 Initial load
duke
parents:
diff changeset
   253
// A flag must be declared with one of the following types:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   254
// bool, intx, uintx, ccstr.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   255
// The type "ccstr" is an alias for "const char*" and is used
489c9b5090e2 Initial load
duke
parents:
diff changeset
   256
// only in this file, because the macrology requires single-token type names.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   257
489c9b5090e2 Initial load
duke
parents:
diff changeset
   258
// Note: Diagnostic options not meant for VM tuning or for product modes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   259
// They are to be used for VM quality assurance or field diagnosis
489c9b5090e2 Initial load
duke
parents:
diff changeset
   260
// of VM bugs.  They are hidden so that users will not be encouraged to
489c9b5090e2 Initial load
duke
parents:
diff changeset
   261
// try them as if they were VM ordinary execution options.  However, they
489c9b5090e2 Initial load
duke
parents:
diff changeset
   262
// are available in the product version of the VM.  Under instruction
489c9b5090e2 Initial load
duke
parents:
diff changeset
   263
// from support engineers, VM customers can turn them on to collect
489c9b5090e2 Initial load
duke
parents:
diff changeset
   264
// diagnostic information about VM problems.  To use a VM diagnostic
489c9b5090e2 Initial load
duke
parents:
diff changeset
   265
// option, you must first specify +UnlockDiagnosticVMOptions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   266
// (This master switch also affects the behavior of -Xprintflags.)
1382
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
   267
//
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
   268
// experimental flags are in support of features that are not
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
   269
//    part of the officially supported product, but are available
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
   270
//    for experimenting with. They could, for example, be performance
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
   271
//    features that may not have undergone full or rigorous QA, but which may
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
   272
//    help performance in some cases and released for experimentation
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
   273
//    by the community of users and developers. This flag also allows one to
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
   274
//    be able to build a fully supported product that nonetheless also
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
   275
//    ships with some unsupported, lightly tested, experimental features.
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
   276
//    Like the UnlockDiagnosticVMOptions flag above, there is a corresponding
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
   277
//    UnlockExperimentalVMOptions flag, which allows the control and
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
   278
//    modification of the experimental flags.
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
   279
//
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   280
// manageable flags are writeable external product flags.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   281
//    They are dynamically writeable through the JDK management interface
489c9b5090e2 Initial load
duke
parents:
diff changeset
   282
//    (com.sun.management.HotSpotDiagnosticMXBean API) and also through JConsole.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   283
//    These flags are external exported interface (see CCC).  The list of
489c9b5090e2 Initial load
duke
parents:
diff changeset
   284
//    manageable flags can be queried programmatically through the management
489c9b5090e2 Initial load
duke
parents:
diff changeset
   285
//    interface.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   286
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
   287
//    A flag can be made as "manageable" only if
489c9b5090e2 Initial load
duke
parents:
diff changeset
   288
//    - the flag is defined in a CCC as an external exported interface.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   289
//    - the VM implementation supports dynamic setting of the flag.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   290
//      This implies that the VM must *always* query the flag variable
489c9b5090e2 Initial load
duke
parents:
diff changeset
   291
//      and not reuse state related to the flag state at any given time.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   292
//    - you want the flag to be queried programmatically by the customers.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   293
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
   294
// product_rw flags are writeable internal product flags.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   295
//    They are like "manageable" flags but for internal/private use.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   296
//    The list of product_rw flags are internal/private flags which
489c9b5090e2 Initial load
duke
parents:
diff changeset
   297
//    may be changed/removed in a future release.  It can be set
489c9b5090e2 Initial load
duke
parents:
diff changeset
   298
//    through the management interface to get/set value
489c9b5090e2 Initial load
duke
parents:
diff changeset
   299
//    when the name of flag is supplied.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   300
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
   301
//    A flag can be made as "product_rw" only if
489c9b5090e2 Initial load
duke
parents:
diff changeset
   302
//    - the VM implementation supports dynamic setting of the flag.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   303
//      This implies that the VM must *always* query the flag variable
489c9b5090e2 Initial load
duke
parents:
diff changeset
   304
//      and not reuse state related to the flag state at any given time.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   305
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
   306
// Note that when there is a need to support develop flags to be writeable,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   307
// it can be done in the same way as product_rw.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   308
1382
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
   309
#define RUNTIME_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct, manageable, product_rw, lp64_product) \
360
21d113ecbf6a 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 356
diff changeset
   310
                                                                            \
21d113ecbf6a 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 356
diff changeset
   311
  lp64_product(bool, UseCompressedOops, false,                              \
21d113ecbf6a 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 356
diff changeset
   312
            "Use 32-bit object references in 64-bit VM. "                   \
21d113ecbf6a 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 356
diff changeset
   313
            "lp64_product means flag is always constant in 32 bit VM")      \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   314
                                                                            \
2254
f13dda645a4b 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 2141
diff changeset
   315
  notproduct(bool, CheckCompressedOops, true,                               \
f13dda645a4b 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 2141
diff changeset
   316
            "generate checks in encoding/decoding code in debug VM")        \
f13dda645a4b 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 2141
diff changeset
   317
                                                                            \
f13dda645a4b 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 2141
diff changeset
   318
  product_pd(uintx, HeapBaseMinAddress,                                     \
f13dda645a4b 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 2141
diff changeset
   319
            "OS specific low limit for heap base address")                  \
f13dda645a4b 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 2141
diff changeset
   320
                                                                            \
f13dda645a4b 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 2141
diff changeset
   321
  diagnostic(bool, PrintCompressedOopsMode, false,                          \
f13dda645a4b 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 2141
diff changeset
   322
            "Print compressed oops base address and encoding mode")         \
1129
ec4dfac10759 6741004: UseLargePages + UseCompressedOops breaks implicit null checking guard page
coleenp
parents: 1062
diff changeset
   323
                                                                            \
5694
1e0532a6abff 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 5539
diff changeset
   324
  lp64_product(intx, ObjectAlignmentInBytes, 8,                             \
1e0532a6abff 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 5539
diff changeset
   325
          "Default object alignment in bytes, 8 is minimum")                \
1e0532a6abff 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 5539
diff changeset
   326
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   327
  /* UseMembar is theoretically a temp flag used for memory barrier         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   328
   * removal testing.  It was supposed to be removed before FCS but has     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   329
   * been re-added (see 6401008) */                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   330
  product(bool, UseMembar, false,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   331
          "(Unstable) Issues membars on thread state transitions")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   332
                                                                            \
5431
5c4054a50dbb 6948537: CMS: BOT walkers observe out-of-thin-air zeros on sun4v sparc/CMT
ysr
parents: 5403
diff changeset
   333
  /* Temporary: See 6948537 */                                             \
5c4054a50dbb 6948537: CMS: BOT walkers observe out-of-thin-air zeros on sun4v sparc/CMT
ysr
parents: 5403
diff changeset
   334
  experimental(bool, UseMemSetInBOT, true,                                  \
5c4054a50dbb 6948537: CMS: BOT walkers observe out-of-thin-air zeros on sun4v sparc/CMT
ysr
parents: 5403
diff changeset
   335
          "(Unstable) uses memset in BOT updates in GC code")               \
5c4054a50dbb 6948537: CMS: BOT walkers observe out-of-thin-air zeros on sun4v sparc/CMT
ysr
parents: 5403
diff changeset
   336
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   337
  diagnostic(bool, UnlockDiagnosticVMOptions, trueInDebug,                  \
1382
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
   338
          "Enable normal processing of flags relating to field diagnostics")\
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
   339
                                                                            \
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
   340
  experimental(bool, UnlockExperimentalVMOptions, false,                    \
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
   341
          "Enable normal processing of flags relating to experimental features")\
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   342
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   343
  product(bool, JavaMonitorsInStackTrace, true,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   344
          "Print info. about Java monitor locks when the stacks are dumped")\
489c9b5090e2 Initial load
duke
parents:
diff changeset
   345
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   346
  product_pd(bool, UseLargePages,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   347
          "Use large page memory")                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   348
                                                                            \
1421
a7ef1a3b2644 6660681: Incrementally reserve pages on win server 2003 for better large page affinity
jmasa
parents: 1409
diff changeset
   349
  product_pd(bool, UseLargePagesIndividualAllocation,                       \
a7ef1a3b2644 6660681: Incrementally reserve pages on win server 2003 for better large page affinity
jmasa
parents: 1409
diff changeset
   350
          "Allocate large pages individually for better affinity")          \
a7ef1a3b2644 6660681: Incrementally reserve pages on win server 2003 for better large page affinity
jmasa
parents: 1409
diff changeset
   351
                                                                            \
a7ef1a3b2644 6660681: Incrementally reserve pages on win server 2003 for better large page affinity
jmasa
parents: 1409
diff changeset
   352
  develop(bool, LargePagesIndividualAllocationInjectError, false,           \
a7ef1a3b2644 6660681: Incrementally reserve pages on win server 2003 for better large page affinity
jmasa
parents: 1409
diff changeset
   353
          "Fail large pages individual allocation")                         \
a7ef1a3b2644 6660681: Incrementally reserve pages on win server 2003 for better large page affinity
jmasa
parents: 1409
diff changeset
   354
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   355
  develop(bool, TracePageSizes, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   356
          "Trace page size selection and usage.")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   357
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   358
  product(bool, UseNUMA, false,                                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   359
          "Use NUMA if available")                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   360
                                                                            \
1615
b46d9f19bde2 6779436: NUMA allocator: libnuma expects certain size of the buffer in numa_node_to_cpus()
iveresov
parents: 1608
diff changeset
   361
  product(bool, ForceNUMA, false,                                           \
b46d9f19bde2 6779436: NUMA allocator: libnuma expects certain size of the buffer in numa_node_to_cpus()
iveresov
parents: 1608
diff changeset
   362
          "Force NUMA optimizations on single-node/UMA systems")            \
b46d9f19bde2 6779436: NUMA allocator: libnuma expects certain size of the buffer in numa_node_to_cpus()
iveresov
parents: 1608
diff changeset
   363
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   364
  product(intx, NUMAChunkResizeWeight, 20,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   365
          "Percentage (0-100) used to weight the current sample when "      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   366
          "computing exponentially decaying average for "                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   367
          "AdaptiveNUMAChunkSizing")                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   368
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   369
  product(intx, NUMASpaceResizeRate, 1*G,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   370
          "Do not reallocate more that this amount per collection")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   371
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   372
  product(bool, UseAdaptiveNUMAChunkSizing, true,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   373
          "Enable adaptive chunk sizing for NUMA")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   374
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   375
  product(bool, NUMAStats, false,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   376
          "Print NUMA stats in detailed heap information")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   377
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   378
  product(intx, NUMAPageScanRate, 256,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   379
          "Maximum number of pages to include in the page scan procedure")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   380
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   381
  product_pd(bool, NeedsDeoptSuspend,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   382
          "True for register window machines (sparc/ia64)")                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   383
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   384
  product(intx, UseSSE, 99,                                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   385
          "Highest supported SSE instructions set on x86/x64")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   386
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   387
  product(uintx, LargePageSizeInBytes, 0,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   388
          "Large page size (0 to let VM choose the page size")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   389
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   390
  product(uintx, LargePageHeapSizeThreshold, 128*M,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   391
          "Use large pages if max heap is at least this big")               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   392
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   393
  product(bool, ForceTimeHighResolution, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   394
          "Using high time resolution(For Win32 only)")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   395
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   396
  develop(bool, TraceItables, false,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   397
          "Trace initialization and use of itables")                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   398
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   399
  develop(bool, TracePcPatching, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   400
          "Trace usage of frame::patch_pc")                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   401
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   402
  develop(bool, TraceJumps, false,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   403
          "Trace assembly jumps in thread ring buffer")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   404
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   405
  develop(bool, TraceRelocator, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   406
          "Trace the bytecode relocator")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   407
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   408
  develop(bool, TraceLongCompiles, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   409
          "Print out every time compilation is longer than "                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   410
          "a given threashold")                                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   411
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   412
  develop(bool, SafepointALot, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   413
          "Generates a lot of safepoints. Works with "                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   414
          "GuaranteedSafepointInterval")                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   415
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   416
  product_pd(bool, BackgroundCompilation,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   417
          "A thread requesting compilation is not blocked during "          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   418
          "compilation")                                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   419
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   420
  product(bool, PrintVMQWaitTime, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   421
          "Prints out the waiting time in VM operation queue")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   422
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   423
  develop(bool, BailoutToInterpreterForThrows, false,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   424
          "Compiled methods which throws/catches exceptions will be "       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   425
          "deopt and intp.")                                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   426
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   427
  develop(bool, NoYieldsInMicrolock, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   428
          "Disable yields in microlock")                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   429
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   430
  develop(bool, TraceOopMapGeneration, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   431
          "Shows oopmap generation")                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   432
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   433
  product(bool, MethodFlushing, true,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   434
          "Reclamation of zombie and not-entrant methods")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   435
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   436
  develop(bool, VerifyStack, false,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   437
          "Verify stack of each thread when it is entering a runtime call") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   438
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   439
  develop(bool, ForceUnreachable, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   440
          "(amd64) Make all non code cache addresses to be unreachable with rip-rel forcing use of 64bit literal fixups") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   441
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   442
  notproduct(bool, StressDerivedPointers, false,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   443
          "Force scavenge when a derived pointers is detected on stack "    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   444
          "after rtm call")                                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   445
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   446
  develop(bool, TraceDerivedPointers, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   447
          "Trace traversal of derived pointers on stack")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   448
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   449
  notproduct(bool, TraceCodeBlobStacks, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   450
          "Trace stack-walk of codeblobs")                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   451
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   452
  product(bool, PrintJNIResolving, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   453
          "Used to implement -v:jni")                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   454
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   455
  notproduct(bool, PrintRewrites, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   456
          "Print methods that are being rewritten")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   457
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   458
  product(bool, UseInlineCaches, true,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   459
          "Use Inline Caches for virtual calls ")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   460
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   461
  develop(bool, InlineArrayCopy, true,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   462
          "inline arraycopy native that is known to be part of "            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   463
          "base library DLL")                                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   464
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   465
  develop(bool, InlineObjectHash, true,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   466
          "inline Object::hashCode() native that is known to be part "      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   467
          "of base library DLL")                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   468
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   469
  develop(bool, InlineObjectCopy, true,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   470
          "inline Object.clone and Arrays.copyOf[Range] intrinsics")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   471
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   472
  develop(bool, InlineNatives, true,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   473
          "inline natives that are known to be part of base library DLL")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   474
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   475
  develop(bool, InlineMathNatives, true,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   476
          "inline SinD, CosD, etc.")                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   477
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   478
  develop(bool, InlineClassNatives, true,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   479
          "inline Class.isInstance, etc")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   480
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   481
  develop(bool, InlineAtomicLong, true,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   482
          "inline sun.misc.AtomicLong")                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   483
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   484
  develop(bool, InlineThreadNatives, true,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   485
          "inline Thread.currentThread, etc")                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   486
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   487
  develop(bool, InlineReflectionGetCallerClass, true,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   488
          "inline sun.reflect.Reflection.getCallerClass(), known to be part "\
489c9b5090e2 Initial load
duke
parents:
diff changeset
   489
          "of base library DLL")                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   490
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   491
  develop(bool, InlineUnsafeOps, true,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   492
          "inline memory ops (native methods) from sun.misc.Unsafe")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   493
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   494
  develop(bool, ConvertCmpD2CmpF, true,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   495
          "Convert cmpD to cmpF when one input is constant in float range") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   496
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   497
  develop(bool, ConvertFloat2IntClipping, true,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   498
          "Convert float2int clipping idiom to integer clipping")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   499
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   500
  develop(bool, SpecialStringCompareTo, true,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   501
          "special version of string compareTo")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   502
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   503
  develop(bool, SpecialStringIndexOf, true,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   504
          "special version of string indexOf")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   505
                                                                            \
2348
4e71ed4c2709 6761600: Use sse 4.2 in intrinsics
cfang
parents: 2342
diff changeset
   506
  develop(bool, SpecialStringEquals, true,                                  \
4e71ed4c2709 6761600: Use sse 4.2 in intrinsics
cfang
parents: 2342
diff changeset
   507
          "special version of string equals")                               \
4e71ed4c2709 6761600: Use sse 4.2 in intrinsics
cfang
parents: 2342
diff changeset
   508
                                                                            \
4e71ed4c2709 6761600: Use sse 4.2 in intrinsics
cfang
parents: 2342
diff changeset
   509
  develop(bool, SpecialArraysEquals, true,                                  \
595
a2be4c89de81 6695049: (coll) Create an x86 intrinsic for Arrays.equals
rasbold
parents: 590
diff changeset
   510
          "special version of Arrays.equals(char[],char[])")                \
a2be4c89de81 6695049: (coll) Create an x86 intrinsic for Arrays.equals
rasbold
parents: 590
diff changeset
   511
                                                                            \
2348
4e71ed4c2709 6761600: Use sse 4.2 in intrinsics
cfang
parents: 2342
diff changeset
   512
  product(bool, UseSSE42Intrinsics, false,                                  \
4e71ed4c2709 6761600: Use sse 4.2 in intrinsics
cfang
parents: 2342
diff changeset
   513
          "SSE4.2 versions of intrinsics")                                  \
4e71ed4c2709 6761600: Use sse 4.2 in intrinsics
cfang
parents: 2342
diff changeset
   514
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   515
  develop(bool, TraceCallFixup, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   516
          "traces all call fixups")                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   517
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   518
  develop(bool, DeoptimizeALot, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   519
          "deoptimize at every exit from the runtime system")               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   520
                                                                            \
1553
fc10c169d15d 6772413: code cleanup
kvn
parents: 1550
diff changeset
   521
  notproduct(ccstrlist, DeoptimizeOnlyAt, "",                               \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   522
          "a comma separated list of bcis to deoptimize at")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   523
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   524
  product(bool, DeoptimizeRandom, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   525
          "deoptimize random frames on random exit from the runtime system")\
489c9b5090e2 Initial load
duke
parents:
diff changeset
   526
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   527
  notproduct(bool, ZombieALot, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   528
          "creates zombies (non-entrant) at exit from the runt. system")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   529
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   530
  notproduct(bool, WalkStackALot, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   531
          "trace stack (no print) at every exit from the runtime system")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   532
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   533
  develop(bool, Debugging, false,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   534
          "set when executing debug methods in debug.ccp "                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   535
          "(to prevent triggering assertions)")                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   536
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   537
  notproduct(bool, StrictSafepointChecks, trueInDebug,                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   538
          "Enable strict checks that safepoints cannot happen for threads " \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   539
          "that used No_Safepoint_Verifier")                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   540
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   541
  notproduct(bool, VerifyLastFrame, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   542
          "Verify oops on last frame on entry to VM")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   543
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   544
  develop(bool, TraceHandleAllocation, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   545
          "Prints out warnings when suspicious many handles are allocated") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   546
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   547
  product(bool, UseCompilerSafepoints, true,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   548
          "Stop at safepoints in compiled code")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   549
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   550
  product(bool, UseSplitVerifier, true,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   551
          "use split verifier with StackMapTable attributes")               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   552
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   553
  product(bool, FailOverToOldVerifier, true,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   554
          "fail over to old verifier when split verifier fails")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   555
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   556
  develop(bool, ShowSafepointMsgs, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   557
          "Show msg. about safepoint synch.")                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   558
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   559
  product(bool, SafepointTimeout, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   560
          "Time out and warn or fail after SafepointTimeoutDelay "          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   561
          "milliseconds if failed to reach safepoint")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   562
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   563
  develop(bool, DieOnSafepointTimeout, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   564
          "Die upon failure to reach safepoint (see SafepointTimeout)")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   565
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   566
  /* 50 retries * (5 * current_retry_count) millis = ~6.375 seconds */      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   567
  /* typically, at most a few retries are needed */                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   568
  product(intx, SuspendRetryCount, 50,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   569
          "Maximum retry count for an external suspend request")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   570
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   571
  product(intx, SuspendRetryDelay, 5,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   572
          "Milliseconds to delay per retry (* current_retry_count)")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   573
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   574
  product(bool, AssertOnSuspendWaitFailure, false,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   575
          "Assert/Guarantee on external suspend wait failure")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   576
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   577
  product(bool, TraceSuspendWaitFailures, false,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   578
          "Trace external suspend wait failures")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   579
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   580
  product(bool, MaxFDLimit, true,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   581
          "Bump the number of file descriptors to max in solaris.")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   582
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   583
  notproduct(bool, LogEvents, trueInDebug,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   584
          "Enable Event log")                                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   585
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   586
  product(bool, BytecodeVerificationRemote, true,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   587
          "Enables the Java bytecode verifier for remote classes")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   588
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   589
  product(bool, BytecodeVerificationLocal, false,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   590
          "Enables the Java bytecode verifier for local classes")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   591
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   592
  develop(bool, ForceFloatExceptions, trueInDebug,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   593
          "Force exceptions on FP stack under/overflow")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   594
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   595
  develop(bool, SoftMatchFailure, trueInProduct,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   596
          "If the DFA fails to match a node, print a message and bail out") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   597
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   598
  develop(bool, VerifyStackAtCalls, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   599
          "Verify that the stack pointer is unchanged after calls")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   600
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   601
  develop(bool, TraceJavaAssertions, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   602
          "Trace java language assertions")                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   603
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   604
  notproduct(bool, CheckAssertionStatusDirectives, false,                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   605
          "temporary - see javaClasses.cpp")                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   606
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   607
  notproduct(bool, PrintMallocFree, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   608
          "Trace calls to C heap malloc/free allocation")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   609
                                                                            \
6176
4d9030fe341f 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 6062
diff changeset
   610
  product(bool, PrintOopAddress, false,                                     \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   611
          "Always print the location of the oop")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   612
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   613
  notproduct(bool, VerifyCodeCacheOften, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   614
          "Verify compiled-code cache often")                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   615
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   616
  develop(bool, ZapDeadCompiledLocals, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   617
          "Zap dead locals in compiler frames")                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   618
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   619
  notproduct(bool, ZapDeadLocalsOld, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   620
          "Zap dead locals (old version, zaps all frames when "             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   621
          "entering the VM")                                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   622
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   623
  notproduct(bool, CheckOopishValues, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   624
          "Warn if value contains oop ( requires ZapDeadLocals)")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   625
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   626
  develop(bool, UseMallocOnly, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   627
          "use only malloc/free for allocation (no resource area/arena)")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   628
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   629
  develop(bool, PrintMalloc, false,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   630
          "print all malloc/free calls")                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   631
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   632
  develop(bool, ZapResourceArea, trueInDebug,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   633
          "Zap freed resource/arena space with 0xABABABAB")                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   634
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   635
  notproduct(bool, ZapVMHandleArea, trueInDebug,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   636
          "Zap freed VM handle space with 0xBCBCBCBC")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   637
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   638
  develop(bool, ZapJNIHandleArea, trueInDebug,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   639
          "Zap freed JNI handle space with 0xFEFEFEFE")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   640
                                                                            \
971
f0b20be4165d 6672698: mangle_unused_area() should not remangle the entire heap at each collection.
jmasa
parents: 765
diff changeset
   641
  develop(bool, ZapUnusedHeapArea, trueInDebug,                             \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   642
          "Zap unused heap space with 0xBAADBABE")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   643
                                                                            \
971
f0b20be4165d 6672698: mangle_unused_area() should not remangle the entire heap at each collection.
jmasa
parents: 765
diff changeset
   644
  develop(bool, TraceZapUnusedHeapArea, false,                              \
f0b20be4165d 6672698: mangle_unused_area() should not remangle the entire heap at each collection.
jmasa
parents: 765
diff changeset
   645
          "Trace zapping of unused heap space")                             \
f0b20be4165d 6672698: mangle_unused_area() should not remangle the entire heap at each collection.
jmasa
parents: 765
diff changeset
   646
                                                                            \
f0b20be4165d 6672698: mangle_unused_area() should not remangle the entire heap at each collection.
jmasa
parents: 765
diff changeset
   647
  develop(bool, CheckZapUnusedHeapArea, false,                              \
f0b20be4165d 6672698: mangle_unused_area() should not remangle the entire heap at each collection.
jmasa
parents: 765
diff changeset
   648
          "Check zapping of unused heap space")                             \
f0b20be4165d 6672698: mangle_unused_area() should not remangle the entire heap at each collection.
jmasa
parents: 765
diff changeset
   649
                                                                            \
1668
8ec481b8f514 6578152: fill_region_with_object has usability and safety issues
jcoomes
parents: 1615
diff changeset
   650
  develop(bool, ZapFillerObjects, trueInDebug,                              \
8ec481b8f514 6578152: fill_region_with_object has usability and safety issues
jcoomes
parents: 1615
diff changeset
   651
          "Zap filler objects with 0xDEAFBABE")                             \
8ec481b8f514 6578152: fill_region_with_object has usability and safety issues
jcoomes
parents: 1615
diff changeset
   652
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   653
  develop(bool, PrintVMMessages, true,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   654
          "Print vm messages on console")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   655
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   656
  product(bool, PrintGCApplicationConcurrentTime, false,                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   657
          "Print the time the application has been running")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   658
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   659
  product(bool, PrintGCApplicationStoppedTime, false,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   660
          "Print the time the application has been stopped")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   661
                                                                            \
5403
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 5251
diff changeset
   662
  notproduct(uintx, ErrorHandlerTest, 0,                                    \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 5251
diff changeset
   663
          "If > 0, provokes an error after VM initialization; the value"    \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 5251
diff changeset
   664
          "determines which error to provoke.  See test_error_handler()"    \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 5251
diff changeset
   665
          "in debug.cpp.")                                                  \
6b0dd9c75dde 6888954: argument formatting for assert() and friends
jcoomes
parents: 5251
diff changeset
   666
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   667
  develop(bool, Verbose, false,                                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   668
          "Prints additional debugging information from other modes")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   669
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   670
  develop(bool, PrintMiscellaneous, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   671
          "Prints uncategorized debugging information (requires +Verbose)") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   672
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   673
  develop(bool, WizardMode, false,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   674
          "Prints much more debugging information")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   675
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   676
  product(bool, ShowMessageBoxOnError, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   677
          "Keep process alive on VM fatal error")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   678
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   679
  product_pd(bool, UseOSErrorReporting,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   680
          "Let VM fatal error propagate to the OS (ie. WER on Windows)")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   681
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   682
  product(bool, SuppressFatalErrorMessage, false,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   683
          "Do NO Fatal Error report [Avoid deadlock]")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   684
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   685
  product(ccstrlist, OnError, "",                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   686
          "Run user-defined commands on fatal error; see VMError.cpp "      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   687
          "for examples")                                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   688
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   689
  product(ccstrlist, OnOutOfMemoryError, "",                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   690
          "Run user-defined commands on first java.lang.OutOfMemoryError")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   691
                                                                            \
2141
e9a644aaff87 6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents: 2034
diff changeset
   692
  manageable(bool, HeapDumpBeforeFullGC, false,                             \
e9a644aaff87 6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents: 2034
diff changeset
   693
          "Dump heap to file before any major stop-world GC")               \
e9a644aaff87 6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents: 2034
diff changeset
   694
                                                                            \
e9a644aaff87 6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents: 2034
diff changeset
   695
  manageable(bool, HeapDumpAfterFullGC, false,                              \
e9a644aaff87 6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents: 2034
diff changeset
   696
          "Dump heap to file after any major stop-world GC")                \
e9a644aaff87 6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents: 2034
diff changeset
   697
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   698
  manageable(bool, HeapDumpOnOutOfMemoryError, false,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   699
          "Dump heap to file when java.lang.OutOfMemoryError is thrown")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   700
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   701
  manageable(ccstr, HeapDumpPath, NULL,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   702
          "When HeapDumpOnOutOfMemoryError is on, the path (filename or"    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   703
          "directory) of the dump file (defaults to java_pid<pid>.hprof"    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   704
          "in the working directory)")                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   705
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   706
  develop(uintx, SegmentedHeapDumpThreshold, 2*G,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   707
          "Generate a segmented heap dump (JAVA PROFILE 1.0.2 format) "     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   708
          "when the heap usage is larger than this")                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   709
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   710
  develop(uintx, HeapDumpSegmentSize, 1*G,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   711
          "Approximate segment size when generating a segmented heap dump") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   712
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   713
  develop(bool, BreakAtWarning, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   714
          "Execute breakpoint upon encountering VM warning")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   715
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   716
  product_pd(bool, UseVectoredExceptions,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   717
          "Temp Flag - Use Vectored Exceptions rather than SEH (Windows Only)") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   718
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   719
  develop(bool, TraceVMOperation, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   720
          "Trace vm operations")                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   721
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   722
  develop(bool, UseFakeTimers, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   723
          "Tells whether the VM should use system time or a fake timer")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   724
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   725
  diagnostic(bool, LogCompilation, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   726
          "Log compilation activity in detail to hotspot.log or LogFile")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   727
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   728
  product(bool, PrintCompilation, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   729
          "Print compilations")                                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   730
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   731
  diagnostic(bool, TraceNMethodInstalls, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   732
             "Trace nmethod intallation")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   733
                                                                            \
3908
24b55ad4c228 6863023: need non-perm oops in code cache for JSR 292
jrose
parents: 3610
diff changeset
   734
  diagnostic(intx, ScavengeRootsInCode, 0,                                  \
24b55ad4c228 6863023: need non-perm oops in code cache for JSR 292
jrose
parents: 3610
diff changeset
   735
             "0: do not allow scavengable oops in the code cache; "         \
24b55ad4c228 6863023: need non-perm oops in code cache for JSR 292
jrose
parents: 3610
diff changeset
   736
             "1: allow scavenging from the code cache; "                    \
24b55ad4c228 6863023: need non-perm oops in code cache for JSR 292
jrose
parents: 3610
diff changeset
   737
             "2: emit as many constants as the compiler can see")           \
24b55ad4c228 6863023: need non-perm oops in code cache for JSR 292
jrose
parents: 3610
diff changeset
   738
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   739
  diagnostic(bool, TraceOSRBreakpoint, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   740
             "Trace OSR Breakpoint ")                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   741
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   742
  diagnostic(bool, TraceCompileTriggered, false,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   743
             "Trace compile triggered")                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   744
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   745
  diagnostic(bool, TraceTriggers, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   746
             "Trace triggers")                                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   747
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   748
  product(bool, AlwaysRestoreFPU, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   749
          "Restore the FPU control word after every JNI call (expensive)")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   750
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   751
  notproduct(bool, PrintCompilation2, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   752
          "Print additional statistics per compilation")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   753
                                                                            \
347
df859fcca515 6667042: PrintAssembly option does not work without special plugin
jrose
parents: 249
diff changeset
   754
  diagnostic(bool, PrintAdapterHandlers, false,                             \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   755
          "Print code generated for i2c/c2i adapters")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   756
                                                                            \
4755
eee57ea6d910 6921922: fix for 6911204 breaks tagged stack interpreter
never
parents: 4754
diff changeset
   757
  develop(bool, VerifyAdapterSharing, false,                                \
eee57ea6d910 6921922: fix for 6911204 breaks tagged stack interpreter
never
parents: 4754
diff changeset
   758
          "Verify that the code for shared adapters is the equivalent")     \
eee57ea6d910 6921922: fix for 6911204 breaks tagged stack interpreter
never
parents: 4754
diff changeset
   759
                                                                            \
347
df859fcca515 6667042: PrintAssembly option does not work without special plugin
jrose
parents: 249
diff changeset
   760
  diagnostic(bool, PrintAssembly, false,                                    \
df859fcca515 6667042: PrintAssembly option does not work without special plugin
jrose
parents: 249
diff changeset
   761
          "Print assembly code (using external disassembler.so)")           \
df859fcca515 6667042: PrintAssembly option does not work without special plugin
jrose
parents: 249
diff changeset
   762
                                                                            \
1402
ccb40ce62b79 6744783: HotSpot segfaults if given -XX options with an empty string argument
never
parents: 1129
diff changeset
   763
  diagnostic(ccstr, PrintAssemblyOptions, NULL,                             \
347
df859fcca515 6667042: PrintAssembly option does not work without special plugin
jrose
parents: 249
diff changeset
   764
          "Options string passed to disassembler.so")                       \
df859fcca515 6667042: PrintAssembly option does not work without special plugin
jrose
parents: 249
diff changeset
   765
                                                                            \
df859fcca515 6667042: PrintAssembly option does not work without special plugin
jrose
parents: 249
diff changeset
   766
  diagnostic(bool, PrintNMethods, false,                                    \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   767
          "Print assembly code for nmethods when generated")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   768
                                                                            \
347
df859fcca515 6667042: PrintAssembly option does not work without special plugin
jrose
parents: 249
diff changeset
   769
  diagnostic(bool, PrintNativeNMethods, false,                              \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   770
          "Print assembly code for native nmethods when generated")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   771
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   772
  develop(bool, PrintDebugInfo, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   773
          "Print debug information for all nmethods when generated")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   774
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   775
  develop(bool, PrintRelocations, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   776
          "Print relocation information for all nmethods when generated")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   777
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   778
  develop(bool, PrintDependencies, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   779
          "Print dependency information for all nmethods when generated")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   780
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   781
  develop(bool, PrintExceptionHandlers, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   782
          "Print exception handler tables for all nmethods when generated") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   783
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   784
  develop(bool, InterceptOSException, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   785
          "Starts debugger when an implicit OS (e.g., NULL) "               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   786
          "exception happens")                                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   787
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   788
  notproduct(bool, PrintCodeCache, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   789
          "Print the compiled_code cache when exiting")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   790
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   791
  develop(bool, PrintCodeCache2, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   792
          "Print detailed info on the compiled_code cache when exiting")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   793
                                                                            \
347
df859fcca515 6667042: PrintAssembly option does not work without special plugin
jrose
parents: 249
diff changeset
   794
  diagnostic(bool, PrintStubCode, false,                                    \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   795
          "Print generated stub code")                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   796
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   797
  product(bool, StackTraceInThrowable, true,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   798
          "Collect backtrace in throwable when exception happens")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   799
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   800
  product(bool, OmitStackTraceInFastThrow, true,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   801
          "Omit backtraces for some 'hot' exceptions in optimized code")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   802
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   803
  product(bool, ProfilerPrintByteCodeStatistics, false,                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   804
          "Prints byte code statictics when dumping profiler output")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   805
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   806
  product(bool, ProfilerRecordPC, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   807
          "Collects tick for each 16 byte interval of compiled code")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   808
                                                                            \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
   809
  product(bool, ProfileVM, false,                                           \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   810
          "Profiles ticks that fall within VM (either in the VM Thread "    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   811
          "or VM code called through stubs)")                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   812
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   813
  product(bool, ProfileIntervals, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   814
          "Prints profiles for each interval (see ProfileIntervalsTicks)")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   815
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   816
  notproduct(bool, ProfilerCheckIntervals, false,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   817
          "Collect and print info on spacing of profiler ticks")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   818
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   819
  develop(bool, PrintJVMWarnings, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   820
          "Prints warnings for unimplemented JVM functions")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   821
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   822
  notproduct(uintx, WarnOnStalledSpinLock, 0,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   823
          "Prints warnings for stalled SpinLocks")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   824
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   825
  develop(bool, InitializeJavaLangSystem, true,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   826
          "Initialize java.lang.System - turn off for individual "          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   827
          "method debugging")                                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   828
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   829
  develop(bool, InitializeJavaLangString, true,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   830
          "Initialize java.lang.String - turn off for individual "          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   831
          "method debugging")                                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   832
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   833
  develop(bool, InitializeJavaLangExceptionsErrors, true,                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   834
          "Initialize various error and exception classes - turn off for "  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   835
          "individual method debugging")                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   836
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   837
  product(bool, RegisterFinalizersAtInit, true,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   838
          "Register finalizable objects at end of Object.<init> or "        \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
   839
          "after allocation")                                               \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   840
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   841
  develop(bool, RegisterReferences, true,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   842
          "Tells whether the VM should register soft/weak/final/phantom "   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   843
          "references")                                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   844
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   845
  develop(bool, IgnoreRewrites, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   846
          "Supress rewrites of bytecodes in the oopmap generator. "         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   847
          "This is unsafe!")                                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   848
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   849
  develop(bool, PrintCodeCacheExtension, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   850
          "Print extension of code cache")                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   851
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   852
  develop(bool, UsePrivilegedStack, true,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   853
          "Enable the security JVM functions")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   854
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   855
  develop(bool, IEEEPrecision, true,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   856
          "Enables IEEE precision (for INTEL only)")                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   857
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   858
  develop(bool, ProtectionDomainVerification, true,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   859
          "Verifies protection domain before resolution in system "         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   860
          "dictionary")                                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   861
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   862
  product(bool, ClassUnloading, true,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   863
          "Do unloading of classes")                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   864
                                                                            \
1661
7cb0f0d385f3 6779339: turn off LinkWellKnownClasses by default pending further testing
jrose
parents: 1608
diff changeset
   865
  diagnostic(bool, LinkWellKnownClasses, false,                             \
379
10767ca40189 6652736: well known classes in system dictionary are inefficiently processed
jrose
parents: 363
diff changeset
   866
          "Resolve a well known class as soon as its name is seen")         \
10767ca40189 6652736: well known classes in system dictionary are inefficiently processed
jrose
parents: 363
diff changeset
   867
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   868
  develop(bool, DisableStartThread, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   869
          "Disable starting of additional Java threads "                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   870
          "(for debugging only)")                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   871
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   872
  develop(bool, MemProfiling, false,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   873
          "Write memory usage profiling to log file")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   874
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   875
  notproduct(bool, PrintSystemDictionaryAtExit, false,                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   876
          "Prints the system dictionary at exit")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   877
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   878
  diagnostic(bool, UnsyncloadClass, false,                                  \
1890
9ce941df84eb 4670071: loadClassInternal is too restrictive.
acorn
parents: 1671
diff changeset
   879
          "Unstable: VM calls loadClass unsynchronized. Custom "            \
9ce941df84eb 4670071: loadClassInternal is too restrictive.
acorn
parents: 1671
diff changeset
   880
          "class loader  must call VM synchronized for findClass "          \
9ce941df84eb 4670071: loadClassInternal is too restrictive.
acorn
parents: 1671
diff changeset
   881
          "and defineClass.")                                               \
9ce941df84eb 4670071: loadClassInternal is too restrictive.
acorn
parents: 1671
diff changeset
   882
                                                                            \
9ce941df84eb 4670071: loadClassInternal is too restrictive.
acorn
parents: 1671
diff changeset
   883
  product(bool, AlwaysLockClassLoader, false,                               \
9ce941df84eb 4670071: loadClassInternal is too restrictive.
acorn
parents: 1671
diff changeset
   884
          "Require the VM to acquire the class loader lock before calling " \
9ce941df84eb 4670071: loadClassInternal is too restrictive.
acorn
parents: 1671
diff changeset
   885
          "loadClass() even for class loaders registering "                 \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
   886
          "as parallel capable")                                            \
1890
9ce941df84eb 4670071: loadClassInternal is too restrictive.
acorn
parents: 1671
diff changeset
   887
                                                                            \
9ce941df84eb 4670071: loadClassInternal is too restrictive.
acorn
parents: 1671
diff changeset
   888
  product(bool, AllowParallelDefineClass, false,                            \
9ce941df84eb 4670071: loadClassInternal is too restrictive.
acorn
parents: 1671
diff changeset
   889
          "Allow parallel defineClass requests for class loaders "          \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
   890
          "registering as parallel capable")                                \
1890
9ce941df84eb 4670071: loadClassInternal is too restrictive.
acorn
parents: 1671
diff changeset
   891
                                                                            \
9ce941df84eb 4670071: loadClassInternal is too restrictive.
acorn
parents: 1671
diff changeset
   892
  product(bool, MustCallLoadClassInternal, false,                           \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
   893
          "Call loadClassInternal() rather than loadClass()")               \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   894
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   895
  product_pd(bool, DontYieldALot,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   896
          "Throw away obvious excess yield calls (for SOLARIS only)")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   897
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   898
  product_pd(bool, ConvertSleepToYield,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   899
          "Converts sleep(0) to thread yield "                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   900
          "(may be off for SOLARIS to improve GUI)")                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   901
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   902
  product(bool, ConvertYieldToSleep, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   903
          "Converts yield to a sleep of MinSleepInterval to simulate Win32 "\
489c9b5090e2 Initial load
duke
parents:
diff changeset
   904
          "behavior (SOLARIS only)")                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   905
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   906
  product(bool, UseBoundThreads, true,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   907
          "Bind user level threads to kernel threads (for SOLARIS only)")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   908
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   909
  develop(bool, UseDetachedThreads, true,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   910
          "Use detached threads that are recycled upon termination "        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   911
          "(for SOLARIS only)")                                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   912
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   913
  product(bool, UseLWPSynchronization, true,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   914
          "Use LWP-based instead of libthread-based synchronization "       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   915
          "(SPARC only)")                                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   916
                                                                            \
1402
ccb40ce62b79 6744783: HotSpot segfaults if given -XX options with an empty string argument
never
parents: 1129
diff changeset
   917
  product(ccstr, SyncKnobs, NULL,                                           \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   918
          "(Unstable) Various monitor synchronization tunables")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   919
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   920
  product(intx, EmitSync, 0,                                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   921
          "(Unsafe,Unstable) "                                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   922
          " Controls emission of inline sync fast-path code")               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   923
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   924
  product(intx, AlwaysInflate, 0, "(Unstable) Force inflation")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   925
                                                                            \
5710
d664086c0add 6852873: Reduce safepoint cleanup time
acorn
parents: 5539
diff changeset
   926
  product(intx, MonitorBound, 0, "Bound Monitor population")                \
d664086c0add 6852873: Reduce safepoint cleanup time
acorn
parents: 5539
diff changeset
   927
                                                                            \
d664086c0add 6852873: Reduce safepoint cleanup time
acorn
parents: 5539
diff changeset
   928
  product(bool, MonitorInUseLists, false, "Track Monitors for Deflation")   \
d664086c0add 6852873: Reduce safepoint cleanup time
acorn
parents: 5539
diff changeset
   929
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   930
  product(intx, Atomics, 0,                                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   931
          "(Unsafe,Unstable) Diagnostic - Controls emission of atomics")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   932
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   933
  product(intx, FenceInstruction, 0,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   934
          "(Unsafe,Unstable) Experimental")                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   935
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   936
  product(intx, SyncFlags, 0, "(Unsafe,Unstable) Experimental Sync flags" ) \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   937
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   938
  product(intx, SyncVerbose, 0, "(Unstable)" )                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   939
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   940
  product(intx, ClearFPUAtPark, 0, "(Unsafe,Unstable)" )                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   941
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   942
  product(intx, hashCode, 0,                                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   943
         "(Unstable) select hashCode generation algorithm" )                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   944
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   945
  product(intx, WorkAroundNPTLTimedWaitHang, 1,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   946
         "(Unstable, Linux-specific)"                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   947
         " avoid NPTL-FUTEX hang pthread_cond_timedwait" )                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   948
                                                                            \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
   949
  product(bool, FilterSpuriousWakeups, true,                                \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
   950
          "Prevent spurious or premature wakeups from object.wait "         \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
   951
          "(Solaris only)")                                                 \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   952
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   953
  product(intx, NativeMonitorTimeout, -1, "(Unstable)" )                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   954
  product(intx, NativeMonitorFlags, 0, "(Unstable)" )                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   955
  product(intx, NativeMonitorSpinLimit, 20, "(Unstable)" )                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   956
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   957
  develop(bool, UsePthreads, false,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   958
          "Use pthread-based instead of libthread-based synchronization "   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   959
          "(SPARC only)")                                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   960
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   961
  product(bool, AdjustConcurrency, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   962
          "call thr_setconcurrency at thread create time to avoid "         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   963
          "LWP starvation on MP systems (For Solaris Only)")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   964
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   965
  develop(bool, UpdateHotSpotCompilerFileOnError, true,                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   966
          "Should the system attempt to update the compiler file when "     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   967
          "an error occurs?")                                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   968
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   969
  product(bool, ReduceSignalUsage, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   970
          "Reduce the use of OS signals in Java and/or the VM")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   971
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   972
  notproduct(bool, ValidateMarkSweep, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   973
          "Do extra validation during MarkSweep collection")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   974
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   975
  notproduct(bool, RecordMarkSweepCompaction, false,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   976
          "Enable GC-to-GC recording and querying of compaction during "    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   977
          "MarkSweep")                                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   978
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   979
  develop_pd(bool, ShareVtableStubs,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   980
          "Share vtable stubs (smaller code but worse branch prediction")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   981
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   982
  develop(bool, LoadLineNumberTables, true,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   983
          "Tells whether the class file parser loads line number tables")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   984
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   985
  develop(bool, LoadLocalVariableTables, true,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   986
          "Tells whether the class file parser loads local variable tables")\
489c9b5090e2 Initial load
duke
parents:
diff changeset
   987
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   988
  develop(bool, LoadLocalVariableTypeTables, true,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   989
          "Tells whether the class file parser loads local variable type tables")\
489c9b5090e2 Initial load
duke
parents:
diff changeset
   990
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   991
  product(bool, AllowUserSignalHandlers, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   992
          "Do not complain if the application installs signal handlers "    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   993
          "(Solaris & Linux only)")                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   994
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   995
  product(bool, UseSignalChaining, true,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   996
          "Use signal-chaining to invoke signal handlers installed "        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   997
          "by the application (Solaris & Linux only)")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   998
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   999
  product(bool, UseAltSigs, false,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1000
          "Use alternate signals instead of SIGUSR1 & SIGUSR2 for VM "      \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1001
          "internal signals (Solaris only)")                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1002
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1003
  product(bool, UseSpinning, false,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1004
          "Use spinning in monitor inflation and before entry")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1005
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1006
  product(bool, PreSpinYield, false,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1007
          "Yield before inner spinning loop")                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1008
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1009
  product(bool, PostSpinYield, true,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1010
          "Yield after inner spinning loop")                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1011
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1012
  product(bool, AllowJNIEnvProxy, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1013
          "Allow JNIEnv proxies for jdbx")                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1014
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1015
  product(bool, JNIDetachReleasesMonitors, true,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1016
          "JNI DetachCurrentThread releases monitors owned by thread")      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1017
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1018
  product(bool, RestoreMXCSROnJNICalls, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1019
          "Restore MXCSR when returning from JNI calls")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1020
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1021
  product(bool, CheckJNICalls, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1022
          "Verify all arguments to JNI calls")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1023
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1024
  product(bool, UseFastJNIAccessors, true,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1025
          "Use optimized versions of Get<Primitive>Field")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1026
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1027
  product(bool, EagerXrunInit, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1028
          "Eagerly initialize -Xrun libraries; allows startup profiling, "  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1029
          " but not all -Xrun libraries may support the state of the VM at this time") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1030
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1031
  product(bool, PreserveAllAnnotations, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1032
          "Preserve RuntimeInvisibleAnnotations as well as RuntimeVisibleAnnotations") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1033
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1034
  develop(uintx, PreallocatedOutOfMemoryErrorCount, 4,                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1035
          "Number of OutOfMemoryErrors preallocated with backtrace")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1036
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1037
  product(bool, LazyBootClassLoader, true,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1038
          "Enable/disable lazy opening of boot class path entries")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1039
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1040
  diagnostic(bool, UseIncDec, true,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1041
          "Use INC, DEC instructions on x86")                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1042
                                                                            \
765
e0692d3d8863 6708714: Optimize long LShift on 32-bits x86
kvn
parents: 618
diff changeset
  1043
  product(bool, UseNewLongLShift, false,                                    \
e0692d3d8863 6708714: Optimize long LShift on 32-bits x86
kvn
parents: 618
diff changeset
  1044
          "Use optimized bitwise shift left")                               \
e0692d3d8863 6708714: Optimize long LShift on 32-bits x86
kvn
parents: 618
diff changeset
  1045
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1046
  product(bool, UseStoreImmI16, true,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1047
          "Use store immediate 16-bits value instruction on x86")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1048
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1049
  product(bool, UseAddressNop, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1050
          "Use '0F 1F [addr]' NOP instructions on x86 cpus")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1051
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1052
  product(bool, UseXmmLoadAndClearUpper, true,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1053
          "Load low part of XMM register and clear upper part")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1054
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1055
  product(bool, UseXmmRegToRegMoveAll, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1056
          "Copy all XMM register bits when moving value between registers") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1057
                                                                            \
244
c8ad6f221400 6662967: Optimize I2D conversion on new x86
kvn
parents: 188
diff changeset
  1058
  product(bool, UseXmmI2D, false,                                           \
c8ad6f221400 6662967: Optimize I2D conversion on new x86
kvn
parents: 188
diff changeset
  1059
          "Use SSE2 CVTDQ2PD instruction to convert Integer to Double")     \
c8ad6f221400 6662967: Optimize I2D conversion on new x86
kvn
parents: 188
diff changeset
  1060
                                                                            \
c8ad6f221400 6662967: Optimize I2D conversion on new x86
kvn
parents: 188
diff changeset
  1061
  product(bool, UseXmmI2F, false,                                           \
c8ad6f221400 6662967: Optimize I2D conversion on new x86
kvn
parents: 188
diff changeset
  1062
          "Use SSE2 CVTDQ2PS instruction to convert Integer to Float")      \
c8ad6f221400 6662967: Optimize I2D conversion on new x86
kvn
parents: 188
diff changeset
  1063
                                                                            \
1437
d1846c1c04c4 6532536: Optimize arraycopy stubs for Intel cpus
kvn
parents: 1434
diff changeset
  1064
  product(bool, UseXMMForArrayCopy, false,                                  \
d1846c1c04c4 6532536: Optimize arraycopy stubs for Intel cpus
kvn
parents: 1434
diff changeset
  1065
          "Use SSE2 MOVQ instruction for Arraycopy")                        \
d1846c1c04c4 6532536: Optimize arraycopy stubs for Intel cpus
kvn
parents: 1434
diff changeset
  1066
                                                                            \
d1846c1c04c4 6532536: Optimize arraycopy stubs for Intel cpus
kvn
parents: 1434
diff changeset
  1067
  product(bool, UseUnalignedLoadStores, false,                              \
d1846c1c04c4 6532536: Optimize arraycopy stubs for Intel cpus
kvn
parents: 1434
diff changeset
  1068
          "Use SSE2 MOVDQU instruction for Arraycopy")                      \
d1846c1c04c4 6532536: Optimize arraycopy stubs for Intel cpus
kvn
parents: 1434
diff changeset
  1069
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1070
  product(intx, FieldsAllocationStyle, 1,                                   \
5250
ea743ca75cd9 6940733: allocate non static oop fields in super and sub classes together
kvn
parents: 5249
diff changeset
  1071
          "0 - type based with oops first, 1 - with oops last, "            \
ea743ca75cd9 6940733: allocate non static oop fields in super and sub classes together
kvn
parents: 5249
diff changeset
  1072
          "2 - oops in super and sub classes are together")                 \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1073
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1074
  product(bool, CompactFields, true,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1075
          "Allocate nonstatic fields in gaps between previous fields")      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1076
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1077
  notproduct(bool, PrintCompactFieldsSavings, false,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1078
          "Print how many words were saved with CompactFields")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1079
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1080
  product(bool, UseBiasedLocking, true,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1081
          "Enable biased locking in JVM")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1082
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1083
  product(intx, BiasedLockingStartupDelay, 4000,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1084
          "Number of milliseconds to wait before enabling biased locking")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1085
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1086
  diagnostic(bool, PrintBiasedLockingStatistics, false,                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1087
          "Print statistics of biased locking in JVM")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1088
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1089
  product(intx, BiasedLockingBulkRebiasThreshold, 20,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1090
          "Threshold of number of revocations per type to try to "          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1091
          "rebias all objects in the heap of that type")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1092
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1093
  product(intx, BiasedLockingBulkRevokeThreshold, 40,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1094
          "Threshold of number of revocations per type to permanently "     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1095
          "revoke biases of all objects in the heap of that type")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1096
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1097
  product(intx, BiasedLockingDecayTime, 25000,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1098
          "Decay time (in milliseconds) to re-enable bulk rebiasing of a "  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1099
          "type after previous bulk rebias")                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1100
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1101
  /* tracing */                                                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1102
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1103
  notproduct(bool, TraceRuntimeCalls, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1104
          "Trace run-time calls")                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1105
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1106
  develop(bool, TraceJNICalls, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1107
          "Trace JNI calls")                                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1108
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1109
  notproduct(bool, TraceJVMCalls, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1110
          "Trace JVM calls")                                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1111
                                                                            \
1402
ccb40ce62b79 6744783: HotSpot segfaults if given -XX options with an empty string argument
never
parents: 1129
diff changeset
  1112
  product(ccstr, TraceJVMTI, NULL,                                          \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1113
          "Trace flags for JVMTI functions and events")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1114
                                                                            \
3580
55775b48f5e5 6862295: JDWP threadid changes during debugging session (leading to ingored breakpoints)
dcubed
parents: 1671
diff changeset
  1115
  product(bool, ForceFullGCJVMTIEpilogues, false,                           \
55775b48f5e5 6862295: JDWP threadid changes during debugging session (leading to ingored breakpoints)
dcubed
parents: 1671
diff changeset
  1116
          "Force 'Full GC' was done semantics for JVMTI GC epilogues")      \
55775b48f5e5 6862295: JDWP threadid changes during debugging session (leading to ingored breakpoints)
dcubed
parents: 1671
diff changeset
  1117
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1118
  /* This option can change an EMCP method into an obsolete method. */      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1119
  /* This can affect tests that except specific methods to be EMCP. */      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1120
  /* This option should be used with caution. */                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1121
  product(bool, StressLdcRewrite, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1122
          "Force ldc -> ldc_w rewrite during RedefineClasses")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1123
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1124
  product(intx, TraceRedefineClasses, 0,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1125
          "Trace level for JVMTI RedefineClasses")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1126
                                                                            \
5697
0cf7190475ee 6957080: MethodComparator needs stress testing
jrose
parents: 5694
diff changeset
  1127
  develop(bool, StressMethodComparator, false,                              \
0cf7190475ee 6957080: MethodComparator needs stress testing
jrose
parents: 5694
diff changeset
  1128
          "run the MethodComparator on all loaded methods")                 \
0cf7190475ee 6957080: MethodComparator needs stress testing
jrose
parents: 5694
diff changeset
  1129
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1130
  /* change to false by default sometime after Mustang */                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1131
  product(bool, VerifyMergedCPBytecodes, true,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1132
          "Verify bytecodes after RedefineClasses constant pool merging")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1133
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1134
  develop(bool, TraceJNIHandleAllocation, false,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1135
          "Trace allocation/deallocation of JNI handle blocks")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1136
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1137
  develop(bool, TraceThreadEvents, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1138
          "Trace all thread events")                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1139
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1140
  develop(bool, TraceBytecodes, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1141
          "Trace bytecode execution")                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1142
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1143
  develop(bool, TraceClassInitialization, false,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1144
          "Trace class initialization")                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1145
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1146
  develop(bool, TraceExceptions, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1147
          "Trace exceptions")                                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1148
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1149
  develop(bool, TraceICs, false,                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1150
          "Trace inline cache changes")                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1151
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1152
  notproduct(bool, TraceInvocationCounterOverflow, false,                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1153
          "Trace method invocation counter overflow")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1154
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1155
  develop(bool, TraceInlineCacheClearing, false,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1156
          "Trace clearing of inline caches in nmethods")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1157
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1158
  develop(bool, TraceDependencies, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1159
          "Trace dependencies")                                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1160
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1161
  develop(bool, VerifyDependencies, trueInDebug,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1162
         "Exercise and verify the compilation dependency mechanism")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1163
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1164
  develop(bool, TraceNewOopMapGeneration, false,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1165
          "Trace OopMapGeneration")                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1166
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1167
  develop(bool, TraceNewOopMapGenerationDetailed, false,                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1168
          "Trace OopMapGeneration: print detailed cell states")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1169
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1170
  develop(bool, TimeOopMap, false,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1171
          "Time calls to GenerateOopMap::compute_map() in sum")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1172
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1173
  develop(bool, TimeOopMap2, false,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1174
          "Time calls to GenerateOopMap::compute_map() individually")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1175
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1176
  develop(bool, TraceMonitorMismatch, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1177
          "Trace monitor matching failures during OopMapGeneration")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1178
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1179
  develop(bool, TraceOopMapRewrites, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1180
          "Trace rewritting of method oops during oop map generation")      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1181
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1182
  develop(bool, TraceSafepoint, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1183
          "Trace safepoint operations")                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1184
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1185
  develop(bool, TraceICBuffer, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1186
          "Trace usage of IC buffer")                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1187
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1188
  develop(bool, TraceCompiledIC, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1189
          "Trace changes of compiled IC")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1190
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1191
  notproduct(bool, TraceZapDeadLocals, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1192
          "Trace zapping dead locals")                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1193
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1194
  develop(bool, TraceStartupTime, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1195
          "Trace setup time")                                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1196
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1197
  develop(bool, TraceHPI, false,                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1198
          "Trace Host Porting Interface (HPI)")                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1199
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1200
  product(ccstr, HPILibPath, NULL,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1201
          "Specify alternate path to HPI library")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1202
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1203
  develop(bool, TraceProtectionDomainVerification, false,                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1204
          "Trace protection domain verifcation")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1205
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1206
  develop(bool, TraceClearedExceptions, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1207
          "Prints when an exception is forcibly cleared")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1208
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1209
  product(bool, TraceClassResolution, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1210
          "Trace all constant pool resolutions (for debugging)")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1211
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1212
  product(bool, TraceBiasedLocking, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1213
          "Trace biased locking in JVM")                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1214
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1215
  product(bool, TraceMonitorInflation, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1216
          "Trace monitor inflation in JVM")                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1217
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1218
  /* assembler */                                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1219
  product(bool, Use486InstrsOnly, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1220
          "Use 80486 Compliant instruction subset")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1221
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1222
  /* gc */                                                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1223
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1224
  product(bool, UseSerialGC, false,                                         \
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents: 389
diff changeset
  1225
          "Use the serial garbage collector")                               \
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents: 389
diff changeset
  1226
                                                                            \
4741
3b1373d466d2 6919980: G1: remove +UseG1GC from under experimental options (second attempt)
tonyp
parents: 4650
diff changeset
  1227
  product(bool, UseG1GC, false,                                             \
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents: 389
diff changeset
  1228
          "Use the Garbage-First garbage collector")                        \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1229
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1230
  product(bool, UseParallelGC, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1231
          "Use the Parallel Scavenge garbage collector")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1232
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1233
  product(bool, UseParallelOldGC, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1234
          "Use the Parallel Old garbage collector")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1235
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1236
  product(bool, UseParallelOldGCCompacting, true,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1237
          "In the Parallel Old garbage collector use parallel compaction")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1238
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1239
  product(bool, UseParallelDensePrefixUpdate, true,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1240
          "In the Parallel Old garbage collector use parallel dense"        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1241
          " prefix update")                                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1242
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1243
  product(uintx, HeapMaximumCompactionInterval, 20,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1244
          "How often should we maximally compact the heap (not allowing "   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1245
          "any dead space)")                                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1246
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1247
  product(uintx, HeapFirstMaximumCompactionCount, 3,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1248
          "The collection count for the first maximum compaction")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1249
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1250
  product(bool, UseMaximumCompactionOnSystemGC, true,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1251
          "In the Parallel Old garbage collector maximum compaction for "   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1252
          "a system GC")                                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1253
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1254
  product(uintx, ParallelOldDeadWoodLimiterMean, 50,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1255
          "The mean used by the par compact dead wood"                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1256
          "limiter (a number between 0-100).")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1257
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1258
  product(uintx, ParallelOldDeadWoodLimiterStdDev, 80,                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1259
          "The standard deviation used by the par compact dead wood"        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1260
          "limiter (a number between 0-100).")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1261
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1262
  product(bool, UseParallelOldGCDensePrefix, true,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1263
          "Use a dense prefix with the Parallel Old garbage collector")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1264
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1265
  product(uintx, ParallelGCThreads, 0,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1266
          "Number of parallel threads parallel gc will use")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1267
                                                                            \
1670
0deb85ea62d5 6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents: 1668
diff changeset
  1268
  develop(bool, ParallelOldGCSplitALot, false,                              \
0deb85ea62d5 6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents: 1668
diff changeset
  1269
          "Provoke splitting (copying data from a young gen space to"       \
0deb85ea62d5 6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents: 1668
diff changeset
  1270
          "multiple destination spaces)")                                   \
0deb85ea62d5 6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents: 1668
diff changeset
  1271
                                                                            \
0deb85ea62d5 6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents: 1668
diff changeset
  1272
  develop(uintx, ParallelOldGCSplitInterval, 3,                             \
0deb85ea62d5 6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents: 1668
diff changeset
  1273
          "How often to provoke splitting a young gen space")               \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1274
                                                                            \
1407
9006b01ba3fd 6725697: par compact - rename class ChunkData to RegionData
jcoomes
parents: 1406
diff changeset
  1275
  develop(bool, TraceRegionTasksQueuing, false,                             \
9006b01ba3fd 6725697: par compact - rename class ChunkData to RegionData
jcoomes
parents: 1406
diff changeset
  1276
          "Trace the queuing of the region tasks")                          \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1277
                                                                            \
5035
0e498c4df637 6928081: G1: rename parameters common with CMS
jmasa
parents: 5034
diff changeset
  1278
  product(uintx, ConcGCThreads, 0,                                          \
0e498c4df637 6928081: G1: rename parameters common with CMS
jmasa
parents: 5034
diff changeset
  1279
          "Number of threads concurrent gc will use")                       \
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents: 389
diff changeset
  1280
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1281
  product(uintx, YoungPLABSize, 4096,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1282
          "Size of young gen promotion labs (in HeapWords)")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1283
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1284
  product(uintx, OldPLABSize, 1024,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1285
          "Size of old gen promotion labs (in HeapWords)")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1286
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1287
  product(uintx, GCTaskTimeStampEntries, 200,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1288
          "Number of time stamp entries per gc worker thread")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1289
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1290
  product(bool, AlwaysTenure, false,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1291
          "Always tenure objects in eden. (ParallelGC only)")               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1292
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1293
  product(bool, NeverTenure, false,                                         \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1294
          "Never tenure objects in eden, May tenure on overflow "           \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1295
          "(ParallelGC only)")                                              \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1296
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1297
  product(bool, ScavengeBeforeFullGC, true,                                 \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1298
          "Scavenge youngest generation before each full GC, "              \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1299
          "used with UseParallelGC")                                        \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1300
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1301
  develop(bool, ScavengeWithObjectsInToSpace, false,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1302
          "Allow scavenges to occur when to_space contains objects.")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1303
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1304
  product(bool, UseConcMarkSweepGC, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1305
          "Use Concurrent Mark-Sweep GC in the old generation")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1306
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1307
  product(bool, ExplicitGCInvokesConcurrent, false,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1308
          "A System.gc() request invokes a concurrent collection;"          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1309
          " (effective only when UseConcMarkSweepGC)")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1310
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1311
  product(bool, ExplicitGCInvokesConcurrentAndUnloadsClasses, false,        \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1312
          "A System.gc() request invokes a concurrent collection and "      \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1313
          "also unloads classes during such a concurrent gc cycle "         \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1314
          "(effective only when UseConcMarkSweepGC)")                       \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1315
                                                                            \
5433
c182d4c3039e 6919638: CMS: ExplicitGCInvokesConcurrent misinteracts with gc locker
ysr
parents: 5431
diff changeset
  1316
  product(bool, GCLockerInvokesConcurrent, false,                           \
c182d4c3039e 6919638: CMS: ExplicitGCInvokesConcurrent misinteracts with gc locker
ysr
parents: 5431
diff changeset
  1317
          "The exit of a JNI CS necessitating a scavenge also"              \
c182d4c3039e 6919638: CMS: ExplicitGCInvokesConcurrent misinteracts with gc locker
ysr
parents: 5431
diff changeset
  1318
          " kicks off a bkgrd concurrent collection")                       \
c182d4c3039e 6919638: CMS: ExplicitGCInvokesConcurrent misinteracts with gc locker
ysr
parents: 5431
diff changeset
  1319
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1320
  develop(bool, UseCMSAdaptiveFreeLists, true,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1321
          "Use Adaptive Free Lists in the CMS generation")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1322
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1323
  develop(bool, UseAsyncConcMarkSweepGC, true,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1324
          "Use Asynchronous Concurrent Mark-Sweep GC in the old generation")\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1325
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1326
  develop(bool, RotateCMSCollectionTypes, false,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1327
          "Rotate the CMS collections among concurrent and STW")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1328
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1329
  product(bool, UseCMSBestFit, true,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1330
          "Use CMS best fit allocation strategy")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1331
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1332
  product(bool, UseCMSCollectionPassing, true,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1333
          "Use passing of collection from background to foreground")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1334
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1335
  product(bool, UseParNewGC, false,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1336
          "Use parallel threads in the new generation.")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1337
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1338
  product(bool, ParallelGCVerbose, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1339
          "Verbose output for parallel GC.")                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1340
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1341
  product(intx, ParallelGCBufferWastePct, 10,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1342
          "wasted fraction of parallel allocation buffer.")                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1343
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1344
  product(bool, ParallelGCRetainPLAB, true,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1345
          "Retain parallel allocation buffers across scavenges.")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1346
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1347
  product(intx, TargetPLABWastePct, 10,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1348
          "target wasted space in last buffer as pct of overall allocation")\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1349
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1350
  product(uintx, PLABWeight, 75,                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1351
          "Percentage (0-100) used to weight the current sample when"       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1352
          "computing exponentially decaying average for ResizePLAB.")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1353
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1354
  product(bool, ResizePLAB, true,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1355
          "Dynamically resize (survivor space) promotion labs")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1356
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1357
  product(bool, PrintPLAB, false,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1358
          "Print (survivor space) promotion labs sizing decisions")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1359
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1360
  product(intx, ParGCArrayScanChunk, 50,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1361
          "Scan a subset and push remainder, if array is bigger than this") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1362
                                                                            \
2362
5e1bfddf919e 6824570: ParNew: Fix memory leak introduced in 6819891
ysr
parents: 2346
diff changeset
  1363
  product(bool, ParGCUseLocalOverflow, false,                               \
5e1bfddf919e 6824570: ParNew: Fix memory leak introduced in 6819891
ysr
parents: 2346
diff changeset
  1364
          "Instead of a global overflow list, use local overflow stacks")   \
5e1bfddf919e 6824570: ParNew: Fix memory leak introduced in 6819891
ysr
parents: 2346
diff changeset
  1365
                                                                            \
2346
3aa355016e90 6819891: ParNew: Fix work queue overflow code to deal correctly with +UseCompressedOops
ysr
parents: 2259
diff changeset
  1366
  product(bool, ParGCTrimOverflow, true,                                    \
2362
5e1bfddf919e 6824570: ParNew: Fix memory leak introduced in 6819891
ysr
parents: 2346
diff changeset
  1367
          "Eagerly trim the local overflow lists (when ParGCUseLocalOverflow") \
2346
3aa355016e90 6819891: ParNew: Fix work queue overflow code to deal correctly with +UseCompressedOops
ysr
parents: 2259
diff changeset
  1368
                                                                            \
1910
386106352d02 6786503: Overflow list performance can be improved
ysr
parents: 1890
diff changeset
  1369
  notproduct(bool, ParGCWorkQueueOverflowALot, false,                       \
386106352d02 6786503: Overflow list performance can be improved
ysr
parents: 1890
diff changeset
  1370
          "Whether we should simulate work queue overflow in ParNew")       \
386106352d02 6786503: Overflow list performance can be improved
ysr
parents: 1890
diff changeset
  1371
                                                                            \
386106352d02 6786503: Overflow list performance can be improved
ysr
parents: 1890
diff changeset
  1372
  notproduct(uintx, ParGCWorkQueueOverflowInterval, 1000,                   \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1373
          "An `interval' counter that determines how frequently "           \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1374
          "we simulate overflow; a smaller number increases frequency")     \
1910
386106352d02 6786503: Overflow list performance can be improved
ysr
parents: 1890
diff changeset
  1375
                                                                            \
386106352d02 6786503: Overflow list performance can be improved
ysr
parents: 1890
diff changeset
  1376
  product(uintx, ParGCDesiredObjsFromOverflowList, 20,                      \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1377
          "The desired number of objects to claim from the overflow list")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1378
                                                                            \
4574
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1379
  product(uintx, CMSParPromoteBlocksToClaim, 16,                             \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1380
          "Number of blocks to attempt to claim when refilling CMS LAB for "\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1381
          "parallel GC.")                                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1382
                                                                            \
4574
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1383
  product(uintx, OldPLABWeight, 50,                                         \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1384
          "Percentage (0-100) used to weight the current sample when"       \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1385
          "computing exponentially decaying average for resizing CMSParPromoteBlocksToClaim.") \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1386
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1387
  product(bool, ResizeOldPLAB, true,                                        \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1388
          "Dynamically resize (old gen) promotion labs")                    \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1389
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1390
  product(bool, PrintOldPLAB, false,                                        \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1391
          "Print (old gen) promotion labs sizing decisions")                \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1392
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1393
  product(uintx, CMSOldPLABMin, 16,                                         \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1394
          "Min size of CMS gen promotion lab caches per worker per blksize")\
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1395
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1396
  product(uintx, CMSOldPLABMax, 1024,                                       \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1397
          "Max size of CMS gen promotion lab caches per worker per blksize")\
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1398
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1399
  product(uintx, CMSOldPLABNumRefills, 4,                                   \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1400
          "Nominal number of refills of CMS gen promotion lab cache"        \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1401
          " per worker per block size")                                     \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1402
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1403
  product(bool, CMSOldPLABResizeQuicker, false,                             \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1404
          "Whether to react on-the-fly during a scavenge to a sudden"       \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1405
          " change in block demand rate")                                   \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1406
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1407
  product(uintx, CMSOldPLABToleranceFactor, 4,                              \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1408
          "The tolerance of the phase-change detector for on-the-fly"       \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1409
          " PLAB resizing during a scavenge")                               \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1410
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1411
  product(uintx, CMSOldPLABReactivityFactor, 2,                             \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1412
          "The gain in the feedback loop for on-the-fly PLAB resizing"      \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1413
          " during a scavenge")                                             \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1414
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1415
  product(uintx, CMSOldPLABReactivityCeiling, 10,                           \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1416
          "The clamping of the gain in the feedback loop for on-the-fly"    \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1417
          " PLAB resizing during a scavenge")                               \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1418
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1419
  product(bool, AlwaysPreTouch, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1420
          "It forces all freshly committed pages to be pre-touched.")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1421
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1422
  product(bool, CMSUseOldDefaults, false,                                   \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1423
          "A flag temporarily introduced to allow reverting to some "       \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1424
          "older default settings; older as of 6.0")                        \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1425
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1426
  product(intx, CMSYoungGenPerWorker, 16*M,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1427
          "The amount of young gen chosen by default per GC worker "        \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1428
          "thread available")                                               \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1429
                                                                            \
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents: 389
diff changeset
  1430
  product(bool, GCOverheadReporting, false,                                 \
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents: 389
diff changeset
  1431
         "Enables the GC overhead reporting facility")                      \
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents: 389
diff changeset
  1432
                                                                            \
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents: 389
diff changeset
  1433
  product(intx, GCOverheadReportingPeriodMS, 100,                           \
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents: 389
diff changeset
  1434
          "Reporting period for conc GC overhead reporting, in ms ")        \
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents: 389
diff changeset
  1435
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1436
  product(bool, CMSIncrementalMode, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1437
          "Whether CMS GC should operate in \"incremental\" mode")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1438
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1439
  product(uintx, CMSIncrementalDutyCycle, 10,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1440
          "CMS incremental mode duty cycle (a percentage, 0-100).  If"      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1441
          "CMSIncrementalPacing is enabled, then this is just the initial"  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1442
          "value")                                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1443
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1444
  product(bool, CMSIncrementalPacing, true,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1445
          "Whether the CMS incremental mode duty cycle should be "          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1446
          "automatically adjusted")                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1447
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1448
  product(uintx, CMSIncrementalDutyCycleMin, 0,                             \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1449
          "Lower bound on the duty cycle when CMSIncrementalPacing is "     \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1450
          "enabled (a percentage, 0-100)")                                  \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1451
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1452
  product(uintx, CMSIncrementalSafetyFactor, 10,                            \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1453
          "Percentage (0-100) used to add conservatism when computing the " \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1454
          "duty cycle")                                                     \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1455
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1456
  product(uintx, CMSIncrementalOffset, 0,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1457
          "Percentage (0-100) by which the CMS incremental mode duty cycle" \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1458
          " is shifted to the right within the period between young GCs")   \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1459
                                                                            \
4574
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1460
  product(uintx, CMSExpAvgFactor, 50,                                       \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1461
          "Percentage (0-100) used to weight the current sample when"       \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1462
          "computing exponential averages for CMS statistics.")             \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1463
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1464
  product(uintx, CMS_FLSWeight, 75,                                         \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1465
          "Percentage (0-100) used to weight the current sample when"       \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1466
          "computing exponentially decating averages for CMS FLS statistics.") \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1467
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1468
  product(uintx, CMS_FLSPadding, 1,                                         \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1469
          "The multiple of deviation from mean to use for buffering"        \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1470
          "against volatility in free list demand.")                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1471
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1472
  product(uintx, FLSCoalescePolicy, 2,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1473
          "CMS: Aggression level for coalescing, increasing from 0 to 4")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1474
                                                                            \
4574
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1475
  product(bool, FLSAlwaysCoalesceLarge, false,                              \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1476
          "CMS: Larger free blocks are always available for coalescing")    \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1477
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1478
  product(double, FLSLargestBlockCoalesceProximity, 0.99,                   \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1479
          "CMS: the smaller the percentage the greater the coalition force")\
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1480
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1481
  product(double, CMSSmallCoalSurplusPercent, 1.05,                         \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1482
          "CMS: the factor by which to inflate estimated demand of small"   \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1483
          " block sizes to prevent coalescing with an adjoining block")     \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1484
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1485
  product(double, CMSLargeCoalSurplusPercent, 0.95,                         \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1486
          "CMS: the factor by which to inflate estimated demand of large"   \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1487
          " block sizes to prevent coalescing with an adjoining block")     \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1488
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1489
  product(double, CMSSmallSplitSurplusPercent, 1.10,                        \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1490
          "CMS: the factor by which to inflate estimated demand of small"   \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1491
          " block sizes to prevent splitting to supply demand for smaller"  \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1492
          " blocks")                                                        \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1493
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1494
  product(double, CMSLargeSplitSurplusPercent, 1.00,                        \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1495
          "CMS: the factor by which to inflate estimated demand of large"   \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1496
          " block sizes to prevent splitting to supply demand for smaller"  \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1497
          " blocks")                                                        \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1498
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1499
  product(bool, CMSExtrapolateSweep, false,                                 \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1500
          "CMS: cushion for block demand during sweep")                     \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1501
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1502
  product(uintx, CMS_SweepWeight, 75,                                       \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1503
          "Percentage (0-100) used to weight the current sample when "      \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1504
          "computing exponentially decaying average for inter-sweep "       \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1505
          "duration")                                                       \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1506
                                                                            \
4574
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1507
  product(uintx, CMS_SweepPadding, 1,                                       \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1508
          "The multiple of deviation from mean to use for buffering "       \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1509
          "against volatility in inter-sweep duration.")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1510
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1511
  product(uintx, CMS_SweepTimerThresholdMillis, 10,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1512
          "Skip block flux-rate sampling for an epoch unless inter-sweep "  \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1513
          "duration exceeds this threhold in milliseconds")                 \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1514
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1515
  develop(bool, CMSTraceIncrementalMode, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1516
          "Trace CMS incremental mode")                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1517
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1518
  develop(bool, CMSTraceIncrementalPacing, false,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1519
          "Trace CMS incremental mode pacing computation")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1520
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1521
  develop(bool, CMSTraceThreadState, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1522
          "Trace the CMS thread state (enable the trace_state() method)")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1523
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1524
  product(bool, CMSClassUnloadingEnabled, false,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1525
          "Whether class unloading enabled when using CMS GC")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1526
                                                                            \
341
6578aad59716 6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents: 188
diff changeset
  1527
  product(uintx, CMSClassUnloadingMaxInterval, 0,                           \
6578aad59716 6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents: 188
diff changeset
  1528
          "When CMS class unloading is enabled, the maximum CMS cycle count"\
6578aad59716 6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents: 188
diff changeset
  1529
          " for which classes may not be unloaded")                         \
6578aad59716 6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents: 188
diff changeset
  1530
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1531
  product(bool, CMSCompactWhenClearAllSoftRefs, true,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1532
          "Compact when asked to collect CMS gen with clear_all_soft_refs") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1533
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1534
  product(bool, UseCMSCompactAtFullCollection, true,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1535
          "Use mark sweep compact at full collections")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1536
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1537
  product(uintx, CMSFullGCsBeforeCompaction, 0,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1538
          "Number of CMS full collection done before compaction if > 0")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1539
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1540
  develop(intx, CMSDictionaryChoice, 0,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1541
          "Use BinaryTreeDictionary as default in the CMS generation")      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1542
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1543
  product(uintx, CMSIndexedFreeListReplenish, 4,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1544
          "Replenish and indexed free list with this number of chunks")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1545
                                                                            \
4574
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1546
  product(bool, CMSReplenishIntermediate, true,                             \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1547
          "Replenish all intermediate free-list caches")                    \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1548
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1549
  product(bool, CMSSplitIndexedFreeListBlocks, true,                        \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1550
          "When satisfying batched demand, splot blocks from the "          \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1551
          "IndexedFreeList whose size is a multiple of requested size")     \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1552
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1553
  product(bool, CMSLoopWarn, false,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1554
          "Warn in case of excessive CMS looping")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1555
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1556
  develop(bool, CMSOverflowEarlyRestoration, false,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1557
          "Whether preserved marks should be restored early")               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1558
                                                                            \
5035
0e498c4df637 6928081: G1: rename parameters common with CMS
jmasa
parents: 5034
diff changeset
  1559
  product(uintx, MarkStackSize, NOT_LP64(32*K) LP64_ONLY(4*M),              \
0e498c4df637 6928081: G1: rename parameters common with CMS
jmasa
parents: 5034
diff changeset
  1560
          "Size of marking stack")                                          \
0e498c4df637 6928081: G1: rename parameters common with CMS
jmasa
parents: 5034
diff changeset
  1561
                                                                            \
0e498c4df637 6928081: G1: rename parameters common with CMS
jmasa
parents: 5034
diff changeset
  1562
  product(uintx, MarkStackSizeMax, NOT_LP64(4*M) LP64_ONLY(512*M),          \
0e498c4df637 6928081: G1: rename parameters common with CMS
jmasa
parents: 5034
diff changeset
  1563
          "Max size of marking stack")                                      \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1564
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1565
  notproduct(bool, CMSMarkStackOverflowALot, false,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1566
          "Whether we should simulate frequent marking stack / work queue"  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1567
          " overflow")                                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1568
                                                                            \
1910
386106352d02 6786503: Overflow list performance can be improved
ysr
parents: 1890
diff changeset
  1569
  notproduct(uintx, CMSMarkStackOverflowInterval, 1000,                     \
386106352d02 6786503: Overflow list performance can be improved
ysr
parents: 1890
diff changeset
  1570
          "An `interval' counter that determines how frequently"            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1571
          " we simulate overflow; a smaller number increases frequency")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1572
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1573
  product(uintx, CMSMaxAbortablePrecleanLoops, 0,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1574
          "(Temporary, subject to experimentation)"                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1575
          "Maximum number of abortable preclean iterations, if > 0")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1576
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1577
  product(intx, CMSMaxAbortablePrecleanTime, 5000,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1578
          "(Temporary, subject to experimentation)"                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1579
          "Maximum time in abortable preclean in ms")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1580
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1581
  product(uintx, CMSAbortablePrecleanMinWorkPerIteration, 100,              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1582
          "(Temporary, subject to experimentation)"                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1583
          "Nominal minimum work per abortable preclean iteration")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1584
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1585
  product(intx, CMSAbortablePrecleanWaitMillis, 100,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1586
          "(Temporary, subject to experimentation)"                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1587
          " Time that we sleep between iterations when not given"           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1588
          " enough work per iteration")                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1589
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1590
  product(uintx, CMSRescanMultiple, 32,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1591
          "Size (in cards) of CMS parallel rescan task")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1592
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1593
  product(uintx, CMSConcMarkMultiple, 32,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1594
          "Size (in cards) of CMS concurrent MT marking task")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1595
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1596
  product(uintx, CMSRevisitStackSize, 1*M,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1597
          "Size of CMS KlassKlass revisit stack")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1598
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1599
  product(bool, CMSAbortSemantics, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1600
          "Whether abort-on-overflow semantics is implemented")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1601
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1602
  product(bool, CMSParallelRemarkEnabled, true,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1603
          "Whether parallel remark enabled (only if ParNewGC)")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1604
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1605
  product(bool, CMSParallelSurvivorRemarkEnabled, true,                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1606
          "Whether parallel remark of survivor space"                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1607
          " enabled (effective only if CMSParallelRemarkEnabled)")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1608
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1609
  product(bool, CMSPLABRecordAlways, true,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1610
          "Whether to always record survivor space PLAB bdries"             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1611
          " (effective only if CMSParallelSurvivorRemarkEnabled)")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1612
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1613
  product(bool, CMSConcurrentMTEnabled, true,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1614
          "Whether multi-threaded concurrent work enabled (if ParNewGC)")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1615
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1616
  product(bool, CMSPermGenPrecleaningEnabled, true,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1617
          "Whether concurrent precleaning enabled in perm gen"              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1618
          " (effective only when CMSPrecleaningEnabled is true)")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1619
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1620
  product(bool, CMSPrecleaningEnabled, true,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1621
          "Whether concurrent precleaning enabled")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1622
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1623
  product(uintx, CMSPrecleanIter, 3,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1624
          "Maximum number of precleaning iteration passes")                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1625
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1626
  product(uintx, CMSPrecleanNumerator, 2,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1627
          "CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence"  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1628
          " ratio")                                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1629
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1630
  product(uintx, CMSPrecleanDenominator, 3,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1631
          "CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence"  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1632
          " ratio")                                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1633
                                                                            \
1605
6b43d186eb8d 6722113: CMS: Incorrect overflow handling during precleaning of Reference lists
ysr
parents: 1562
diff changeset
  1634
  product(bool, CMSPrecleanRefLists1, true,                                 \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1635
          "Preclean ref lists during (initial) preclean phase")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1636
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1637
  product(bool, CMSPrecleanRefLists2, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1638
          "Preclean ref lists during abortable preclean phase")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1639
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1640
  product(bool, CMSPrecleanSurvivors1, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1641
          "Preclean survivors during (initial) preclean phase")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1642
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1643
  product(bool, CMSPrecleanSurvivors2, true,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1644
          "Preclean survivors during abortable preclean phase")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1645
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1646
  product(uintx, CMSPrecleanThreshold, 1000,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1647
          "Don't re-iterate if #dirty cards less than this")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1648
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1649
  product(bool, CMSCleanOnEnter, true,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1650
          "Clean-on-enter optimization for reducing number of dirty cards") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1651
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1652
  product(uintx, CMSRemarkVerifyVariant, 1,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1653
          "Choose variant (1,2) of verification following remark")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1654
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1655
  product(uintx, CMSScheduleRemarkEdenSizeThreshold, 2*M,                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1656
          "If Eden used is below this value, don't try to schedule remark") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1657
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1658
  product(uintx, CMSScheduleRemarkEdenPenetration, 50,                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1659
          "The Eden occupancy % at which to try and schedule remark pause") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1660
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1661
  product(uintx, CMSScheduleRemarkSamplingRatio, 5,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1662
          "Start sampling Eden top at least before yg occupancy reaches"    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1663
          " 1/<ratio> of the size at which we plan to schedule remark")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1664
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1665
  product(uintx, CMSSamplingGrain, 16*K,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1666
          "The minimum distance between eden samples for CMS (see above)")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1667
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1668
  product(bool, CMSScavengeBeforeRemark, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1669
          "Attempt scavenge before the CMS remark step")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1670
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1671
  develop(bool, CMSTraceSweeper, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1672
          "Trace some actions of the CMS sweeper")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1673
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1674
  product(uintx, CMSWorkQueueDrainThreshold, 10,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1675
          "Don't drain below this size per parallel worker/thief")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1676
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1677
  product(intx, CMSWaitDuration, 2000,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1678
          "Time in milliseconds that CMS thread waits for young GC")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1679
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1680
  product(bool, CMSYield, true,                                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1681
          "Yield between steps of concurrent mark & sweep")                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1682
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1683
  product(uintx, CMSBitMapYieldQuantum, 10*M,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1684
          "Bitmap operations should process at most this many bits"         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1685
          "between yields")                                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1686
                                                                            \
4574
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1687
  product(bool, CMSDumpAtPromotionFailure, false,                           \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1688
          "Dump useful information about the state of the CMS old "         \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1689
          " generation upon a promotion failure.")                          \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1690
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1691
  product(bool, CMSPrintChunksInDump, false,                                \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1692
          "In a dump enabled by CMSDumpAtPromotionFailure, include "        \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1693
          " more detailed information about the free chunks.")              \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1694
                                                                            \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1695
  product(bool, CMSPrintObjectsInDump, false,                               \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1696
          "In a dump enabled by CMSDumpAtPromotionFailure, include "        \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1697
          " more detailed information about the allocated objects.")        \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1698
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1699
  diagnostic(bool, FLSVerifyAllHeapReferences, false,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1700
          "Verify that all refs across the FLS boundary "                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1701
          " are to valid objects")                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1702
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1703
  diagnostic(bool, FLSVerifyLists, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1704
          "Do lots of (expensive) FreeListSpace verification")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1705
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1706
  diagnostic(bool, FLSVerifyIndexTable, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1707
          "Do lots of (expensive) FLS index table verification")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1708
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1709
  develop(bool, FLSVerifyDictionary, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1710
          "Do lots of (expensive) FLS dictionary verification")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1711
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1712
  develop(bool, VerifyBlockOffsetArray, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1713
          "Do (expensive!) block offset array verification")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1714
                                                                            \
6258
68f252c6e825 6948538: CMS: BOT walkers can fall into object allocation and initialization cracks
ysr
parents: 6255
diff changeset
  1715
  product(bool, BlockOffsetArrayUseUnallocatedBlock, false,                 \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1716
          "Maintain _unallocated_block in BlockOffsetArray"                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1717
          " (currently applicable only to CMS collector)")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1718
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1719
  develop(bool, TraceCMSState, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1720
          "Trace the state of the CMS collection")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1721
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1722
  product(intx, RefDiscoveryPolicy, 0,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1723
          "Whether reference-based(0) or referent-based(1)")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1724
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1725
  product(bool, ParallelRefProcEnabled, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1726
          "Enable parallel reference processing whenever possible")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1727
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1728
  product(bool, ParallelRefProcBalancingEnabled, true,                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1729
          "Enable balancing of reference processing queues")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1730
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1731
  product(intx, CMSTriggerRatio, 80,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1732
          "Percentage of MinHeapFreeRatio in CMS generation that is "       \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1733
          "allocated before a CMS collection cycle commences")              \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1734
                                                                            \
341
6578aad59716 6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents: 188
diff changeset
  1735
  product(intx, CMSTriggerPermRatio, 80,                                    \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1736
          "Percentage of MinHeapFreeRatio in the CMS perm generation that " \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1737
          "is allocated before a CMS collection cycle commences, that "     \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1738
          "also collects the perm generation")                              \
341
6578aad59716 6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents: 188
diff changeset
  1739
                                                                            \
6578aad59716 6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents: 188
diff changeset
  1740
  product(uintx, CMSBootstrapOccupancy, 50,                                 \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1741
          "Percentage CMS generation occupancy at which to "                \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1742
          "initiate CMS collection for bootstrapping collection stats")     \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1743
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1744
  product(intx, CMSInitiatingOccupancyFraction, -1,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1745
          "Percentage CMS generation occupancy to start a CMS collection "  \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1746
          "cycle. A negative value means that CMSTriggerRatio is used")     \
341
6578aad59716 6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents: 188
diff changeset
  1747
                                                                            \
5034
a1cec6310394 6928073: G1: use existing command line parameters for marking cycle initiation
tonyp
parents: 4759
diff changeset
  1748
  product(uintx, InitiatingHeapOccupancyPercent, 45,                        \
a1cec6310394 6928073: G1: use existing command line parameters for marking cycle initiation
tonyp
parents: 4759
diff changeset
  1749
          "Percentage of the (entire) heap occupancy to start a "           \
a1cec6310394 6928073: G1: use existing command line parameters for marking cycle initiation
tonyp
parents: 4759
diff changeset
  1750
          "concurrent GC cycle. It us used by GCs that trigger a "          \
a1cec6310394 6928073: G1: use existing command line parameters for marking cycle initiation
tonyp
parents: 4759
diff changeset
  1751
          "concurrent GC cycle based on the occupancy of the entire heap, " \
a1cec6310394 6928073: G1: use existing command line parameters for marking cycle initiation
tonyp
parents: 4759
diff changeset
  1752
          "not just one of the generations (e.g., G1). A value of 0 "       \
a1cec6310394 6928073: G1: use existing command line parameters for marking cycle initiation
tonyp
parents: 4759
diff changeset
  1753
          "denotes 'do constant GC cycles'.")                               \
a1cec6310394 6928073: G1: use existing command line parameters for marking cycle initiation
tonyp
parents: 4759
diff changeset
  1754
                                                                            \
341
6578aad59716 6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents: 188
diff changeset
  1755
  product(intx, CMSInitiatingPermOccupancyFraction, -1,                     \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1756
          "Percentage CMS perm generation occupancy to start a "            \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1757
          "CMScollection cycle. A negative value means that "               \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1758
          "CMSTriggerPermRatio is used")                                    \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1759
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1760
  product(bool, UseCMSInitiatingOccupancyOnly, false,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1761
          "Only use occupancy as a crierion for starting a CMS collection") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1762
                                                                            \
341
6578aad59716 6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents: 188
diff changeset
  1763
  product(intx, CMSIsTooFullPercentage, 98,                                 \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1764
          "An absolute ceiling above which CMS will always consider the "   \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1765
          "perm gen ripe for collection")                                   \
341
6578aad59716 6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents: 188
diff changeset
  1766
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1767
  develop(bool, CMSTestInFreeList, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1768
          "Check if the coalesced range is already in the "                 \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1769
          "free lists as claimed")                                          \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1770
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1771
  notproduct(bool, CMSVerifyReturnedBytes, false,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1772
          "Check that all the garbage collected was returned to the "       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1773
          "free lists.")                                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1774
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1775
  notproduct(bool, ScavengeALot, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1776
          "Force scavenge at every Nth exit from the runtime system "       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1777
          "(N=ScavengeALotInterval)")                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1778
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1779
  develop(bool, FullGCALot, false,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1780
          "Force full gc at every Nth exit from the runtime system "        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1781
          "(N=FullGCALotInterval)")                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1782
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1783
  notproduct(bool, GCALotAtAllSafepoints, false,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1784
          "Enforce ScavengeALot/GCALot at all potential safepoints")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1785
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1786
  product(bool, HandlePromotionFailure, true,                               \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1787
          "The youngest generation collection does not require "            \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1788
          "a guarantee of full promotion of all live objects.")             \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1789
                                                                            \
4574
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1790
  product(bool, PrintPromotionFailure, false,                               \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1791
          "Print additional diagnostic information following "              \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1792
          " promotion failure")                                             \
b2d5b0975515 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 4434
diff changeset
  1793
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1794
  notproduct(bool, PromotionFailureALot, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1795
          "Use promotion failure handling on every youngest generation "    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1796
          "collection")                                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1797
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1798
  develop(uintx, PromotionFailureALotCount, 1000,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1799
          "Number of promotion failures occurring at ParGCAllocBuffer"      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1800
          "refill attempts (ParNew) or promotion attempts "                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1801
          "(other young collectors) ")                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1802
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1803
  develop(uintx, PromotionFailureALotInterval, 5,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1804
          "Total collections between promotion failures alot")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1805
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1806
  develop(intx, WorkStealingSleepMillis, 1,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1807
          "Sleep time when sleep is used for yields")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1808
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1809
  develop(uintx, WorkStealingYieldsBeforeSleep, 1000,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1810
          "Number of yields before a sleep is done during workstealing")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1811
                                                                            \
2010
c13462bbad17 6690928: Use spinning in combination with yields for workstealing termination.
jmasa
parents: 2005
diff changeset
  1812
  develop(uintx, WorkStealingHardSpins, 4096,                               \
c13462bbad17 6690928: Use spinning in combination with yields for workstealing termination.
jmasa
parents: 2005
diff changeset
  1813
          "Number of iterations in a spin loop between checks on "          \
c13462bbad17 6690928: Use spinning in combination with yields for workstealing termination.
jmasa
parents: 2005
diff changeset
  1814
          "time out of hard spin")                                          \
c13462bbad17 6690928: Use spinning in combination with yields for workstealing termination.
jmasa
parents: 2005
diff changeset
  1815
                                                                            \
c13462bbad17 6690928: Use spinning in combination with yields for workstealing termination.
jmasa
parents: 2005
diff changeset
  1816
  develop(uintx, WorkStealingSpinToYieldRatio, 10,                          \
c13462bbad17 6690928: Use spinning in combination with yields for workstealing termination.
jmasa
parents: 2005
diff changeset
  1817
          "Ratio of hard spins to calls to yield")                          \
c13462bbad17 6690928: Use spinning in combination with yields for workstealing termination.
jmasa
parents: 2005
diff changeset
  1818
                                                                            \
1910
386106352d02 6786503: Overflow list performance can be improved
ysr
parents: 1890
diff changeset
  1819
  product(uintx, PreserveMarkStackSize, 1024,                               \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1820
          "Size for stack used in promotion failure handling")              \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1821
                                                                            \
5076
8b74a4b60b31 4396719: Mark Sweep stack overflow on deeply nested Object arrays
jcoomes
parents: 5039
diff changeset
  1822
  develop(uintx, ObjArrayMarkingStride, 512,                                \
8b74a4b60b31 4396719: Mark Sweep stack overflow on deeply nested Object arrays
jcoomes
parents: 5039
diff changeset
  1823
          "Number of ObjArray elements to push onto the marking stack"      \
8b74a4b60b31 4396719: Mark Sweep stack overflow on deeply nested Object arrays
jcoomes
parents: 5039
diff changeset
  1824
          "before pushing a continuation entry")                            \
8b74a4b60b31 4396719: Mark Sweep stack overflow on deeply nested Object arrays
jcoomes
parents: 5039
diff changeset
  1825
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1826
  product_pd(bool, UseTLAB, "Use thread-local object allocation")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1827
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1828
  product_pd(bool, ResizeTLAB,                                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1829
          "Dynamically resize tlab size for threads")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1830
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1831
  product(bool, ZeroTLAB, false,                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1832
          "Zero out the newly created TLAB")                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1833
                                                                            \
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents: 389
diff changeset
  1834
  product(bool, FastTLABRefill, true,                                       \
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents: 389
diff changeset
  1835
          "Use fast TLAB refill code")                                      \
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents: 389
diff changeset
  1836
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1837
  product(bool, PrintTLAB, false,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1838
          "Print various TLAB related information")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1839
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1840
  product(bool, TLABStats, true,                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1841
          "Print various TLAB related information")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1842
                                                                            \
3696
9e5d9b5e1049 4957990: Perm heap bloat in JVM
ysr
parents: 3610
diff changeset
  1843
  product(bool, PrintRevisitStats, false,                                   \
9e5d9b5e1049 4957990: Perm heap bloat in JVM
ysr
parents: 3610
diff changeset
  1844
          "Print revisit (klass and MDO) stack related information")        \
9e5d9b5e1049 4957990: Perm heap bloat in JVM
ysr
parents: 3610
diff changeset
  1845
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1846
  product_pd(bool, NeverActAsServerClassMachine,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1847
          "Never act like a server-class machine")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1848
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1849
  product(bool, AlwaysActAsServerClassMachine, false,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1850
          "Always act like a server-class machine")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1851
                                                                            \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1852
  product_pd(uint64_t, MaxRAM,                                              \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1853
          "Real memory size (in bytes) used to set maximum heap size")      \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1854
                                                                            \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1855
  product(uintx, ErgoHeapSizeLimit, 0,                                      \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1856
          "Maximum ergonomically set heap size (in bytes); zero means use " \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1857
          "MaxRAM / MaxRAMFraction")                                        \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1858
                                                                            \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1859
  product(uintx, MaxRAMFraction, 4,                                         \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1860
          "Maximum fraction (1/n) of real memory used for maximum heap "    \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1861
          "size")                                                           \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1862
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1863
  product(uintx, DefaultMaxRAMFraction, 4,                                  \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1864
          "Maximum fraction (1/n) of real memory used for maximum heap "    \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1865
          "size; deprecated: to be renamed to MaxRAMFraction")              \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1866
                                                                            \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1867
  product(uintx, MinRAMFraction, 2,                                         \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1868
          "Minimum fraction (1/n) of real memory used for maxmimum heap "   \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1869
          "size on systems with small physical memory size")                \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1870
                                                                            \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1871
  product(uintx, InitialRAMFraction, 64,                                    \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1872
          "Fraction (1/n) of real memory used for initial heap size")       \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1873
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1874
  product(bool, UseAutoGCSelectPolicy, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1875
          "Use automatic collection selection policy")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1876
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1877
  product(uintx, AutoGCSelectPauseMillis, 5000,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1878
          "Automatic GC selection pause threshhold in ms")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1879
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1880
  product(bool, UseAdaptiveSizePolicy, true,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1881
          "Use adaptive generation sizing policies")                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1882
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1883
  product(bool, UsePSAdaptiveSurvivorSizePolicy, true,                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1884
          "Use adaptive survivor sizing policies")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1885
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1886
  product(bool, UseAdaptiveGenerationSizePolicyAtMinorCollection, true,     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1887
          "Use adaptive young-old sizing policies at minor collections")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1888
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1889
  product(bool, UseAdaptiveGenerationSizePolicyAtMajorCollection, true,     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1890
          "Use adaptive young-old sizing policies at major collections")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1891
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1892
  product(bool, UseAdaptiveSizePolicyWithSystemGC, false,                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1893
          "Use statistics from System.GC for adaptive size policy")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1894
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1895
  product(bool, UseAdaptiveGCBoundary, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1896
          "Allow young-old boundary to move")                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1897
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1898
  develop(bool, TraceAdaptiveGCBoundary, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1899
          "Trace young-old boundary moves")                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1900
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1901
  develop(intx, PSAdaptiveSizePolicyResizeVirtualSpaceAlot, -1,             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1902
          "Resize the virtual spaces of the young or old generations")      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1903
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1904
  product(uintx, AdaptiveSizeThroughPutPolicy, 0,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1905
          "Policy for changeing generation size for throughput goals")      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1906
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1907
  product(uintx, AdaptiveSizePausePolicy, 0,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1908
          "Policy for changing generation size for pause goals")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1909
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1910
  develop(bool, PSAdjustTenuredGenForMinorPause, false,                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1911
          "Adjust tenured generation to achive a minor pause goal")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1912
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1913
  develop(bool, PSAdjustYoungGenForMajorPause, false,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1914
          "Adjust young generation to achive a major pause goal")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1915
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1916
  product(uintx, AdaptiveSizePolicyInitializingSteps, 20,                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1917
          "Number of steps where heuristics is used before data is used")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1918
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1919
  develop(uintx, AdaptiveSizePolicyReadyThreshold, 5,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1920
          "Number of collections before the adaptive sizing is started")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1921
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1922
  product(uintx, AdaptiveSizePolicyOutputInterval, 0,                       \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1923
          "Collecton interval for printing information; zero => never")     \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1924
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1925
  product(bool, UseAdaptiveSizePolicyFootprintGoal, true,                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1926
          "Use adaptive minimum footprint as a goal")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1927
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1928
  product(uintx, AdaptiveSizePolicyWeight, 10,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1929
          "Weight given to exponential resizing, between 0 and 100")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1930
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1931
  product(uintx, AdaptiveTimeWeight,       25,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1932
          "Weight given to time in adaptive policy, between 0 and 100")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1933
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1934
  product(uintx, PausePadding, 1,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1935
          "How much buffer to keep for pause time")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1936
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1937
  product(uintx, PromotedPadding, 3,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1938
          "How much buffer to keep for promotion failure")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1939
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1940
  product(uintx, SurvivorPadding, 3,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1941
          "How much buffer to keep for survivor overflow")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1942
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1943
  product(uintx, AdaptivePermSizeWeight, 20,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1944
          "Weight for perm gen exponential resizing, between 0 and 100")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1945
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1946
  product(uintx, PermGenPadding, 3,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1947
          "How much buffer to keep for perm gen sizing")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1948
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1949
  product(uintx, ThresholdTolerance, 10,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1950
          "Allowed collection cost difference between generations")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1951
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1952
  product(uintx, AdaptiveSizePolicyCollectionCostMargin, 50,                \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1953
          "If collection costs are within margin, reduce both by full "     \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  1954
          "delta")                                                          \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1955
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1956
  product(uintx, YoungGenerationSizeIncrement, 20,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1957
          "Adaptive size percentage change in young generation")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1958
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1959
  product(uintx, YoungGenerationSizeSupplement, 80,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1960
          "Supplement to YoungedGenerationSizeIncrement used at startup")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1961
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1962
  product(uintx, YoungGenerationSizeSupplementDecay, 8,                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1963
          "Decay factor to YoungedGenerationSizeSupplement")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1964
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1965
  product(uintx, TenuredGenerationSizeIncrement, 20,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1966
          "Adaptive size percentage change in tenured generation")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1967
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1968
  product(uintx, TenuredGenerationSizeSupplement, 80,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1969
          "Supplement to TenuredGenerationSizeIncrement used at startup")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1970
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1971
  product(uintx, TenuredGenerationSizeSupplementDecay, 2,                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1972
          "Decay factor to TenuredGenerationSizeIncrement")                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1973
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1974
  product(uintx, MaxGCPauseMillis, max_uintx,                               \
2741
34e2a243d69a 6490395: G1: Tidy up command line flags.
johnc
parents: 2570
diff changeset
  1975
          "Adaptive size policy maximum GC pause time goal in msec, "       \
34e2a243d69a 6490395: G1: Tidy up command line flags.
johnc
parents: 2570
diff changeset
  1976
          "or (G1 Only) the max. GC time per MMU time slice")               \
34e2a243d69a 6490395: G1: Tidy up command line flags.
johnc
parents: 2570
diff changeset
  1977
                                                                            \
5890
5766abbf8789 6949307: G1: raise a vm error, do not core dump, if target pause time and target interval are inconsistent
tonyp
parents: 5712
diff changeset
  1978
  product(uintx, GCPauseIntervalMillis, 0,                                  \
2741
34e2a243d69a 6490395: G1: Tidy up command line flags.
johnc
parents: 2570
diff changeset
  1979
          "Time slice for MMU specification")                               \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1980
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1981
  product(uintx, MaxGCMinorPauseMillis, max_uintx,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1982
          "Adaptive size policy maximum GC minor pause time goal in msec")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1983
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1984
  product(uintx, GCTimeRatio, 99,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1985
          "Adaptive size policy application time to GC time ratio")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1986
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1987
  product(uintx, AdaptiveSizeDecrementScaleFactor, 4,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1988
          "Adaptive size scale down factor for shrinking")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1989
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1990
  product(bool, UseAdaptiveSizeDecayMajorGCCost, true,                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1991
          "Adaptive size decays the major cost for long major intervals")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1992
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1993
  product(uintx, AdaptiveSizeMajorGCDecayTimeScale, 10,                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1994
          "Time scale over which major costs decay")                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1995
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1996
  product(uintx, MinSurvivorRatio, 3,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1997
          "Minimum ratio of young generation/survivor space size")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1998
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1999
  product(uintx, InitialSurvivorRatio, 8,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2000
          "Initial ratio of eden/survivor space size")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2001
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2002
  product(uintx, BaseFootPrintEstimate, 256*M,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2003
          "Estimate of footprint other than Java Heap")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2004
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2005
  product(bool, UseGCOverheadLimit, true,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2006
          "Use policy to limit of proportion of time spent in GC "          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2007
          "before an OutOfMemory error is thrown")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2008
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2009
  product(uintx, GCTimeLimit, 98,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2010
          "Limit of proportion of time spent in GC before an OutOfMemory"   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2011
          "error is thrown (used with GCHeapFreeLimit)")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2012
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2013
  product(uintx, GCHeapFreeLimit, 2,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2014
          "Minimum percentage of free space after a full GC before an "     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2015
          "OutOfMemoryError is thrown (used with GCTimeLimit)")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2016
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2017
  develop(uintx, AdaptiveSizePolicyGCTimeLimitThreshold, 5,                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2018
          "Number of consecutive collections before gc time limit fires")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2019
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2020
  product(bool, PrintAdaptiveSizePolicy, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2021
          "Print information about AdaptiveSizePolicy")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2022
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2023
  product(intx, PrefetchCopyIntervalInBytes, -1,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2024
          "How far ahead to prefetch destination area (<= 0 means off)")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2025
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2026
  product(intx, PrefetchScanIntervalInBytes, -1,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2027
          "How far ahead to prefetch scan area (<= 0 means off)")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2028
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2029
  product(intx, PrefetchFieldsAhead, -1,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2030
          "How many fields ahead to prefetch in oop scan (<= 0 means off)") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2031
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2032
  develop(bool, UsePrefetchQueue, true,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2033
          "Use the prefetch queue during PS promotion")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2034
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2035
  diagnostic(bool, VerifyBeforeExit, trueInDebug,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2036
          "Verify system before exiting")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2037
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2038
  diagnostic(bool, VerifyBeforeGC, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2039
          "Verify memory system before GC")                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2040
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2041
  diagnostic(bool, VerifyAfterGC, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2042
          "Verify memory system after GC")                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2043
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2044
  diagnostic(bool, VerifyDuringGC, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2045
          "Verify memory system during GC (between phases)")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2046
                                                                            \
1422
9af8f4023912 6752248: G1: introduce parallel heap verification
tonyp
parents: 1421
diff changeset
  2047
  diagnostic(bool, GCParallelVerificationEnabled, true,                     \
9af8f4023912 6752248: G1: introduce parallel heap verification
tonyp
parents: 1421
diff changeset
  2048
          "Enable parallel memory system verification")                     \
9af8f4023912 6752248: G1: introduce parallel heap verification
tonyp
parents: 1421
diff changeset
  2049
                                                                            \
4637
af4d405aacc1 6896647: card marks can be deferred too long
ysr
parents: 4575
diff changeset
  2050
  diagnostic(bool, DeferInitialCardMark, false,                             \
af4d405aacc1 6896647: card marks can be deferred too long
ysr
parents: 4575
diff changeset
  2051
          "When +ReduceInitialCardMarks, explicitly defer any that "        \
af4d405aacc1 6896647: card marks can be deferred too long
ysr
parents: 4575
diff changeset
  2052
           "may arise from new_pre_store_barrier")                          \
af4d405aacc1 6896647: card marks can be deferred too long
ysr
parents: 4575
diff changeset
  2053
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2054
  diagnostic(bool, VerifyRememberedSets, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2055
          "Verify GC remembered sets")                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2056
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2057
  diagnostic(bool, VerifyObjectStartArray, true,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2058
          "Verify GC object start array if verify before/after")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2059
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2060
  product(bool, DisableExplicitGC, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2061
          "Tells whether calling System.gc() does a full GC")               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2062
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2063
  notproduct(bool, CheckMemoryInitialization, false,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2064
          "Checks memory initialization")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2065
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2066
  product(bool, CollectGen0First, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2067
          "Collect youngest generation before each full GC")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2068
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2069
  diagnostic(bool, BindCMSThreadToCPU, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2070
          "Bind CMS Thread to CPU if possible")                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2071
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2072
  diagnostic(uintx, CPUForCMSThread, 0,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2073
          "When BindCMSThreadToCPU is true, the CPU to bind CMS thread to") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2074
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2075
  product(bool, BindGCTaskThreadsToCPUs, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2076
          "Bind GCTaskThreads to CPUs if possible")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2077
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2078
  product(bool, UseGCTaskAffinity, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2079
          "Use worker affinity when asking for GCTasks")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2080
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2081
  product(uintx, ProcessDistributionStride, 4,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2082
          "Stride through processors when distributing processes")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2083
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2084
  product(uintx, CMSCoordinatorYieldSleepCount, 10,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2085
          "number of times the coordinator GC thread will sleep while "     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2086
          "yielding before giving up and resuming GC")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2087
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2088
  product(uintx, CMSYieldSleepCount, 0,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2089
          "number of times a GC thread (minus the coordinator) "            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2090
          "will sleep while yielding before giving up and resuming GC")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2091
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2092
  /* gc tracing */                                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2093
  manageable(bool, PrintGC, false,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2094
          "Print message at garbage collect")                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2095
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2096
  manageable(bool, PrintGCDetails, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2097
          "Print more details at garbage collect")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2098
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2099
  manageable(bool, PrintGCDateStamps, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2100
          "Print date stamps at garbage collect")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2101
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2102
  manageable(bool, PrintGCTimeStamps, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2103
          "Print timestamps at garbage collect")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2104
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2105
  product(bool, PrintGCTaskTimeStamps, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2106
          "Print timestamps for individual gc worker thread tasks")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2107
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2108
  develop(intx, ConcGCYieldTimeout, 0,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2109
          "If non-zero, assert that GC threads yield within this # of ms.") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2110
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2111
  notproduct(bool, TraceMarkSweep, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2112
          "Trace mark sweep")                                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2113
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2114
  product(bool, PrintReferenceGC, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2115
          "Print times spent handling reference objects during GC "         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2116
          " (enabled only when PrintGCDetails)")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2117
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2118
  develop(bool, TraceReferenceGC, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2119
          "Trace handling of soft/weak/final/phantom references")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2120
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2121
  develop(bool, TraceFinalizerRegistration, false,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2122
         "Trace registration of final references")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2123
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2124
  notproduct(bool, TraceScavenge, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2125
          "Trace scavenge")                                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2126
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2127
  product_rw(bool, TraceClassLoading, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2128
          "Trace all classes loaded")                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2129
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2130
  product(bool, TraceClassLoadingPreorder, false,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2131
          "Trace all classes loaded in order referenced (not loaded)")      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2132
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2133
  product_rw(bool, TraceClassUnloading, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2134
          "Trace unloading of classes")                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2135
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2136
  product_rw(bool, TraceLoaderConstraints, false,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2137
          "Trace loader constraints")                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2138
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2139
  product(bool, TraceGen0Time, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2140
          "Trace accumulated time for Gen 0 collection")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2141
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2142
  product(bool, TraceGen1Time, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2143
          "Trace accumulated time for Gen 1 collection")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2144
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2145
  product(bool, PrintTenuringDistribution, false,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2146
          "Print tenuring age information")                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2147
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2148
  product_rw(bool, PrintHeapAtGC, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2149
          "Print heap layout before and after each GC")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2150
                                                                            \
3191
dd3cc90b9951 6855834: G1: minimize the output when -XX:+PrintHeapAtGC is set
tonyp
parents: 2866
diff changeset
  2151
  product_rw(bool, PrintHeapAtGCExtended, false,                            \
dd3cc90b9951 6855834: G1: minimize the output when -XX:+PrintHeapAtGC is set
tonyp
parents: 2866
diff changeset
  2152
          "Prints extended information about the layout of the heap "       \
dd3cc90b9951 6855834: G1: minimize the output when -XX:+PrintHeapAtGC is set
tonyp
parents: 2866
diff changeset
  2153
          "when -XX:+PrintHeapAtGC is set")                                 \
dd3cc90b9951 6855834: G1: minimize the output when -XX:+PrintHeapAtGC is set
tonyp
parents: 2866
diff changeset
  2154
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2155
  product(bool, PrintHeapAtSIGBREAK, true,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2156
          "Print heap layout in response to SIGBREAK")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2157
                                                                            \
2141
e9a644aaff87 6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents: 2034
diff changeset
  2158
  manageable(bool, PrintClassHistogramBeforeFullGC, false,                  \
e9a644aaff87 6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents: 2034
diff changeset
  2159
          "Print a class histogram before any major stop-world GC")         \
e9a644aaff87 6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents: 2034
diff changeset
  2160
                                                                            \
e9a644aaff87 6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents: 2034
diff changeset
  2161
  manageable(bool, PrintClassHistogramAfterFullGC, false,                   \
e9a644aaff87 6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents: 2034
diff changeset
  2162
          "Print a class histogram after any major stop-world GC")          \
e9a644aaff87 6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents: 2034
diff changeset
  2163
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2164
  manageable(bool, PrintClassHistogram, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2165
          "Print a histogram of class instances")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2166
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2167
  develop(bool, TraceWorkGang, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2168
          "Trace activities of work gangs")                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2169
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2170
  product(bool, TraceParallelOldGCTasks, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2171
          "Trace multithreaded GC activity")                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2172
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2173
  develop(bool, TraceBlockOffsetTable, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2174
          "Print BlockOffsetTable maps")                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2175
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2176
  develop(bool, TraceCardTableModRefBS, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2177
          "Print CardTableModRefBS maps")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2178
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2179
  develop(bool, TraceGCTaskManager, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2180
          "Trace actions of the GC task manager")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2181
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2182
  develop(bool, TraceGCTaskQueue, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2183
          "Trace actions of the GC task queues")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2184
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2185
  develop(bool, TraceGCTaskThread, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2186
          "Trace actions of the GC task threads")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2187
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2188
  product(bool, PrintParallelOldGCPhaseTimes, false,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2189
          "Print the time taken by each parallel old gc phase."             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2190
          "PrintGCDetails must also be enabled.")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2191
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2192
  develop(bool, TraceParallelOldGCMarkingPhase, false,                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2193
          "Trace parallel old gc marking phase")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2194
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2195
  develop(bool, TraceParallelOldGCSummaryPhase, false,                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2196
          "Trace parallel old gc summary phase")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2197
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2198
  develop(bool, TraceParallelOldGCCompactionPhase, false,                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2199
          "Trace parallel old gc compaction phase")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2200
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2201
  develop(bool, TraceParallelOldGCDensePrefix, false,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2202
          "Trace parallel old gc dense prefix computation")                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2203
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2204
  develop(bool, IgnoreLibthreadGPFault, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2205
          "Suppress workaround for libthread GP fault")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2206
                                                                            \
386
7f121b1192f2 6539517: CR 6186200 should be extended to perm gen allocation to prevent spurious OOM's from perm gen
apetrusenko
parents: 342
diff changeset
  2207
  product(bool, PrintJNIGCStalls, false,                                    \
7f121b1192f2 6539517: CR 6186200 should be extended to perm gen allocation to prevent spurious OOM's from perm gen
apetrusenko
parents: 342
diff changeset
  2208
          "Print diagnostic message when GC is stalled"                     \
7f121b1192f2 6539517: CR 6186200 should be extended to perm gen allocation to prevent spurious OOM's from perm gen
apetrusenko
parents: 342
diff changeset
  2209
          "by JNI critical section")                                        \
7f121b1192f2 6539517: CR 6186200 should be extended to perm gen allocation to prevent spurious OOM's from perm gen
apetrusenko
parents: 342
diff changeset
  2210
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2211
  /* JVMTI heap profiling */                                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2212
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2213
  diagnostic(bool, TraceJVMTIObjectTagging, false,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2214
          "Trace JVMTI object tagging calls")                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2215
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2216
  diagnostic(bool, VerifyBeforeIteration, false,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2217
          "Verify memory system before JVMTI iteration")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2218
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2219
  /* compiler interface */                                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2220
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2221
  develop(bool, CIPrintCompilerName, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2222
          "when CIPrint is active, print the name of the active compiler")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2223
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2224
  develop(bool, CIPrintCompileQueue, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2225
          "display the contents of the compile queue whenever a "           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2226
          "compilation is enqueued")                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2227
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2228
  develop(bool, CIPrintRequests, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2229
          "display every request for compilation")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2230
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2231
  product(bool, CITime, false,                                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2232
          "collect timing information for compilation")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2233
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2234
  develop(bool, CITimeEach, false,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2235
          "display timing information after each successful compilation")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2236
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2237
  develop(bool, CICountOSR, true,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2238
          "use a separate counter when assigning ids to osr compilations")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2239
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2240
  develop(bool, CICompileNatives, true,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2241
          "compile native methods if supported by the compiler")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2242
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2243
  develop_pd(bool, CICompileOSR,                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2244
          "compile on stack replacement methods if supported by the "       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2245
          "compiler")                                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2246
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2247
  develop(bool, CIPrintMethodCodes, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2248
          "print method bytecodes of the compiled code")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2249
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2250
  develop(bool, CIPrintTypeFlow, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2251
          "print the results of ciTypeFlow analysis")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2252
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2253
  develop(bool, CITraceTypeFlow, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2254
          "detailed per-bytecode tracing of ciTypeFlow analysis")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2255
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2256
  develop(intx, CICloneLoopTestLimit, 100,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2257
          "size limit for blocks heuristically cloned in ciTypeFlow")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2258
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2259
  /* temp diagnostics */                                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2260
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2261
  diagnostic(bool, TraceRedundantCompiles, false,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2262
          "Have compile broker print when a request already in the queue is"\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2263
          " requested again")                                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2264
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2265
  diagnostic(bool, InitialCompileFast, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2266
          "Initial compile at CompLevel_fast_compile")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2267
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2268
  diagnostic(bool, InitialCompileReallyFast, false,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2269
          "Initial compile at CompLevel_really_fast_compile (no profile)")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2270
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2271
  diagnostic(bool, FullProfileOnReInterpret, true,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2272
          "On re-interpret unc-trap compile next at CompLevel_fast_compile")\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2273
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2274
  /* compiler */                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2275
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2276
  product(intx, CICompilerCount, CI_COMPILER_COUNT,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2277
          "Number of compiler threads to run")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2278
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2279
  product(intx, CompilationPolicyChoice, 0,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2280
          "which compilation policy (0/1)")                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2281
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2282
  develop(bool, UseStackBanging, true,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2283
          "use stack banging for stack overflow checks (required for "      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2284
          "proper StackOverflow handling; disable only to measure cost "    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2285
          "of stackbanging)")                                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2286
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2287
  develop(bool, Use24BitFPMode, true,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2288
          "Set 24-bit FPU mode on a per-compile basis ")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2289
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2290
  develop(bool, Use24BitFP, true,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2291
          "use FP instructions that produce 24-bit precise results")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2292
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2293
  develop(bool, UseStrictFP, true,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2294
          "use strict fp if modifier strictfp is set")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2295
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2296
  develop(bool, GenerateSynchronizationCode, true,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2297
          "generate locking/unlocking code for synchronized methods and "   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2298
          "monitors")                                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2299
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2300
  develop(bool, GenerateCompilerNullChecks, true,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2301
          "Generate explicit null checks for loads/stores/calls")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2302
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2303
  develop(bool, GenerateRangeChecks, true,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2304
          "Generate range checks for array accesses")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2305
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2306
  develop_pd(bool, ImplicitNullChecks,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2307
          "generate code for implicit null checks")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2308
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2309
  product(bool, PrintSafepointStatistics, false,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2310
          "print statistics about safepoint synchronization")               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2311
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2312
  product(intx, PrintSafepointStatisticsCount, 300,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2313
          "total number of safepoint statistics collected "                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2314
          "before printing them out")                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2315
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2316
  product(intx, PrintSafepointStatisticsTimeout,  -1,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2317
          "print safepoint statistics only when safepoint takes"            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2318
          " more than PrintSafepointSatisticsTimeout in millis")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2319
                                                                            \
5086
ebccc0bb7b8e 6934758: Expose the break down of clean up task time during safepoint.
xlu
parents: 5039
diff changeset
  2320
  product(bool, TraceSafepointCleanupTime, false,                           \
ebccc0bb7b8e 6934758: Expose the break down of clean up task time during safepoint.
xlu
parents: 5039
diff changeset
  2321
          "print the break down of clean up tasks performed during"         \
ebccc0bb7b8e 6934758: Expose the break down of clean up task time during safepoint.
xlu
parents: 5039
diff changeset
  2322
          " safepoint")                                                     \
ebccc0bb7b8e 6934758: Expose the break down of clean up task time during safepoint.
xlu
parents: 5039
diff changeset
  2323
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2324
  develop(bool, InlineAccessors, true,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2325
          "inline accessor methods (get/set)")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2326
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2327
  product(bool, Inline, true,                                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2328
          "enable inlining")                                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2329
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2330
  product(bool, ClipInlining, true,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2331
          "clip inlining if aggregate method exceeds DesiredMethodLimit")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2332
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2333
  develop(bool, UseCHA, true,                                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2334
          "enable CHA")                                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2335
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2336
  product(bool, UseTypeProfile, true,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2337
          "Check interpreter profile for historically monomorphic calls")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2338
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2339
  product(intx, TypeProfileMajorReceiverPercent, 90,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2340
          "% of major receiver type to all profiled receivers")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2341
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2342
  notproduct(bool, TimeCompiler, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2343
          "time the compiler")                                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2344
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2345
  notproduct(bool, TimeCompiler2, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2346
          "detailed time the compiler (requires +TimeCompiler)")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2347
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2348
  diagnostic(bool, PrintInlining, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2349
          "prints inlining optimizations")                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2350
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2351
  diagnostic(bool, PrintIntrinsics, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2352
          "prints attempted and successful inlining of intrinsics")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2353
                                                                            \
2862
fad636edf18f 6823354: Add intrinsics for {Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}()
twisti
parents: 2570
diff changeset
  2354
  product(bool, UseCountLeadingZerosInstruction, false,                     \
fad636edf18f 6823354: Add intrinsics for {Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}()
twisti
parents: 2570
diff changeset
  2355
          "Use count leading zeros instruction")                            \
fad636edf18f 6823354: Add intrinsics for {Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}()
twisti
parents: 2570
diff changeset
  2356
                                                                            \
2255
54abdf3e1055 6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents: 2254
diff changeset
  2357
  product(bool, UsePopCountInstruction, false,                              \
54abdf3e1055 6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents: 2254
diff changeset
  2358
          "Use population count instruction")                               \
54abdf3e1055 6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents: 2254
diff changeset
  2359
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2360
  diagnostic(ccstrlist, DisableIntrinsic, "",                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2361
          "do not expand intrinsics whose (internal) names appear here")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2362
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2363
  develop(bool, StressReflectiveCode, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2364
          "Use inexact types at allocations, etc., to test reflection")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2365
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2366
  develop(bool, EagerInitialization, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2367
          "Eagerly initialize classes if possible")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2368
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2369
  product(bool, Tier1UpdateMethodData, trueInTiered,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2370
          "Update methodDataOops in Tier1-generated code")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2371
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2372
  develop(bool, TraceMethodReplacement, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2373
          "Print when methods are replaced do to recompilation")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2374
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2375
  develop(bool, PrintMethodFlushing, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2376
          "print the nmethods being flushed")                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2377
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2378
  notproduct(bool, LogMultipleMutexLocking, false,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2379
          "log locking and unlocking of mutexes (only if multiple locks "   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2380
          "are held)")                                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2381
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2382
  develop(bool, UseRelocIndex, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2383
         "use an index to speed random access to relocations")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2384
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2385
  develop(bool, StressCodeBuffers, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2386
         "Exercise code buffer expansion and other rare state changes")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2387
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2388
  diagnostic(bool, DebugNonSafepoints, trueInDebug,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2389
         "Generate extra debugging info for non-safepoints in nmethods")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2390
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2391
  diagnostic(bool, DebugInlinedCalls, true,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2392
         "If false, restricts profiled locations to the root method only")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2393
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2394
  product(bool, PrintVMOptions, trueInDebug,                                \
4579
62478db2dc78 6914622: Print values of all flags for product VM
kvn
parents: 4489
diff changeset
  2395
         "Print flags that appeared on the command line")                   \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2396
                                                                            \
2028
04fa713b25f9 6788376: allow to ignore unrecognized VM options
kvn
parents: 1671
diff changeset
  2397
  product(bool, IgnoreUnrecognizedVMOptions, false,                         \
04fa713b25f9 6788376: allow to ignore unrecognized VM options
kvn
parents: 1671
diff changeset
  2398
         "Ignore unrecognized VM options")                                  \
04fa713b25f9 6788376: allow to ignore unrecognized VM options
kvn
parents: 1671
diff changeset
  2399
                                                                            \
4579
62478db2dc78 6914622: Print values of all flags for product VM
kvn
parents: 4489
diff changeset
  2400
  product(bool, PrintCommandLineFlags, false,                               \
62478db2dc78 6914622: Print values of all flags for product VM
kvn
parents: 4489
diff changeset
  2401
         "Print flags specified on command line or set by ergonomics")      \
62478db2dc78 6914622: Print values of all flags for product VM
kvn
parents: 4489
diff changeset
  2402
                                                                            \
62478db2dc78 6914622: Print values of all flags for product VM
kvn
parents: 4489
diff changeset
  2403
  product(bool, PrintFlagsInitial, false,                                   \
62478db2dc78 6914622: Print values of all flags for product VM
kvn
parents: 4489
diff changeset
  2404
         "Print all VM flags before argument processing and exit VM")       \
62478db2dc78 6914622: Print values of all flags for product VM
kvn
parents: 4489
diff changeset
  2405
                                                                            \
62478db2dc78 6914622: Print values of all flags for product VM
kvn
parents: 4489
diff changeset
  2406
  product(bool, PrintFlagsFinal, false,                                     \
62478db2dc78 6914622: Print values of all flags for product VM
kvn
parents: 4489
diff changeset
  2407
         "Print all VM flags after argument and ergonomic processing")      \
62478db2dc78 6914622: Print values of all flags for product VM
kvn
parents: 4489
diff changeset
  2408
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2409
  diagnostic(bool, SerializeVMOutput, true,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2410
         "Use a mutex to serialize output to tty and hotspot.log")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2411
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2412
  diagnostic(bool, DisplayVMOutput, true,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2413
         "Display all VM output on the tty, independently of LogVMOutput")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2414
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2415
  diagnostic(bool, LogVMOutput, trueInDebug,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2416
         "Save VM output to hotspot.log, or to LogFile")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2417
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2418
  diagnostic(ccstr, LogFile, NULL,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2419
         "If LogVMOutput is on, save VM output to this file [hotspot.log]") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2420
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2421
  product(ccstr, ErrorFile, NULL,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2422
         "If an error occurs, save the error data to this file "            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2423
         "[default: ./hs_err_pid%p.log] (%p replaced with pid)")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2424
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2425
  product(bool, DisplayVMOutputToStderr, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2426
         "If DisplayVMOutput is true, display all VM output to stderr")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2427
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2428
  product(bool, DisplayVMOutputToStdout, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2429
         "If DisplayVMOutput is true, display all VM output to stdout")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2430
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2431
  product(bool, UseHeavyMonitors, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2432
          "use heavyweight instead of lightweight Java monitors")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2433
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2434
  notproduct(bool, PrintSymbolTableSizeHistogram, false,                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2435
          "print histogram of the symbol table")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2436
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2437
  notproduct(bool, ExitVMOnVerifyError, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2438
          "standard exit from VM if bytecode verify error "                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2439
          "(only in debug mode)")                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2440
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2441
  notproduct(ccstr, AbortVMOnException, NULL,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2442
          "Call fatal if this exception is thrown.  Example: "              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2443
          "java -XX:AbortVMOnException=java.lang.NullPointerException Foo") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2444
                                                                            \
6179
4846648c4b7b 6973308: Missing zero length check before repne scas in check_klass_subtype_slow_path()
kvn
parents: 6062
diff changeset
  2445
  notproduct(ccstr, AbortVMOnExceptionMessage, NULL,                        \
4846648c4b7b 6973308: Missing zero length check before repne scas in check_klass_subtype_slow_path()
kvn
parents: 6062
diff changeset
  2446
          "Call fatal if the exception pointed by AbortVMOnException "      \
4846648c4b7b 6973308: Missing zero length check before repne scas in check_klass_subtype_slow_path()
kvn
parents: 6062
diff changeset
  2447
          "has this message.")                                              \
4846648c4b7b 6973308: Missing zero length check before repne scas in check_klass_subtype_slow_path()
kvn
parents: 6062
diff changeset
  2448
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2449
  develop(bool, DebugVtables, false,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2450
          "add debugging code to vtable dispatch")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2451
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2452
  develop(bool, PrintVtables, false,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2453
          "print vtables when printing klass")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2454
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2455
  notproduct(bool, PrintVtableStats, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2456
          "print vtables stats at end of run")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2457
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2458
  develop(bool, TraceCreateZombies, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2459
          "trace creation of zombie nmethods")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2460
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2461
  notproduct(bool, IgnoreLockingAssertions, false,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2462
          "disable locking assertions (for speed)")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2463
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2464
  notproduct(bool, VerifyLoopOptimizations, false,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2465
          "verify major loop optimizations")                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2466
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2467
  product(bool, RangeCheckElimination, true,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2468
          "Split loop iterations to eliminate range checks")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2469
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2470
  develop_pd(bool, UncommonNullCast,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2471
          "track occurrences of null in casts; adjust compiler tactics")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2472
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2473
  develop(bool, TypeProfileCasts,  true,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2474
          "treat casts like calls for purposes of type profiling")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2475
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2476
  develop(bool, MonomorphicArrayCheck, true,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2477
          "Uncommon-trap array store checks that require full type check")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2478
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2479
  develop(bool, DelayCompilationDuringStartup, true,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2480
          "Delay invoking the compiler until main application class is "    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2481
          "loaded")                                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2482
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2483
  develop(bool, CompileTheWorld, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2484
          "Compile all methods in all classes in bootstrap class path "     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2485
          "(stress test)")                                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2486
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2487
  develop(bool, CompileTheWorldPreloadClasses, true,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2488
          "Preload all classes used by a class before start loading")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2489
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2490
  notproduct(bool, CompileTheWorldIgnoreInitErrors, false,                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2491
          "Compile all methods although class initializer failed")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2492
                                                                            \
4736
e091227926da 6919886: Sweep CodeCache more aggressively to reduce its usage for CompileTheWorld
kvn
parents: 4650
diff changeset
  2493
  notproduct(intx, CompileTheWorldSafepointInterval, 100,                   \
e091227926da 6919886: Sweep CodeCache more aggressively to reduce its usage for CompileTheWorld
kvn
parents: 4650
diff changeset
  2494
          "Force a safepoint every n compiles so sweeper can keep up")      \
e091227926da 6919886: Sweep CodeCache more aggressively to reduce its usage for CompileTheWorld
kvn
parents: 4650
diff changeset
  2495
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2496
  develop(bool, TraceIterativeGVN, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2497
          "Print progress during Iterative Global Value Numbering")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2498
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2499
  develop(bool, FillDelaySlots, true,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2500
          "Fill delay slots (on SPARC only)")                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2501
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2502
  develop(bool, VerifyIterativeGVN, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2503
          "Verify Def-Use modifications during sparse Iterative Global "    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2504
          "Value Numbering")                                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2505
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2506
  notproduct(bool, TracePhaseCCP, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2507
          "Print progress during Conditional Constant Propagation")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2508
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2509
  develop(bool, TimeLivenessAnalysis, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2510
          "Time computation of bytecode liveness analysis")                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2511
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2512
  develop(bool, TraceLivenessGen, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2513
          "Trace the generation of liveness analysis information")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2514
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2515
  notproduct(bool, TraceLivenessQuery, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2516
          "Trace queries of liveness analysis information")                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2517
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2518
  notproduct(bool, CollectIndexSetStatistics, false,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2519
          "Collect information about IndexSets")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2520
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2521
  develop(bool, PrintDominators, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2522
          "Print out dominator trees for GVN")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2523
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2524
  develop(bool, UseLoopSafepoints, true,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2525
          "Generate Safepoint nodes in every loop")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2526
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2527
  notproduct(bool, TraceCISCSpill, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2528
          "Trace allocators use of cisc spillable instructions")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2529
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2530
  notproduct(bool, TraceSpilling, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2531
          "Trace spilling")                                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2532
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2533
  product(bool, SplitIfBlocks, true,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2534
          "Clone compares and control flow through merge points to fold "   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2535
          "some branches")                                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2536
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2537
  develop(intx, FastAllocateSizeLimit, 128*K,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2538
          /* Note:  This value is zero mod 1<<13 for a cheap sparc set. */  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2539
          "Inline allocations larger than this in doublewords must go slow")\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2540
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2541
  product(bool, AggressiveOpts, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2542
          "Enable aggressive optimizations - see arguments.cpp")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2543
                                                                            \
618
9641c2c8f977 6714404: Add UseStringCache switch to enable String caching under AggressiveOpts
kvn
parents: 600
diff changeset
  2544
  product(bool, UseStringCache, false,                                      \
9641c2c8f977 6714404: Add UseStringCache switch to enable String caching under AggressiveOpts
kvn
parents: 600
diff changeset
  2545
          "Enable String cache capabilities on String.java")                \
9641c2c8f977 6714404: Add UseStringCache switch to enable String caching under AggressiveOpts
kvn
parents: 600
diff changeset
  2546
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2547
  /* statistics */                                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2548
  develop(bool, CountCompiledCalls, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2549
          "counts method invocations")                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2550
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2551
  notproduct(bool, CountRuntimeCalls, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2552
          "counts VM runtime calls")                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2553
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2554
  develop(bool, CountJNICalls, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2555
          "counts jni method invocations")                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2556
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2557
  notproduct(bool, CountJVMCalls, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2558
          "counts jvm method invocations")                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2559
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2560
  notproduct(bool, CountRemovableExceptions, false,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2561
          "count exceptions that could be replaced by branches due to "     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2562
          "inlining")                                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2563
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2564
  notproduct(bool, ICMissHistogram, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2565
          "produce histogram of IC misses")                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2566
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2567
  notproduct(bool, PrintClassStatistics, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2568
          "prints class statistics at end of run")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2569
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2570
  notproduct(bool, PrintMethodStatistics, false,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2571
          "prints method statistics at end of run")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2572
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2573
  /* interpreter */                                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2574
  develop(bool, ClearInterpreterLocals, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2575
          "Always clear local variables of interpreter activations upon "   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2576
          "entry")                                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2577
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2578
  product_pd(bool, RewriteBytecodes,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2579
          "Allow rewriting of bytecodes (bytecodes are not immutable)")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2580
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2581
  product_pd(bool, RewriteFrequentPairs,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2582
          "Rewrite frequently used bytecode pairs into a single bytecode")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2583
                                                                            \
347
df859fcca515 6667042: PrintAssembly option does not work without special plugin
jrose
parents: 249
diff changeset
  2584
  diagnostic(bool, PrintInterpreter, false,                                 \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2585
          "Prints the generated interpreter code")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2586
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2587
  product(bool, UseInterpreter, true,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2588
          "Use interpreter for non-compiled methods")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2589
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2590
  develop(bool, UseFastSignatureHandlers, true,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2591
          "Use fast signature handlers for native calls")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2592
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2593
  develop(bool, UseV8InstrsOnly, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2594
          "Use SPARC-V8 Compliant instruction subset")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2595
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2596
  product(bool, UseNiagaraInstrs, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2597
          "Use Niagara-efficient instruction subset")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2598
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2599
  develop(bool, UseCASForSwap, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2600
          "Do not use swap instructions, but only CAS (in a loop) on SPARC")\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2601
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2602
  product(bool, UseLoopCounter, true,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2603
          "Increment invocation counter on backward branch")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2604
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2605
  product(bool, UseFastEmptyMethods, true,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2606
          "Use fast method entry code for empty methods")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2607
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2608
  product(bool, UseFastAccessorMethods, true,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2609
          "Use fast method entry code for accessor methods")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2610
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2611
  product_pd(bool, UseOnStackReplacement,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2612
           "Use on stack replacement, calls runtime if invoc. counter "     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2613
           "overflows in loop")                                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2614
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2615
  notproduct(bool, TraceOnStackReplacement, false,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2616
          "Trace on stack replacement")                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2617
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2618
  develop(bool, PoisonOSREntry, true,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2619
           "Detect abnormal calls to OSR code")                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2620
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2621
  product_pd(bool, PreferInterpreterNativeStubs,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2622
          "Use always interpreter stubs for native methods invoked via "    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2623
          "interpreter")                                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2624
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2625
  develop(bool, CountBytecodes, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2626
          "Count number of bytecodes executed")                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2627
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2628
  develop(bool, PrintBytecodeHistogram, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2629
          "Print histogram of the executed bytecodes")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2630
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2631
  develop(bool, PrintBytecodePairHistogram, false,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2632
          "Print histogram of the executed bytecode pairs")                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2633
                                                                            \
347
df859fcca515 6667042: PrintAssembly option does not work without special plugin
jrose
parents: 249
diff changeset
  2634
  diagnostic(bool, PrintSignatureHandlers, false,                           \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2635
          "Print code generated for native method signature handlers")      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2636
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2637
  develop(bool, VerifyOops, false,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2638
          "Do plausibility checks for oops")                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2639
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2640
  develop(bool, CheckUnhandledOops, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2641
          "Check for unhandled oops in VM code")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2642
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2643
  develop(bool, VerifyJNIFields, trueInDebug,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2644
          "Verify jfieldIDs for instance fields")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2645
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2646
  notproduct(bool, VerifyJNIEnvThread, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2647
          "Verify JNIEnv.thread == Thread::current() when entering VM "     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2648
          "from JNI")                                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2649
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2650
  develop(bool, VerifyFPU, false,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2651
          "Verify FPU state (check for NaN's, etc.)")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2652
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2653
  develop(bool, VerifyThread, false,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2654
          "Watch the thread register for corruption (SPARC only)")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2655
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2656
  develop(bool, VerifyActivationFrameSize, false,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2657
          "Verify that activation frame didn't become smaller than its "    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2658
          "minimal size")                                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2659
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2660
  develop(bool, TraceFrequencyInlining, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2661
          "Trace frequency based inlining")                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2662
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2663
  notproduct(bool, TraceTypeProfile, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2664
          "Trace type profile")                                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2665
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2666
  develop_pd(bool, InlineIntrinsics,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2667
           "Inline intrinsics that can be statically resolved")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2668
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2669
  product_pd(bool, ProfileInterpreter,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2670
           "Profile at the bytecode level during interpretation")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2671
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2672
  develop_pd(bool, ProfileTraps,                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2673
          "Profile deoptimization traps at the bytecode level")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2674
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2675
  product(intx, ProfileMaturityPercentage, 20,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2676
          "number of method invocations/branches (expressed as % of "       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2677
          "CompileThreshold) before using the method's profile")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2678
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2679
  develop(bool, PrintMethodData, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2680
           "Print the results of +ProfileInterpreter at end of run")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2681
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2682
  develop(bool, VerifyDataPointer, trueInDebug,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2683
          "Verify the method data pointer during interpreter profiling")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2684
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2685
  develop(bool, VerifyCompiledCode, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2686
          "Include miscellaneous runtime verifications in nmethod code; "   \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2687
          "default off because it disturbs nmethod size heuristics")        \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2688
                                                                            \
4489
514173c9a0c2 6361589: Print out stack trace for target thread of GC crash
minqi
parents: 4434
diff changeset
  2689
  notproduct(bool, CrashGCForDumpingJavaThread, false,                      \
514173c9a0c2 6361589: Print out stack trace for target thread of GC crash
minqi
parents: 4434
diff changeset
  2690
          "Manually make GC thread crash then dump java stack trace;  "     \
514173c9a0c2 6361589: Print out stack trace for target thread of GC crash
minqi
parents: 4434
diff changeset
  2691
          "Test only")                                                      \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2692
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2693
  /* compilation */                                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2694
  product(bool, UseCompiler, true,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2695
          "use compilation")                                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2696
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2697
  develop(bool, TraceCompilationPolicy, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2698
          "Trace compilation policy")                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2699
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2700
  develop(bool, TimeCompilationPolicy, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2701
          "Time the compilation policy")                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2702
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2703
  product(bool, UseCounterDecay, true,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2704
           "adjust recompilation counters")                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2705
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2706
  develop(intx, CounterHalfLifeTime,    30,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2707
          "half-life time of invocation counters (in secs)")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2708
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2709
  develop(intx, CounterDecayMinIntervalLength,   500,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2710
          "Min. ms. between invocation of CounterDecay")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2711
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2712
  product(bool, AlwaysCompileLoopMethods, false,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2713
          "when using recompilation, never interpret methods "              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2714
          "containing loops")                                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2715
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2716
  product(bool, DontCompileHugeMethods, true,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2717
          "don't compile methods > HugeMethodLimit")                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2718
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2719
  /* Bytecode escape analysis estimation. */                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2720
  product(bool, EstimateArgEscape, true,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2721
          "Analyze bytecodes to estimate escape state of arguments")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2722
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2723
  product(intx, BCEATraceLevel, 0,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2724
          "How much tracing to do of bytecode escape analysis estimates")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2725
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2726
  product(intx, MaxBCEAEstimateLevel, 5,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2727
          "Maximum number of nested calls that are analyzed by BC EA.")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2728
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2729
  product(intx, MaxBCEAEstimateSize, 150,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2730
          "Maximum bytecode size of a method to be analyzed by BC EA.")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2731
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2732
  product(intx,  AllocatePrefetchStyle, 1,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2733
          "0 = no prefetch, "                                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2734
          "1 = prefetch instructions for each allocation, "                 \
5251
f86f7a86d761 6940726: Use BIS instruction for allocation prefetch on Sparc
kvn
parents: 5250
diff changeset
  2735
          "2 = use TLAB watermark to gate allocation prefetch, "            \
f86f7a86d761 6940726: Use BIS instruction for allocation prefetch on Sparc
kvn
parents: 5250
diff changeset
  2736
          "3 = use BIS instruction on Sparc for allocation prefetch")       \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2737
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2738
  product(intx,  AllocatePrefetchDistance, -1,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2739
          "Distance to prefetch ahead of allocation pointer")               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2740
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2741
  product(intx,  AllocatePrefetchLines, 1,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2742
          "Number of lines to prefetch ahead of allocation pointer")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2743
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2744
  product(intx,  AllocatePrefetchStepSize, 16,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2745
          "Step size in bytes of sequential prefetch instructions")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2746
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2747
  product(intx,  AllocatePrefetchInstr, 0,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2748
          "Prefetch instruction to prefetch ahead of allocation pointer")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2749
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2750
  product(intx,  ReadPrefetchInstr, 0,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2751
          "Prefetch instruction to prefetch ahead")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2752
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2753
  /* deoptimization */                                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2754
  develop(bool, TraceDeoptimization, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2755
          "Trace deoptimization")                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2756
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2757
  develop(bool, DebugDeoptimization, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2758
          "Tracing various information while debugging deoptimization")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2759
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2760
  product(intx, SelfDestructTimer, 0,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2761
          "Will cause VM to terminate after a given time (in minutes) "     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2762
          "(0 means off)")                                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2763
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2764
  product(intx, MaxJavaStackTraceDepth, 1024,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2765
          "Max. no. of lines in the stack trace for Java exceptions "       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2766
          "(0 means all)")                                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2767
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2768
  develop(intx, GuaranteedSafepointInterval, 1000,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2769
          "Guarantee a safepoint (at least) every so many milliseconds "    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2770
          "(0 means none)")                                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2771
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2772
  product(intx, SafepointTimeoutDelay, 10000,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2773
          "Delay in milliseconds for option SafepointTimeout")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2774
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2775
  product(intx, NmethodSweepFraction, 4,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2776
          "Number of invocations of sweeper to cover all nmethods")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2777
                                                                            \
5533
e8d9ff82ec62 6950075: nmethod sweeper should operate concurrently
never
parents: 5426
diff changeset
  2778
  product(intx, NmethodSweepCheckInterval, 5,                               \
e8d9ff82ec62 6950075: nmethod sweeper should operate concurrently
never
parents: 5426
diff changeset
  2779
          "Compilers wake up every n seconds to possibly sweep nmethods")   \
e8d9ff82ec62 6950075: nmethod sweeper should operate concurrently
never
parents: 5426
diff changeset
  2780
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2781
  notproduct(intx, MemProfilingInterval, 500,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2782
          "Time between each invocation of the MemProfiler")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2783
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2784
  develop(intx, MallocCatchPtr, -1,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2785
          "Hit breakpoint when mallocing/freeing this pointer")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2786
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2787
  notproduct(intx, AssertRepeat, 1,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2788
          "number of times to evaluate expression in assert "               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2789
          "(to estimate overhead); only works with -DUSE_REPEATED_ASSERTS") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2790
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2791
  notproduct(ccstrlist, SuppressErrorAt, "",                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2792
          "List of assertions (file:line) to muzzle")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2793
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2794
  notproduct(uintx, HandleAllocationLimit, 1024,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2795
          "Threshold for HandleMark allocation when +TraceHandleAllocation "\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2796
          "is used")                                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2797
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2798
  develop(uintx, TotalHandleAllocationLimit, 1024,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2799
          "Threshold for total handle allocation when "                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2800
          "+TraceHandleAllocation is used")                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2801
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2802
  develop(intx, StackPrintLimit, 100,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2803
          "number of stack frames to print in VM-level stack dump")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2804
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2805
  notproduct(intx, MaxElementPrintSize, 256,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2806
          "maximum number of elements to print")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2807
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2808
  notproduct(intx, MaxSubklassPrintSize, 4,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2809
          "maximum number of subklasses to print when printing klass")      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2810
                                                                            \
4586
f1c484fca023 6912063: inlining parameters need to be adjusted for some uses of the JVM
jrose
parents: 4579
diff changeset
  2811
  product(intx, MaxInlineLevel, 9,                                          \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2812
          "maximum number of nested calls that are inlined")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2813
                                                                            \
4586
f1c484fca023 6912063: inlining parameters need to be adjusted for some uses of the JVM
jrose
parents: 4579
diff changeset
  2814
  product(intx, MaxRecursiveInlineLevel, 1,                                 \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2815
          "maximum number of nested recursive calls that are inlined")      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2816
                                                                            \
2342
9a1260c3679d 6821700: tune VM flags for peak performance
kvn
parents: 2259
diff changeset
  2817
  product_pd(intx, InlineSmallCode,                                         \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2818
          "Only inline already compiled methods if their code size is "     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2819
          "less than this")                                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2820
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2821
  product(intx, MaxInlineSize, 35,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2822
          "maximum bytecode size of a method to be inlined")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2823
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2824
  product_pd(intx, FreqInlineSize,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2825
          "maximum bytecode size of a frequent method to be inlined")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2826
                                                                            \
4586
f1c484fca023 6912063: inlining parameters need to be adjusted for some uses of the JVM
jrose
parents: 4579
diff changeset
  2827
  product(intx, MaxTrivialSize, 6,                                          \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2828
          "maximum bytecode size of a trivial method to be inlined")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2829
                                                                            \
4586
f1c484fca023 6912063: inlining parameters need to be adjusted for some uses of the JVM
jrose
parents: 4579
diff changeset
  2830
  product(intx, MinInliningThreshold, 250,                                  \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2831
          "min. invocation count a method needs to have to be inlined")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2832
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2833
  develop(intx, AlignEntryCode, 4,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2834
          "aligns entry code to specified value (in bytes)")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2835
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2836
  develop(intx, MethodHistogramCutoff, 100,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2837
          "cutoff value for method invoc. histogram (+CountCalls)")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2838
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2839
  develop(intx, ProfilerNumberOfInterpretedMethods, 25,                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2840
          "# of interpreted methods to show in profile")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2841
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2842
  develop(intx, ProfilerNumberOfCompiledMethods, 25,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2843
          "# of compiled methods to show in profile")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2844
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2845
  develop(intx, ProfilerNumberOfStubMethods, 25,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2846
          "# of stub methods to show in profile")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2847
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2848
  develop(intx, ProfilerNumberOfRuntimeStubNodes, 25,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2849
          "# of runtime stub nodes to show in profile")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2850
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2851
  product(intx, ProfileIntervalsTicks, 100,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2852
          "# of ticks between printing of interval profile "                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2853
          "(+ProfileIntervals)")                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2854
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2855
  notproduct(intx, ScavengeALotInterval,     1,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2856
          "Interval between which scavenge will occur with +ScavengeALot")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2857
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2858
  notproduct(intx, FullGCALotInterval,     1,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2859
          "Interval between which full gc will occur with +FullGCALot")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2860
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2861
  notproduct(intx, FullGCALotStart,     0,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2862
          "For which invocation to start FullGCAlot")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2863
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2864
  notproduct(intx, FullGCALotDummies,  32*K,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2865
          "Dummy object allocated with +FullGCALot, forcing all objects "   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2866
          "to move")                                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2867
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2868
  develop(intx, DontYieldALotInterval,    10,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2869
          "Interval between which yields will be dropped (milliseconds)")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2870
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2871
  develop(intx, MinSleepInterval,     1,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2872
          "Minimum sleep() interval (milliseconds) when "                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2873
          "ConvertSleepToYield is off (used for SOLARIS)")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2874
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2875
  product(intx, EventLogLength,  2000,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2876
          "maximum nof events in event log")                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2877
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2878
  develop(intx, ProfilerPCTickThreshold,    15,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2879
          "Number of ticks in a PC buckets to be a hotspot")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2880
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2881
  notproduct(intx, DeoptimizeALotInterval,     5,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2882
          "Number of exits until DeoptimizeALot kicks in")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2883
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2884
  notproduct(intx, ZombieALotInterval,     5,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2885
          "Number of exits until ZombieALot kicks in")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2886
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2887
  develop(bool, StressNonEntrant, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2888
          "Mark nmethods non-entrant at registration")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2889
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2890
  diagnostic(intx, MallocVerifyInterval,     0,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2891
          "if non-zero, verify C heap after every N calls to "              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2892
          "malloc/realloc/free")                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2893
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2894
  diagnostic(intx, MallocVerifyStart,     0,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2895
          "if non-zero, start verifying C heap after Nth call to "          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2896
          "malloc/realloc/free")                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2897
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2898
  product(intx, TypeProfileWidth,      2,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2899
          "number of receiver types to record in call/cast profile")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2900
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2901
  develop(intx, BciProfileWidth,      2,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2902
          "number of return bci's to record in ret profile")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2903
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2904
  product(intx, PerMethodRecompilationCutoff, 400,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2905
          "After recompiling N times, stay in the interpreter (-1=>'Inf')") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2906
                                                                            \
4754
8aef16f24e16 6614597: Performance variability in jvm2008 xml.validation
kvn
parents: 4750
diff changeset
  2907
  product(intx, PerBytecodeRecompilationCutoff, 200,                        \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2908
          "Per-BCI limit on repeated recompilation (-1=>'Inf')")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2909
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2910
  product(intx, PerMethodTrapLimit,  100,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2911
          "Limit on traps (of one kind) in a method (includes inlines)")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2912
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2913
  product(intx, PerBytecodeTrapLimit,  4,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2914
          "Limit on traps (of one kind) at a particular BCI")               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2915
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2916
  develop(intx, FreqCountInvocations,  1,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2917
          "Scaling factor for branch frequencies (deprecated)")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2918
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2919
  develop(intx, InlineFrequencyRatio,    20,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2920
          "Ratio of call site execution to caller method invocation")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2921
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2922
  develop_pd(intx, InlineFrequencyCount,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2923
          "Count of call site execution necessary to trigger frequent "     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2924
          "inlining")                                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2925
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2926
  develop(intx, InlineThrowCount,    50,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2927
          "Force inlining of interpreted methods that throw this often")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2928
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2929
  develop(intx, InlineThrowMaxSize,   200,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2930
          "Force inlining of throwing methods smaller than this")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2931
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2932
  product(intx, AliasLevel,     3,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2933
          "0 for no aliasing, 1 for oop/field/static/array split, "         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2934
          "2 for class split, 3 for unique instances")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2935
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2936
  develop(bool, VerifyAliases, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2937
          "perform extra checks on the results of alias analysis")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2938
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2939
  develop(intx, ProfilerNodeSize,  1024,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2940
          "Size in K to allocate for the Profile Nodes of each thread")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2941
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2942
  develop(intx, V8AtomicOperationUnderLockSpinCount,    50,                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2943
          "Number of times to spin wait on a v8 atomic operation lock")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2944
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2945
  product(intx, ReadSpinIterations,   100,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2946
          "Number of read attempts before a yield (spin inner loop)")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2947
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2948
  product_pd(intx, PreInflateSpin,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2949
          "Number of times to spin wait before inflation")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2950
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2951
  product(intx, PreBlockSpin,    10,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2952
          "Number of times to spin in an inflated lock before going to "    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2953
          "an OS lock")                                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2954
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2955
  /* gc parameters */                                                       \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2956
  product(uintx, InitialHeapSize, 0,                                        \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2957
          "Initial heap size (in bytes); zero means OldSize + NewSize")     \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2958
                                                                            \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2959
  product(uintx, MaxHeapSize, ScaleForWordSize(96*M),                       \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2960
          "Maximum heap size (in bytes)")                                   \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2961
                                                                            \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2962
  product(uintx, OldSize, ScaleForWordSize(4*M),                            \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2963
          "Initial tenured generation size (in bytes)")                     \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2964
                                                                            \
5038
de3fb1c2d510 6923123: Hotspot refuses to start when -Xmx4m or -Xms4m is specified
phh
parents: 4759
diff changeset
  2965
  product(uintx, NewSize, ScaleForWordSize(1*M),                            \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2966
          "Initial new generation size (in bytes)")                         \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2967
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2968
  product(uintx, MaxNewSize, max_uintx,                                     \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2969
          "Maximum new generation size (in bytes), max_uintx means set "    \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2970
          "ergonomically")                                                  \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2971
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2972
  product(uintx, PretenureSizeThreshold, 0,                                 \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2973
          "Maximum size in bytes of objects allocated in DefNew "           \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2974
          "generation; zero means no maximum")                              \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2975
                                                                            \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2976
  product(uintx, TLABSize, 0,                                               \
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2977
          "Starting TLAB size (in bytes); zero means set ergonomically")    \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2978
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2979
  product(uintx, MinTLABSize, 2*K,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2980
          "Minimum allowed TLAB size (in bytes)")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2981
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2982
  product(uintx, TLABAllocationWeight, 35,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2983
          "Allocation averaging weight")                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2984
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2985
  product(uintx, TLABWasteTargetPercent, 1,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2986
          "Percentage of Eden that can be wasted")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2987
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2988
  product(uintx, TLABRefillWasteFraction,    64,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2989
          "Max TLAB waste at a refill (internal fragmentation)")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2990
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2991
  product(uintx, TLABWasteIncrement,    4,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2992
          "Increment allowed waste at slow allocation")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2993
                                                                            \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2994
  product(intx, SurvivorRatio, 8,                                           \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2995
          "Ratio of eden/survivor space size")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2996
                                                                            \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  2997
  product(intx, NewRatio, 2,                                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2998
          "Ratio of new/old generation sizes")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2999
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3000
  product(uintx, MaxLiveObjectEvacuationRatio, 100,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3001
          "Max percent of eden objects that will be live at scavenge")      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3002
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3003
  product_pd(uintx, NewSizeThreadIncrease,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3004
          "Additional size added to desired new generation size per "       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3005
          "non-daemon thread (in bytes)")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3006
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3007
  product_pd(uintx, PermSize,                                               \
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 4013
diff changeset
  3008
          "Initial size of permanent generation (in bytes)")                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3009
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3010
  product_pd(uintx, MaxPermSize,                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3011
          "Maximum size of permanent generation (in bytes)")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3012
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3013
  product(uintx, MinHeapFreeRatio,    40,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3014
          "Min percentage of heap free after GC to avoid expansion")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3015
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3016
  product(uintx, MaxHeapFreeRatio,    70,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3017
          "Max percentage of heap free after GC to avoid shrinking")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3018
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3019
  product(intx, SoftRefLRUPolicyMSPerMB, 1000,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3020
          "Number of milliseconds per MB of free space in the heap")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3021
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3022
  product(uintx, MinHeapDeltaBytes, ScaleForWordSize(128*K),                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3023
          "Min change in heap space due to GC (in bytes)")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3024
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3025
  product(uintx, MinPermHeapExpansion, ScaleForWordSize(256*K),             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3026
          "Min expansion of permanent heap (in bytes)")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3027
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3028
  product(uintx, MaxPermHeapExpansion, ScaleForWordSize(4*M),               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3029
          "Max expansion of permanent heap without full GC (in bytes)")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3030
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3031
  product(intx, QueuedAllocationWarningCount, 0,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3032
          "Number of times an allocation that queues behind a GC "          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3033
          "will retry before printing a warning")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3034
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3035
  diagnostic(uintx, VerifyGCStartAt,   0,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3036
          "GC invoke count where +VerifyBefore/AfterGC kicks in")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3037
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3038
  diagnostic(intx, VerifyGCLevel,     0,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3039
          "Generation level at which to start +VerifyBefore/AfterGC")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3040
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3041
  develop(uintx, ExitAfterGCNum,   0,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3042
          "If non-zero, exit after this GC.")                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3043
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3044
  product(intx, MaxTenuringThreshold,    15,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3045
          "Maximum value for tenuring threshold")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3046
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3047
  product(intx, InitialTenuringThreshold,     7,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3048
          "Initial value for tenuring threshold")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3049
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3050
  product(intx, TargetSurvivorRatio,    50,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3051
          "Desired percentage of survivor space used after scavenge")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3052
                                                                            \
1557
13878a2edfef 6765804: GC "dead ratios" should be unsigned
jcoomes
parents: 1438
diff changeset
  3053
  product(uintx, MarkSweepDeadRatio,     5,                                 \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3054
          "Percentage (0-100) of the old gen allowed as dead wood."         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3055
          "Serial mark sweep treats this as both the min and max value."    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3056
          "CMS uses this value only if it falls back to mark sweep."        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3057
          "Par compact uses a variable scale based on the density of the"   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3058
          "generation and treats this as the max value when the heap is"    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3059
          "either completely full or completely empty.  Par compact also"   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3060
          "has a smaller default value; see arguments.cpp.")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3061
                                                                            \
1557
13878a2edfef 6765804: GC "dead ratios" should be unsigned
jcoomes
parents: 1438
diff changeset
  3062
  product(uintx, PermMarkSweepDeadRatio,    20,                             \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3063
          "Percentage (0-100) of the perm gen allowed as dead wood."        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3064
          "See MarkSweepDeadRatio for collector-specific comments.")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3065
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3066
  product(intx, MarkSweepAlwaysCompactCount,     4,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3067
          "How often should we fully compact the heap (ignoring the dead "  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3068
          "space parameters)")                                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3069
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3070
  product(intx, PrintCMSStatistics, 0,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3071
          "Statistics for CMS")                                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3072
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3073
  product(bool, PrintCMSInitiationStatistics, false,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3074
          "Statistics for initiating a CMS collection")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3075
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3076
  product(intx, PrintFLSStatistics, 0,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3077
          "Statistics for CMS' FreeListSpace")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3078
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3079
  product(intx, PrintFLSCensus, 0,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3080
          "Census for CMS' FreeListSpace")                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3081
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3082
  develop(uintx, GCExpandToAllocateDelayMillis, 0,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3083
          "Delay in ms between expansion and allocation")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3084
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3085
  product(intx, DeferThrSuspendLoopCount,     4000,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3086
          "(Unstable) Number of times to iterate in safepoint loop "        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3087
          " before blocking VM threads ")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3088
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3089
  product(intx, DeferPollingPageLoopCount,     -1,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3090
          "(Unsafe,Unstable) Number of iterations in safepoint loop "       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3091
          "before changing safepoint polling page to RO ")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3092
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3093
  product(intx, SafepointSpinBeforeYield, 2000,  "(Unstable)")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3094
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3095
  product(bool, PSChunkLargeArrays, true,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3096
          "true: process large arrays in chunks")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3097
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3098
  product(uintx, GCDrainStackTargetSize, 64,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3099
          "how many entries we'll try to leave on the stack during "        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3100
          "parallel GC")                                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3101
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3102
  /* stack parameters */                                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3103
  product_pd(intx, StackYellowPages,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3104
          "Number of yellow zone (recoverable overflows) pages")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3105
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3106
  product_pd(intx, StackRedPages,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3107
          "Number of red zone (unrecoverable overflows) pages")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3108
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3109
  product_pd(intx, StackShadowPages,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3110
          "Number of shadow zone (for overflow checking) pages"             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3111
          " this should exceed the depth of the VM and native call stack")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3112
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3113
  product_pd(intx, ThreadStackSize,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3114
          "Thread Stack Size (in Kbytes)")                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3115
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3116
  product_pd(intx, VMThreadStackSize,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3117
          "Non-Java Thread Stack Size (in Kbytes)")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3118
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3119
  product_pd(intx, CompilerThreadStackSize,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3120
          "Compiler Thread Stack Size (in Kbytes)")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3121
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3122
  develop_pd(uintx, JVMInvokeMethodSlack,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3123
          "Stack space (bytes) required for JVM_InvokeMethod to complete")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3124
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3125
  product(uintx, ThreadSafetyMargin, 50*M,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3126
          "Thread safety margin is used on fixed-stack LinuxThreads (on "   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3127
          "Linux/x86 only) to prevent heap-stack collision. Set to 0 to "   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3128
          "disable this feature")                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3129
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3130
  /* code cache parameters */                                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3131
  develop(uintx, CodeCacheSegmentSize, 64,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3132
          "Code cache segment size (in bytes) - smallest unit of "          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3133
          "allocation")                                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3134
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3135
  develop_pd(intx, CodeEntryAlignment,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3136
          "Code entry alignment for generated code (in bytes)")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3137
                                                                            \
5249
5cac34e6fe54 6940701: Don't align loops in stubs for Niagara sparc
kvn
parents: 5235
diff changeset
  3138
  product_pd(intx, OptoLoopAlignment,                                       \
5cac34e6fe54 6940701: Don't align loops in stubs for Niagara sparc
kvn
parents: 5235
diff changeset
  3139
          "Align inner loops to zero relative to this modulus")             \
5cac34e6fe54 6940701: Don't align loops in stubs for Niagara sparc
kvn
parents: 5235
diff changeset
  3140
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3141
  product_pd(uintx, InitialCodeCacheSize,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3142
          "Initial code cache size (in bytes)")                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3143
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3144
  product_pd(uintx, ReservedCodeCacheSize,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3145
          "Reserved code cache size (in bytes) - maximum code cache size")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3146
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3147
  product(uintx, CodeCacheMinimumFreeSpace, 500*K,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3148
          "When less than X space left, we stop compiling.")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3149
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3150
  product_pd(uintx, CodeCacheExpansionSize,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3151
          "Code cache expansion size (in bytes)")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3152
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3153
  develop_pd(uintx, CodeCacheMinBlockLength,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3154
          "Minimum number of segments in a code cache block.")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3155
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3156
  notproduct(bool, ExitOnFullCodeCache, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3157
          "Exit the VM if we fill the code cache.")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3158
                                                                            \
4750
71fd601907dc 4360113: Evict nmethods when code cache gets full
kvn
parents: 4736
diff changeset
  3159
  product(bool, UseCodeCacheFlushing, false,                                \
71fd601907dc 4360113: Evict nmethods when code cache gets full
kvn
parents: 4736
diff changeset
  3160
          "Attempt to clean the code cache before shutting off compiler")   \
71fd601907dc 4360113: Evict nmethods when code cache gets full
kvn
parents: 4736
diff changeset
  3161
                                                                            \
71fd601907dc 4360113: Evict nmethods when code cache gets full
kvn
parents: 4736
diff changeset
  3162
  product(intx,  MinCodeCacheFlushingInterval, 30,                          \
71fd601907dc 4360113: Evict nmethods when code cache gets full
kvn
parents: 4736
diff changeset
  3163
          "Min number of seconds between code cache cleaning sessions")     \
71fd601907dc 4360113: Evict nmethods when code cache gets full
kvn
parents: 4736
diff changeset
  3164
                                                                            \
71fd601907dc 4360113: Evict nmethods when code cache gets full
kvn
parents: 4736
diff changeset
  3165
  product(uintx,  CodeCacheFlushingMinimumFreeSpace, 1500*K,                \
71fd601907dc 4360113: Evict nmethods when code cache gets full
kvn
parents: 4736
diff changeset
  3166
          "When less than X space left, start code cache cleaning")         \
71fd601907dc 4360113: Evict nmethods when code cache gets full
kvn
parents: 4736
diff changeset
  3167
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3168
  /* interpreter debugging */                                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3169
  develop(intx, BinarySwitchThreshold, 5,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3170
          "Minimal number of lookupswitch entries for rewriting to binary " \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3171
          "switch")                                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3172
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3173
  develop(intx, StopInterpreterAt, 0,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3174
          "Stops interpreter execution at specified bytecode number")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3175
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3176
  develop(intx, TraceBytecodesAt, 0,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3177
          "Traces bytecodes starting with specified bytecode number")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3178
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3179
  /* compiler interface */                                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3180
  develop(intx, CIStart, 0,                                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3181
          "the id of the first compilation to permit")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3182
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3183
  develop(intx, CIStop,    -1,                                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3184
          "the id of the last compilation to permit")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3185
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3186
  develop(intx, CIStartOSR,     0,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3187
          "the id of the first osr compilation to permit "                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3188
          "(CICountOSR must be on)")                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3189
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3190
  develop(intx, CIStopOSR,    -1,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3191
          "the id of the last osr compilation to permit "                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3192
          "(CICountOSR must be on)")                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3193
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3194
  develop(intx, CIBreakAtOSR,    -1,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3195
          "id of osr compilation to break at")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3196
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3197
  develop(intx, CIBreakAt,    -1,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3198
          "id of compilation to break at")                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3199
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3200
  product(ccstrlist, CompileOnly, "",                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3201
          "List of methods (pkg/class.name) to restrict compilation to")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3202
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3203
  product(ccstr, CompileCommandFile, NULL,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3204
          "Read compiler commands from this file [.hotspot_compiler]")      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3205
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3206
  product(ccstrlist, CompileCommand, "",                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3207
          "Prepend to .hotspot_compiler; e.g. log,java/lang/String.<init>") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3208
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3209
  product(bool, CICompilerCountPerCPU, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3210
          "1 compiler thread for log(N CPUs)")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3211
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3212
  develop(intx, CIFireOOMAt,    -1,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3213
          "Fire OutOfMemoryErrors throughout CI for testing the compiler "  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3214
          "(non-negative value throws OOM after this many CI accesses "     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3215
          "in each compile)")                                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3216
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3217
  develop(intx, CIFireOOMAtDelay, -1,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3218
          "Wait for this many CI accesses to occur in all compiles before " \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3219
          "beginning to throw OutOfMemoryErrors in each compile")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3220
                                                                            \
3609
5f16c48e608a 6866585: debug code in ciObjectFactory too slow for large objects
jcoomes
parents: 3605
diff changeset
  3221
  notproduct(bool, CIObjectFactoryVerify, false,                            \
5f16c48e608a 6866585: debug code in ciObjectFactory too slow for large objects
jcoomes
parents: 3605
diff changeset
  3222
          "enable potentially expensive verification in ciObjectFactory")   \
5f16c48e608a 6866585: debug code in ciObjectFactory too slow for large objects
jcoomes
parents: 3605
diff changeset
  3223
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3224
  /* Priorities */                                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3225
  product_pd(bool, UseThreadPriorities,  "Use native thread priorities")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3226
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3227
  product(intx, ThreadPriorityPolicy, 0,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3228
          "0 : Normal.                                                     "\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3229
          "    VM chooses priorities that are appropriate for normal       "\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3230
          "    applications. On Solaris NORM_PRIORITY and above are mapped "\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3231
          "    to normal native priority. Java priorities below NORM_PRIORITY"\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3232
          "    map to lower native priority values. On Windows applications"\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3233
          "    are allowed to use higher native priorities. However, with  "\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3234
          "    ThreadPriorityPolicy=0, VM will not use the highest possible"\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3235
          "    native priority, THREAD_PRIORITY_TIME_CRITICAL, as it may   "\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3236
          "    interfere with system threads. On Linux thread priorities   "\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3237
          "    are ignored because the OS does not support static priority "\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3238
          "    in SCHED_OTHER scheduling class which is the only choice for"\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3239
          "    non-root, non-realtime applications.                        "\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3240
          "1 : Aggressive.                                                 "\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3241
          "    Java thread priorities map over to the entire range of      "\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3242
          "    native thread priorities. Higher Java thread priorities map "\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3243
          "    to higher native thread priorities. This policy should be   "\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3244
          "    used with care, as sometimes it can cause performance       "\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3245
          "    degradation in the application and/or the entire system. On "\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3246
          "    Linux this policy requires root privilege.")                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3247
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3248
  product(bool, ThreadPriorityVerbose, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3249
          "print priority changes")                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3250
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3251
  product(intx, DefaultThreadPriority, -1,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3252
          "what native priority threads run at if not specified elsewhere (-1 means no change)") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3253
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3254
  product(intx, CompilerThreadPriority, -1,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3255
          "what priority should compiler threads run at (-1 means no change)") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3256
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3257
  product(intx, VMThreadPriority, -1,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3258
          "what priority should VM threads run at (-1 means no change)")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3259
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3260
  product(bool, CompilerThreadHintNoPreempt, true,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3261
          "(Solaris only) Give compiler threads an extra quanta")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3262
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3263
  product(bool, VMThreadHintNoPreempt, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3264
          "(Solaris only) Give VM thread an extra quanta")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3265
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3266
  product(intx, JavaPriority1_To_OSPriority, -1, "Map Java priorities to OS priorities") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3267
  product(intx, JavaPriority2_To_OSPriority, -1, "Map Java priorities to OS priorities") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3268
  product(intx, JavaPriority3_To_OSPriority, -1, "Map Java priorities to OS priorities") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3269
  product(intx, JavaPriority4_To_OSPriority, -1, "Map Java priorities to OS priorities") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3270
  product(intx, JavaPriority5_To_OSPriority, -1, "Map Java priorities to OS priorities") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3271
  product(intx, JavaPriority6_To_OSPriority, -1, "Map Java priorities to OS priorities") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3272
  product(intx, JavaPriority7_To_OSPriority, -1, "Map Java priorities to OS priorities") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3273
  product(intx, JavaPriority8_To_OSPriority, -1, "Map Java priorities to OS priorities") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3274
  product(intx, JavaPriority9_To_OSPriority, -1, "Map Java priorities to OS priorities") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3275
  product(intx, JavaPriority10_To_OSPriority,-1, "Map Java priorities to OS priorities") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3276
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3277
  /* compiler debugging */                                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3278
  notproduct(intx, CompileTheWorldStartAt,     1,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3279
          "First class to consider when using +CompileTheWorld")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3280
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3281
  notproduct(intx, CompileTheWorldStopAt, max_jint,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3282
          "Last class to consider when using +CompileTheWorld")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3283
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3284
  develop(intx, NewCodeParameter,      0,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3285
          "Testing Only: Create a dedicated integer parameter before "      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3286
          "putback")                                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3287
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3288
  /* new oopmap storage allocation */                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3289
  develop(intx, MinOopMapAllocation,     8,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3290
          "Minimum number of OopMap entries in an OopMapSet")               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3291
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3292
  /* Background Compilation */                                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3293
  develop(intx, LongCompileThreshold,     50,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3294
          "Used with +TraceLongCompiles")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3295
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3296
  product(intx, StarvationMonitorInterval,    200,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3297
          "Pause between each check in ms")                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3298
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3299
  /* recompilation */                                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3300
  product_pd(intx, CompileThreshold,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3301
          "number of interpreted method invocations before (re-)compiling") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3302
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3303
  product_pd(intx, BackEdgeThreshold,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3304
          "Interpreter Back edge threshold at which an OSR compilation is invoked")\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3305
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3306
  product(intx, Tier1BytecodeLimit,      10,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3307
          "Must have at least this many bytecodes before tier1"             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3308
          "invocation counters are used")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3309
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3310
  product_pd(intx, Tier2CompileThreshold,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3311
          "threshold at which a tier 2 compilation is invoked")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3312
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3313
  product_pd(intx, Tier2BackEdgeThreshold,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3314
          "Back edge threshold at which a tier 2 compilation is invoked")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3315
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3316
  product_pd(intx, Tier3CompileThreshold,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3317
          "threshold at which a tier 3 compilation is invoked")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3318
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3319
  product_pd(intx, Tier3BackEdgeThreshold,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3320
          "Back edge threshold at which a tier 3 compilation is invoked")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3321
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3322
  product_pd(intx, Tier4CompileThreshold,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3323
          "threshold at which a tier 4 compilation is invoked")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3324
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3325
  product_pd(intx, Tier4BackEdgeThreshold,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3326
          "Back edge threshold at which a tier 4 compilation is invoked")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3327
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3328
  product_pd(bool, TieredCompilation,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3329
          "Enable two-tier compilation")                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3330
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3331
  product(bool, StressTieredRuntime, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3332
          "Alternate client and server compiler on compile requests")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3333
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3334
  product_pd(intx, OnStackReplacePercentage,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3335
          "NON_TIERED number of method invocations/branches (expressed as %"\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3336
          "of CompileThreshold) before (re-)compiling OSR code")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3337
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3338
  product(intx, InterpreterProfilePercentage, 33,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3339
          "NON_TIERED number of method invocations/branches (expressed as %"\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3340
          "of CompileThreshold) before profiling in the interpreter")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3341
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3342
  develop(intx, MaxRecompilationSearchLength,    10,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3343
          "max. # frames to inspect searching for recompilee")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3344
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3345
  develop(intx, MaxInterpretedSearchLength,     3,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3346
          "max. # interp. frames to skip when searching for recompilee")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3347
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3348
  develop(intx, DesiredMethodLimit,  8000,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3349
          "desired max. method size (in bytecodes) after inlining")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3350
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3351
  develop(intx, HugeMethodLimit,  8000,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3352
          "don't compile methods larger than this if "                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3353
          "+DontCompileHugeMethods")                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3354
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3355
  /* New JDK 1.4 reflection implementation */                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3356
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3357
  develop(bool, UseNewReflection, true,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3358
          "Temporary flag for transition to reflection based on dynamic "   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3359
          "bytecode generation in 1.4; can no longer be turned off in 1.4 " \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3360
          "JDK, and is unneeded in 1.3 JDK, but marks most places VM "      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3361
          "changes were needed")                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3362
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3363
  develop(bool, VerifyReflectionBytecodes, false,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3364
          "Force verification of 1.4 reflection bytecodes. Does not work "  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3365
          "in situations like that described in 4486457 or for "            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3366
          "constructors generated for serialization, so can not be enabled "\
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3367
          "in product.")                                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3368
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3369
  product(bool, ReflectionWrapResolutionErrors, true,                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3370
          "Temporary flag for transition to AbstractMethodError wrapped "   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3371
          "in InvocationTargetException. See 6531596")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3372
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3373
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3374
  develop(intx, FastSuperclassLimit, 8,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3375
          "Depth of hardwired instanceof accelerator array")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3376
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3377
  /* Properties for Java libraries  */                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3378
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3379
  product(intx, MaxDirectMemorySize, -1,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3380
          "Maximum total size of NIO direct-buffer allocations")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3381
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3382
  /* temporary developer defined flags  */                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3383
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3384
  diagnostic(bool, UseNewCode, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3385
          "Testing Only: Use the new version while testing")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3386
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3387
  diagnostic(bool, UseNewCode2, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3388
          "Testing Only: Use the new version while testing")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3389
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3390
  diagnostic(bool, UseNewCode3, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3391
          "Testing Only: Use the new version while testing")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3392
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3393
  /* flags for performance data collection */                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3394
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3395
  product(bool, UsePerfData, true,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3396
          "Flag to disable jvmstat instrumentation for performance testing" \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3397
          "and problem isolation purposes.")                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3398
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3399
  product(bool, PerfDataSaveToFile, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3400
          "Save PerfData memory to hsperfdata_<pid> file on exit")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3401
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3402
  product(ccstr, PerfDataSaveFile, NULL,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3403
          "Save PerfData memory to the specified absolute pathname,"        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3404
           "%p in the file name if present will be replaced by pid")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3405
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3406
  product(intx, PerfDataSamplingInterval, 50 /*ms*/,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3407
          "Data sampling interval in milliseconds")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3408
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3409
  develop(bool, PerfTraceDataCreation, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3410
          "Trace creation of Performance Data Entries")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3411
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3412
  develop(bool, PerfTraceMemOps, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3413
          "Trace PerfMemory create/attach/detach calls")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3414
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3415
  product(bool, PerfDisableSharedMem, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3416
          "Store performance data in standard memory")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3417
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3418
  product(intx, PerfDataMemorySize, 32*K,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3419
          "Size of performance data memory region. Will be rounded "        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3420
          "up to a multiple of the native os page size.")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3421
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3422
  product(intx, PerfMaxStringConstLength, 1024,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3423
          "Maximum PerfStringConstant string length before truncation")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3424
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3425
  product(bool, PerfAllowAtExitRegistration, false,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3426
          "Allow registration of atexit() methods")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3427
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3428
  product(bool, PerfBypassFileSystemCheck, false,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3429
          "Bypass Win32 file system criteria checks (Windows Only)")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3430
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3431
  product(intx, UnguardOnExecutionViolation, 0,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3432
          "Unguard page and retry on no-execute fault (Win32 only)"         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3433
          "0=off, 1=conservative, 2=aggressive")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3434
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3435
  /* Serviceability Support */                                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3436
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3437
  product(bool, ManagementServer, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3438
          "Create JMX Management Server")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3439
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3440
  product(bool, DisableAttachMechanism, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3441
         "Disable mechanism that allows tools to attach to this VM")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3442
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3443
  product(bool, StartAttachListener, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3444
          "Always start Attach Listener at VM startup")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3445
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3446
  manageable(bool, PrintConcurrentLocks, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3447
          "Print java.util.concurrent locks in thread dump")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3448
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3449
  /* Shared spaces */                                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3450
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3451
  product(bool, UseSharedSpaces, true,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3452
          "Use shared spaces in the permanent generation")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3453
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3454
  product(bool, RequireSharedSpaces, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3455
          "Require shared spaces in the permanent generation")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3456
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3457
  product(bool, ForceSharedSpaces, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3458
          "Require shared spaces in the permanent generation")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3459
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3460
  product(bool, DumpSharedSpaces, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3461
           "Special mode: JVM reads a class list, loads classes, builds "   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3462
            "shared spaces, and dumps the shared spaces to a file to be "   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3463
            "used in future JVM runs.")                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3464
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3465
  product(bool, PrintSharedSpaces, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3466
          "Print usage of shared spaces")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3467
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3468
  product(uintx, SharedDummyBlockSize, 512*M,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3469
          "Size of dummy block used to shift heap addresses (in bytes)")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3470
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3471
  product(uintx, SharedReadWriteSize,  12*M,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3472
          "Size of read-write space in permanent generation (in bytes)")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3473
                                                                            \
3610
06ee2f982ea6 6867645: java -Xshare:dump failed - read only space too small
jcoomes
parents: 3609
diff changeset
  3474
  product(uintx, SharedReadOnlySize,   10*M,                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3475
          "Size of read-only space in permanent generation (in bytes)")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3476
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3477
  product(uintx, SharedMiscDataSize,    4*M,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3478
          "Size of the shared data area adjacent to the heap (in bytes)")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3479
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3480
  product(uintx, SharedMiscCodeSize,    4*M,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3481
          "Size of the shared code area adjacent to the heap (in bytes)")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3482
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3483
  diagnostic(bool, SharedOptimizeColdStart, true,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3484
          "At dump time, order shared objects to achieve better "           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3485
          "cold startup time.")                                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3486
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3487
  develop(intx, SharedOptimizeColdStartPolicy, 2,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3488
          "Reordering policy for SharedOptimizeColdStart "                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3489
          "0=favor classload-time locality, 1=balanced, "                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3490
          "2=favor runtime locality")                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3491
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3492
  diagnostic(bool, SharedSkipVerify, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3493
          "Skip assert() and verify() which page-in unwanted shared "       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3494
          "objects. ")                                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3495
                                                                            \
1550
be2fc37a817f 6653858: dynamic languages need to be able to load anonymous classes
jrose
parents: 1438
diff changeset
  3496
  product(bool, AnonymousClasses, false,                                    \
be2fc37a817f 6653858: dynamic languages need to be able to load anonymous classes
jrose
parents: 1438
diff changeset
  3497
          "support sun.misc.Unsafe.defineAnonymousClass")                   \
be2fc37a817f 6653858: dynamic languages need to be able to load anonymous classes
jrose
parents: 1438
diff changeset
  3498
                                                                            \
3605
1540652a8156 6868487: EnableInvokeDynamic and EnableMethodHandles should not be visible flags in JDK6 or JDK7
jrose
parents: 3585
diff changeset
  3499
  experimental(bool, EnableMethodHandles, false,                            \
2534
08dac9ce0cd7 6655638: dynamic languages need method handles
jrose
parents: 2352
diff changeset
  3500
          "support method handles (true by default under JSR 292)")         \
08dac9ce0cd7 6655638: dynamic languages need method handles
jrose
parents: 2352
diff changeset
  3501
                                                                            \
08dac9ce0cd7 6655638: dynamic languages need method handles
jrose
parents: 2352
diff changeset
  3502
  diagnostic(intx, MethodHandlePushLimit, 3,                                \
08dac9ce0cd7 6655638: dynamic languages need method handles
jrose
parents: 2352
diff changeset
  3503
          "number of additional stack slots a method handle may push")      \
08dac9ce0cd7 6655638: dynamic languages need method handles
jrose
parents: 2352
diff changeset
  3504
                                                                            \
08dac9ce0cd7 6655638: dynamic languages need method handles
jrose
parents: 2352
diff changeset
  3505
  develop(bool, TraceMethodHandles, false,                                  \
08dac9ce0cd7 6655638: dynamic languages need method handles
jrose
parents: 2352
diff changeset
  3506
          "trace internal method handle operations")                        \
08dac9ce0cd7 6655638: dynamic languages need method handles
jrose
parents: 2352
diff changeset
  3507
                                                                            \
08dac9ce0cd7 6655638: dynamic languages need method handles
jrose
parents: 2352
diff changeset
  3508
  diagnostic(bool, VerifyMethodHandles, trueInDebug,                        \
08dac9ce0cd7 6655638: dynamic languages need method handles
jrose
parents: 2352
diff changeset
  3509
          "perform extra checks when constructing method handles")          \
08dac9ce0cd7 6655638: dynamic languages need method handles
jrose
parents: 2352
diff changeset
  3510
                                                                            \
08dac9ce0cd7 6655638: dynamic languages need method handles
jrose
parents: 2352
diff changeset
  3511
  diagnostic(bool, OptimizeMethodHandles, true,                             \
08dac9ce0cd7 6655638: dynamic languages need method handles
jrose
parents: 2352
diff changeset
  3512
          "when constructing method handles, try to improve them")          \
08dac9ce0cd7 6655638: dynamic languages need method handles
jrose
parents: 2352
diff changeset
  3513
                                                                            \
4644
2b1a1bc98168 6912065: final fields in objects need to support inlining optimizations for JSR 292
jrose
parents: 4586
diff changeset
  3514
  experimental(bool, TrustFinalNonStaticFields, false,                      \
2b1a1bc98168 6912065: final fields in objects need to support inlining optimizations for JSR 292
jrose
parents: 4586
diff changeset
  3515
          "trust final non-static declarations for constant folding")       \
2b1a1bc98168 6912065: final fields in objects need to support inlining optimizations for JSR 292
jrose
parents: 4586
diff changeset
  3516
                                                                            \
3605
1540652a8156 6868487: EnableInvokeDynamic and EnableMethodHandles should not be visible flags in JDK6 or JDK7
jrose
parents: 3585
diff changeset
  3517
  experimental(bool, EnableInvokeDynamic, false,                            \
2570
ecc7862946d4 6655646: dynamic languages need dynamically linked call sites
jrose
parents: 2536
diff changeset
  3518
          "recognize the invokedynamic instruction")                        \
ecc7862946d4 6655646: dynamic languages need dynamically linked call sites
jrose
parents: 2536
diff changeset
  3519
                                                                            \
6062
bab93afe9df7 6964498: JSR 292 invokedynamic sites need local bootstrap methods
jrose
parents: 5924
diff changeset
  3520
  experimental(bool, AllowTransitionalJSR292, true,                         \
bab93afe9df7 6964498: JSR 292 invokedynamic sites need local bootstrap methods
jrose
parents: 5924
diff changeset
  3521
          "recognize pre-PFD formats of invokedynamic")                     \
bab93afe9df7 6964498: JSR 292 invokedynamic sites need local bootstrap methods
jrose
parents: 5924
diff changeset
  3522
                                                                            \
2570
ecc7862946d4 6655646: dynamic languages need dynamically linked call sites
jrose
parents: 2536
diff changeset
  3523
  develop(bool, TraceInvokeDynamic, false,                                  \
ecc7862946d4 6655646: dynamic languages need dynamically linked call sites
jrose
parents: 2536
diff changeset
  3524
          "trace internal invoke dynamic operations")                       \
ecc7862946d4 6655646: dynamic languages need dynamically linked call sites
jrose
parents: 2536
diff changeset
  3525
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3526
  diagnostic(bool, PauseAtStartup,      false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3527
          "Causes the VM to pause at startup time and wait for the pause "  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3528
          "file to be removed (default: ./vm.paused.<pid>)")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3529
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3530
  diagnostic(ccstr, PauseAtStartupFile, NULL,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3531
          "The file to create and for whose removal to await when pausing " \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3532
          "at startup. (default: ./vm.paused.<pid>)")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3533
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3534
  product(bool, ExtendedDTraceProbes,    false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3535
          "Enable performance-impacting dtrace probes")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3536
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3537
  product(bool, DTraceMethodProbes, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3538
          "Enable dtrace probes for method-entry and method-exit")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3539
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3540
  product(bool, DTraceAllocProbes, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3541
          "Enable dtrace probes for object allocation")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3542
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3543
  product(bool, DTraceMonitorProbes, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3544
          "Enable dtrace probes for monitor events")                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3545
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3546
  product(bool, RelaxAccessControlCheck, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3547
          "Relax the access control checks in the verifier")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3548
                                                                            \
363
99d43e8a76ad 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 360
diff changeset
  3549
  diagnostic(bool, PrintDTraceDOF, false,                                   \
99d43e8a76ad 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 360
diff changeset
  3550
             "Print the DTrace DOF passed to the system for JSDT probes")   \
99d43e8a76ad 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 360
diff changeset
  3551
                                                                            \
1602
6859fd21ba2b 6554406: Change switch UseVMInterruptibleIO default to false (sol)
xlu
parents: 1562
diff changeset
  3552
  product(bool, UseVMInterruptibleIO, false,                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3553
          "(Unstable, Solaris-specific) Thread interrupt before or with "   \
1602
6859fd21ba2b 6554406: Change switch UseVMInterruptibleIO default to false (sol)
xlu
parents: 1562
diff changeset
  3554
          "EINTR for I/O operations results in OS_INTRPT. The default value"\
6859fd21ba2b 6554406: Change switch UseVMInterruptibleIO default to false (sol)
xlu
parents: 1562
diff changeset
  3555
          " of this flag is true for JDK 6 and earliers")
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3556
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3557
/*
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3558
 *  Macros for factoring of globals
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3559
 */
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3560
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3561
// Interface macros
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3562
#define DECLARE_PRODUCT_FLAG(type, name, value, doc)    extern "C" type name;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3563
#define DECLARE_PD_PRODUCT_FLAG(type, name, doc)        extern "C" type name;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3564
#define DECLARE_DIAGNOSTIC_FLAG(type, name, value, doc) extern "C" type name;
1382
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
  3565
#define DECLARE_EXPERIMENTAL_FLAG(type, name, value, doc) extern "C" type name;
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3566
#define DECLARE_MANAGEABLE_FLAG(type, name, value, doc) extern "C" type name;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3567
#define DECLARE_PRODUCT_RW_FLAG(type, name, value, doc) extern "C" type name;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3568
#ifdef PRODUCT
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3569
#define DECLARE_DEVELOPER_FLAG(type, name, value, doc)  const type name = value;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3570
#define DECLARE_PD_DEVELOPER_FLAG(type, name, doc)      const type name = pd_##name;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3571
#define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3572
#else
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3573
#define DECLARE_DEVELOPER_FLAG(type, name, value, doc)  extern "C" type name;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3574
#define DECLARE_PD_DEVELOPER_FLAG(type, name, doc)      extern "C" type name;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3575
#define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc)  extern "C" type name;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3576
#endif
360
21d113ecbf6a 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 356
diff changeset
  3577
// Special LP64 flags, product only needed for now.
21d113ecbf6a 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 356
diff changeset
  3578
#ifdef _LP64
21d113ecbf6a 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 356
diff changeset
  3579
#define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) extern "C" type name;
21d113ecbf6a 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 356
diff changeset
  3580
#else
21d113ecbf6a 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 356
diff changeset
  3581
#define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) const type name = value;
21d113ecbf6a 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 356
diff changeset
  3582
#endif // _LP64
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3583
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3584
// Implementation macros
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3585
#define MATERIALIZE_PRODUCT_FLAG(type, name, value, doc)   type name = value;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3586
#define MATERIALIZE_PD_PRODUCT_FLAG(type, name, doc)       type name = pd_##name;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3587
#define MATERIALIZE_DIAGNOSTIC_FLAG(type, name, value, doc) type name = value;
1382
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
  3588
#define MATERIALIZE_EXPERIMENTAL_FLAG(type, name, value, doc) type name = value;
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3589
#define MATERIALIZE_MANAGEABLE_FLAG(type, name, value, doc) type name = value;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3590
#define MATERIALIZE_PRODUCT_RW_FLAG(type, name, value, doc) type name = value;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3591
#ifdef PRODUCT
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3592
#define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc) /* flag name is constant */
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3593
#define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc)     /* flag name is constant */
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3594
#define MATERIALIZE_NOTPRODUCT_FLAG(type, name, value, doc)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3595
#else
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3596
#define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc) type name = value;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3597
#define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc)     type name = pd_##name;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3598
#define MATERIALIZE_NOTPRODUCT_FLAG(type, name, value, doc) type name = value;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3599
#endif
360
21d113ecbf6a 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 356
diff changeset
  3600
#ifdef _LP64
21d113ecbf6a 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 356
diff changeset
  3601
#define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc)   type name = value;
21d113ecbf6a 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 356
diff changeset
  3602
#else
21d113ecbf6a 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 356
diff changeset
  3603
#define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc) /* flag is constant */
21d113ecbf6a 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 356
diff changeset
  3604
#endif // _LP64
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3605
1382
fa3de4068282 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 1380
diff changeset
  3606
RUNTIME_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_EXPERIMENTAL_FLAG, DECLARE_NOTPRODUCT_FLAG, DECLARE_MANAGEABLE_FLAG, DECLARE_PRODUCT_RW_FLAG, DECLARE_LP64_PRODUCT_FLAG)
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3607
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3608
RUNTIME_OS_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_NOTPRODUCT_FLAG)