hotspot/src/share/vm/c1/c1_globals.hpp
author iveresov
Thu, 02 Dec 2010 17:21:12 -0800
changeset 7432 f06f1253c317
parent 7397 5b173b4ca846
child 8107 78e5bd944384
permissions -rw-r--r--
7003554: (tiered) assert(is_null_object() || handle() != NULL) failed: cannot embed null pointer Summary: C1 with profiling doesn't check whether the MDO has been really allocated, which can silently fail if the perm gen is full. The solution is to check if the allocation failed and bailout out of inlining or compilation. Reviewed-by: kvn, never
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
     1
/*
5547
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 5353
diff changeset
     2
 * Copyright (c) 2000, 2010, 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: 5353
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 5353
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: 5353
diff changeset
    21
 * questions.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    22
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
    23
 */
489c9b5090e2 Initial load
duke
parents:
diff changeset
    24
7397
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    25
#ifndef SHARE_VM_C1_C1_GLOBALS_HPP
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    26
#define SHARE_VM_C1_C1_GLOBALS_HPP
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    27
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    28
#include "runtime/globals.hpp"
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    29
#ifdef TARGET_ARCH_x86
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    30
# include "c1_globals_x86.hpp"
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    31
#endif
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    32
#ifdef TARGET_ARCH_sparc
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    33
# include "c1_globals_sparc.hpp"
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    34
#endif
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    35
#ifdef TARGET_OS_FAMILY_linux
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    36
# include "c1_globals_linux.hpp"
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    37
#endif
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    38
#ifdef TARGET_OS_FAMILY_solaris
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    39
# include "c1_globals_solaris.hpp"
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    40
#endif
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    41
#ifdef TARGET_OS_FAMILY_windows
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    42
# include "c1_globals_windows.hpp"
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    43
#endif
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
    44
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    45
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
    46
// Defines all global flags used by the client compiler.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    47
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
    48
#define C1_FLAGS(develop, develop_pd, product, product_pd, notproduct)      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    49
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    50
  /* Printing */                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    51
  notproduct(bool, PrintC1Statistics, false,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    52
          "Print Compiler1 statistics" )                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    53
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    54
  notproduct(bool, PrintInitialBlockList, false,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    55
          "Print block list of BlockListBuilder")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    56
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    57
  notproduct(bool, PrintCFG, false,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    58
          "Print control flow graph after each change")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    59
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    60
  notproduct(bool, PrintCFG0, false,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    61
          "Print control flow graph after construction")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    62
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    63
  notproduct(bool, PrintCFG1, false,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    64
          "Print control flow graph after optimizations")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    65
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    66
  notproduct(bool, PrintCFG2, false,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    67
          "Print control flow graph before code generation")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    68
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    69
  notproduct(bool, PrintIRDuringConstruction, false,                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    70
          "Print IR as it's being constructed (helpful for debugging frontend)")\
489c9b5090e2 Initial load
duke
parents:
diff changeset
    71
                                                                            \
6453
970dc585ab63 6953144: Tiered compilation
iveresov
parents: 5547
diff changeset
    72
  notproduct(bool, PrintPhiFunctions, false,                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    73
          "Print phi functions when they are created and simplified")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    74
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    75
  notproduct(bool, PrintIR, false,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    76
          "Print full intermediate representation after each change")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    77
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    78
  notproduct(bool, PrintIR0, false,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    79
          "Print full intermediate representation after construction")      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    80
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    81
  notproduct(bool, PrintIR1, false,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    82
          "Print full intermediate representation after optimizations")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    83
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    84
  notproduct(bool, PrintIR2, false,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    85
          "Print full intermediate representation before code generation")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    86
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    87
  notproduct(bool, PrintSimpleStubs, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    88
          "Print SimpleStubs")                                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    89
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    90
  /* C1 optimizations */                                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    91
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    92
  develop(bool, UseC1Optimizations, true,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    93
          "Turn on C1 optimizations")                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    94
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    95
  develop(bool, SelectivePhiFunctions, true,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    96
          "create phi functions at loop headers only when necessary")       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
    97
                                                                            \
7100
6bcf9255d470 6991577: add IfOp optimization to C1
roland
parents: 6745
diff changeset
    98
  develop(bool, OptimizeIfOps, true,                                        \
6bcf9255d470 6991577: add IfOp optimization to C1
roland
parents: 6745
diff changeset
    99
          "Optimize multiple IfOps")                                        \
6bcf9255d470 6991577: add IfOp optimization to C1
roland
parents: 6745
diff changeset
   100
                                                                            \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   101
  develop(bool, DoCEE, true,                                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   102
          "Do Conditional Expression Elimination to simplify CFG")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   103
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   104
  develop(bool, PrintCEE, false,                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   105
          "Print Conditional Expression Elimination")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   106
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   107
  develop(bool, UseLocalValueNumbering, true,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   108
          "Use Local Value Numbering (embedded in GraphBuilder)")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   109
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   110
  develop(bool, UseGlobalValueNumbering, true,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   111
          "Use Global Value Numbering (separate phase)")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   112
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   113
  develop(bool, PrintValueNumbering, false,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   114
          "Print Value Numbering")                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   115
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   116
  product(intx, ValueMapInitialSize, 11,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   117
          "Initial size of a value map")                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   118
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   119
  product(intx, ValueMapMaxLoopSize, 8,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   120
          "maximum size of a loop optimized by global value numbering")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   121
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   122
  develop(bool, EliminateBlocks, true,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   123
          "Eliminate unneccessary basic blocks")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   124
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   125
  develop(bool, PrintBlockElimination, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   126
          "Print basic block elimination")                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   127
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   128
  develop(bool, EliminateNullChecks, true,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   129
          "Eliminate unneccessary null checks")                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   130
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   131
  develop(bool, PrintNullCheckElimination, false,                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   132
          "Print null check elimination")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   133
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   134
  develop(bool, EliminateFieldAccess, true,                                 \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   135
          "Optimize field loads and stores")                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   136
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   137
  develop(bool, InlineMethodsWithExceptionHandlers, true,                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   138
          "Inline methods containing exception handlers "                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   139
          "(NOTE: does not work with current backend)")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   140
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   141
  develop(bool, InlineSynchronizedMethods, true,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   142
          "Inline synchronized methods")                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   143
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   144
  develop(bool, InlineNIOCheckIndex, true,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   145
          "Intrinsify java.nio.Buffer.checkIndex")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   146
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   147
  develop(bool, CanonicalizeNodes, true,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   148
          "Canonicalize graph nodes")                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   149
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   150
  develop(bool, CanonicalizeExperimental, false,                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   151
          "Canonicalize graph nodes, experimental code")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   152
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   153
  develop(bool, PrintCanonicalization, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   154
          "Print graph node canonicalization")                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   155
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   156
  develop(bool, UseTableRanges, true,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   157
          "Faster versions of lookup table using ranges")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   158
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   159
  develop(bool, UseFastExceptionHandling, true,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   160
          "Faster handling of exceptions")                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   161
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   162
  develop_pd(bool, RoundFPResults,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   163
          "Indicates whether rounding is needed for floating point results")\
489c9b5090e2 Initial load
duke
parents:
diff changeset
   164
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   165
  develop(intx, NestedInliningSizeRatio, 90,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   166
          "Percentage of prev. allowed inline size in recursive inlining")  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   167
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   168
  notproduct(bool, PrintIRWithLIR, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   169
          "Print IR instructions with generated LIR")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   170
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   171
  notproduct(bool, PrintLIRWithAssembly, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   172
          "Show LIR instruction with generated assembly")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   173
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   174
  develop(bool, CommentedAssembly, trueInDebug,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   175
          "Show extra info in PrintNMethods output")                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   176
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   177
  develop(bool, LIRTracePeephole, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   178
          "Trace peephole optimizer")                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   179
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   180
  develop(bool, LIRTraceExecution, false,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   181
          "add LIR code which logs the execution of blocks")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   182
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   183
  product_pd(bool, LIRFillDelaySlots,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   184
             "fill delays on on SPARC with LIR")                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   185
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   186
  develop_pd(bool, CSEArrayLength,                                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   187
          "Create separate nodes for length in array accesses")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   188
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   189
  develop_pd(bool, TwoOperandLIRForm,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   190
          "true if LIR requires src1 and dst to match in binary LIR ops")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   191
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   192
  develop(intx, TraceLinearScanLevel, 0,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   193
          "Debug levels for the linear scan allocator")                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   194
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   195
  develop(bool, StressLinearScan, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   196
          "scramble block order used by LinearScan (stress test)")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   197
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   198
  product(bool, TimeLinearScan, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   199
          "detailed timing of LinearScan phases")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   200
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   201
  develop(bool, TimeEachLinearScan, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   202
          "print detailed timing of each LinearScan run")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   203
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   204
  develop(bool, CountLinearScan, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   205
          "collect statistic counters during LinearScan")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   206
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   207
  /* C1 variable */                                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   208
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   209
  develop(bool, C1Breakpoint, false,                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   210
          "Sets a breakpoint at entry of each compiled method")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   211
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   212
  develop(bool, ImplicitDiv0Checks, true,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   213
          "Use implicit division by zero checks")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   214
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   215
  develop(bool, PinAllInstructions, false,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   216
          "All instructions are pinned")                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   217
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   218
  develop(bool, ValueStackPinStackAll, true,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   219
          "Pinning in ValueStack pin everything")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   220
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   221
  develop(bool, UseFastNewInstance, true,                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   222
          "Use fast inlined instance allocation")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   223
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   224
  develop(bool, UseFastNewTypeArray, true,                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   225
          "Use fast inlined type array allocation")                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   226
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   227
  develop(bool, UseFastNewObjectArray, true,                                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   228
          "Use fast inlined object array allocation")                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   229
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   230
  develop(bool, UseFastLocking, true,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   231
          "Use fast inlined locking code")                                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   232
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   233
  develop(bool, UseSlowPath, false,                                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   234
          "For debugging: test slow cases by always using them")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   235
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   236
  develop(bool, GenerateArrayStoreCheck, true,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   237
          "Generates code for array store checks")                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   238
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   239
  develop(bool, DeoptC1, true,                                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   240
          "Use deoptimization in C1")                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   241
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   242
  develop(bool, PrintBailouts, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   243
          "Print bailout and its reason")                                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   244
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   245
  develop(bool, TracePatching, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   246
         "Trace patching of field access on uninitialized classes")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   247
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   248
  develop(bool, PatchALot, false,                                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   249
          "Marks all fields as having unloaded classes")                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   250
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   251
  develop(bool, PrintNotLoaded, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   252
          "Prints where classes are not loaded during code generation")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   253
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   254
  notproduct(bool, VerifyOopMaps, false,                                    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   255
          "Adds oopmap verification code to the generated code")            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   256
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   257
  develop(bool, PrintLIR, false,                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   258
          "print low-level IR")                                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   259
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   260
  develop(bool, BailoutAfterHIR, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   261
          "bailout of compilation after building of HIR")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   262
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   263
  develop(bool, BailoutAfterLIR, false,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   264
          "bailout of compilation after building of LIR")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   265
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   266
  develop(bool, BailoutOnExceptionHandlers, false,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   267
          "bailout of compilation for methods with exception handlers")     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   268
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   269
  develop(bool, InstallMethods, true,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   270
          "Install methods at the end of successful compilations")          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   271
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   272
  product(intx, CompilationRepeat, 0,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   273
          "Number of times to recompile method before returning result")    \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   274
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   275
  develop(intx, NMethodSizeLimit, (32*K)*wordSize,                          \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   276
          "Maximum size of a compiled method.")                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   277
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   278
  develop(bool, TraceFPUStack, false,                                       \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   279
          "Trace emulation of the FPU stack (intel only)")                  \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   280
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   281
  develop(bool, TraceFPURegisterUsage, false,                               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   282
          "Trace usage of FPU registers at start of blocks (intel only)")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   283
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   284
  develop(bool, OptimizeUnsafes, true,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   285
          "Optimize raw unsafe ops")                                        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   286
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   287
  develop(bool, PrintUnsafeOptimization, false,                             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   288
          "Print optimization of raw unsafe ops")                           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   289
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   290
  develop(intx, InstructionCountCutoff, 37000,                              \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   291
          "If GraphBuilder adds this many instructions, bails out")         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   292
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   293
  product_pd(intx, SafepointPollOffset,                                     \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   294
          "Offset added to polling address (Intel only)")                   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   295
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   296
  develop(bool, ComputeExactFPURegisterUsage, true,                         \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   297
          "Compute additional live set for fpu registers to simplify fpu stack merge (Intel only)") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   298
                                                                            \
6453
970dc585ab63 6953144: Tiered compilation
iveresov
parents: 5547
diff changeset
   299
  product(bool, C1ProfileCalls, true,                                       \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   300
          "Profile calls when generating code for updating MDOs")           \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   301
                                                                            \
6453
970dc585ab63 6953144: Tiered compilation
iveresov
parents: 5547
diff changeset
   302
  product(bool, C1ProfileVirtualCalls, true,                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   303
          "Profile virtual calls when generating code for updating MDOs")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   304
                                                                            \
6453
970dc585ab63 6953144: Tiered compilation
iveresov
parents: 5547
diff changeset
   305
  product(bool, C1ProfileInlinedCalls, true,                                \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   306
          "Profile inlined calls when generating code for updating MDOs")   \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   307
                                                                            \
6453
970dc585ab63 6953144: Tiered compilation
iveresov
parents: 5547
diff changeset
   308
  product(bool, C1ProfileBranches, true,                                    \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   309
          "Profile branches when generating code for updating MDOs")        \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   310
                                                                            \
6453
970dc585ab63 6953144: Tiered compilation
iveresov
parents: 5547
diff changeset
   311
  product(bool, C1ProfileCheckcasts, true,                                  \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   312
          "Profile checkcasts when generating code for updating MDOs")      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   313
                                                                            \
6453
970dc585ab63 6953144: Tiered compilation
iveresov
parents: 5547
diff changeset
   314
  product(bool, C1OptimizeVirtualCallProfiling, true,                       \
970dc585ab63 6953144: Tiered compilation
iveresov
parents: 5547
diff changeset
   315
          "Use CHA and exact type results at call sites when updating MDOs")\
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   316
                                                                            \
6453
970dc585ab63 6953144: Tiered compilation
iveresov
parents: 5547
diff changeset
   317
  product(bool, C1UpdateMethodData, trueInTiered,                           \
970dc585ab63 6953144: Tiered compilation
iveresov
parents: 5547
diff changeset
   318
          "Update methodDataOops in Tier1-generated code")                  \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   319
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   320
  develop(bool, PrintCFGToFile, false,                                      \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   321
          "print control flow graph to a separate file during compilation") \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   322
                                                                            \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   323
489c9b5090e2 Initial load
duke
parents:
diff changeset
   324
489c9b5090e2 Initial load
duke
parents:
diff changeset
   325
// Read default values for c1 globals
489c9b5090e2 Initial load
duke
parents:
diff changeset
   326
489c9b5090e2 Initial load
duke
parents:
diff changeset
   327
C1_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_NOTPRODUCT_FLAG)
7397
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
   328
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 7100
diff changeset
   329
#endif // SHARE_VM_C1_C1_GLOBALS_HPP