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