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