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