src/hotspot/share/opto/c2_globals.hpp
author chegar
Thu, 17 Oct 2019 20:54:25 +0100
branchdatagramsocketimpl-branch
changeset 58679 9c3209ff7550
parent 58678 9cf78a70fa4f
parent 58149 00aebe177a71
permissions -rw-r--r--
datagramsocketimpl-branch: merge with default
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
     1
/*
53244
9807daeb47c4 8216167: Update include guards to reflect correct directories
coleenp
parents: 52979
diff changeset
     2
 * Copyright (c) 2000, 2019, 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: 5249
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 5249
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: 5249
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
53244
9807daeb47c4 8216167: Update include guards to reflect correct directories
coleenp
parents: 52979
diff changeset
    25
#ifndef SHARE_OPTO_C2_GLOBALS_HPP
9807daeb47c4 8216167: Update include guards to reflect correct directories
coleenp
parents: 52979
diff changeset
    26
#define SHARE_OPTO_C2_GLOBALS_HPP
7397
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6433
diff changeset
    27
54982
b18c8301b8c2 8224201: Simplify JVM flag macro expansions
stefank
parents: 53724
diff changeset
    28
#include "runtime/globals_shared.hpp"
40010
e32d5e545789 8161258: Simplify including platform files.
goetz
parents: 39450
diff changeset
    29
#include "utilities/macros.hpp"
e32d5e545789 8161258: Simplify including platform files.
goetz
parents: 39450
diff changeset
    30
e32d5e545789 8161258: Simplify including platform files.
goetz
parents: 39450
diff changeset
    31
#include CPU_HEADER(c2_globals)
e32d5e545789 8161258: Simplify including platform files.
goetz
parents: 39450
diff changeset
    32
#include OS_HEADER(c2_globals)
7397
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6433
diff changeset
    33
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    34
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
    35
// Defines all globals flags used by the server compiler.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    36
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
    37
38273
2634194d7555 8073500: Prevent certain commercial flags from being changed at runtime
gziemski
parents: 38046
diff changeset
    38
#define C2_FLAGS(develop, \
2634194d7555 8073500: Prevent certain commercial flags from being changed at runtime
gziemski
parents: 38046
diff changeset
    39
                 develop_pd, \
2634194d7555 8073500: Prevent certain commercial flags from being changed at runtime
gziemski
parents: 38046
diff changeset
    40
                 product, \
2634194d7555 8073500: Prevent certain commercial flags from being changed at runtime
gziemski
parents: 38046
diff changeset
    41
                 product_pd, \
2634194d7555 8073500: Prevent certain commercial flags from being changed at runtime
gziemski
parents: 38046
diff changeset
    42
                 diagnostic, \
39117
59fa99a45873 8150900: Implement diagnostic_pd
csahu
parents: 38289
diff changeset
    43
                 diagnostic_pd, \
38273
2634194d7555 8073500: Prevent certain commercial flags from being changed at runtime
gziemski
parents: 38046
diff changeset
    44
                 experimental, \
2634194d7555 8073500: Prevent certain commercial flags from being changed at runtime
gziemski
parents: 38046
diff changeset
    45
                 notproduct, \
2634194d7555 8073500: Prevent certain commercial flags from being changed at runtime
gziemski
parents: 38046
diff changeset
    46
                 range, \
2634194d7555 8073500: Prevent certain commercial flags from being changed at runtime
gziemski
parents: 38046
diff changeset
    47
                 constraint, \
2634194d7555 8073500: Prevent certain commercial flags from being changed at runtime
gziemski
parents: 38046
diff changeset
    48
                 writeable) \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    49
                                                                            \
39435
73f5a5e113f8 8156803: Turn StressLCM/StressGCM flags to diagnostic
shade
parents: 38289
diff changeset
    50
  diagnostic(bool, StressLCM, false,                                        \
15871
b04dd94da4e6 8009120: Fuzz instruction scheduling in HotSpot compilers
shade
parents: 15618
diff changeset
    51
          "Randomize instruction scheduling in LCM")                        \
b04dd94da4e6 8009120: Fuzz instruction scheduling in HotSpot compilers
shade
parents: 15618
diff changeset
    52
                                                                            \
39435
73f5a5e113f8 8156803: Turn StressLCM/StressGCM flags to diagnostic
shade
parents: 38289
diff changeset
    53
  diagnostic(bool, StressGCM, false,                                        \
15871
b04dd94da4e6 8009120: Fuzz instruction scheduling in HotSpot compilers
shade
parents: 15618
diff changeset
    54
          "Randomize instruction scheduling in GCM")                        \
b04dd94da4e6 8009120: Fuzz instruction scheduling in HotSpot compilers
shade
parents: 15618
diff changeset
    55
                                                                            \
50449
acdfeede95ff 8203480: IncompatibleClassChangeError thrown at sites linked to default interface methods
vlivanov
parents: 48309
diff changeset
    56
  develop(bool, StressMethodHandleLinkerInlining, false,                    \
acdfeede95ff 8203480: IncompatibleClassChangeError thrown at sites linked to default interface methods
vlivanov
parents: 48309
diff changeset
    57
          "Stress inlining through method handle linkers")                  \
acdfeede95ff 8203480: IncompatibleClassChangeError thrown at sites linked to default interface methods
vlivanov
parents: 48309
diff changeset
    58
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    59
  develop(intx, OptoPrologueNops, 0,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    60
          "Insert this many extra nop instructions "                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    61
          "in the prologue of every nmethod")                               \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
    62
          range(0, 128)                                                     \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    63
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    64
  product_pd(intx, InteriorEntryAlignment,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    65
          "Code alignment for interior entry points "                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    66
          "in generated code (in bytes)")                                   \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
    67
          constraint(InteriorEntryAlignmentConstraintFunc, AfterErgo)       \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    68
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    69
  product(intx, MaxLoopPad, (OptoLoopAlignment-1),                          \
31371
311143309e73 8122937: [JEP 245] Validate JVM Command-Line Flag Arguments.
gziemski
parents: 31129
diff changeset
    70
          "Align a loop if padding size in bytes is less or equal to this " \
311143309e73 8122937: [JEP 245] Validate JVM Command-Line Flag Arguments.
gziemski
parents: 31129
diff changeset
    71
          "value")                                                          \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
    72
          range(0, max_jint)                                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    73
                                                                            \
30624
2e1803c8a26d 8076276: Add support for AVX512
kvn
parents: 30593
diff changeset
    74
  product(intx, MaxVectorSize, 64,                                          \
13104
657b387034fb 7119644: Increase superword's vector size up to 256 bits
kvn
parents: 12158
diff changeset
    75
          "Max vector size in bytes, "                                      \
657b387034fb 7119644: Increase superword's vector size up to 256 bits
kvn
parents: 12158
diff changeset
    76
          "actual size could be less depending on elements type")           \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
    77
          range(0, max_jint)                                                \
13104
657b387034fb 7119644: Increase superword's vector size up to 256 bits
kvn
parents: 12158
diff changeset
    78
                                                                            \
13885
6b056026ecad 7199010: incorrect vector alignment
kvn
parents: 13884
diff changeset
    79
  product(bool, AlignVector, true,                                          \
13104
657b387034fb 7119644: Increase superword's vector size up to 256 bits
kvn
parents: 12158
diff changeset
    80
          "Perform vector store/load alignment in loop")                    \
657b387034fb 7119644: Increase superword's vector size up to 256 bits
kvn
parents: 12158
diff changeset
    81
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    82
  product(intx, NumberOfLoopInstrToAlign, 4,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    83
          "Number of first instructions in a loop to align")                \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
    84
          range(0, max_jint)                                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    85
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    86
  notproduct(intx, IndexSetWatch, 0,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    87
          "Trace all operations on this IndexSet (-1 means all, 0 none)")   \
31371
311143309e73 8122937: [JEP 245] Validate JVM Command-Line Flag Arguments.
gziemski
parents: 31129
diff changeset
    88
          range(-1, 0)                                                      \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    89
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    90
  develop(intx, OptoNodeListSize, 4,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    91
          "Starting allocation size of Node_List data structures")          \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
    92
          range(0, max_jint)                                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    93
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    94
  develop(intx, OptoBlockListSize, 8,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    95
          "Starting allocation size of Block_List data structures")         \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
    96
          range(0, max_jint)                                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    97
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    98
  develop(intx, OptoPeepholeAt, -1,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    99
          "Apply peephole optimizations to this peephole rule")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   100
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   101
  notproduct(bool, PrintIdeal, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   102
          "Print ideal graph before code generation")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   103
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   104
  notproduct(bool, PrintOpto, false,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   105
          "Print compiler2 attempts")                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   106
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   107
  notproduct(bool, PrintOptoInlining, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   108
          "Print compiler2 inlining decisions")                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   109
                                                                            \
14623
70c4c1be0a14 7092905: C2: Keep track of the number of dead nodes
bharadwaj
parents: 14133
diff changeset
   110
  notproduct(bool, VerifyIdealNodeCount, false,                             \
70c4c1be0a14 7092905: C2: Keep track of the number of dead nodes
bharadwaj
parents: 14133
diff changeset
   111
          "Verify that tracked dead ideal node count is accurate")          \
70c4c1be0a14 7092905: C2: Keep track of the number of dead nodes
bharadwaj
parents: 14133
diff changeset
   112
                                                                            \
70c4c1be0a14 7092905: C2: Keep track of the number of dead nodes
bharadwaj
parents: 14133
diff changeset
   113
  notproduct(bool, PrintIdealNodeCount, false,                              \
70c4c1be0a14 7092905: C2: Keep track of the number of dead nodes
bharadwaj
parents: 14133
diff changeset
   114
          "Print liveness counts of ideal nodes")                           \
70c4c1be0a14 7092905: C2: Keep track of the number of dead nodes
bharadwaj
parents: 14133
diff changeset
   115
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   116
  notproduct(bool, VerifyOptoOopOffsets, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   117
          "Check types of base addresses in field references")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   118
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   119
  develop(bool, IdealizedNumerics, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   120
          "Check performance difference allowing FP "                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   121
          "associativity and commutativity...")                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   122
                                                                            \
42063
dca9294d9f59 8166561: [s390] Adaptions needed for s390 port in C1 and C2.
goetz
parents: 40010
diff changeset
   123
  diagnostic_pd(bool, IdealizeClearArrayNode,                               \
dca9294d9f59 8166561: [s390] Adaptions needed for s390 port in C1 and C2.
goetz
parents: 40010
diff changeset
   124
          "Replace ClearArrayNode by subgraph of basic operations.")        \
dca9294d9f59 8166561: [s390] Adaptions needed for s390 port in C1 and C2.
goetz
parents: 40010
diff changeset
   125
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   126
  develop(bool, OptoBreakpoint, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   127
          "insert breakpoint at method entry")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   128
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   129
  notproduct(bool, OptoBreakpointOSR, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   130
          "insert breakpoint at osr method entry")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   131
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   132
  notproduct(intx, BreakAtNode, 0,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   133
          "Break at construction of this Node (either _idx or _debug_idx)") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   134
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   135
  notproduct(bool, OptoBreakpointC2R, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   136
          "insert breakpoint at runtime stub entry")                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   137
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   138
  notproduct(bool, OptoNoExecute, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   139
          "Attempt to parse and compile but do not execute generated code") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   140
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   141
  notproduct(bool, PrintOptoStatistics, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   142
          "Print New compiler statistics")                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   143
                                                                            \
33451
0712796e4039 8137167: JEP165: Compiler Control: Implementation task
neliasso
parents: 33447
diff changeset
   144
  diagnostic(bool, PrintOptoAssembly, false,                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   145
          "Print New compiler assembly output")                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   146
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   147
  develop_pd(bool, OptoPeephole,                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   148
          "Apply peephole optimizations after register allocation")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   149
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   150
  develop(bool, OptoRemoveUseless, true,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   151
          "Remove useless nodes after parsing")                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   152
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   153
  notproduct(bool, PrintFrameConverterAssembly, false,                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   154
          "Print New compiler assembly output for frame converters")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   155
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   156
  notproduct(bool, PrintParseStatistics, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   157
          "Print nodes, transforms and new values made per bytecode parsed")\
489c9b5090e2 Initial load
duke
parents:
diff changeset
   158
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   159
  notproduct(bool, PrintOptoPeephole, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   160
          "Print New compiler peephole replacements")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   161
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   162
  develop(bool, PrintCFGBlockFreq, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   163
          "Print CFG block freqencies")                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   164
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   165
  develop(bool, TraceOptoParse, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   166
          "Trace bytecode parse and control-flow merge")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   167
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   168
  product_pd(intx,  LoopUnrollLimit,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   169
          "Unroll loop bodies with node count less than this")              \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   170
          range(0, max_jint / 4)                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   171
                                                                            \
36066
60ce66ce3c76 8149421: Vectorized Post Loops
mcberg
parents: 35084
diff changeset
   172
  product_pd(intx, LoopPercentProfileLimit,                                 \
60ce66ce3c76 8149421: Vectorized Post Loops
mcberg
parents: 35084
diff changeset
   173
             "Unroll loop bodies with % node count of profile limit")       \
60ce66ce3c76 8149421: Vectorized Post Loops
mcberg
parents: 35084
diff changeset
   174
             range(10, 100)                                                 \
60ce66ce3c76 8149421: Vectorized Post Loops
mcberg
parents: 35084
diff changeset
   175
                                                                            \
19283
4df251ee863c 8022993: Convert MAX_UNROLL constant to LoopMaxUnroll C2 flag
kvn
parents: 18099
diff changeset
   176
  product(intx,  LoopMaxUnroll, 16,                                         \
4df251ee863c 8022993: Convert MAX_UNROLL constant to LoopMaxUnroll C2 flag
kvn
parents: 18099
diff changeset
   177
          "Maximum number of unrolls for main loop")                        \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   178
          range(0, max_jint)                                                \
19283
4df251ee863c 8022993: Convert MAX_UNROLL constant to LoopMaxUnroll C2 flag
kvn
parents: 18099
diff changeset
   179
                                                                            \
34162
16b54851eaf6 8140779: Code generation fixes for avx512
iveresov
parents: 33469
diff changeset
   180
  product_pd(bool,  SuperWordLoopUnrollAnalysis,                            \
16b54851eaf6 8140779: Code generation fixes for avx512
iveresov
parents: 33469
diff changeset
   181
           "Map number of unrolls for main loop via "                       \
16b54851eaf6 8140779: Code generation fixes for avx512
iveresov
parents: 33469
diff changeset
   182
           "Superword Level Parallelism analysis")                          \
31403
7bf7e00a1aac 8080325: SuperWord loop unrolling analysis
mcberg
parents: 31129
diff changeset
   183
                                                                            \
46061
duke
parents: 45871
diff changeset
   184
  experimental(bool, PostLoopMultiversioning, false,                        \
37292
64f6ae06310e 8151573: Multiversioning for range check elimination
mcberg
parents: 37287
diff changeset
   185
           "Multi versioned post loops to eliminate range checks")          \
64f6ae06310e 8151573: Multiversioning for range check elimination
mcberg
parents: 37287
diff changeset
   186
                                                                            \
31403
7bf7e00a1aac 8080325: SuperWord loop unrolling analysis
mcberg
parents: 31129
diff changeset
   187
  notproduct(bool, TraceSuperWordLoopUnrollAnalysis, false,                 \
7bf7e00a1aac 8080325: SuperWord loop unrolling analysis
mcberg
parents: 31129
diff changeset
   188
          "Trace what Superword Level Parallelism analysis applies")        \
7bf7e00a1aac 8080325: SuperWord loop unrolling analysis
mcberg
parents: 31129
diff changeset
   189
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   190
  product(intx,  LoopUnrollMin, 4,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   191
          "Minimum number of unroll loop bodies before checking progress"   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   192
          "of rounds of unroll,optimize,..")                                \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   193
          range(0, max_jint)                                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   194
                                                                            \
47623
0a5f1b851890 8189067: SuperWord optimization crashes with "assert(out == prev || prev == __null) failed: no branches off of store slice"
thartmann
parents: 47216
diff changeset
   195
  product(bool, UseSubwordForMaxVector, true,                               \
46692
117b089cb1c3 8175096: Analyse subword in the loop to set maximum vector size
vdeshpande
parents: 46486
diff changeset
   196
          "Use Subword Analysis to set maximum vector size")                \
117b089cb1c3 8175096: Analyse subword in the loop to set maximum vector size
vdeshpande
parents: 46486
diff changeset
   197
                                                                            \
48309
1a0499fd252e 8192846: Support cmov vectorization for float
kvn
parents: 48145
diff changeset
   198
  product(bool, UseVectorCmov, false,                                       \
1a0499fd252e 8192846: Support cmov vectorization for float
kvn
parents: 48145
diff changeset
   199
          "Use Vectorized Cmov")                                            \
1a0499fd252e 8192846: Support cmov vectorization for float
kvn
parents: 48145
diff changeset
   200
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   201
  develop(intx, UnrollLimitForProfileCheck, 1,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   202
          "Don't use profile_trip_cnt() to restrict unrolling until "       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   203
          "unrolling would push the number of unrolled iterations above "   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   204
          "UnrollLimitForProfileCheck. A higher value allows more "         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   205
          "unrolling. Zero acts as a very large value." )                   \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   206
          range(0, max_intx)                                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   207
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   208
  product(intx, MultiArrayExpandLimit, 6,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   209
          "Maximum number of individual allocations in an inline-expanded " \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   210
          "multianewarray instruction")                                     \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   211
          range(0, max_jint)                                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   212
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   213
  notproduct(bool, TraceProfileTripCount, false,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   214
          "Trace profile loop trip count information")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   215
                                                                            \
35084
5b34a4ae0f58 6869327: Add new C2 flag to keep safepoints in counted loops.
aeriksso
parents: 34503
diff changeset
   216
  product(bool, UseCountedLoopSafepoints, false,                            \
5b34a4ae0f58 6869327: Add new C2 flag to keep safepoints in counted loops.
aeriksso
parents: 34503
diff changeset
   217
          "Force counted loops to keep a safepoint")                        \
5b34a4ae0f58 6869327: Add new C2 flag to keep safepoints in counted loops.
aeriksso
parents: 34503
diff changeset
   218
                                                                            \
4643
61c659c91c57 6894779: Loop Predication for Loop Optimizer in C2
cfang
parents: 4451
diff changeset
   219
  product(bool, UseLoopPredicate, true,                                     \
61c659c91c57 6894779: Loop Predication for Loop Optimizer in C2
cfang
parents: 4451
diff changeset
   220
          "Generate a predicate to select fast/slow loop versions")         \
61c659c91c57 6894779: Loop Predication for Loop Optimizer in C2
cfang
parents: 4451
diff changeset
   221
                                                                            \
61c659c91c57 6894779: Loop Predication for Loop Optimizer in C2
cfang
parents: 4451
diff changeset
   222
  develop(bool, TraceLoopPredicate, false,                                  \
61c659c91c57 6894779: Loop Predication for Loop Optimizer in C2
cfang
parents: 4451
diff changeset
   223
          "Trace generation of loop predicates")                            \
61c659c91c57 6894779: Loop Predication for Loop Optimizer in C2
cfang
parents: 4451
diff changeset
   224
                                                                            \
8732
16fc1c68714b 7008866: Missing loop predicate for loop with multiple entries
kvn
parents: 8107
diff changeset
   225
  develop(bool, TraceLoopOpts, false,                                       \
16fc1c68714b 7008866: Missing loop predicate for loop with multiple entries
kvn
parents: 8107
diff changeset
   226
          "Trace executed loop optimizations")                              \
16fc1c68714b 7008866: Missing loop predicate for loop with multiple entries
kvn
parents: 8107
diff changeset
   227
                                                                            \
9446
748a37b25d10 5091921: Sign flip issues in loop optimizer
kvn
parents: 8921
diff changeset
   228
  develop(bool, TraceLoopLimitCheck, false,                                 \
748a37b25d10 5091921: Sign flip issues in loop optimizer
kvn
parents: 8921
diff changeset
   229
          "Trace generation of loop limits checks")                         \
748a37b25d10 5091921: Sign flip issues in loop optimizer
kvn
parents: 8921
diff changeset
   230
                                                                            \
748a37b25d10 5091921: Sign flip issues in loop optimizer
kvn
parents: 8921
diff changeset
   231
  develop(bool, TraceRangeLimitCheck, false,                                \
748a37b25d10 5091921: Sign flip issues in loop optimizer
kvn
parents: 8921
diff changeset
   232
          "Trace additional overflow checks in RCE")                        \
748a37b25d10 5091921: Sign flip issues in loop optimizer
kvn
parents: 8921
diff changeset
   233
                                                                            \
22853
308672304981 8028767: PPC64: (part 121): smaller shared changes needed to build C2
goetz
parents: 22844
diff changeset
   234
  /* OptimizeFill not yet supported on PowerPC. */                          \
308672304981 8028767: PPC64: (part 121): smaller shared changes needed to build C2
goetz
parents: 22844
diff changeset
   235
  product(bool, OptimizeFill, true PPC64_ONLY(&& false),                    \
6433
b0e4fafdc38b 4809552: Optimize Arrays.fill(...)
never
parents: 6272
diff changeset
   236
          "convert fill/copy loops into intrinsic")                         \
b0e4fafdc38b 4809552: Optimize Arrays.fill(...)
never
parents: 6272
diff changeset
   237
                                                                            \
b0e4fafdc38b 4809552: Optimize Arrays.fill(...)
never
parents: 6272
diff changeset
   238
  develop(bool, TraceOptimizeFill, false,                                   \
b0e4fafdc38b 4809552: Optimize Arrays.fill(...)
never
parents: 6272
diff changeset
   239
          "print detailed information about fill conversion")               \
b0e4fafdc38b 4809552: Optimize Arrays.fill(...)
never
parents: 6272
diff changeset
   240
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   241
  develop(bool, OptoCoalesce, true,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   242
          "Use Conservative Copy Coalescing in the Register Allocator")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   243
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   244
  develop(bool, UseUniqueSubclasses, true,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   245
          "Narrow an abstract reference to the unique concrete subclass")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   246
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   247
  develop(bool, UseExactTypes, true,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   248
          "Use exact types to eliminate array store checks and v-calls")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   249
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   250
  product(intx, TrackedInitializationLimit, 50,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   251
          "When initializing fields, track up to this many words")          \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   252
          range(0, 65535)                                                   \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   253
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   254
  product(bool, ReduceFieldZeroing, true,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   255
          "When initializing fields, try to avoid needless zeroing")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   256
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   257
  product(bool, ReduceInitialCardMarks, true,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   258
          "When initializing fields, try to avoid needless card marks")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   259
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   260
  product(bool, ReduceBulkZeroing, true,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   261
          "When bulk-initializing, try to avoid needless zeroing")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   262
                                                                            \
6272
94a20ad0e9de 6978249: spill between cpu and fpu registers when those moves are fast
never
parents: 6180
diff changeset
   263
  product(bool, UseFPUForSpilling, false,                                   \
94a20ad0e9de 6978249: spill between cpu and fpu registers when those moves are fast
never
parents: 6180
diff changeset
   264
          "Spill integer registers to FPU instead of stack when possible")  \
94a20ad0e9de 6978249: spill between cpu and fpu registers when those moves are fast
never
parents: 6180
diff changeset
   265
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   266
  develop_pd(intx, RegisterCostAreaRatio,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   267
          "Spill selection in reg allocator: scale area by (X/64K) before " \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   268
          "adding cost")                                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   269
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   270
  develop_pd(bool, UseCISCSpill,                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   271
          "Use ADLC supplied cisc instructions during allocation")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   272
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   273
  notproduct(bool, VerifyGraphEdges , false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   274
          "Verify Bi-directional Edges")                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   275
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   276
  notproduct(bool, VerifyDUIterators, true,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   277
          "Verify the safety of all iterations of Bi-directional Edges")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   278
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   279
  notproduct(bool, VerifyHashTableKeys, true,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   280
          "Verify the immutability of keys in the VN hash tables")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   281
                                                                            \
2014
5510e7394f2d 6782232: assert("CreateEx must be first instruction in block" )
kvn
parents: 1553
diff changeset
   282
  notproduct(bool, VerifyRegisterAllocator , false,                         \
5510e7394f2d 6782232: assert("CreateEx must be first instruction in block" )
kvn
parents: 1553
diff changeset
   283
          "Verify Register Allocator")                                      \
5510e7394f2d 6782232: assert("CreateEx must be first instruction in block" )
kvn
parents: 1553
diff changeset
   284
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   285
  develop_pd(intx, FLOATPRESSURE,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   286
          "Number of float LRG's that constitute high register pressure")   \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   287
          range(0, max_jint)                                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   288
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   289
  develop_pd(intx, INTPRESSURE,                                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   290
          "Number of integer LRG's that constitute high register pressure") \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   291
          range(0, max_jint)                                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   292
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   293
  notproduct(bool, TraceOptoPipelining, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   294
          "Trace pipelining information")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   295
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   296
  notproduct(bool, TraceOptoOutput, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   297
          "Trace pipelining information")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   298
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   299
  product_pd(bool, OptoScheduling,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   300
          "Instruction Scheduling after register allocation")               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   301
                                                                            \
33065
55892792936f 8134802: LCM register pressure scheduling
mcberg
parents: 33063
diff changeset
   302
  product_pd(bool, OptoRegScheduling,                                       \
55892792936f 8134802: LCM register pressure scheduling
mcberg
parents: 33063
diff changeset
   303
          "Instruction Scheduling before register allocation for pressure") \
55892792936f 8134802: LCM register pressure scheduling
mcberg
parents: 33063
diff changeset
   304
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   305
  product(bool, PartialPeelLoop, true,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   306
          "Partial peel (rotate) loops")                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   307
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   308
  product(intx, PartialPeelNewPhiDelta, 0,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   309
          "Additional phis that can be created by partial peeling")         \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   310
          range(0, max_jint)                                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   311
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   312
  notproduct(bool, TracePartialPeeling, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   313
          "Trace partial peeling (loop rotation) information")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   314
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   315
  product(bool, PartialPeelAtUnsignedTests, true,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   316
          "Partial peel at unsigned tests if no signed test exists")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   317
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   318
  product(bool, ReassociateInvariants, true,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   319
          "Enable reassociation of expressions with loop invariants.")      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   320
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   321
  product(bool, LoopUnswitching, true,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   322
          "Enable loop unswitching (a form of invariant test hoisting)")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   323
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   324
  notproduct(bool, TraceLoopUnswitching, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   325
          "Trace loop unswitching")                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   326
                                                                            \
30593
69f942690128 8076284: Improve vectorization of parallel streams
kvn
parents: 30302
diff changeset
   327
  product(bool, AllowVectorizeOnDemand, true,                               \
69f942690128 8076284: Improve vectorization of parallel streams
kvn
parents: 30302
diff changeset
   328
          "Globally supress vectorization set in VectorizeMethod")          \
69f942690128 8076284: Improve vectorization of parallel streams
kvn
parents: 30302
diff changeset
   329
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   330
  product(bool, UseSuperWord, true,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   331
          "Transform scalar operations into superword operations")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   332
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   333
  develop(bool, SuperWordRTDepCheck, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   334
          "Enable runtime dependency checks.")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   335
                                                                            \
30211
442fbbb31f75 8074981: Integer/FP scalar reduction optimization
kvn
parents: 29185
diff changeset
   336
  product(bool, SuperWordReductions, true,                                  \
442fbbb31f75 8074981: Integer/FP scalar reduction optimization
kvn
parents: 29185
diff changeset
   337
          "Enable reductions support in superword.")                        \
442fbbb31f75 8074981: Integer/FP scalar reduction optimization
kvn
parents: 29185
diff changeset
   338
                                                                            \
33469
30f4811eded0 8139340: SuperWord enhancement to support vector conditional move (CMovVD) on Intel AVX cpu
iveresov
parents: 33455
diff changeset
   339
  product(bool, UseCMoveUnconditionally, false,                             \
30f4811eded0 8139340: SuperWord enhancement to support vector conditional move (CMovVD) on Intel AVX cpu
iveresov
parents: 33455
diff changeset
   340
          "Use CMove (scalar and vector) ignoring profitability test.")     \
30f4811eded0 8139340: SuperWord enhancement to support vector conditional move (CMovVD) on Intel AVX cpu
iveresov
parents: 33455
diff changeset
   341
                                                                            \
33166
81352250770f 8136725: Provide utility for creation a counted loop reserve copy (clone)
iveresov
parents: 33163
diff changeset
   342
  product(bool, DoReserveCopyInSuperWord, true,                             \
81352250770f 8136725: Provide utility for creation a counted loop reserve copy (clone)
iveresov
parents: 33163
diff changeset
   343
          "Create reserve copy of graph in SuperWord.")                     \
81352250770f 8136725: Provide utility for creation a counted loop reserve copy (clone)
iveresov
parents: 33163
diff changeset
   344
                                                                            \
13108
6d27f658925c 7177923: SIGBUS on sparc in compiled code for java.util.Calendar.clear()
kvn
parents: 13104
diff changeset
   345
  notproduct(bool, TraceSuperWord, false,                                   \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   346
          "Trace superword transforms")                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   347
                                                                            \
13108
6d27f658925c 7177923: SIGBUS on sparc in compiled code for java.util.Calendar.clear()
kvn
parents: 13104
diff changeset
   348
  notproduct(bool, TraceNewVectors, false,                                  \
6d27f658925c 7177923: SIGBUS on sparc in compiled code for java.util.Calendar.clear()
kvn
parents: 13104
diff changeset
   349
          "Trace creation of Vector nodes")                                 \
6d27f658925c 7177923: SIGBUS on sparc in compiled code for java.util.Calendar.clear()
kvn
parents: 13104
diff changeset
   350
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   351
  product_pd(bool, OptoBundling,                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   352
          "Generate nops to fill i-cache lines")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   353
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   354
  product_pd(intx, ConditionalMoveLimit,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   355
          "Limit of ops to make speculative when using CMOVE")              \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   356
          range(0, max_jint)                                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   357
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   358
  /* Set BranchOnRegister == false. See 4965987. */                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   359
  product(bool, BranchOnRegister, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   360
          "Use Sparc V9 branch-on-register opcodes")                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   361
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   362
  develop(bool, SparcV9RegsHiBitsZero, true,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   363
          "Assume Sparc V9 I&L registers on V8+ systems are zero-extended") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   364
                                                                            \
7433
b418028612ad 6961690: load oops from constant table on SPARC
twisti
parents: 7397
diff changeset
   365
  product(bool, UseRDPCForConstantTableBase, false,                         \
b418028612ad 6961690: load oops from constant table on SPARC
twisti
parents: 7397
diff changeset
   366
          "Use Sparc RDPC instruction for the constant table base.")        \
b418028612ad 6961690: load oops from constant table on SPARC
twisti
parents: 7397
diff changeset
   367
                                                                            \
33454
d97c7a894c66 8132168: Support IdealGraphVisualizer in optimized build
vlivanov
parents: 33447
diff changeset
   368
  notproduct(bool, PrintIdealGraph, false,                                  \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   369
          "Print ideal graph to XML file / network interface. "             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   370
          "By default attempts to connect to the visualizer on a socket.")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   371
                                                                            \
33454
d97c7a894c66 8132168: Support IdealGraphVisualizer in optimized build
vlivanov
parents: 33447
diff changeset
   372
  notproduct(intx, PrintIdealGraphLevel, 0,                                 \
27147
ed83dc5777e6 8060215: per-method PrintIdealGraphLevel
zmajo
parents: 26913
diff changeset
   373
          "Level of detail of the ideal graph printout. "                   \
33447
fa16119dcde7 8065151: Support IdealGraphVisualizer in optimized build
vlivanov
parents: 33166
diff changeset
   374
          "System-wide value, 0=nothing is printed, 4=all details printed. "\
27147
ed83dc5777e6 8060215: per-method PrintIdealGraphLevel
zmajo
parents: 26913
diff changeset
   375
          "Level of detail of printouts can be set on a per-method level "  \
ed83dc5777e6 8060215: per-method PrintIdealGraphLevel
zmajo
parents: 26913
diff changeset
   376
          "as well by using CompileCommand=option.")                        \
33447
fa16119dcde7 8065151: Support IdealGraphVisualizer in optimized build
vlivanov
parents: 33166
diff changeset
   377
          range(0, 4)                                                       \
27147
ed83dc5777e6 8060215: per-method PrintIdealGraphLevel
zmajo
parents: 26913
diff changeset
   378
                                                                            \
33454
d97c7a894c66 8132168: Support IdealGraphVisualizer in optimized build
vlivanov
parents: 33447
diff changeset
   379
  notproduct(intx, PrintIdealGraphPort, 4444,                               \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   380
          "Ideal graph printer to network port")                            \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   381
          range(0, SHRT_MAX)                                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   382
                                                                            \
1553
fc10c169d15d 6772413: code cleanup
kvn
parents: 1500
diff changeset
   383
  notproduct(ccstr, PrintIdealGraphAddress, "127.0.0.1",                    \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   384
          "IP address to connect to visualizer")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   385
                                                                            \
1553
fc10c169d15d 6772413: code cleanup
kvn
parents: 1500
diff changeset
   386
  notproduct(ccstr, PrintIdealGraphFile, NULL,                              \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   387
          "File to dump ideal graph to.  If set overrides the "             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   388
          "use of the network")                                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   389
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   390
  product(bool, UseBimorphicInlining, true,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   391
          "Profiling based inlining for two receivers")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   392
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   393
  product(bool, UseOnlyInlinedBimorphic, true,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   394
          "Don't use BimorphicInlining if can't inline a second method")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   395
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   396
  product(bool, InsertMemBarAfterArraycopy, true,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   397
          "Insert memory barrier after arraycopy call")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   398
                                                                            \
6180
53c1bf468c81 6973963: SEGV in ciBlock::start_bci() with EA
kvn
parents: 5547
diff changeset
   399
  develop(bool, SubsumeLoads, true,                                         \
31371
311143309e73 8122937: [JEP 245] Validate JVM Command-Line Flag Arguments.
gziemski
parents: 31129
diff changeset
   400
          "Attempt to compile while subsuming loads into machine "          \
311143309e73 8122937: [JEP 245] Validate JVM Command-Line Flag Arguments.
gziemski
parents: 31129
diff changeset
   401
          "instructions.")                                                  \
6180
53c1bf468c81 6973963: SEGV in ciBlock::start_bci() with EA
kvn
parents: 5547
diff changeset
   402
                                                                            \
53c1bf468c81 6973963: SEGV in ciBlock::start_bci() with EA
kvn
parents: 5547
diff changeset
   403
  develop(bool, StressRecompilation, false,                                 \
31371
311143309e73 8122937: [JEP 245] Validate JVM Command-Line Flag Arguments.
gziemski
parents: 31129
diff changeset
   404
          "Recompile each compiled method without subsuming loads "         \
311143309e73 8122937: [JEP 245] Validate JVM Command-Line Flag Arguments.
gziemski
parents: 31129
diff changeset
   405
          "or escape analysis.")                                            \
6180
53c1bf468c81 6973963: SEGV in ciBlock::start_bci() with EA
kvn
parents: 5547
diff changeset
   406
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   407
  develop(intx, ImplicitNullCheckThreshold, 3,                              \
31371
311143309e73 8122937: [JEP 245] Validate JVM Command-Line Flag Arguments.
gziemski
parents: 31129
diff changeset
   408
          "Don't do implicit null checks if NPE's in a method exceeds "     \
311143309e73 8122937: [JEP 245] Validate JVM Command-Line Flag Arguments.
gziemski
parents: 31129
diff changeset
   409
          "limit")                                                          \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   410
          range(0, max_jint)                                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   411
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   412
  product(intx, LoopOptsCount, 43,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   413
          "Set level of loop optimization for tier 1 compiles")             \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   414
          range(5, 43)                                                      \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   415
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   416
  /* controls for heat-based inlining */                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   417
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   418
  develop(intx, NodeCountInliningCutoff, 18000,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   419
          "If parser node generation exceeds limit stop inlining")          \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   420
          range(0, max_jint)                                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   421
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   422
  develop(intx, NodeCountInliningStep, 1000,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   423
          "Target size of warm calls inlined between optimization passes")  \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   424
          range(0, max_jint)                                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   425
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   426
  develop(bool, InlineWarmCalls, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   427
          "Use a heat-based priority queue to govern inlining")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   428
                                                                            \
46486
314aa24e62d6 8179618: Fixes for range of OptoLoopAlignment and Inlining flags
goetz
parents: 42063
diff changeset
   429
  /* Max values must not exceed WarmCallInfo::MAX_VALUE(). */               \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   430
  develop(intx, HotCallCountThreshold, 999999,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   431
          "large numbers of calls (per method invocation) force hotness")   \
46486
314aa24e62d6 8179618: Fixes for range of OptoLoopAlignment and Inlining flags
goetz
parents: 42063
diff changeset
   432
          range(0, ((intx)MIN2((int64_t)max_intx,(int64_t)(+1.0e10))))      \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   433
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   434
  develop(intx, HotCallProfitThreshold, 999999,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   435
          "highly profitable inlining opportunities force hotness")         \
46486
314aa24e62d6 8179618: Fixes for range of OptoLoopAlignment and Inlining flags
goetz
parents: 42063
diff changeset
   436
          range(0, ((intx)MIN2((int64_t)max_intx,(int64_t)(+1.0e10))))      \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   437
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   438
  develop(intx, HotCallTrivialWork, -1,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   439
          "trivial execution time (no larger than this) forces hotness")    \
46486
314aa24e62d6 8179618: Fixes for range of OptoLoopAlignment and Inlining flags
goetz
parents: 42063
diff changeset
   440
          range(-1, ((intx)MIN2((int64_t)max_intx,(int64_t)(+1.0e10))))     \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   441
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   442
  develop(intx, HotCallTrivialSize, -1,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   443
          "trivial methods (no larger than this) force calls to be hot")    \
46486
314aa24e62d6 8179618: Fixes for range of OptoLoopAlignment and Inlining flags
goetz
parents: 42063
diff changeset
   444
          range(-1, ((intx)MIN2((int64_t)max_intx,(int64_t)(+1.0e10))))     \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   445
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   446
  develop(intx, WarmCallMinCount, -1,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   447
          "number of calls (per method invocation) to enable inlining")     \
46486
314aa24e62d6 8179618: Fixes for range of OptoLoopAlignment and Inlining flags
goetz
parents: 42063
diff changeset
   448
          range(-1, ((intx)MIN2((int64_t)max_intx,(int64_t)(+1.0e10))))     \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   449
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   450
  develop(intx, WarmCallMinProfit, -1,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   451
          "number of calls (per method invocation) to enable inlining")     \
46486
314aa24e62d6 8179618: Fixes for range of OptoLoopAlignment and Inlining flags
goetz
parents: 42063
diff changeset
   452
          range(-1, ((intx)MIN2((int64_t)max_intx,(int64_t)(+1.0e10))))     \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   453
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   454
  develop(intx, WarmCallMaxWork, 999999,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   455
          "execution time of the largest inlinable method")                 \
46486
314aa24e62d6 8179618: Fixes for range of OptoLoopAlignment and Inlining flags
goetz
parents: 42063
diff changeset
   456
          range(0, ((intx)MIN2((int64_t)max_intx,(int64_t)(+1.0e10))))      \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   457
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   458
  develop(intx, WarmCallMaxSize, 999999,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   459
          "size of the largest inlinable method")                           \
46486
314aa24e62d6 8179618: Fixes for range of OptoLoopAlignment and Inlining flags
goetz
parents: 42063
diff changeset
   460
          range(0, ((intx)MIN2((int64_t)max_intx,(int64_t)(+1.0e10))))      \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   461
                                                                            \
18099
45973b036c3e 8014959: assert(Compile::current()->live_nodes() < (uint)MaxNodeLimit) failed: Live Node limit exceeded limit
drchase
parents: 17383
diff changeset
   462
  product(intx, MaxNodeLimit, 80000,                                        \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   463
          "Maximum number of nodes")                                        \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   464
          range(1000, max_jint / 3)                                         \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   465
                                                                            \
18099
45973b036c3e 8014959: assert(Compile::current()->live_nodes() < (uint)MaxNodeLimit) failed: Live Node limit exceeded limit
drchase
parents: 17383
diff changeset
   466
  product(intx, NodeLimitFudgeFactor, 2000,                                 \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   467
          "Fudge Factor for certain optimizations")                         \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   468
          constraint(NodeLimitFudgeFactorConstraintFunc, AfterErgo)         \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   469
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   470
  product(bool, UseJumpTables, true,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   471
          "Use JumpTables instead of a binary search tree for switches")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   472
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   473
  product(bool, UseDivMod, true,                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   474
          "Use combined DivMod instruction if available")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   475
                                                                            \
19772
6e60ae28d9f6 8010941: MinJumpTableSize is set to 18, investigate if that's still optimal
adlertz
parents: 19770
diff changeset
   476
  product_pd(intx, MinJumpTableSize,                                        \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   477
          "Minimum number of targets in a generated jump table")            \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   478
          range(0, max_intx)                                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   479
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   480
  product(intx, MaxJumpTableSize, 65000,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   481
          "Maximum number of targets in a generated jump table")            \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   482
          range(0, max_intx)                                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   483
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   484
  product(intx, MaxJumpTableSparseness, 5,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   485
          "Maximum sparseness for jumptables")                              \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   486
          range(0, max_intx / 4)                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   487
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   488
  product(bool, EliminateLocks, true,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   489
          "Coarsen locks when possible")                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   490
                                                                            \
11445
3c768dca60f5 7125896: Eliminate nested locks
kvn
parents: 11189
diff changeset
   491
  product(bool, EliminateNestedLocks, true,                                 \
3c768dca60f5 7125896: Eliminate nested locks
kvn
parents: 11189
diff changeset
   492
          "Eliminate nested locks of the same object when possible")        \
3c768dca60f5 7125896: Eliminate nested locks
kvn
parents: 11189
diff changeset
   493
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   494
  notproduct(bool, PrintLockStatistics, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   495
          "Print precise statistics on the dynamic lock usage")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   496
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   497
  diagnostic(bool, PrintPreciseBiasedLockingStatistics, false,              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   498
          "Print per-lock-site statistics of biased locking in JVM")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   499
                                                                            \
23491
f690330b10b9 8031320: Use Intel RTM instructions for locks
kvn
parents: 23208
diff changeset
   500
  diagnostic(bool, PrintPreciseRTMLockingStatistics, false,                 \
f690330b10b9 8031320: Use Intel RTM instructions for locks
kvn
parents: 23208
diff changeset
   501
          "Print per-lock-site statistics of rtm locking in JVM")           \
f690330b10b9 8031320: Use Intel RTM instructions for locks
kvn
parents: 23208
diff changeset
   502
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   503
  notproduct(bool, PrintEliminateLocks, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   504
          "Print out when locks are eliminated")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   505
                                                                            \
24479
20eb4c752fb5 8042786: Proper fix for 8032566
kvn
parents: 24478
diff changeset
   506
  product(bool, EliminateAutoBox, true,                                     \
17383
3665c0901a0d 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 15871
diff changeset
   507
          "Control optimizations for autobox elimination")                  \
190
e9a0a9dcd4f6 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 1
diff changeset
   508
                                                                            \
e9a0a9dcd4f6 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 1
diff changeset
   509
  product(intx, AutoBoxCacheMax, 128,                                       \
e9a0a9dcd4f6 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 1
diff changeset
   510
          "Sets max value cached by the java.lang.Integer autobox cache")   \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   511
          range(0, max_jint)                                                \
190
e9a0a9dcd4f6 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 1
diff changeset
   512
                                                                            \
58149
00aebe177a71 8230742: Make AggressiveUnboxing a diagnostic flag
thartmann
parents: 57722
diff changeset
   513
  diagnostic(bool, AggressiveUnboxing, true,                                \
17383
3665c0901a0d 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 15871
diff changeset
   514
          "Control optimizations for aggressive boxing elimination")        \
3665c0901a0d 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 15871
diff changeset
   515
                                                                            \
22844
90f76a40ed8a 8003854: PPC64 (part 115): Introduce PostallocExpand that expands nodes after register allocation
goetz
parents: 22838
diff changeset
   516
  develop(bool, TracePostallocExpand, false, "Trace expanding nodes after"  \
90f76a40ed8a 8003854: PPC64 (part 115): Introduce PostallocExpand that expands nodes after register allocation
goetz
parents: 22838
diff changeset
   517
          " register allocation.")                                          \
90f76a40ed8a 8003854: PPC64 (part 115): Introduce PostallocExpand that expands nodes after register allocation
goetz
parents: 22838
diff changeset
   518
                                                                            \
3685
e14965d942e3 6873799: enable escape analysis by default
kvn
parents: 2340
diff changeset
   519
  product(bool, DoEscapeAnalysis, true,                                     \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   520
          "Perform escape analysis")                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   521
                                                                            \
27424
77a7f4a2463b 8041984: CompilerThread seems to occupy all CPU in a very rare situation
kvn
parents: 27147
diff changeset
   522
  product(double, EscapeAnalysisTimeout, 20. DEBUG_ONLY(+40.),              \
77a7f4a2463b 8041984: CompilerThread seems to occupy all CPU in a very rare situation
kvn
parents: 27147
diff changeset
   523
          "Abort EA when it reaches time limit (in sec)")                   \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   524
          range(0, DBL_MAX)                                                 \
27424
77a7f4a2463b 8041984: CompilerThread seems to occupy all CPU in a very rare situation
kvn
parents: 27147
diff changeset
   525
                                                                            \
14133
c2e317724c4c 7163534: VM could crashes assert(false) failed: infinite EA connection graph build
kvn
parents: 13885
diff changeset
   526
  develop(bool, ExitEscapeAnalysisOnTimeout, true,                          \
c2e317724c4c 7163534: VM could crashes assert(false) failed: infinite EA connection graph build
kvn
parents: 13885
diff changeset
   527
          "Exit or throw assert in EA when it reaches time limit")          \
c2e317724c4c 7163534: VM could crashes assert(false) failed: infinite EA connection graph build
kvn
parents: 13885
diff changeset
   528
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   529
  notproduct(bool, PrintEscapeAnalysis, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   530
          "Print the results of escape analysis")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   531
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   532
  product(bool, EliminateAllocations, true,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   533
          "Use escape analysis to eliminate allocations")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   534
                                                                            \
238
803c80713999 6674588: (Escape Analysis) Improve Escape Analysis code
kvn
parents: 190
diff changeset
   535
  notproduct(bool, PrintEliminateAllocations, false,                        \
803c80713999 6674588: (Escape Analysis) Improve Escape Analysis code
kvn
parents: 190
diff changeset
   536
          "Print out when allocations are eliminated")                      \
803c80713999 6674588: (Escape Analysis) Improve Escape Analysis code
kvn
parents: 190
diff changeset
   537
                                                                            \
803c80713999 6674588: (Escape Analysis) Improve Escape Analysis code
kvn
parents: 190
diff changeset
   538
  product(intx, EliminateAllocationArraySizeLimit, 64,                      \
803c80713999 6674588: (Escape Analysis) Improve Escape Analysis code
kvn
parents: 190
diff changeset
   539
          "Array size (number of elements) limit for scalar replacement")   \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   540
          range(0, max_jint)                                                \
238
803c80713999 6674588: (Escape Analysis) Improve Escape Analysis code
kvn
parents: 190
diff changeset
   541
                                                                            \
11189
c1ad8528ae68 7105605: Use EA info to optimize pointers compare
kvn
parents: 10963
diff changeset
   542
  product(bool, OptimizePtrCompare, true,                                   \
c1ad8528ae68 7105605: Use EA info to optimize pointers compare
kvn
parents: 10963
diff changeset
   543
          "Use escape analysis to optimize pointers compare")               \
c1ad8528ae68 7105605: Use EA info to optimize pointers compare
kvn
parents: 10963
diff changeset
   544
                                                                            \
c1ad8528ae68 7105605: Use EA info to optimize pointers compare
kvn
parents: 10963
diff changeset
   545
  notproduct(bool, PrintOptimizePtrCompare, false,                          \
c1ad8528ae68 7105605: Use EA info to optimize pointers compare
kvn
parents: 10963
diff changeset
   546
          "Print information about optimized pointers compare")             \
c1ad8528ae68 7105605: Use EA info to optimize pointers compare
kvn
parents: 10963
diff changeset
   547
                                                                            \
12158
f24f2560da32 7147744: CTW: assert(false) failed: infinite EA connection graph build
kvn
parents: 11445
diff changeset
   548
  notproduct(bool, VerifyConnectionGraph , true,                            \
f24f2560da32 7147744: CTW: assert(false) failed: infinite EA connection graph build
kvn
parents: 11445
diff changeset
   549
          "Verify Connection Graph construction in Escape Analysis")        \
f24f2560da32 7147744: CTW: assert(false) failed: infinite EA connection graph build
kvn
parents: 11445
diff changeset
   550
                                                                            \
2340
cb47f8209cd8 6810845: Performance regression in mpegaudio on x64
kvn
parents: 2105
diff changeset
   551
  product(bool, UseOptoBiasInlining, true,                                  \
1500
bea9a90f3e8f 6462850: generate biased locking code in C2 ideal graph
kvn
parents: 1498
diff changeset
   552
          "Generate biased locking code in C2 ideal graph")                 \
bea9a90f3e8f 6462850: generate biased locking code in C2 ideal graph
kvn
parents: 1498
diff changeset
   553
                                                                            \
10963
77222140e9ad 7103784: enable some flags by default
never
parents: 10565
diff changeset
   554
  product(bool, OptimizeStringConcat, true,                                 \
4450
6d700b859b3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 3685
diff changeset
   555
          "Optimize the construction of Strings by StringBuilder")          \
6d700b859b3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 3685
diff changeset
   556
                                                                            \
6d700b859b3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 3685
diff changeset
   557
  notproduct(bool, PrintOptimizeStringConcat, false,                        \
6d700b859b3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 3685
diff changeset
   558
          "Print information about transformations performed on Strings")   \
6d700b859b3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 3685
diff changeset
   559
                                                                            \
961
7fb3b13d4205 6726999: nsk/stress/jck12a/jck12a010 assert(n != null,"Bad immediate dominator info.")
kvn
parents: 953
diff changeset
   560
  product(intx, ValueSearchLimit, 1000,                                     \
7fb3b13d4205 6726999: nsk/stress/jck12a/jck12a010 assert(n != null,"Bad immediate dominator info.")
kvn
parents: 953
diff changeset
   561
          "Recursion limit in PhaseMacroExpand::value_from_mem_phi")        \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   562
          range(0, max_jint)                                                \
961
7fb3b13d4205 6726999: nsk/stress/jck12a/jck12a010 assert(n != null,"Bad immediate dominator info.")
kvn
parents: 953
diff changeset
   563
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   564
  product(intx, MaxLabelRootDepth, 1100,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   565
          "Maximum times call Label_Root to prevent stack overflow")        \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   566
          range(100, max_jint)                                              \
581
02338c8a1bcf 6701887: JDK7 server VM in endless loop in Node::dominates
kvn
parents: 238
diff changeset
   567
                                                                            \
02338c8a1bcf 6701887: JDK7 server VM in endless loop in Node::dominates
kvn
parents: 238
diff changeset
   568
  diagnostic(intx, DominatorSearchLimit, 1000,                              \
02338c8a1bcf 6701887: JDK7 server VM in endless loop in Node::dominates
kvn
parents: 238
diff changeset
   569
          "Iterations limit in Node::dominates")                            \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   570
          range(0, max_jint)                                                \
1498
346bf226078e 6743900: frequency based block layout
rasbold
parents: 965
diff changeset
   571
                                                                            \
346bf226078e 6743900: frequency based block layout
rasbold
parents: 965
diff changeset
   572
  product(bool, BlockLayoutByFrequency, true,                               \
346bf226078e 6743900: frequency based block layout
rasbold
parents: 965
diff changeset
   573
          "Use edge frequencies to drive block ordering")                   \
346bf226078e 6743900: frequency based block layout
rasbold
parents: 965
diff changeset
   574
                                                                            \
346bf226078e 6743900: frequency based block layout
rasbold
parents: 965
diff changeset
   575
  product(intx, BlockLayoutMinDiamondPercentage, 20,                        \
31371
311143309e73 8122937: [JEP 245] Validate JVM Command-Line Flag Arguments.
gziemski
parents: 31129
diff changeset
   576
          "Miniumum %% of a successor (predecessor) for which block "       \
311143309e73 8122937: [JEP 245] Validate JVM Command-Line Flag Arguments.
gziemski
parents: 31129
diff changeset
   577
          "layout a will allow a fork (join) in a single chain")            \
311143309e73 8122937: [JEP 245] Validate JVM Command-Line Flag Arguments.
gziemski
parents: 31129
diff changeset
   578
          range(0, 100)                                                     \
1498
346bf226078e 6743900: frequency based block layout
rasbold
parents: 965
diff changeset
   579
                                                                            \
2340
cb47f8209cd8 6810845: Performance regression in mpegaudio on x64
kvn
parents: 2105
diff changeset
   580
  product(bool, BlockLayoutRotateLoops, true,                               \
38046
f8383064eaa2 8154135: Loop alignment may be added inside the loop body
roland
parents: 37296
diff changeset
   581
          "Allow back branches to be fall throughs in the block layout")    \
13521
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   582
                                                                            \
38285
20b85a0ba796 8153655: Make intrinsics flags diagnostic and update intrinsics tests to enable diagnostic options
rraghavan
parents: 38046
diff changeset
   583
  diagnostic(bool, InlineReflectionGetCallerClass, true,                    \
31371
311143309e73 8122937: [JEP 245] Validate JVM Command-Line Flag Arguments.
gziemski
parents: 31129
diff changeset
   584
          "inline sun.reflect.Reflection.getCallerClass(), known to be "    \
311143309e73 8122937: [JEP 245] Validate JVM Command-Line Flag Arguments.
gziemski
parents: 31129
diff changeset
   585
          "part of base library DLL")                                       \
13521
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   586
                                                                            \
38285
20b85a0ba796 8153655: Make intrinsics flags diagnostic and update intrinsics tests to enable diagnostic options
rraghavan
parents: 38046
diff changeset
   587
  diagnostic(bool, InlineObjectCopy, true,                                  \
13521
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   588
          "inline Object.clone and Arrays.copyOf[Range] intrinsics")        \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   589
                                                                            \
38285
20b85a0ba796 8153655: Make intrinsics flags diagnostic and update intrinsics tests to enable diagnostic options
rraghavan
parents: 38046
diff changeset
   590
  diagnostic(bool, SpecialStringCompareTo, true,                            \
13521
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   591
          "special version of string compareTo")                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   592
                                                                            \
38285
20b85a0ba796 8153655: Make intrinsics flags diagnostic and update intrinsics tests to enable diagnostic options
rraghavan
parents: 38046
diff changeset
   593
  diagnostic(bool, SpecialStringIndexOf, true,                              \
13521
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   594
          "special version of string indexOf")                              \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   595
                                                                            \
38285
20b85a0ba796 8153655: Make intrinsics flags diagnostic and update intrinsics tests to enable diagnostic options
rraghavan
parents: 38046
diff changeset
   596
  diagnostic(bool, SpecialStringEquals, true,                               \
13521
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   597
          "special version of string equals")                               \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   598
                                                                            \
38285
20b85a0ba796 8153655: Make intrinsics flags diagnostic and update intrinsics tests to enable diagnostic options
rraghavan
parents: 38046
diff changeset
   599
  diagnostic(bool, SpecialArraysEquals, true,                               \
13521
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   600
          "special version of Arrays.equals(char[],char[])")                \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   601
                                                                            \
38285
20b85a0ba796 8153655: Make intrinsics flags diagnostic and update intrinsics tests to enable diagnostic options
rraghavan
parents: 38046
diff changeset
   602
  diagnostic(bool, SpecialEncodeISOArray, true,                             \
15242
695bb216be99 6896617: Optimize sun.nio.cs.ISO_8859_1$Encode.encodeArrayLoop() on x86
kvn
parents: 15113
diff changeset
   603
          "special version of ISO_8859_1$Encoder.encodeISOArray")           \
695bb216be99 6896617: Optimize sun.nio.cs.ISO_8859_1$Encode.encodeArrayLoop() on x86
kvn
parents: 15113
diff changeset
   604
                                                                            \
13521
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   605
  develop(bool, BailoutToInterpreterForThrows, false,                       \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   606
          "Compiled methods which throws/catches exceptions will be "       \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   607
          "deopt and intp.")                                                \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   608
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   609
  develop(bool, ConvertCmpD2CmpF, true,                                     \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   610
          "Convert cmpD to cmpF when one input is constant in float range") \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   611
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   612
  develop(bool, ConvertFloat2IntClipping, true,                             \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   613
          "Convert float2int clipping idiom to integer clipping")           \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   614
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   615
  develop(bool, Use24BitFPMode, true,                                       \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   616
          "Set 24-bit FPU mode on a per-compile basis ")                    \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   617
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   618
  develop(bool, Use24BitFP, true,                                           \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   619
          "use FP instructions that produce 24-bit precise results")        \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   620
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   621
  develop(bool, MonomorphicArrayCheck, true,                                \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   622
          "Uncommon-trap array store checks that require full type check")  \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   623
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   624
  notproduct(bool, TracePhaseCCP, false,                                    \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   625
          "Print progress during Conditional Constant Propagation")         \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   626
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   627
  develop(bool, PrintDominators, false,                                     \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   628
          "Print out dominator trees for GVN")                              \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   629
                                                                            \
33451
0712796e4039 8137167: JEP165: Compiler Control: Implementation task
neliasso
parents: 33447
diff changeset
   630
  diagnostic(bool, TraceSpilling, false,                                    \
13521
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   631
          "Trace spilling")                                                 \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   632
                                                                            \
13884
1953ee3706c4 7198499: TraceTypeProfile as diagnostic option
twisti
parents: 13521
diff changeset
   633
  diagnostic(bool, TraceTypeProfile, false,                                 \
13521
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   634
          "Trace type profile")                                             \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   635
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   636
  develop(bool, PoisonOSREntry, true,                                       \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   637
           "Detect abnormal calls to OSR code")                             \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   638
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   639
  develop(bool, SoftMatchFailure, trueInProduct,                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   640
          "If the DFA fails to match a node, print a message and bail out") \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   641
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   642
  develop(bool, InlineAccessors, true,                                      \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   643
          "inline accessor methods (get/set)")                              \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   644
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   645
  product(intx, TypeProfileMajorReceiverPercent, 90,                        \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   646
          "% of major receiver type to all profiled receivers")             \
31371
311143309e73 8122937: [JEP 245] Validate JVM Command-Line Flag Arguments.
gziemski
parents: 31129
diff changeset
   647
          range(0, 100)                                                     \
13521
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   648
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   649
  diagnostic(bool, PrintIntrinsics, false,                                  \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   650
          "prints attempted and successful inlining of intrinsics")         \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   651
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   652
  develop(bool, StressReflectiveCode, false,                                \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   653
          "Use inexact types at allocations, etc., to test reflection")     \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   654
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   655
  diagnostic(bool, DebugInlinedCalls, true,                                 \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   656
         "If false, restricts profiled locations to the root method only")  \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   657
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   658
  notproduct(bool, VerifyLoopOptimizations, false,                          \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   659
          "verify major loop optimizations")                                \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   660
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   661
  diagnostic(bool, ProfileDynamicTypes, true,                               \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   662
          "do extra type profiling and use it more aggressively")           \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   663
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   664
  develop(bool, TraceIterativeGVN, false,                                   \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   665
          "Print progress during Iterative Global Value Numbering")         \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   666
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   667
  develop(bool, VerifyIterativeGVN, false,                                  \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   668
          "Verify Def-Use modifications during sparse Iterative Global "    \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   669
          "Value Numbering")                                                \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   670
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   671
  notproduct(bool, TraceCISCSpill, false,                                   \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   672
          "Trace allocators use of cisc spillable instructions")            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   673
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   674
  product(bool, SplitIfBlocks, true,                                        \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   675
          "Clone compares and control flow through merge points to fold "   \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   676
          "some branches")                                                  \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   677
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   678
  develop(intx, FreqCountInvocations,  1,                                   \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   679
          "Scaling factor for branch frequencies (deprecated)")             \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   680
          range(1, max_intx)                                                \
13521
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   681
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   682
  product(intx, AliasLevel,     3,                                          \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   683
          "0 for no aliasing, 1 for oop/field/static/array split, "         \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   684
          "2 for class split, 3 for unique instances")                      \
31371
311143309e73 8122937: [JEP 245] Validate JVM Command-Line Flag Arguments.
gziemski
parents: 31129
diff changeset
   685
          range(0, 3)                                                       \
31995
aa4049b4184a 8130459: Add additional validation after heap creation
sangheki
parents: 31584
diff changeset
   686
          constraint(AliasLevelConstraintFunc,AfterErgo)                    \
13521
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   687
                                                                            \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   688
  develop(bool, VerifyAliases, false,                                       \
97a23be06f4e 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 13108
diff changeset
   689
          "perform extra checks on the results of alias analysis")          \
15113
823590505eb4 8005071: Incremental inlining for JSR 292
roland
parents: 14623
diff changeset
   690
                                                                            \
823590505eb4 8005071: Incremental inlining for JSR 292
roland
parents: 14623
diff changeset
   691
  product(bool, IncrementalInline, true,                                    \
823590505eb4 8005071: Incremental inlining for JSR 292
roland
parents: 14623
diff changeset
   692
          "do post parse inlining")                                         \
823590505eb4 8005071: Incremental inlining for JSR 292
roland
parents: 14623
diff changeset
   693
                                                                            \
823590505eb4 8005071: Incremental inlining for JSR 292
roland
parents: 14623
diff changeset
   694
  develop(bool, AlwaysIncrementalInline, false,                             \
823590505eb4 8005071: Incremental inlining for JSR 292
roland
parents: 14623
diff changeset
   695
          "do all inlining incrementally")                                  \
823590505eb4 8005071: Incremental inlining for JSR 292
roland
parents: 14623
diff changeset
   696
                                                                            \
27707
f7d26e5b8b5d 8058148: MaxNodeLimit and LiveNodeCountInliningCutoff
vlivanov
parents: 27424
diff changeset
   697
  product(intx, LiveNodeCountInliningCutoff, 40000,                         \
15113
823590505eb4 8005071: Incremental inlining for JSR 292
roland
parents: 14623
diff changeset
   698
          "max number of live nodes in a method")                           \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   699
          range(0, max_juint / 8)                                           \
15618
3eb521896836 7197327: 40% regression on 8 b41 comp 8 b40 on specjvm2008.mpegaudio on oob
roland
parents: 15242
diff changeset
   700
                                                                            \
3eb521896836 7197327: 40% regression on 8 b41 comp 8 b40 on specjvm2008.mpegaudio on oob
roland
parents: 15242
diff changeset
   701
  diagnostic(bool, OptimizeExpensiveOps, true,                              \
3eb521896836 7197327: 40% regression on 8 b41 comp 8 b40 on specjvm2008.mpegaudio on oob
roland
parents: 15242
diff changeset
   702
          "Find best control for expensive operations")                     \
20289
35d78de0c547 8024924: Intrinsify java.lang.Math.addExact
rbackman
parents: 19772
diff changeset
   703
                                                                            \
38285
20b85a0ba796 8153655: Make intrinsics flags diagnostic and update intrinsics tests to enable diagnostic options
rraghavan
parents: 38046
diff changeset
   704
  diagnostic(bool, UseMathExactIntrinsics, true,                            \
21089
e1986ff6fe2e 8024069: replace_in_map() should operate on parent maps
roland
parents: 20289
diff changeset
   705
          "Enables intrinsification of various java.lang.Math functions")   \
e1986ff6fe2e 8024069: replace_in_map() should operate on parent maps
roland
parents: 20289
diff changeset
   706
                                                                            \
52979
7384e00d5860 8213754: PPC64: Add Intrinsics for isDigit/isLowerCase/isUpperCase/isWhitespace
mhorie
parents: 50623
diff changeset
   707
  diagnostic(bool, UseCharacterCompareIntrinsics, false,                    \
7384e00d5860 8213754: PPC64: Add Intrinsics for isDigit/isLowerCase/isUpperCase/isWhitespace
mhorie
parents: 50623
diff changeset
   708
          "Enables intrinsification of java.lang.Character functions")      \
7384e00d5860 8213754: PPC64: Add Intrinsics for isDigit/isLowerCase/isUpperCase/isWhitespace
mhorie
parents: 50623
diff changeset
   709
                                                                            \
38285
20b85a0ba796 8153655: Make intrinsics flags diagnostic and update intrinsics tests to enable diagnostic options
rraghavan
parents: 38046
diff changeset
   710
  diagnostic(bool, UseMultiplyToLenIntrinsic, false,                        \
26434
09ad55e5f486 8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents: 24946
diff changeset
   711
          "Enables intrinsification of BigInteger.multiplyToLen()")         \
09ad55e5f486 8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents: 24946
diff changeset
   712
                                                                            \
38285
20b85a0ba796 8153655: Make intrinsics flags diagnostic and update intrinsics tests to enable diagnostic options
rraghavan
parents: 38046
diff changeset
   713
  diagnostic(bool, UseSquareToLenIntrinsic, false,                          \
31129
02ee7609f0e1 8081778: Use Intel x64 CPU instructions for RSA acceleration
kvn
parents: 30624
diff changeset
   714
          "Enables intrinsification of BigInteger.squareToLen()")           \
02ee7609f0e1 8081778: Use Intel x64 CPU instructions for RSA acceleration
kvn
parents: 30624
diff changeset
   715
                                                                            \
38285
20b85a0ba796 8153655: Make intrinsics flags diagnostic and update intrinsics tests to enable diagnostic options
rraghavan
parents: 38046
diff changeset
   716
  diagnostic(bool, UseMulAddIntrinsic, false,                               \
31129
02ee7609f0e1 8081778: Use Intel x64 CPU instructions for RSA acceleration
kvn
parents: 30624
diff changeset
   717
          "Enables intrinsification of BigInteger.mulAdd()")                \
02ee7609f0e1 8081778: Use Intel x64 CPU instructions for RSA acceleration
kvn
parents: 30624
diff changeset
   718
                                                                            \
38285
20b85a0ba796 8153655: Make intrinsics flags diagnostic and update intrinsics tests to enable diagnostic options
rraghavan
parents: 38046
diff changeset
   719
  diagnostic(bool, UseMontgomeryMultiplyIntrinsic, false,                   \
31583
eb5bea7b4835 8130150: Implement BigInteger.montgomeryMultiply intrinsic
aph
parents: 31129
diff changeset
   720
          "Enables intrinsification of BigInteger.montgomeryMultiply()")    \
eb5bea7b4835 8130150: Implement BigInteger.montgomeryMultiply intrinsic
aph
parents: 31129
diff changeset
   721
                                                                            \
38285
20b85a0ba796 8153655: Make intrinsics flags diagnostic and update intrinsics tests to enable diagnostic options
rraghavan
parents: 38046
diff changeset
   722
  diagnostic(bool, UseMontgomerySquareIntrinsic, false,                     \
31583
eb5bea7b4835 8130150: Implement BigInteger.montgomeryMultiply intrinsic
aph
parents: 31129
diff changeset
   723
          "Enables intrinsification of BigInteger.montgomerySquare()")      \
eb5bea7b4835 8130150: Implement BigInteger.montgomeryMultiply intrinsic
aph
parents: 31129
diff changeset
   724
                                                                            \
23208
4c37d91b8b09 8032633: Enable type speculation by default
roland
parents: 23192
diff changeset
   725
  product(bool, UseTypeSpeculation, true,                                   \
22856
03ad2cf18166 8029015: PPC64 (part 216): opto: trap based null and range checks
goetz
parents: 22853
diff changeset
   726
          "Speculatively propagate types from profiles")                    \
03ad2cf18166 8029015: PPC64 (part 216): opto: trap based null and range checks
goetz
parents: 22853
diff changeset
   727
                                                                            \
22928
b2bb101a9ae3 8031754: Type speculation should favor profile data from outermost inlined method
roland
parents: 22911
diff changeset
   728
  diagnostic(bool, UseInlineDepthForSpeculativeTypes, true,                 \
b2bb101a9ae3 8031754: Type speculation should favor profile data from outermost inlined method
roland
parents: 22911
diff changeset
   729
          "Carry inline depth of profile point with speculative type "      \
b2bb101a9ae3 8031754: Type speculation should favor profile data from outermost inlined method
roland
parents: 22911
diff changeset
   730
          "and give priority to profiling from lower inline depth")         \
b2bb101a9ae3 8031754: Type speculation should favor profile data from outermost inlined method
roland
parents: 22911
diff changeset
   731
                                                                            \
22856
03ad2cf18166 8029015: PPC64 (part 216): opto: trap based null and range checks
goetz
parents: 22853
diff changeset
   732
  product_pd(bool, TrapBasedRangeChecks,                                    \
03ad2cf18166 8029015: PPC64 (part 216): opto: trap based null and range checks
goetz
parents: 22853
diff changeset
   733
          "Generate code for range checks that uses a cmp and trap "        \
03ad2cf18166 8029015: PPC64 (part 216): opto: trap based null and range checks
goetz
parents: 22853
diff changeset
   734
          "instruction raising SIGTRAP. Used on PPC64.")                    \
28396
7fe4347e6792 6700100: optimize inline_native_clone() for small objects with exact klass
roland
parents: 27707
diff changeset
   735
                                                                            \
7fe4347e6792 6700100: optimize inline_native_clone() for small objects with exact klass
roland
parents: 27707
diff changeset
   736
  product(intx, ArrayCopyLoadStoreMaxElem, 8,                               \
7fe4347e6792 6700100: optimize inline_native_clone() for small objects with exact klass
roland
parents: 27707
diff changeset
   737
          "Maximum number of arraycopy elements inlined as a sequence of"   \
7fe4347e6792 6700100: optimize inline_native_clone() for small objects with exact klass
roland
parents: 27707
diff changeset
   738
          "loads/stores")                                                   \
33163
9e128b399e48 8078554: Compiler: implement ranges (optionally constraints) for those flags that have them missing
zmajo
parents: 33065
diff changeset
   739
          range(0, max_intx)                                                \
28396
7fe4347e6792 6700100: optimize inline_native_clone() for small objects with exact klass
roland
parents: 27707
diff changeset
   740
                                                                            \
7fe4347e6792 6700100: optimize inline_native_clone() for small objects with exact klass
roland
parents: 27707
diff changeset
   741
  develop(bool, StressArrayCopyMacroNode, false,                            \
34503
57d1a0e76091 8129847: Compiling methods generated by Nashorn triggers high memory usage in C2
zmajo
parents: 34162
diff changeset
   742
          "Perform ArrayCopy load/store replacement during IGVN only")      \
57d1a0e76091 8129847: Compiling methods generated by Nashorn triggers high memory usage in C2
zmajo
parents: 34162
diff changeset
   743
                                                                            \
57d1a0e76091 8129847: Compiling methods generated by Nashorn triggers high memory usage in C2
zmajo
parents: 34162
diff changeset
   744
  develop(bool, RenumberLiveNodes, true,                                    \
57d1a0e76091 8129847: Compiling methods generated by Nashorn triggers high memory usage in C2
zmajo
parents: 34162
diff changeset
   745
          "Renumber live nodes")                                            \
48145
f913f6dba2d3 8186027: C2: loop strip mining
roland
parents: 47623
diff changeset
   746
                                                                            \
f913f6dba2d3 8186027: C2: loop strip mining
roland
parents: 47623
diff changeset
   747
  product(uintx, LoopStripMiningIter, 0,                                    \
f913f6dba2d3 8186027: C2: loop strip mining
roland
parents: 47623
diff changeset
   748
          "Number of iterations in strip mined loop")                       \
f913f6dba2d3 8186027: C2: loop strip mining
roland
parents: 47623
diff changeset
   749
          range(0, max_juint)                                               \
f913f6dba2d3 8186027: C2: loop strip mining
roland
parents: 47623
diff changeset
   750
                                                                            \
f913f6dba2d3 8186027: C2: loop strip mining
roland
parents: 47623
diff changeset
   751
  product(uintx, LoopStripMiningIterShortLoop, 0,                           \
f913f6dba2d3 8186027: C2: loop strip mining
roland
parents: 47623
diff changeset
   752
          "Loop with fewer iterations are not strip mined")                 \
f913f6dba2d3 8186027: C2: loop strip mining
roland
parents: 47623
diff changeset
   753
          range(0, max_juint)                                               \
50623
5209d8a6303e 8203197: C2: consider all paths in loop body for loop predication
roland
parents: 50449
diff changeset
   754
                                                                            \
5209d8a6303e 8203197: C2: consider all paths in loop body for loop predication
roland
parents: 50449
diff changeset
   755
  product(bool, UseProfiledLoopPredicate, true,                             \
5209d8a6303e 8203197: C2: consider all paths in loop body for loop predication
roland
parents: 50449
diff changeset
   756
          "move predicates out of loops based on profiling data")           \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   757
53244
9807daeb47c4 8216167: Update include guards to reflect correct directories
coleenp
parents: 52979
diff changeset
   758
#endif // SHARE_OPTO_C2_GLOBALS_HPP