hotspot/src/share/vm/opto/c2_globals.hpp
author never
Wed, 05 Dec 2007 09:01:00 -0800
changeset 190 e9a0a9dcd4f6
parent 1 489c9b5090e2
child 238 803c80713999
permissions -rw-r--r--
6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long) Reviewed-by: kvn, rasbold
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
     1
/*
489c9b5090e2 Initial load
duke
parents:
diff changeset
     2
 * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     4
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
489c9b5090e2 Initial load
duke
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
489c9b5090e2 Initial load
duke
parents:
diff changeset
     7
 * published by the Free Software Foundation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     8
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
489c9b5090e2 Initial load
duke
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
489c9b5090e2 Initial load
duke
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
489c9b5090e2 Initial load
duke
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
489c9b5090e2 Initial load
duke
parents:
diff changeset
    13
 * accompanied this code).
489c9b5090e2 Initial load
duke
parents:
diff changeset
    14
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
489c9b5090e2 Initial load
duke
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    18
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
    19
 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    20
 * CA 95054 USA or visit www.sun.com if you need additional information or
489c9b5090e2 Initial load
duke
parents:
diff changeset
    21
 * have any questions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    22
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
    23
 */
489c9b5090e2 Initial load
duke
parents:
diff changeset
    24
489c9b5090e2 Initial load
duke
parents:
diff changeset
    25
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
    26
// Defines all globals flags used by the server compiler.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    27
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
    28
489c9b5090e2 Initial load
duke
parents:
diff changeset
    29
#define C2_FLAGS(develop, develop_pd, product, product_pd, diagnostic, notproduct) \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    30
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    31
  notproduct(intx, CompileZapFirst, 0,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    32
          "If +ZapDeadCompiledLocals, "                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    33
          "skip this many before compiling in zap calls")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    34
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    35
  notproduct(intx, CompileZapLast, -1,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    36
          "If +ZapDeadCompiledLocals, "                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    37
          "compile this many after skipping (incl. skip count, -1 = all)")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    38
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    39
  notproduct(intx, ZapDeadCompiledLocalsFirst, 0,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    40
          "If +ZapDeadCompiledLocals, "                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    41
          "skip this many before really doing it")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    42
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    43
  notproduct(intx, ZapDeadCompiledLocalsLast, -1,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    44
          "If +ZapDeadCompiledLocals, "                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    45
          "do this many after skipping (incl. skip count, -1 = all)")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    46
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    47
  develop(intx, OptoPrologueNops, 0,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    48
          "Insert this many extra nop instructions "                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    49
          "in the prologue of every nmethod")                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    50
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    51
  product_pd(intx, InteriorEntryAlignment,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    52
          "Code alignment for interior entry points "                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    53
          "in generated code (in bytes)")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    54
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    55
  product_pd(intx, OptoLoopAlignment,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    56
          "Align inner loops to zero relative to this modulus")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    57
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    58
  product(intx, MaxLoopPad, (OptoLoopAlignment-1),                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    59
          "Align a loop if padding size in bytes is less or equal to this value") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    60
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    61
  product(intx, NumberOfLoopInstrToAlign, 4,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    62
          "Number of first instructions in a loop to align")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    63
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    64
  notproduct(intx, IndexSetWatch, 0,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    65
          "Trace all operations on this IndexSet (-1 means all, 0 none)")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    66
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    67
  develop(intx, OptoNodeListSize, 4,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    68
          "Starting allocation size of Node_List data structures")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    69
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    70
  develop(intx, OptoBlockListSize, 8,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    71
          "Starting allocation size of Block_List data structures")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    72
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    73
  develop(intx, OptoPeepholeAt, -1,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    74
          "Apply peephole optimizations to this peephole rule")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    75
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    76
  notproduct(bool, PrintIdeal, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    77
          "Print ideal graph before code generation")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    78
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    79
  notproduct(bool, PrintOpto, false,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    80
          "Print compiler2 attempts")                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    81
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    82
  notproduct(bool, PrintOptoInlining, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    83
          "Print compiler2 inlining decisions")                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    84
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    85
  notproduct(bool, VerifyOpto, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    86
          "Apply more time consuming verification during compilation")      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    87
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    88
  notproduct(bool, VerifyOptoOopOffsets, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    89
          "Check types of base addresses in field references")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    90
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    91
  develop(bool, IdealizedNumerics, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    92
          "Check performance difference allowing FP "                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    93
          "associativity and commutativity...")                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    94
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    95
  develop(bool, OptoBreakpoint, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    96
          "insert breakpoint at method entry")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    97
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    98
  notproduct(bool, OptoBreakpointOSR, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    99
          "insert breakpoint at osr method entry")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   100
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   101
  notproduct(intx, BreakAtNode, 0,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   102
          "Break at construction of this Node (either _idx or _debug_idx)") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   103
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   104
  notproduct(bool, OptoBreakpointC2R, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   105
          "insert breakpoint at runtime stub entry")                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   106
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   107
  notproduct(bool, OptoNoExecute, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   108
          "Attempt to parse and compile but do not execute generated code") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   109
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   110
  notproduct(bool, PrintOptoStatistics, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   111
          "Print New compiler statistics")                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   112
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   113
  notproduct(bool, PrintOptoAssembly, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   114
          "Print New compiler assembly output")                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   115
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   116
  develop_pd(bool, OptoPeephole,                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   117
          "Apply peephole optimizations after register allocation")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   118
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   119
  develop(bool, OptoRemoveUseless, true,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   120
          "Remove useless nodes after parsing")                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   121
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   122
  notproduct(bool, PrintFrameConverterAssembly, false,                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   123
          "Print New compiler assembly output for frame converters")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   124
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   125
  notproduct(bool, PrintParseStatistics, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   126
          "Print nodes, transforms and new values made per bytecode parsed")\
489c9b5090e2 Initial load
duke
parents:
diff changeset
   127
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   128
  notproduct(bool, PrintOptoPeephole, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   129
          "Print New compiler peephole replacements")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   130
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   131
  develop(bool, PrintCFGBlockFreq, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   132
          "Print CFG block freqencies")                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   133
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   134
  develop(bool, TraceOptoParse, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   135
          "Trace bytecode parse and control-flow merge")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   136
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   137
  product_pd(intx,  LoopUnrollLimit,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   138
          "Unroll loop bodies with node count less than this")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   139
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   140
  product(intx,  LoopUnrollMin, 4,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   141
          "Minimum number of unroll loop bodies before checking progress"   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   142
          "of rounds of unroll,optimize,..")                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   143
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   144
  develop(intx, UnrollLimitForProfileCheck, 1,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   145
          "Don't use profile_trip_cnt() to restrict unrolling until "       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   146
          "unrolling would push the number of unrolled iterations above "   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   147
          "UnrollLimitForProfileCheck. A higher value allows more "         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   148
          "unrolling. Zero acts as a very large value." )                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   149
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   150
  product(intx, MultiArrayExpandLimit, 6,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   151
          "Maximum number of individual allocations in an inline-expanded " \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   152
          "multianewarray instruction")                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   153
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   154
  notproduct(bool, TraceProfileTripCount, false,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   155
          "Trace profile loop trip count information")                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   156
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   157
  develop(bool, OptoCoalesce, true,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   158
          "Use Conservative Copy Coalescing in the Register Allocator")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   159
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   160
  develop(bool, UseUniqueSubclasses, true,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   161
          "Narrow an abstract reference to the unique concrete subclass")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   162
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   163
  develop(bool, UseExactTypes, true,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   164
          "Use exact types to eliminate array store checks and v-calls")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   165
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   166
  product(intx, TrackedInitializationLimit, 50,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   167
          "When initializing fields, track up to this many words")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   168
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   169
  product(bool, ReduceFieldZeroing, true,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   170
          "When initializing fields, try to avoid needless zeroing")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   171
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   172
  product(bool, ReduceInitialCardMarks, true,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   173
          "When initializing fields, try to avoid needless card marks")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   174
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   175
  product(bool, ReduceBulkZeroing, true,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   176
          "When bulk-initializing, try to avoid needless zeroing")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   177
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   178
  develop_pd(intx, RegisterCostAreaRatio,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   179
          "Spill selection in reg allocator: scale area by (X/64K) before " \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   180
          "adding cost")                                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   181
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   182
  develop_pd(bool, UseCISCSpill,                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   183
          "Use ADLC supplied cisc instructions during allocation")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   184
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   185
  notproduct(bool, VerifyGraphEdges , false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   186
          "Verify Bi-directional Edges")                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   187
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   188
  notproduct(bool, VerifyDUIterators, true,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   189
          "Verify the safety of all iterations of Bi-directional Edges")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   190
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   191
  notproduct(bool, VerifyHashTableKeys, true,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   192
          "Verify the immutability of keys in the VN hash tables")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   193
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   194
  develop_pd(intx, FLOATPRESSURE,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   195
          "Number of float LRG's that constitute high register pressure")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   196
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   197
  develop_pd(intx, INTPRESSURE,                                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   198
          "Number of integer LRG's that constitute high register pressure") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   199
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   200
  notproduct(bool, TraceOptoPipelining, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   201
          "Trace pipelining information")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   202
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   203
  notproduct(bool, TraceOptoOutput, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   204
          "Trace pipelining information")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   205
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   206
  product_pd(bool, OptoScheduling,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   207
          "Instruction Scheduling after register allocation")               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   208
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   209
  product(bool, PartialPeelLoop, true,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   210
          "Partial peel (rotate) loops")                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   211
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   212
  product(intx, PartialPeelNewPhiDelta, 0,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   213
          "Additional phis that can be created by partial peeling")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   214
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   215
  notproduct(bool, TracePartialPeeling, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   216
          "Trace partial peeling (loop rotation) information")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   217
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   218
  product(bool, PartialPeelAtUnsignedTests, true,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   219
          "Partial peel at unsigned tests if no signed test exists")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   220
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   221
  product(bool, ReassociateInvariants, true,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   222
          "Enable reassociation of expressions with loop invariants.")      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   223
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   224
  product(bool, LoopUnswitching, true,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   225
          "Enable loop unswitching (a form of invariant test hoisting)")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   226
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   227
  notproduct(bool, TraceLoopUnswitching, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   228
          "Trace loop unswitching")                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   229
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   230
  product(bool, UseSuperWord, true,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   231
          "Transform scalar operations into superword operations")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   232
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   233
  develop(bool, SuperWordRTDepCheck, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   234
          "Enable runtime dependency checks.")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   235
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   236
  product(bool, TraceSuperWord, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   237
          "Trace superword transforms")                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   238
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   239
  product_pd(bool, OptoBundling,                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   240
          "Generate nops to fill i-cache lines")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   241
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   242
  product_pd(intx, ConditionalMoveLimit,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   243
          "Limit of ops to make speculative when using CMOVE")              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   244
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   245
  /* Set BranchOnRegister == false. See 4965987. */                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   246
  product(bool, BranchOnRegister, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   247
          "Use Sparc V9 branch-on-register opcodes")                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   248
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   249
  develop(bool, SparcV9RegsHiBitsZero, true,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   250
          "Assume Sparc V9 I&L registers on V8+ systems are zero-extended") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   251
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   252
  develop(intx, PrintIdealGraphLevel, 0,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   253
          "Print ideal graph to XML file / network interface. "             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   254
          "By default attempts to connect to the visualizer on a socket.")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   255
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   256
  develop(intx, PrintIdealGraphPort, 4444,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   257
          "Ideal graph printer to network port")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   258
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   259
  develop(ccstr, PrintIdealGraphAddress, "127.0.0.1",                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   260
          "IP address to connect to visualizer")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   261
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   262
  develop(ccstr, PrintIdealGraphFile, NULL,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   263
          "File to dump ideal graph to.  If set overrides the "             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   264
          "use of the network")                                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   265
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   266
  product(bool, UseOldInlining, true,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   267
          "Enable the 1.3 inlining strategy")                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   268
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   269
  product(bool, UseBimorphicInlining, true,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   270
          "Profiling based inlining for two receivers")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   271
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   272
  product(bool, UseOnlyInlinedBimorphic, true,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   273
          "Don't use BimorphicInlining if can't inline a second method")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   274
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   275
  product(bool, InsertMemBarAfterArraycopy, true,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   276
          "Insert memory barrier after arraycopy call")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   277
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   278
  /* controls for tier 1 compilations */                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   279
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   280
  develop(bool, Tier1CountInvocations, true,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   281
          "Generate code, during tier 1, to update invocation counter")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   282
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   283
  product(intx, Tier1Inline, false,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   284
          "enable inlining during tier 1")                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   285
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   286
  product(intx, Tier1MaxInlineSize, 8,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   287
          "maximum bytecode size of a method to be inlined, during tier 1") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   288
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   289
  product(intx, Tier1FreqInlineSize, 35,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   290
          "max bytecode size of a frequent method to be inlined, tier 1")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   291
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   292
  develop(intx, ImplicitNullCheckThreshold, 3,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   293
          "Don't do implicit null checks if NPE's in a method exceeds limit") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   294
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   295
 /* controls for loop optimization */                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   296
  product(intx, Tier1LoopOptsCount, 0,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   297
          "Set level of loop optimization for tier 1 compiles")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   298
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   299
  product(intx, LoopOptsCount, 43,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   300
          "Set level of loop optimization for tier 1 compiles")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   301
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   302
  /* controls for heat-based inlining */                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   303
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   304
  develop(intx, NodeCountInliningCutoff, 18000,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   305
          "If parser node generation exceeds limit stop inlining")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   306
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   307
  develop(intx, NodeCountInliningStep, 1000,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   308
          "Target size of warm calls inlined between optimization passes")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   309
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   310
  develop(bool, InlineWarmCalls, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   311
          "Use a heat-based priority queue to govern inlining")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   312
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   313
  develop(intx, HotCallCountThreshold, 999999,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   314
          "large numbers of calls (per method invocation) force hotness")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   315
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   316
  develop(intx, HotCallProfitThreshold, 999999,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   317
          "highly profitable inlining opportunities force hotness")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   318
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   319
  develop(intx, HotCallTrivialWork, -1,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   320
          "trivial execution time (no larger than this) forces hotness")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   321
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   322
  develop(intx, HotCallTrivialSize, -1,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   323
          "trivial methods (no larger than this) force calls to be hot")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   324
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   325
  develop(intx, WarmCallMinCount, -1,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   326
          "number of calls (per method invocation) to enable inlining")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   327
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   328
  develop(intx, WarmCallMinProfit, -1,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   329
          "number of calls (per method invocation) to enable inlining")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   330
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   331
  develop(intx, WarmCallMaxWork, 999999,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   332
          "execution time of the largest inlinable method")                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   333
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   334
  develop(intx, WarmCallMaxSize, 999999,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   335
          "size of the largest inlinable method")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   336
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   337
  product(intx, MaxNodeLimit, 65000,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   338
          "Maximum number of nodes")                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   339
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   340
  product(intx, NodeLimitFudgeFactor, 1000,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   341
          "Fudge Factor for certain optimizations")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   342
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   343
  product(bool, UseJumpTables, true,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   344
          "Use JumpTables instead of a binary search tree for switches")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   345
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   346
  product(bool, UseDivMod, true,                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   347
          "Use combined DivMod instruction if available")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   348
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   349
  product(intx, MinJumpTableSize, 18,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   350
          "Minimum number of targets in a generated jump table")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   351
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   352
  product(intx, MaxJumpTableSize, 65000,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   353
          "Maximum number of targets in a generated jump table")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   354
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   355
  product(intx, MaxJumpTableSparseness, 5,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   356
          "Maximum sparseness for jumptables")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   357
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   358
  product(bool, EliminateLocks, true,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   359
          "Coarsen locks when possible")                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   360
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   361
  notproduct(bool, PrintLockStatistics, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   362
          "Print precise statistics on the dynamic lock usage")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   363
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   364
  diagnostic(bool, PrintPreciseBiasedLockingStatistics, false,              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   365
          "Print per-lock-site statistics of biased locking in JVM")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   366
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   367
  notproduct(bool, PrintEliminateLocks, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   368
          "Print out when locks are eliminated")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   369
                                                                            \
190
e9a0a9dcd4f6 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 1
diff changeset
   370
  diagnostic(bool, EliminateAutoBox, false,                                 \
e9a0a9dcd4f6 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 1
diff changeset
   371
          "Private flag to control optimizations for autobox elimination")  \
e9a0a9dcd4f6 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 1
diff changeset
   372
                                                                            \
e9a0a9dcd4f6 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 1
diff changeset
   373
  product(intx, AutoBoxCacheMax, 128,                                       \
e9a0a9dcd4f6 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 1
diff changeset
   374
          "Sets max value cached by the java.lang.Integer autobox cache")   \
e9a0a9dcd4f6 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 1
diff changeset
   375
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   376
  product(bool, DoEscapeAnalysis, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   377
          "Perform escape analysis")                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   378
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   379
  notproduct(bool, PrintEscapeAnalysis, false,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   380
          "Print the results of escape analysis")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   381
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   382
  product(bool, EliminateAllocations, true,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   383
          "Use escape analysis to eliminate allocations")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   384
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   385
  product(intx, MaxLabelRootDepth, 1100,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   386
          "Maximum times call Label_Root to prevent stack overflow")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   387
489c9b5090e2 Initial load
duke
parents:
diff changeset
   388
C2_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_NOTPRODUCT_FLAG)