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