annotate src/share/vm/opto/c2_globals.hpp @ 17936:968a17f18337

8042786: Proper fix for 8032566 Summary: Check for overflow cases in range checks and collapse it if we can. Reviewed-by: jrose, iveresov
author kvn
date Fri, 16 May 2014 12:05:14 -0700
parents 248ff38d2950
children 52b4284cb496 411e30e5fbb8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
10999
693e4d04fd09 8014959: assert(Compile::current()->live_nodes() < (uint)MaxNodeLimit) failed: Live Node limit exceeded limit
drchase
parents: 10278
diff changeset
2 * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 *
a61af66fc99e Initial load
duke
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
7 * published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8 *
a61af66fc99e Initial load
duke
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
13 * accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
14 *
a61af66fc99e Initial load
duke
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
18 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1365
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1365
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1365
diff changeset
21 * questions.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
22 *
a61af66fc99e Initial load
duke
parents:
diff changeset
23 */
a61af66fc99e Initial load
duke
parents:
diff changeset
24
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
25 #ifndef SHARE_VM_OPTO_C2_GLOBALS_HPP
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
26 #define SHARE_VM_OPTO_C2_GLOBALS_HPP
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
27
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
28 #include "runtime/globals.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
29 #ifdef TARGET_ARCH_x86
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
30 # include "c2_globals_x86.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
31 #endif
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
32 #ifdef TARGET_ARCH_sparc
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
33 # include "c2_globals_sparc.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
34 #endif
2192
b92c45f2bc75 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 2008
diff changeset
35 #ifdef TARGET_ARCH_arm
b92c45f2bc75 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 2008
diff changeset
36 # include "c2_globals_arm.hpp"
b92c45f2bc75 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 2008
diff changeset
37 #endif
14391
d2907f74462e 8016586: PPC64 (part 3): basic changes for PPC64
goetz
parents: 10278
diff changeset
38 #ifdef TARGET_ARCH_ppc
d2907f74462e 8016586: PPC64 (part 3): basic changes for PPC64
goetz
parents: 10278
diff changeset
39 # include "c2_globals_ppc.hpp"
d2907f74462e 8016586: PPC64 (part 3): basic changes for PPC64
goetz
parents: 10278
diff changeset
40 #endif
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
41 #ifdef TARGET_OS_FAMILY_linux
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
42 # include "c2_globals_linux.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
43 #endif
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
44 #ifdef TARGET_OS_FAMILY_solaris
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
45 # include "c2_globals_solaris.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
46 #endif
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
47 #ifdef TARGET_OS_FAMILY_windows
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
48 # include "c2_globals_windows.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
49 #endif
14411
bdd155477289 8023033: PPC64 (part 13): basic changes for AIX
goetz
parents: 14393
diff changeset
50 #ifdef TARGET_OS_FAMILY_aix
bdd155477289 8023033: PPC64 (part 13): basic changes for AIX
goetz
parents: 14393
diff changeset
51 # include "c2_globals_aix.hpp"
bdd155477289 8023033: PPC64 (part 13): basic changes for AIX
goetz
parents: 14393
diff changeset
52 #endif
3960
f08d439fab8c 7089790: integrate bsd-port changes
never
parents: 3345
diff changeset
53 #ifdef TARGET_OS_FAMILY_bsd
f08d439fab8c 7089790: integrate bsd-port changes
never
parents: 3345
diff changeset
54 # include "c2_globals_bsd.hpp"
f08d439fab8c 7089790: integrate bsd-port changes
never
parents: 3345
diff changeset
55 #endif
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
56
0
a61af66fc99e Initial load
duke
parents:
diff changeset
57 //
a61af66fc99e Initial load
duke
parents:
diff changeset
58 // Defines all globals flags used by the server compiler.
a61af66fc99e Initial load
duke
parents:
diff changeset
59 //
a61af66fc99e Initial load
duke
parents:
diff changeset
60
1080
7c57aead6d3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 930
diff changeset
61 #define C2_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct) \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
62 \
8691
571076d3c79d 8009120: Fuzz instruction scheduling in HotSpot compilers
shade
parents: 8048
diff changeset
63 develop(bool, StressLCM, false, \
571076d3c79d 8009120: Fuzz instruction scheduling in HotSpot compilers
shade
parents: 8048
diff changeset
64 "Randomize instruction scheduling in LCM") \
571076d3c79d 8009120: Fuzz instruction scheduling in HotSpot compilers
shade
parents: 8048
diff changeset
65 \
571076d3c79d 8009120: Fuzz instruction scheduling in HotSpot compilers
shade
parents: 8048
diff changeset
66 develop(bool, StressGCM, false, \
571076d3c79d 8009120: Fuzz instruction scheduling in HotSpot compilers
shade
parents: 8048
diff changeset
67 "Randomize instruction scheduling in GCM") \
571076d3c79d 8009120: Fuzz instruction scheduling in HotSpot compilers
shade
parents: 8048
diff changeset
68 \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
69 notproduct(intx, CompileZapFirst, 0, \
a61af66fc99e Initial load
duke
parents:
diff changeset
70 "If +ZapDeadCompiledLocals, " \
a61af66fc99e Initial load
duke
parents:
diff changeset
71 "skip this many before compiling in zap calls") \
a61af66fc99e Initial load
duke
parents:
diff changeset
72 \
a61af66fc99e Initial load
duke
parents:
diff changeset
73 notproduct(intx, CompileZapLast, -1, \
a61af66fc99e Initial load
duke
parents:
diff changeset
74 "If +ZapDeadCompiledLocals, " \
a61af66fc99e Initial load
duke
parents:
diff changeset
75 "compile this many after skipping (incl. skip count, -1 = all)") \
a61af66fc99e Initial load
duke
parents:
diff changeset
76 \
a61af66fc99e Initial load
duke
parents:
diff changeset
77 notproduct(intx, ZapDeadCompiledLocalsFirst, 0, \
a61af66fc99e Initial load
duke
parents:
diff changeset
78 "If +ZapDeadCompiledLocals, " \
a61af66fc99e Initial load
duke
parents:
diff changeset
79 "skip this many before really doing it") \
a61af66fc99e Initial load
duke
parents:
diff changeset
80 \
a61af66fc99e Initial load
duke
parents:
diff changeset
81 notproduct(intx, ZapDeadCompiledLocalsLast, -1, \
a61af66fc99e Initial load
duke
parents:
diff changeset
82 "If +ZapDeadCompiledLocals, " \
a61af66fc99e Initial load
duke
parents:
diff changeset
83 "do this many after skipping (incl. skip count, -1 = all)") \
a61af66fc99e Initial load
duke
parents:
diff changeset
84 \
a61af66fc99e Initial load
duke
parents:
diff changeset
85 develop(intx, OptoPrologueNops, 0, \
a61af66fc99e Initial load
duke
parents:
diff changeset
86 "Insert this many extra nop instructions " \
a61af66fc99e Initial load
duke
parents:
diff changeset
87 "in the prologue of every nmethod") \
a61af66fc99e Initial load
duke
parents:
diff changeset
88 \
a61af66fc99e Initial load
duke
parents:
diff changeset
89 product_pd(intx, InteriorEntryAlignment, \
a61af66fc99e Initial load
duke
parents:
diff changeset
90 "Code alignment for interior entry points " \
a61af66fc99e Initial load
duke
parents:
diff changeset
91 "in generated code (in bytes)") \
a61af66fc99e Initial load
duke
parents:
diff changeset
92 \
a61af66fc99e Initial load
duke
parents:
diff changeset
93 product(intx, MaxLoopPad, (OptoLoopAlignment-1), \
a61af66fc99e Initial load
duke
parents:
diff changeset
94 "Align a loop if padding size in bytes is less or equal to this value") \
a61af66fc99e Initial load
duke
parents:
diff changeset
95 \
6179
8c92982cbbc4 7119644: Increase superword's vector size up to 256 bits
kvn
parents: 5948
diff changeset
96 product(intx, MaxVectorSize, 32, \
8c92982cbbc4 7119644: Increase superword's vector size up to 256 bits
kvn
parents: 5948
diff changeset
97 "Max vector size in bytes, " \
8c92982cbbc4 7119644: Increase superword's vector size up to 256 bits
kvn
parents: 5948
diff changeset
98 "actual size could be less depending on elements type") \
8c92982cbbc4 7119644: Increase superword's vector size up to 256 bits
kvn
parents: 5948
diff changeset
99 \
6794
8ae8f9dd7099 7199010: incorrect vector alignment
kvn
parents: 6793
diff changeset
100 product(bool, AlignVector, true, \
6179
8c92982cbbc4 7119644: Increase superword's vector size up to 256 bits
kvn
parents: 5948
diff changeset
101 "Perform vector store/load alignment in loop") \
8c92982cbbc4 7119644: Increase superword's vector size up to 256 bits
kvn
parents: 5948
diff changeset
102 \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
103 product(intx, NumberOfLoopInstrToAlign, 4, \
a61af66fc99e Initial load
duke
parents:
diff changeset
104 "Number of first instructions in a loop to align") \
a61af66fc99e Initial load
duke
parents:
diff changeset
105 \
a61af66fc99e Initial load
duke
parents:
diff changeset
106 notproduct(intx, IndexSetWatch, 0, \
a61af66fc99e Initial load
duke
parents:
diff changeset
107 "Trace all operations on this IndexSet (-1 means all, 0 none)") \
a61af66fc99e Initial load
duke
parents:
diff changeset
108 \
a61af66fc99e Initial load
duke
parents:
diff changeset
109 develop(intx, OptoNodeListSize, 4, \
a61af66fc99e Initial load
duke
parents:
diff changeset
110 "Starting allocation size of Node_List data structures") \
a61af66fc99e Initial load
duke
parents:
diff changeset
111 \
a61af66fc99e Initial load
duke
parents:
diff changeset
112 develop(intx, OptoBlockListSize, 8, \
a61af66fc99e Initial load
duke
parents:
diff changeset
113 "Starting allocation size of Block_List data structures") \
a61af66fc99e Initial load
duke
parents:
diff changeset
114 \
a61af66fc99e Initial load
duke
parents:
diff changeset
115 develop(intx, OptoPeepholeAt, -1, \
a61af66fc99e Initial load
duke
parents:
diff changeset
116 "Apply peephole optimizations to this peephole rule") \
a61af66fc99e Initial load
duke
parents:
diff changeset
117 \
a61af66fc99e Initial load
duke
parents:
diff changeset
118 notproduct(bool, PrintIdeal, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
119 "Print ideal graph before code generation") \
a61af66fc99e Initial load
duke
parents:
diff changeset
120 \
a61af66fc99e Initial load
duke
parents:
diff changeset
121 notproduct(bool, PrintOpto, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
122 "Print compiler2 attempts") \
a61af66fc99e Initial load
duke
parents:
diff changeset
123 \
a61af66fc99e Initial load
duke
parents:
diff changeset
124 notproduct(bool, PrintOptoInlining, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
125 "Print compiler2 inlining decisions") \
a61af66fc99e Initial load
duke
parents:
diff changeset
126 \
a61af66fc99e Initial load
duke
parents:
diff changeset
127 notproduct(bool, VerifyOpto, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
128 "Apply more time consuming verification during compilation") \
a61af66fc99e Initial load
duke
parents:
diff changeset
129 \
7196
2aff40cb4703 7092905: C2: Keep track of the number of dead nodes
bharadwaj
parents: 6895
diff changeset
130 notproduct(bool, VerifyIdealNodeCount, false, \
2aff40cb4703 7092905: C2: Keep track of the number of dead nodes
bharadwaj
parents: 6895
diff changeset
131 "Verify that tracked dead ideal node count is accurate") \
2aff40cb4703 7092905: C2: Keep track of the number of dead nodes
bharadwaj
parents: 6895
diff changeset
132 \
2aff40cb4703 7092905: C2: Keep track of the number of dead nodes
bharadwaj
parents: 6895
diff changeset
133 notproduct(bool, PrintIdealNodeCount, false, \
2aff40cb4703 7092905: C2: Keep track of the number of dead nodes
bharadwaj
parents: 6895
diff changeset
134 "Print liveness counts of ideal nodes") \
2aff40cb4703 7092905: C2: Keep track of the number of dead nodes
bharadwaj
parents: 6895
diff changeset
135 \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
136 notproduct(bool, VerifyOptoOopOffsets, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
137 "Check types of base addresses in field references") \
a61af66fc99e Initial load
duke
parents:
diff changeset
138 \
a61af66fc99e Initial load
duke
parents:
diff changeset
139 develop(bool, IdealizedNumerics, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
140 "Check performance difference allowing FP " \
a61af66fc99e Initial load
duke
parents:
diff changeset
141 "associativity and commutativity...") \
a61af66fc99e Initial load
duke
parents:
diff changeset
142 \
a61af66fc99e Initial load
duke
parents:
diff changeset
143 develop(bool, OptoBreakpoint, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
144 "insert breakpoint at method entry") \
a61af66fc99e Initial load
duke
parents:
diff changeset
145 \
a61af66fc99e Initial load
duke
parents:
diff changeset
146 notproduct(bool, OptoBreakpointOSR, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
147 "insert breakpoint at osr method entry") \
a61af66fc99e Initial load
duke
parents:
diff changeset
148 \
a61af66fc99e Initial load
duke
parents:
diff changeset
149 notproduct(intx, BreakAtNode, 0, \
a61af66fc99e Initial load
duke
parents:
diff changeset
150 "Break at construction of this Node (either _idx or _debug_idx)") \
a61af66fc99e Initial load
duke
parents:
diff changeset
151 \
a61af66fc99e Initial load
duke
parents:
diff changeset
152 notproduct(bool, OptoBreakpointC2R, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
153 "insert breakpoint at runtime stub entry") \
a61af66fc99e Initial load
duke
parents:
diff changeset
154 \
a61af66fc99e Initial load
duke
parents:
diff changeset
155 notproduct(bool, OptoNoExecute, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
156 "Attempt to parse and compile but do not execute generated code") \
a61af66fc99e Initial load
duke
parents:
diff changeset
157 \
a61af66fc99e Initial load
duke
parents:
diff changeset
158 notproduct(bool, PrintOptoStatistics, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
159 "Print New compiler statistics") \
a61af66fc99e Initial load
duke
parents:
diff changeset
160 \
a61af66fc99e Initial load
duke
parents:
diff changeset
161 notproduct(bool, PrintOptoAssembly, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
162 "Print New compiler assembly output") \
a61af66fc99e Initial load
duke
parents:
diff changeset
163 \
a61af66fc99e Initial load
duke
parents:
diff changeset
164 develop_pd(bool, OptoPeephole, \
a61af66fc99e Initial load
duke
parents:
diff changeset
165 "Apply peephole optimizations after register allocation") \
a61af66fc99e Initial load
duke
parents:
diff changeset
166 \
a61af66fc99e Initial load
duke
parents:
diff changeset
167 develop(bool, OptoRemoveUseless, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
168 "Remove useless nodes after parsing") \
a61af66fc99e Initial load
duke
parents:
diff changeset
169 \
a61af66fc99e Initial load
duke
parents:
diff changeset
170 notproduct(bool, PrintFrameConverterAssembly, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
171 "Print New compiler assembly output for frame converters") \
a61af66fc99e Initial load
duke
parents:
diff changeset
172 \
a61af66fc99e Initial load
duke
parents:
diff changeset
173 notproduct(bool, PrintParseStatistics, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
174 "Print nodes, transforms and new values made per bytecode parsed")\
a61af66fc99e Initial load
duke
parents:
diff changeset
175 \
a61af66fc99e Initial load
duke
parents:
diff changeset
176 notproduct(bool, PrintOptoPeephole, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
177 "Print New compiler peephole replacements") \
a61af66fc99e Initial load
duke
parents:
diff changeset
178 \
a61af66fc99e Initial load
duke
parents:
diff changeset
179 develop(bool, PrintCFGBlockFreq, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
180 "Print CFG block freqencies") \
a61af66fc99e Initial load
duke
parents:
diff changeset
181 \
a61af66fc99e Initial load
duke
parents:
diff changeset
182 develop(bool, TraceOptoParse, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
183 "Trace bytecode parse and control-flow merge") \
a61af66fc99e Initial load
duke
parents:
diff changeset
184 \
a61af66fc99e Initial load
duke
parents:
diff changeset
185 product_pd(intx, LoopUnrollLimit, \
a61af66fc99e Initial load
duke
parents:
diff changeset
186 "Unroll loop bodies with node count less than this") \
a61af66fc99e Initial load
duke
parents:
diff changeset
187 \
12027
bcc4f6f54d83 8022993: Convert MAX_UNROLL constant to LoopMaxUnroll C2 flag
kvn
parents: 10999
diff changeset
188 product(intx, LoopMaxUnroll, 16, \
bcc4f6f54d83 8022993: Convert MAX_UNROLL constant to LoopMaxUnroll C2 flag
kvn
parents: 10999
diff changeset
189 "Maximum number of unrolls for main loop") \
bcc4f6f54d83 8022993: Convert MAX_UNROLL constant to LoopMaxUnroll C2 flag
kvn
parents: 10999
diff changeset
190 \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
191 product(intx, LoopUnrollMin, 4, \
a61af66fc99e Initial load
duke
parents:
diff changeset
192 "Minimum number of unroll loop bodies before checking progress" \
a61af66fc99e Initial load
duke
parents:
diff changeset
193 "of rounds of unroll,optimize,..") \
a61af66fc99e Initial load
duke
parents:
diff changeset
194 \
a61af66fc99e Initial load
duke
parents:
diff changeset
195 develop(intx, UnrollLimitForProfileCheck, 1, \
a61af66fc99e Initial load
duke
parents:
diff changeset
196 "Don't use profile_trip_cnt() to restrict unrolling until " \
a61af66fc99e Initial load
duke
parents:
diff changeset
197 "unrolling would push the number of unrolled iterations above " \
a61af66fc99e Initial load
duke
parents:
diff changeset
198 "UnrollLimitForProfileCheck. A higher value allows more " \
a61af66fc99e Initial load
duke
parents:
diff changeset
199 "unrolling. Zero acts as a very large value." ) \
a61af66fc99e Initial load
duke
parents:
diff changeset
200 \
a61af66fc99e Initial load
duke
parents:
diff changeset
201 product(intx, MultiArrayExpandLimit, 6, \
a61af66fc99e Initial load
duke
parents:
diff changeset
202 "Maximum number of individual allocations in an inline-expanded " \
a61af66fc99e Initial load
duke
parents:
diff changeset
203 "multianewarray instruction") \
a61af66fc99e Initial load
duke
parents:
diff changeset
204 \
a61af66fc99e Initial load
duke
parents:
diff changeset
205 notproduct(bool, TraceProfileTripCount, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
206 "Trace profile loop trip count information") \
a61af66fc99e Initial load
duke
parents:
diff changeset
207 \
1172
b2b6a9bf6238 6894779: Loop Predication for Loop Optimizer in C2
cfang
parents: 1081
diff changeset
208 product(bool, UseLoopPredicate, true, \
b2b6a9bf6238 6894779: Loop Predication for Loop Optimizer in C2
cfang
parents: 1081
diff changeset
209 "Generate a predicate to select fast/slow loop versions") \
b2b6a9bf6238 6894779: Loop Predication for Loop Optimizer in C2
cfang
parents: 1081
diff changeset
210 \
b2b6a9bf6238 6894779: Loop Predication for Loop Optimizer in C2
cfang
parents: 1081
diff changeset
211 develop(bool, TraceLoopPredicate, false, \
b2b6a9bf6238 6894779: Loop Predication for Loop Optimizer in C2
cfang
parents: 1081
diff changeset
212 "Trace generation of loop predicates") \
b2b6a9bf6238 6894779: Loop Predication for Loop Optimizer in C2
cfang
parents: 1081
diff changeset
213 \
2383
9dc311b8473e 7008866: Missing loop predicate for loop with multiple entries
kvn
parents: 2192
diff changeset
214 develop(bool, TraceLoopOpts, false, \
9dc311b8473e 7008866: Missing loop predicate for loop with multiple entries
kvn
parents: 2192
diff changeset
215 "Trace executed loop optimizations") \
9dc311b8473e 7008866: Missing loop predicate for loop with multiple entries
kvn
parents: 2192
diff changeset
216 \
3345
bad7ecd0b6ed 5091921: Sign flip issues in loop optimizer
kvn
parents: 2426
diff changeset
217 diagnostic(bool, LoopLimitCheck, true, \
bad7ecd0b6ed 5091921: Sign flip issues in loop optimizer
kvn
parents: 2426
diff changeset
218 "Generate a loop limits check for overflow") \
bad7ecd0b6ed 5091921: Sign flip issues in loop optimizer
kvn
parents: 2426
diff changeset
219 \
bad7ecd0b6ed 5091921: Sign flip issues in loop optimizer
kvn
parents: 2426
diff changeset
220 develop(bool, TraceLoopLimitCheck, false, \
bad7ecd0b6ed 5091921: Sign flip issues in loop optimizer
kvn
parents: 2426
diff changeset
221 "Trace generation of loop limits checks") \
bad7ecd0b6ed 5091921: Sign flip issues in loop optimizer
kvn
parents: 2426
diff changeset
222 \
bad7ecd0b6ed 5091921: Sign flip issues in loop optimizer
kvn
parents: 2426
diff changeset
223 diagnostic(bool, RangeLimitCheck, true, \
bad7ecd0b6ed 5091921: Sign flip issues in loop optimizer
kvn
parents: 2426
diff changeset
224 "Additional overflow checks during range check elimination") \
bad7ecd0b6ed 5091921: Sign flip issues in loop optimizer
kvn
parents: 2426
diff changeset
225 \
bad7ecd0b6ed 5091921: Sign flip issues in loop optimizer
kvn
parents: 2426
diff changeset
226 develop(bool, TraceRangeLimitCheck, false, \
bad7ecd0b6ed 5091921: Sign flip issues in loop optimizer
kvn
parents: 2426
diff changeset
227 "Trace additional overflow checks in RCE") \
bad7ecd0b6ed 5091921: Sign flip issues in loop optimizer
kvn
parents: 2426
diff changeset
228 \
bad7ecd0b6ed 5091921: Sign flip issues in loop optimizer
kvn
parents: 2426
diff changeset
229 diagnostic(bool, UnrollLimitCheck, true, \
bad7ecd0b6ed 5091921: Sign flip issues in loop optimizer
kvn
parents: 2426
diff changeset
230 "Additional overflow checks during loop unroll") \
bad7ecd0b6ed 5091921: Sign flip issues in loop optimizer
kvn
parents: 2426
diff changeset
231 \
14437
15120a36272d 8028767: PPC64: (part 121): smaller shared changes needed to build C2
goetz
parents: 14428
diff changeset
232 /* OptimizeFill not yet supported on PowerPC. */ \
15120a36272d 8028767: PPC64: (part 121): smaller shared changes needed to build C2
goetz
parents: 14428
diff changeset
233 product(bool, OptimizeFill, true PPC64_ONLY(&& false), \
1763
d6f45b55c972 4809552: Optimize Arrays.fill(...)
never
parents: 1730
diff changeset
234 "convert fill/copy loops into intrinsic") \
d6f45b55c972 4809552: Optimize Arrays.fill(...)
never
parents: 1730
diff changeset
235 \
d6f45b55c972 4809552: Optimize Arrays.fill(...)
never
parents: 1730
diff changeset
236 develop(bool, TraceOptimizeFill, false, \
d6f45b55c972 4809552: Optimize Arrays.fill(...)
never
parents: 1730
diff changeset
237 "print detailed information about fill conversion") \
d6f45b55c972 4809552: Optimize Arrays.fill(...)
never
parents: 1730
diff changeset
238 \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
239 develop(bool, OptoCoalesce, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
240 "Use Conservative Copy Coalescing in the Register Allocator") \
a61af66fc99e Initial load
duke
parents:
diff changeset
241 \
a61af66fc99e Initial load
duke
parents:
diff changeset
242 develop(bool, UseUniqueSubclasses, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
243 "Narrow an abstract reference to the unique concrete subclass") \
a61af66fc99e Initial load
duke
parents:
diff changeset
244 \
a61af66fc99e Initial load
duke
parents:
diff changeset
245 develop(bool, UseExactTypes, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
246 "Use exact types to eliminate array store checks and v-calls") \
a61af66fc99e Initial load
duke
parents:
diff changeset
247 \
a61af66fc99e Initial load
duke
parents:
diff changeset
248 product(intx, TrackedInitializationLimit, 50, \
a61af66fc99e Initial load
duke
parents:
diff changeset
249 "When initializing fields, track up to this many words") \
a61af66fc99e Initial load
duke
parents:
diff changeset
250 \
a61af66fc99e Initial load
duke
parents:
diff changeset
251 product(bool, ReduceFieldZeroing, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
252 "When initializing fields, try to avoid needless zeroing") \
a61af66fc99e Initial load
duke
parents:
diff changeset
253 \
a61af66fc99e Initial load
duke
parents:
diff changeset
254 product(bool, ReduceInitialCardMarks, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
255 "When initializing fields, try to avoid needless card marks") \
a61af66fc99e Initial load
duke
parents:
diff changeset
256 \
a61af66fc99e Initial load
duke
parents:
diff changeset
257 product(bool, ReduceBulkZeroing, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
258 "When bulk-initializing, try to avoid needless zeroing") \
a61af66fc99e Initial load
duke
parents:
diff changeset
259 \
1730
f55c4f82ab9d 6978249: spill between cpu and fpu registers when those moves are fast
never
parents: 1685
diff changeset
260 product(bool, UseFPUForSpilling, false, \
f55c4f82ab9d 6978249: spill between cpu and fpu registers when those moves are fast
never
parents: 1685
diff changeset
261 "Spill integer registers to FPU instead of stack when possible") \
f55c4f82ab9d 6978249: spill between cpu and fpu registers when those moves are fast
never
parents: 1685
diff changeset
262 \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
263 develop_pd(intx, RegisterCostAreaRatio, \
a61af66fc99e Initial load
duke
parents:
diff changeset
264 "Spill selection in reg allocator: scale area by (X/64K) before " \
a61af66fc99e Initial load
duke
parents:
diff changeset
265 "adding cost") \
a61af66fc99e Initial load
duke
parents:
diff changeset
266 \
a61af66fc99e Initial load
duke
parents:
diff changeset
267 develop_pd(bool, UseCISCSpill, \
a61af66fc99e Initial load
duke
parents:
diff changeset
268 "Use ADLC supplied cisc instructions during allocation") \
a61af66fc99e Initial load
duke
parents:
diff changeset
269 \
a61af66fc99e Initial load
duke
parents:
diff changeset
270 notproduct(bool, VerifyGraphEdges , false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
271 "Verify Bi-directional Edges") \
a61af66fc99e Initial load
duke
parents:
diff changeset
272 \
a61af66fc99e Initial load
duke
parents:
diff changeset
273 notproduct(bool, VerifyDUIterators, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
274 "Verify the safety of all iterations of Bi-directional Edges") \
a61af66fc99e Initial load
duke
parents:
diff changeset
275 \
a61af66fc99e Initial load
duke
parents:
diff changeset
276 notproduct(bool, VerifyHashTableKeys, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
277 "Verify the immutability of keys in the VN hash tables") \
a61af66fc99e Initial load
duke
parents:
diff changeset
278 \
550
96964ebdb154 6782232: assert("CreateEx must be first instruction in block" )
kvn
parents: 434
diff changeset
279 notproduct(bool, VerifyRegisterAllocator , false, \
96964ebdb154 6782232: assert("CreateEx must be first instruction in block" )
kvn
parents: 434
diff changeset
280 "Verify Register Allocator") \
96964ebdb154 6782232: assert("CreateEx must be first instruction in block" )
kvn
parents: 434
diff changeset
281 \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
282 develop_pd(intx, FLOATPRESSURE, \
a61af66fc99e Initial load
duke
parents:
diff changeset
283 "Number of float LRG's that constitute high register pressure") \
a61af66fc99e Initial load
duke
parents:
diff changeset
284 \
a61af66fc99e Initial load
duke
parents:
diff changeset
285 develop_pd(intx, INTPRESSURE, \
a61af66fc99e Initial load
duke
parents:
diff changeset
286 "Number of integer LRG's that constitute high register pressure") \
a61af66fc99e Initial load
duke
parents:
diff changeset
287 \
a61af66fc99e Initial load
duke
parents:
diff changeset
288 notproduct(bool, TraceOptoPipelining, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
289 "Trace pipelining information") \
a61af66fc99e Initial load
duke
parents:
diff changeset
290 \
a61af66fc99e Initial load
duke
parents:
diff changeset
291 notproduct(bool, TraceOptoOutput, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
292 "Trace pipelining information") \
a61af66fc99e Initial load
duke
parents:
diff changeset
293 \
a61af66fc99e Initial load
duke
parents:
diff changeset
294 product_pd(bool, OptoScheduling, \
a61af66fc99e Initial load
duke
parents:
diff changeset
295 "Instruction Scheduling after register allocation") \
a61af66fc99e Initial load
duke
parents:
diff changeset
296 \
a61af66fc99e Initial load
duke
parents:
diff changeset
297 product(bool, PartialPeelLoop, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
298 "Partial peel (rotate) loops") \
a61af66fc99e Initial load
duke
parents:
diff changeset
299 \
a61af66fc99e Initial load
duke
parents:
diff changeset
300 product(intx, PartialPeelNewPhiDelta, 0, \
a61af66fc99e Initial load
duke
parents:
diff changeset
301 "Additional phis that can be created by partial peeling") \
a61af66fc99e Initial load
duke
parents:
diff changeset
302 \
a61af66fc99e Initial load
duke
parents:
diff changeset
303 notproduct(bool, TracePartialPeeling, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
304 "Trace partial peeling (loop rotation) information") \
a61af66fc99e Initial load
duke
parents:
diff changeset
305 \
a61af66fc99e Initial load
duke
parents:
diff changeset
306 product(bool, PartialPeelAtUnsignedTests, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
307 "Partial peel at unsigned tests if no signed test exists") \
a61af66fc99e Initial load
duke
parents:
diff changeset
308 \
a61af66fc99e Initial load
duke
parents:
diff changeset
309 product(bool, ReassociateInvariants, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
310 "Enable reassociation of expressions with loop invariants.") \
a61af66fc99e Initial load
duke
parents:
diff changeset
311 \
a61af66fc99e Initial load
duke
parents:
diff changeset
312 product(bool, LoopUnswitching, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
313 "Enable loop unswitching (a form of invariant test hoisting)") \
a61af66fc99e Initial load
duke
parents:
diff changeset
314 \
a61af66fc99e Initial load
duke
parents:
diff changeset
315 notproduct(bool, TraceLoopUnswitching, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
316 "Trace loop unswitching") \
a61af66fc99e Initial load
duke
parents:
diff changeset
317 \
a61af66fc99e Initial load
duke
parents:
diff changeset
318 product(bool, UseSuperWord, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
319 "Transform scalar operations into superword operations") \
a61af66fc99e Initial load
duke
parents:
diff changeset
320 \
a61af66fc99e Initial load
duke
parents:
diff changeset
321 develop(bool, SuperWordRTDepCheck, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
322 "Enable runtime dependency checks.") \
a61af66fc99e Initial load
duke
parents:
diff changeset
323 \
6183
6f8f439e247d 7177923: SIGBUS on sparc in compiled code for java.util.Calendar.clear()
kvn
parents: 6179
diff changeset
324 notproduct(bool, TraceSuperWord, false, \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
325 "Trace superword transforms") \
a61af66fc99e Initial load
duke
parents:
diff changeset
326 \
6183
6f8f439e247d 7177923: SIGBUS on sparc in compiled code for java.util.Calendar.clear()
kvn
parents: 6179
diff changeset
327 notproduct(bool, TraceNewVectors, false, \
6f8f439e247d 7177923: SIGBUS on sparc in compiled code for java.util.Calendar.clear()
kvn
parents: 6179
diff changeset
328 "Trace creation of Vector nodes") \
6f8f439e247d 7177923: SIGBUS on sparc in compiled code for java.util.Calendar.clear()
kvn
parents: 6179
diff changeset
329 \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
330 product_pd(bool, OptoBundling, \
a61af66fc99e Initial load
duke
parents:
diff changeset
331 "Generate nops to fill i-cache lines") \
a61af66fc99e Initial load
duke
parents:
diff changeset
332 \
a61af66fc99e Initial load
duke
parents:
diff changeset
333 product_pd(intx, ConditionalMoveLimit, \
a61af66fc99e Initial load
duke
parents:
diff changeset
334 "Limit of ops to make speculative when using CMOVE") \
a61af66fc99e Initial load
duke
parents:
diff changeset
335 \
a61af66fc99e Initial load
duke
parents:
diff changeset
336 /* Set BranchOnRegister == false. See 4965987. */ \
a61af66fc99e Initial load
duke
parents:
diff changeset
337 product(bool, BranchOnRegister, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
338 "Use Sparc V9 branch-on-register opcodes") \
a61af66fc99e Initial load
duke
parents:
diff changeset
339 \
a61af66fc99e Initial load
duke
parents:
diff changeset
340 develop(bool, SparcV9RegsHiBitsZero, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
341 "Assume Sparc V9 I&L registers on V8+ systems are zero-extended") \
a61af66fc99e Initial load
duke
parents:
diff changeset
342 \
2008
2f644f85485d 6961690: load oops from constant table on SPARC
twisti
parents: 1972
diff changeset
343 product(bool, UseRDPCForConstantTableBase, false, \
2f644f85485d 6961690: load oops from constant table on SPARC
twisti
parents: 1972
diff changeset
344 "Use Sparc RDPC instruction for the constant table base.") \
2f644f85485d 6961690: load oops from constant table on SPARC
twisti
parents: 1972
diff changeset
345 \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
346 develop(intx, PrintIdealGraphLevel, 0, \
a61af66fc99e Initial load
duke
parents:
diff changeset
347 "Print ideal graph to XML file / network interface. " \
a61af66fc99e Initial load
duke
parents:
diff changeset
348 "By default attempts to connect to the visualizer on a socket.") \
a61af66fc99e Initial load
duke
parents:
diff changeset
349 \
a61af66fc99e Initial load
duke
parents:
diff changeset
350 develop(intx, PrintIdealGraphPort, 4444, \
a61af66fc99e Initial load
duke
parents:
diff changeset
351 "Ideal graph printer to network port") \
a61af66fc99e Initial load
duke
parents:
diff changeset
352 \
434
de78b80cedec 6772413: code cleanup
kvn
parents: 420
diff changeset
353 notproduct(ccstr, PrintIdealGraphAddress, "127.0.0.1", \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
354 "IP address to connect to visualizer") \
a61af66fc99e Initial load
duke
parents:
diff changeset
355 \
434
de78b80cedec 6772413: code cleanup
kvn
parents: 420
diff changeset
356 notproduct(ccstr, PrintIdealGraphFile, NULL, \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
357 "File to dump ideal graph to. If set overrides the " \
a61af66fc99e Initial load
duke
parents:
diff changeset
358 "use of the network") \
a61af66fc99e Initial load
duke
parents:
diff changeset
359 \
17680
b5761867b097 8035585: Restore UseOldInlining in jdk8u
kvn
parents: 17672
diff changeset
360 product(bool, UseOldInlining, true, \
b5761867b097 8035585: Restore UseOldInlining in jdk8u
kvn
parents: 17672
diff changeset
361 "Enable the 1.3 inlining strategy") \
b5761867b097 8035585: Restore UseOldInlining in jdk8u
kvn
parents: 17672
diff changeset
362 \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
363 product(bool, UseBimorphicInlining, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
364 "Profiling based inlining for two receivers") \
a61af66fc99e Initial load
duke
parents:
diff changeset
365 \
a61af66fc99e Initial load
duke
parents:
diff changeset
366 product(bool, UseOnlyInlinedBimorphic, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
367 "Don't use BimorphicInlining if can't inline a second method") \
a61af66fc99e Initial load
duke
parents:
diff changeset
368 \
a61af66fc99e Initial load
duke
parents:
diff changeset
369 product(bool, InsertMemBarAfterArraycopy, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
370 "Insert memory barrier after arraycopy call") \
a61af66fc99e Initial load
duke
parents:
diff changeset
371 \
1685
0e35fa8ebccd 6973963: SEGV in ciBlock::start_bci() with EA
kvn
parents: 1552
diff changeset
372 develop(bool, SubsumeLoads, true, \
0e35fa8ebccd 6973963: SEGV in ciBlock::start_bci() with EA
kvn
parents: 1552
diff changeset
373 "Attempt to compile while subsuming loads into machine instructions.") \
0e35fa8ebccd 6973963: SEGV in ciBlock::start_bci() with EA
kvn
parents: 1552
diff changeset
374 \
0e35fa8ebccd 6973963: SEGV in ciBlock::start_bci() with EA
kvn
parents: 1552
diff changeset
375 develop(bool, StressRecompilation, false, \
0e35fa8ebccd 6973963: SEGV in ciBlock::start_bci() with EA
kvn
parents: 1552
diff changeset
376 "Recompile each compiled method without subsuming loads or escape analysis.") \
0e35fa8ebccd 6973963: SEGV in ciBlock::start_bci() with EA
kvn
parents: 1552
diff changeset
377 \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
378 develop(intx, ImplicitNullCheckThreshold, 3, \
a61af66fc99e Initial load
duke
parents:
diff changeset
379 "Don't do implicit null checks if NPE's in a method exceeds limit") \
a61af66fc99e Initial load
duke
parents:
diff changeset
380 \
a61af66fc99e Initial load
duke
parents:
diff changeset
381 product(intx, LoopOptsCount, 43, \
a61af66fc99e Initial load
duke
parents:
diff changeset
382 "Set level of loop optimization for tier 1 compiles") \
a61af66fc99e Initial load
duke
parents:
diff changeset
383 \
a61af66fc99e Initial load
duke
parents:
diff changeset
384 /* controls for heat-based inlining */ \
a61af66fc99e Initial load
duke
parents:
diff changeset
385 \
a61af66fc99e Initial load
duke
parents:
diff changeset
386 develop(intx, NodeCountInliningCutoff, 18000, \
a61af66fc99e Initial load
duke
parents:
diff changeset
387 "If parser node generation exceeds limit stop inlining") \
a61af66fc99e Initial load
duke
parents:
diff changeset
388 \
a61af66fc99e Initial load
duke
parents:
diff changeset
389 develop(intx, NodeCountInliningStep, 1000, \
a61af66fc99e Initial load
duke
parents:
diff changeset
390 "Target size of warm calls inlined between optimization passes") \
a61af66fc99e Initial load
duke
parents:
diff changeset
391 \
a61af66fc99e Initial load
duke
parents:
diff changeset
392 develop(bool, InlineWarmCalls, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
393 "Use a heat-based priority queue to govern inlining") \
a61af66fc99e Initial load
duke
parents:
diff changeset
394 \
a61af66fc99e Initial load
duke
parents:
diff changeset
395 develop(intx, HotCallCountThreshold, 999999, \
a61af66fc99e Initial load
duke
parents:
diff changeset
396 "large numbers of calls (per method invocation) force hotness") \
a61af66fc99e Initial load
duke
parents:
diff changeset
397 \
a61af66fc99e Initial load
duke
parents:
diff changeset
398 develop(intx, HotCallProfitThreshold, 999999, \
a61af66fc99e Initial load
duke
parents:
diff changeset
399 "highly profitable inlining opportunities force hotness") \
a61af66fc99e Initial load
duke
parents:
diff changeset
400 \
a61af66fc99e Initial load
duke
parents:
diff changeset
401 develop(intx, HotCallTrivialWork, -1, \
a61af66fc99e Initial load
duke
parents:
diff changeset
402 "trivial execution time (no larger than this) forces hotness") \
a61af66fc99e Initial load
duke
parents:
diff changeset
403 \
a61af66fc99e Initial load
duke
parents:
diff changeset
404 develop(intx, HotCallTrivialSize, -1, \
a61af66fc99e Initial load
duke
parents:
diff changeset
405 "trivial methods (no larger than this) force calls to be hot") \
a61af66fc99e Initial load
duke
parents:
diff changeset
406 \
a61af66fc99e Initial load
duke
parents:
diff changeset
407 develop(intx, WarmCallMinCount, -1, \
a61af66fc99e Initial load
duke
parents:
diff changeset
408 "number of calls (per method invocation) to enable inlining") \
a61af66fc99e Initial load
duke
parents:
diff changeset
409 \
a61af66fc99e Initial load
duke
parents:
diff changeset
410 develop(intx, WarmCallMinProfit, -1, \
a61af66fc99e Initial load
duke
parents:
diff changeset
411 "number of calls (per method invocation) to enable inlining") \
a61af66fc99e Initial load
duke
parents:
diff changeset
412 \
a61af66fc99e Initial load
duke
parents:
diff changeset
413 develop(intx, WarmCallMaxWork, 999999, \
a61af66fc99e Initial load
duke
parents:
diff changeset
414 "execution time of the largest inlinable method") \
a61af66fc99e Initial load
duke
parents:
diff changeset
415 \
a61af66fc99e Initial load
duke
parents:
diff changeset
416 develop(intx, WarmCallMaxSize, 999999, \
a61af66fc99e Initial load
duke
parents:
diff changeset
417 "size of the largest inlinable method") \
a61af66fc99e Initial load
duke
parents:
diff changeset
418 \
10999
693e4d04fd09 8014959: assert(Compile::current()->live_nodes() < (uint)MaxNodeLimit) failed: Live Node limit exceeded limit
drchase
parents: 10278
diff changeset
419 product(intx, MaxNodeLimit, 80000, \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
420 "Maximum number of nodes") \
a61af66fc99e Initial load
duke
parents:
diff changeset
421 \
10999
693e4d04fd09 8014959: assert(Compile::current()->live_nodes() < (uint)MaxNodeLimit) failed: Live Node limit exceeded limit
drchase
parents: 10278
diff changeset
422 product(intx, NodeLimitFudgeFactor, 2000, \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
423 "Fudge Factor for certain optimizations") \
a61af66fc99e Initial load
duke
parents:
diff changeset
424 \
a61af66fc99e Initial load
duke
parents:
diff changeset
425 product(bool, UseJumpTables, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
426 "Use JumpTables instead of a binary search tree for switches") \
a61af66fc99e Initial load
duke
parents:
diff changeset
427 \
a61af66fc99e Initial load
duke
parents:
diff changeset
428 product(bool, UseDivMod, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
429 "Use combined DivMod instruction if available") \
a61af66fc99e Initial load
duke
parents:
diff changeset
430 \
12192
34bd5e86aadb 8010941: MinJumpTableSize is set to 18, investigate if that's still optimal
adlertz
parents: 12190
diff changeset
431 product_pd(intx, MinJumpTableSize, \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
432 "Minimum number of targets in a generated jump table") \
a61af66fc99e Initial load
duke
parents:
diff changeset
433 \
a61af66fc99e Initial load
duke
parents:
diff changeset
434 product(intx, MaxJumpTableSize, 65000, \
a61af66fc99e Initial load
duke
parents:
diff changeset
435 "Maximum number of targets in a generated jump table") \
a61af66fc99e Initial load
duke
parents:
diff changeset
436 \
a61af66fc99e Initial load
duke
parents:
diff changeset
437 product(intx, MaxJumpTableSparseness, 5, \
a61af66fc99e Initial load
duke
parents:
diff changeset
438 "Maximum sparseness for jumptables") \
a61af66fc99e Initial load
duke
parents:
diff changeset
439 \
a61af66fc99e Initial load
duke
parents:
diff changeset
440 product(bool, EliminateLocks, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
441 "Coarsen locks when possible") \
a61af66fc99e Initial load
duke
parents:
diff changeset
442 \
4777
e9a5e0a812c8 7125896: Eliminate nested locks
kvn
parents: 4113
diff changeset
443 product(bool, EliminateNestedLocks, true, \
e9a5e0a812c8 7125896: Eliminate nested locks
kvn
parents: 4113
diff changeset
444 "Eliminate nested locks of the same object when possible") \
e9a5e0a812c8 7125896: Eliminate nested locks
kvn
parents: 4113
diff changeset
445 \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
446 notproduct(bool, PrintLockStatistics, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
447 "Print precise statistics on the dynamic lock usage") \
a61af66fc99e Initial load
duke
parents:
diff changeset
448 \
a61af66fc99e Initial load
duke
parents:
diff changeset
449 diagnostic(bool, PrintPreciseBiasedLockingStatistics, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
450 "Print per-lock-site statistics of biased locking in JVM") \
a61af66fc99e Initial load
duke
parents:
diff changeset
451 \
17780
606acabe7b5c 8031320: Use Intel RTM instructions for locks
kvn
parents: 17735
diff changeset
452 diagnostic(bool, PrintPreciseRTMLockingStatistics, false, \
606acabe7b5c 8031320: Use Intel RTM instructions for locks
kvn
parents: 17735
diff changeset
453 "Print per-lock-site statistics of rtm locking in JVM") \
606acabe7b5c 8031320: Use Intel RTM instructions for locks
kvn
parents: 17735
diff changeset
454 \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
455 notproduct(bool, PrintEliminateLocks, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
456 "Print out when locks are eliminated") \
a61af66fc99e Initial load
duke
parents:
diff changeset
457 \
17936
968a17f18337 8042786: Proper fix for 8032566
kvn
parents: 17820
diff changeset
458 product(bool, EliminateAutoBox, true, \
10278
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 8691
diff changeset
459 "Control optimizations for autobox elimination") \
17
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
460 \
17820
248ff38d2950 8035828: Turn on @Stable support in VM
vlivanov
parents: 17810
diff changeset
461 diagnostic(bool, UseImplicitStableValues, true, \
12190
edb5ab0f3fe5 8001107: @Stable annotation for constant folding of lazily evaluated variables
vlivanov
parents: 12027
diff changeset
462 "Mark well-known stable fields as such (e.g. String.value)") \
edb5ab0f3fe5 8001107: @Stable annotation for constant folding of lazily evaluated variables
vlivanov
parents: 12027
diff changeset
463 \
17
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
464 product(intx, AutoBoxCacheMax, 128, \
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
465 "Sets max value cached by the java.lang.Integer autobox cache") \
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
466 \
10278
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 8691
diff changeset
467 experimental(bool, AggressiveUnboxing, false, \
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 8691
diff changeset
468 "Control optimizations for aggressive boxing elimination") \
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 8691
diff changeset
469 \
14428
044b28168e20 8003854: PPC64 (part 115): Introduce PostallocExpand that expands nodes after register allocation
goetz
parents: 14422
diff changeset
470 develop(bool, TracePostallocExpand, false, "Trace expanding nodes after" \
044b28168e20 8003854: PPC64 (part 115): Introduce PostallocExpand that expands nodes after register allocation
goetz
parents: 14422
diff changeset
471 " register allocation.") \
044b28168e20 8003854: PPC64 (part 115): Introduce PostallocExpand that expands nodes after register allocation
goetz
parents: 14422
diff changeset
472 \
930
357d4e2eb4dd 6873799: enable escape analysis by default
kvn
parents: 673
diff changeset
473 product(bool, DoEscapeAnalysis, true, \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
474 "Perform escape analysis") \
a61af66fc99e Initial load
duke
parents:
diff changeset
475 \
6895
006174cfe979 7163534: VM could crashes assert(false) failed: infinite EA connection graph build
kvn
parents: 6794
diff changeset
476 develop(bool, ExitEscapeAnalysisOnTimeout, true, \
006174cfe979 7163534: VM could crashes assert(false) failed: infinite EA connection graph build
kvn
parents: 6794
diff changeset
477 "Exit or throw assert in EA when it reaches time limit") \
006174cfe979 7163534: VM could crashes assert(false) failed: infinite EA connection graph build
kvn
parents: 6794
diff changeset
478 \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
479 notproduct(bool, PrintEscapeAnalysis, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
480 "Print the results of escape analysis") \
a61af66fc99e Initial load
duke
parents:
diff changeset
481 \
a61af66fc99e Initial load
duke
parents:
diff changeset
482 product(bool, EliminateAllocations, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
483 "Use escape analysis to eliminate allocations") \
a61af66fc99e Initial load
duke
parents:
diff changeset
484 \
65
99269dbf4ba8 6674588: (Escape Analysis) Improve Escape Analysis code
kvn
parents: 17
diff changeset
485 notproduct(bool, PrintEliminateAllocations, false, \
99269dbf4ba8 6674588: (Escape Analysis) Improve Escape Analysis code
kvn
parents: 17
diff changeset
486 "Print out when allocations are eliminated") \
99269dbf4ba8 6674588: (Escape Analysis) Improve Escape Analysis code
kvn
parents: 17
diff changeset
487 \
99269dbf4ba8 6674588: (Escape Analysis) Improve Escape Analysis code
kvn
parents: 17
diff changeset
488 product(intx, EliminateAllocationArraySizeLimit, 64, \
99269dbf4ba8 6674588: (Escape Analysis) Improve Escape Analysis code
kvn
parents: 17
diff changeset
489 "Array size (number of elements) limit for scalar replacement") \
99269dbf4ba8 6674588: (Escape Analysis) Improve Escape Analysis code
kvn
parents: 17
diff changeset
490 \
4113
8c57262447d3 7105605: Use EA info to optimize pointers compare
kvn
parents: 4039
diff changeset
491 product(bool, OptimizePtrCompare, true, \
8c57262447d3 7105605: Use EA info to optimize pointers compare
kvn
parents: 4039
diff changeset
492 "Use escape analysis to optimize pointers compare") \
8c57262447d3 7105605: Use EA info to optimize pointers compare
kvn
parents: 4039
diff changeset
493 \
8c57262447d3 7105605: Use EA info to optimize pointers compare
kvn
parents: 4039
diff changeset
494 notproduct(bool, PrintOptimizePtrCompare, false, \
8c57262447d3 7105605: Use EA info to optimize pointers compare
kvn
parents: 4039
diff changeset
495 "Print information about optimized pointers compare") \
8c57262447d3 7105605: Use EA info to optimize pointers compare
kvn
parents: 4039
diff changeset
496 \
5948
ee138854b3a6 7147744: CTW: assert(false) failed: infinite EA connection graph build
kvn
parents: 4777
diff changeset
497 notproduct(bool, VerifyConnectionGraph , true, \
ee138854b3a6 7147744: CTW: assert(false) failed: infinite EA connection graph build
kvn
parents: 4777
diff changeset
498 "Verify Connection Graph construction in Escape Analysis") \
ee138854b3a6 7147744: CTW: assert(false) failed: infinite EA connection graph build
kvn
parents: 4777
diff changeset
499 \
673
fbc12e71c476 6810845: Performance regression in mpegaudio on x64
kvn
parents: 579
diff changeset
500 product(bool, UseOptoBiasInlining, true, \
420
a1980da045cc 6462850: generate biased locking code in C2 ideal graph
kvn
parents: 418
diff changeset
501 "Generate biased locking code in C2 ideal graph") \
a1980da045cc 6462850: generate biased locking code in C2 ideal graph
kvn
parents: 418
diff changeset
502 \
4039
5bda8dae4e14 7103784: enable some flags by default
never
parents: 3960
diff changeset
503 product(bool, OptimizeStringConcat, true, \
1080
7c57aead6d3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 930
diff changeset
504 "Optimize the construction of Strings by StringBuilder") \
7c57aead6d3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 930
diff changeset
505 \
7c57aead6d3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 930
diff changeset
506 notproduct(bool, PrintOptimizeStringConcat, false, \
7c57aead6d3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 930
diff changeset
507 "Print information about transformations performed on Strings") \
7c57aead6d3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 930
diff changeset
508 \
253
b0fe4deeb9fb 6726999: nsk/stress/jck12a/jck12a010 assert(n != null,"Bad immediate dominator info.")
kvn
parents: 245
diff changeset
509 product(intx, ValueSearchLimit, 1000, \
b0fe4deeb9fb 6726999: nsk/stress/jck12a/jck12a010 assert(n != null,"Bad immediate dominator info.")
kvn
parents: 245
diff changeset
510 "Recursion limit in PhaseMacroExpand::value_from_mem_phi") \
b0fe4deeb9fb 6726999: nsk/stress/jck12a/jck12a010 assert(n != null,"Bad immediate dominator info.")
kvn
parents: 245
diff changeset
511 \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
512 product(intx, MaxLabelRootDepth, 1100, \
a61af66fc99e Initial load
duke
parents:
diff changeset
513 "Maximum times call Label_Root to prevent stack overflow") \
155
723be81c1212 6701887: JDK7 server VM in endless loop in Node::dominates
kvn
parents: 65
diff changeset
514 \
723be81c1212 6701887: JDK7 server VM in endless loop in Node::dominates
kvn
parents: 65
diff changeset
515 diagnostic(intx, DominatorSearchLimit, 1000, \
723be81c1212 6701887: JDK7 server VM in endless loop in Node::dominates
kvn
parents: 65
diff changeset
516 "Iterations limit in Node::dominates") \
418
72c5366e5d86 6743900: frequency based block layout
rasbold
parents: 257
diff changeset
517 \
72c5366e5d86 6743900: frequency based block layout
rasbold
parents: 257
diff changeset
518 product(bool, BlockLayoutByFrequency, true, \
72c5366e5d86 6743900: frequency based block layout
rasbold
parents: 257
diff changeset
519 "Use edge frequencies to drive block ordering") \
72c5366e5d86 6743900: frequency based block layout
rasbold
parents: 257
diff changeset
520 \
72c5366e5d86 6743900: frequency based block layout
rasbold
parents: 257
diff changeset
521 product(intx, BlockLayoutMinDiamondPercentage, 20, \
72c5366e5d86 6743900: frequency based block layout
rasbold
parents: 257
diff changeset
522 "Miniumum %% of a successor (predecessor) for which block layout "\
72c5366e5d86 6743900: frequency based block layout
rasbold
parents: 257
diff changeset
523 "a will allow a fork (join) in a single chain") \
72c5366e5d86 6743900: frequency based block layout
rasbold
parents: 257
diff changeset
524 \
673
fbc12e71c476 6810845: Performance regression in mpegaudio on x64
kvn
parents: 579
diff changeset
525 product(bool, BlockLayoutRotateLoops, true, \
418
72c5366e5d86 6743900: frequency based block layout
rasbold
parents: 257
diff changeset
526 "Allow back branches to be fall throughs in the block layour") \
6633
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
527 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
528 develop(bool, InlineReflectionGetCallerClass, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
529 "inline sun.reflect.Reflection.getCallerClass(), known to be part "\
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
530 "of base library DLL") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
531 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
532 develop(bool, InlineObjectCopy, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
533 "inline Object.clone and Arrays.copyOf[Range] intrinsics") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
534 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
535 develop(bool, SpecialStringCompareTo, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
536 "special version of string compareTo") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
537 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
538 develop(bool, SpecialStringIndexOf, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
539 "special version of string indexOf") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
540 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
541 develop(bool, SpecialStringEquals, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
542 "special version of string equals") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
543 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
544 develop(bool, SpecialArraysEquals, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
545 "special version of Arrays.equals(char[],char[])") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
546 \
7637
b30b3c2a0cf2 6896617: Optimize sun.nio.cs.ISO_8859_1$Encode.encodeArrayLoop() on x86
kvn
parents: 7473
diff changeset
547 product(bool, SpecialEncodeISOArray, true, \
b30b3c2a0cf2 6896617: Optimize sun.nio.cs.ISO_8859_1$Encode.encodeArrayLoop() on x86
kvn
parents: 7473
diff changeset
548 "special version of ISO_8859_1$Encoder.encodeISOArray") \
b30b3c2a0cf2 6896617: Optimize sun.nio.cs.ISO_8859_1$Encode.encodeArrayLoop() on x86
kvn
parents: 7473
diff changeset
549 \
6633
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
550 develop(bool, BailoutToInterpreterForThrows, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
551 "Compiled methods which throws/catches exceptions will be " \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
552 "deopt and intp.") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
553 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
554 develop(bool, ConvertCmpD2CmpF, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
555 "Convert cmpD to cmpF when one input is constant in float range") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
556 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
557 develop(bool, ConvertFloat2IntClipping, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
558 "Convert float2int clipping idiom to integer clipping") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
559 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
560 develop(bool, Use24BitFPMode, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
561 "Set 24-bit FPU mode on a per-compile basis ") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
562 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
563 develop(bool, Use24BitFP, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
564 "use FP instructions that produce 24-bit precise results") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
565 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
566 develop(bool, MonomorphicArrayCheck, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
567 "Uncommon-trap array store checks that require full type check") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
568 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
569 notproduct(bool, TracePhaseCCP, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
570 "Print progress during Conditional Constant Propagation") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
571 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
572 develop(bool, PrintDominators, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
573 "Print out dominator trees for GVN") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
574 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
575 notproduct(bool, TraceSpilling, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
576 "Trace spilling") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
577 \
6793
9d89c76b0505 7198499: TraceTypeProfile as diagnostic option
twisti
parents: 6633
diff changeset
578 diagnostic(bool, TraceTypeProfile, false, \
6633
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
579 "Trace type profile") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
580 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
581 develop(bool, PoisonOSREntry, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
582 "Detect abnormal calls to OSR code") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
583 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
584 product(bool, UseCondCardMark, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
585 "Check for already marked card before updating card table") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
586 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
587 develop(bool, SoftMatchFailure, trueInProduct, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
588 "If the DFA fails to match a node, print a message and bail out") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
589 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
590 develop(bool, InlineAccessors, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
591 "inline accessor methods (get/set)") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
592 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
593 product(intx, TypeProfileMajorReceiverPercent, 90, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
594 "% of major receiver type to all profiled receivers") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
595 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
596 notproduct(bool, TimeCompiler2, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
597 "detailed time the compiler (requires +TimeCompiler)") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
598 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
599 diagnostic(bool, PrintIntrinsics, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
600 "prints attempted and successful inlining of intrinsics") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
601 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
602 diagnostic(ccstrlist, DisableIntrinsic, "", \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
603 "do not expand intrinsics whose (internal) names appear here") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
604 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
605 develop(bool, StressReflectiveCode, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
606 "Use inexact types at allocations, etc., to test reflection") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
607 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
608 diagnostic(bool, DebugInlinedCalls, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
609 "If false, restricts profiled locations to the root method only") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
610 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
611 notproduct(bool, VerifyLoopOptimizations, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
612 "verify major loop optimizations") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
613 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
614 diagnostic(bool, ProfileDynamicTypes, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
615 "do extra type profiling and use it more aggressively") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
616 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
617 develop(bool, TraceIterativeGVN, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
618 "Print progress during Iterative Global Value Numbering") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
619 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
620 develop(bool, VerifyIterativeGVN, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
621 "Verify Def-Use modifications during sparse Iterative Global " \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
622 "Value Numbering") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
623 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
624 notproduct(bool, TraceCISCSpill, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
625 "Trace allocators use of cisc spillable instructions") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
626 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
627 product(bool, SplitIfBlocks, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
628 "Clone compares and control flow through merge points to fold " \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
629 "some branches") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
630 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
631 develop(intx, FreqCountInvocations, 1, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
632 "Scaling factor for branch frequencies (deprecated)") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
633 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
634 product(intx, AliasLevel, 3, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
635 "0 for no aliasing, 1 for oop/field/static/array split, " \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
636 "2 for class split, 3 for unique instances") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
637 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
638 develop(bool, VerifyAliases, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6183
diff changeset
639 "perform extra checks on the results of alias analysis") \
7473
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7196
diff changeset
640 \
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7196
diff changeset
641 product(bool, IncrementalInline, true, \
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7196
diff changeset
642 "do post parse inlining") \
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7196
diff changeset
643 \
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7196
diff changeset
644 develop(bool, AlwaysIncrementalInline, false, \
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7196
diff changeset
645 "do all inlining incrementally") \
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7196
diff changeset
646 \
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7196
diff changeset
647 product(intx, LiveNodeCountInliningCutoff, 20000, \
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7196
diff changeset
648 "max number of live nodes in a method") \
8048
8b3da8d14c93 7197327: 40% regression on 8 b41 comp 8 b40 on specjvm2008.mpegaudio on oob
roland
parents: 7637
diff changeset
649 \
8b3da8d14c93 7197327: 40% regression on 8 b41 comp 8 b40 on specjvm2008.mpegaudio on oob
roland
parents: 7637
diff changeset
650 diagnostic(bool, OptimizeExpensiveOps, true, \
8b3da8d14c93 7197327: 40% regression on 8 b41 comp 8 b40 on specjvm2008.mpegaudio on oob
roland
parents: 7637
diff changeset
651 "Find best control for expensive operations") \
12323
c9ccd7b85f20 8024924: Intrinsify java.lang.Math.addExact
rbackman
parents: 12192
diff changeset
652 \
17726
085b304a1cc5 8027754: Enable loop optimizations for loops with MathExact inside
rbackman
parents: 17699
diff changeset
653 product(bool, UseMathExactIntrinsics, true, \
12956
3213ba4d3dff 8024069: replace_in_map() should operate on parent maps
roland
parents: 12323
diff changeset
654 "Enables intrinsification of various java.lang.Math functions") \
3213ba4d3dff 8024069: replace_in_map() should operate on parent maps
roland
parents: 12323
diff changeset
655 \
3213ba4d3dff 8024069: replace_in_map() should operate on parent maps
roland
parents: 12323
diff changeset
656 experimental(bool, ReplaceInParentMaps, false, \
12966
b2ee5dc63353 8024070: C2 needs some form of type speculation
roland
parents: 12956
diff changeset
657 "Propagate type improvements in callers of inlinee if possible") \
b2ee5dc63353 8024070: C2 needs some form of type speculation
roland
parents: 12956
diff changeset
658 \
17735
8f28240318a2 8032633: Enable type speculation by default
roland
parents: 17731
diff changeset
659 product(bool, UseTypeSpeculation, true, \
17731
62825ea7e51f 8031754: Type speculation should favor profile data from outermost inlined method
roland
parents: 17726
diff changeset
660 "Speculatively propagate types from profiles") \
62825ea7e51f 8031754: Type speculation should favor profile data from outermost inlined method
roland
parents: 17726
diff changeset
661 \
62825ea7e51f 8031754: Type speculation should favor profile data from outermost inlined method
roland
parents: 17726
diff changeset
662 diagnostic(bool, UseInlineDepthForSpeculativeTypes, true, \
62825ea7e51f 8031754: Type speculation should favor profile data from outermost inlined method
roland
parents: 17726
diff changeset
663 "Carry inline depth of profile point with speculative type " \
62825ea7e51f 8031754: Type speculation should favor profile data from outermost inlined method
roland
parents: 17726
diff changeset
664 "and give priority to profiling from lower inline depth") \
17810
kvn
parents: 17805 17780
diff changeset
665 \
14440
41b780b43b74 8029015: PPC64 (part 216): opto: trap based null and range checks
goetz
parents: 14437
diff changeset
666 product_pd(bool, TrapBasedRangeChecks, \
41b780b43b74 8029015: PPC64 (part 216): opto: trap based null and range checks
goetz
parents: 14437
diff changeset
667 "Generate code for range checks that uses a cmp and trap " \
41b780b43b74 8029015: PPC64 (part 216): opto: trap based null and range checks
goetz
parents: 14437
diff changeset
668 "instruction raising SIGTRAP. Used on PPC64.") \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
669
1080
7c57aead6d3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 930
diff changeset
670 C2_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_EXPERIMENTAL_FLAG, DECLARE_NOTPRODUCT_FLAG)
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
671
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1763
diff changeset
672 #endif // SHARE_VM_OPTO_C2_GLOBALS_HPP