annotate src/share/vm/opto/c2_globals.hpp @ 1721:413ad0331a0c

6977924: Changes for 6975078 produce build error with certain gcc versions Summary: The changes introduced for 6975078 assign badHeapOopVal to the _allocation field in the ResourceObj class. In 32 bit linux builds with certain versions of gcc this assignment will be flagged as an error while compiling allocation.cpp. In 32 bit builds the constant value badHeapOopVal (which is cast to an intptr_t) is negative. The _allocation field is typed as an unsigned intptr_t and gcc catches this as an error. Reviewed-by: jcoomes, ysr, phh
author johnc
date Wed, 18 Aug 2010 10:59:06 -0700
parents 0e35fa8ebccd
children f55c4f82ab9d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1365
diff changeset
2 * Copyright (c) 2000, 2009, 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
a61af66fc99e Initial load
duke
parents:
diff changeset
25 //
a61af66fc99e Initial load
duke
parents:
diff changeset
26 // Defines all globals flags used by the server compiler.
a61af66fc99e Initial load
duke
parents:
diff changeset
27 //
a61af66fc99e Initial load
duke
parents:
diff changeset
28
1080
7c57aead6d3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 930
diff changeset
29 #define C2_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct) \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
30 \
a61af66fc99e Initial load
duke
parents:
diff changeset
31 notproduct(intx, CompileZapFirst, 0, \
a61af66fc99e Initial load
duke
parents:
diff changeset
32 "If +ZapDeadCompiledLocals, " \
a61af66fc99e Initial load
duke
parents:
diff changeset
33 "skip this many before compiling in zap calls") \
a61af66fc99e Initial load
duke
parents:
diff changeset
34 \
a61af66fc99e Initial load
duke
parents:
diff changeset
35 notproduct(intx, CompileZapLast, -1, \
a61af66fc99e Initial load
duke
parents:
diff changeset
36 "If +ZapDeadCompiledLocals, " \
a61af66fc99e Initial load
duke
parents:
diff changeset
37 "compile this many after skipping (incl. skip count, -1 = all)") \
a61af66fc99e Initial load
duke
parents:
diff changeset
38 \
a61af66fc99e Initial load
duke
parents:
diff changeset
39 notproduct(intx, ZapDeadCompiledLocalsFirst, 0, \
a61af66fc99e Initial load
duke
parents:
diff changeset
40 "If +ZapDeadCompiledLocals, " \
a61af66fc99e Initial load
duke
parents:
diff changeset
41 "skip this many before really doing it") \
a61af66fc99e Initial load
duke
parents:
diff changeset
42 \
a61af66fc99e Initial load
duke
parents:
diff changeset
43 notproduct(intx, ZapDeadCompiledLocalsLast, -1, \
a61af66fc99e Initial load
duke
parents:
diff changeset
44 "If +ZapDeadCompiledLocals, " \
a61af66fc99e Initial load
duke
parents:
diff changeset
45 "do this many after skipping (incl. skip count, -1 = all)") \
a61af66fc99e Initial load
duke
parents:
diff changeset
46 \
a61af66fc99e Initial load
duke
parents:
diff changeset
47 develop(intx, OptoPrologueNops, 0, \
a61af66fc99e Initial load
duke
parents:
diff changeset
48 "Insert this many extra nop instructions " \
a61af66fc99e Initial load
duke
parents:
diff changeset
49 "in the prologue of every nmethod") \
a61af66fc99e Initial load
duke
parents:
diff changeset
50 \
a61af66fc99e Initial load
duke
parents:
diff changeset
51 product_pd(intx, InteriorEntryAlignment, \
a61af66fc99e Initial load
duke
parents:
diff changeset
52 "Code alignment for interior entry points " \
a61af66fc99e Initial load
duke
parents:
diff changeset
53 "in generated code (in bytes)") \
a61af66fc99e Initial load
duke
parents:
diff changeset
54 \
a61af66fc99e Initial load
duke
parents:
diff changeset
55 product(intx, MaxLoopPad, (OptoLoopAlignment-1), \
a61af66fc99e Initial load
duke
parents:
diff changeset
56 "Align a loop if padding size in bytes is less or equal to this value") \
a61af66fc99e Initial load
duke
parents:
diff changeset
57 \
a61af66fc99e Initial load
duke
parents:
diff changeset
58 product(intx, NumberOfLoopInstrToAlign, 4, \
a61af66fc99e Initial load
duke
parents:
diff changeset
59 "Number of first instructions in a loop to align") \
a61af66fc99e Initial load
duke
parents:
diff changeset
60 \
a61af66fc99e Initial load
duke
parents:
diff changeset
61 notproduct(intx, IndexSetWatch, 0, \
a61af66fc99e Initial load
duke
parents:
diff changeset
62 "Trace all operations on this IndexSet (-1 means all, 0 none)") \
a61af66fc99e Initial load
duke
parents:
diff changeset
63 \
a61af66fc99e Initial load
duke
parents:
diff changeset
64 develop(intx, OptoNodeListSize, 4, \
a61af66fc99e Initial load
duke
parents:
diff changeset
65 "Starting allocation size of Node_List data structures") \
a61af66fc99e Initial load
duke
parents:
diff changeset
66 \
a61af66fc99e Initial load
duke
parents:
diff changeset
67 develop(intx, OptoBlockListSize, 8, \
a61af66fc99e Initial load
duke
parents:
diff changeset
68 "Starting allocation size of Block_List data structures") \
a61af66fc99e Initial load
duke
parents:
diff changeset
69 \
a61af66fc99e Initial load
duke
parents:
diff changeset
70 develop(intx, OptoPeepholeAt, -1, \
a61af66fc99e Initial load
duke
parents:
diff changeset
71 "Apply peephole optimizations to this peephole rule") \
a61af66fc99e Initial load
duke
parents:
diff changeset
72 \
a61af66fc99e Initial load
duke
parents:
diff changeset
73 notproduct(bool, PrintIdeal, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
74 "Print ideal graph before code generation") \
a61af66fc99e Initial load
duke
parents:
diff changeset
75 \
a61af66fc99e Initial load
duke
parents:
diff changeset
76 notproduct(bool, PrintOpto, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
77 "Print compiler2 attempts") \
a61af66fc99e Initial load
duke
parents:
diff changeset
78 \
a61af66fc99e Initial load
duke
parents:
diff changeset
79 notproduct(bool, PrintOptoInlining, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
80 "Print compiler2 inlining decisions") \
a61af66fc99e Initial load
duke
parents:
diff changeset
81 \
a61af66fc99e Initial load
duke
parents:
diff changeset
82 notproduct(bool, VerifyOpto, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
83 "Apply more time consuming verification during compilation") \
a61af66fc99e Initial load
duke
parents:
diff changeset
84 \
a61af66fc99e Initial load
duke
parents:
diff changeset
85 notproduct(bool, VerifyOptoOopOffsets, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
86 "Check types of base addresses in field references") \
a61af66fc99e Initial load
duke
parents:
diff changeset
87 \
a61af66fc99e Initial load
duke
parents:
diff changeset
88 develop(bool, IdealizedNumerics, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
89 "Check performance difference allowing FP " \
a61af66fc99e Initial load
duke
parents:
diff changeset
90 "associativity and commutativity...") \
a61af66fc99e Initial load
duke
parents:
diff changeset
91 \
a61af66fc99e Initial load
duke
parents:
diff changeset
92 develop(bool, OptoBreakpoint, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
93 "insert breakpoint at method entry") \
a61af66fc99e Initial load
duke
parents:
diff changeset
94 \
a61af66fc99e Initial load
duke
parents:
diff changeset
95 notproduct(bool, OptoBreakpointOSR, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
96 "insert breakpoint at osr method entry") \
a61af66fc99e Initial load
duke
parents:
diff changeset
97 \
a61af66fc99e Initial load
duke
parents:
diff changeset
98 notproduct(intx, BreakAtNode, 0, \
a61af66fc99e Initial load
duke
parents:
diff changeset
99 "Break at construction of this Node (either _idx or _debug_idx)") \
a61af66fc99e Initial load
duke
parents:
diff changeset
100 \
a61af66fc99e Initial load
duke
parents:
diff changeset
101 notproduct(bool, OptoBreakpointC2R, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
102 "insert breakpoint at runtime stub entry") \
a61af66fc99e Initial load
duke
parents:
diff changeset
103 \
a61af66fc99e Initial load
duke
parents:
diff changeset
104 notproduct(bool, OptoNoExecute, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
105 "Attempt to parse and compile but do not execute generated code") \
a61af66fc99e Initial load
duke
parents:
diff changeset
106 \
a61af66fc99e Initial load
duke
parents:
diff changeset
107 notproduct(bool, PrintOptoStatistics, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
108 "Print New compiler statistics") \
a61af66fc99e Initial load
duke
parents:
diff changeset
109 \
a61af66fc99e Initial load
duke
parents:
diff changeset
110 notproduct(bool, PrintOptoAssembly, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
111 "Print New compiler assembly output") \
a61af66fc99e Initial load
duke
parents:
diff changeset
112 \
a61af66fc99e Initial load
duke
parents:
diff changeset
113 develop_pd(bool, OptoPeephole, \
a61af66fc99e Initial load
duke
parents:
diff changeset
114 "Apply peephole optimizations after register allocation") \
a61af66fc99e Initial load
duke
parents:
diff changeset
115 \
a61af66fc99e Initial load
duke
parents:
diff changeset
116 develop(bool, OptoRemoveUseless, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
117 "Remove useless nodes after parsing") \
a61af66fc99e Initial load
duke
parents:
diff changeset
118 \
a61af66fc99e Initial load
duke
parents:
diff changeset
119 notproduct(bool, PrintFrameConverterAssembly, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
120 "Print New compiler assembly output for frame converters") \
a61af66fc99e Initial load
duke
parents:
diff changeset
121 \
a61af66fc99e Initial load
duke
parents:
diff changeset
122 notproduct(bool, PrintParseStatistics, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
123 "Print nodes, transforms and new values made per bytecode parsed")\
a61af66fc99e Initial load
duke
parents:
diff changeset
124 \
a61af66fc99e Initial load
duke
parents:
diff changeset
125 notproduct(bool, PrintOptoPeephole, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
126 "Print New compiler peephole replacements") \
a61af66fc99e Initial load
duke
parents:
diff changeset
127 \
a61af66fc99e Initial load
duke
parents:
diff changeset
128 develop(bool, PrintCFGBlockFreq, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
129 "Print CFG block freqencies") \
a61af66fc99e Initial load
duke
parents:
diff changeset
130 \
a61af66fc99e Initial load
duke
parents:
diff changeset
131 develop(bool, TraceOptoParse, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
132 "Trace bytecode parse and control-flow merge") \
a61af66fc99e Initial load
duke
parents:
diff changeset
133 \
a61af66fc99e Initial load
duke
parents:
diff changeset
134 product_pd(intx, LoopUnrollLimit, \
a61af66fc99e Initial load
duke
parents:
diff changeset
135 "Unroll loop bodies with node count less than this") \
a61af66fc99e Initial load
duke
parents:
diff changeset
136 \
a61af66fc99e Initial load
duke
parents:
diff changeset
137 product(intx, LoopUnrollMin, 4, \
a61af66fc99e Initial load
duke
parents:
diff changeset
138 "Minimum number of unroll loop bodies before checking progress" \
a61af66fc99e Initial load
duke
parents:
diff changeset
139 "of rounds of unroll,optimize,..") \
a61af66fc99e Initial load
duke
parents:
diff changeset
140 \
a61af66fc99e Initial load
duke
parents:
diff changeset
141 develop(intx, UnrollLimitForProfileCheck, 1, \
a61af66fc99e Initial load
duke
parents:
diff changeset
142 "Don't use profile_trip_cnt() to restrict unrolling until " \
a61af66fc99e Initial load
duke
parents:
diff changeset
143 "unrolling would push the number of unrolled iterations above " \
a61af66fc99e Initial load
duke
parents:
diff changeset
144 "UnrollLimitForProfileCheck. A higher value allows more " \
a61af66fc99e Initial load
duke
parents:
diff changeset
145 "unrolling. Zero acts as a very large value." ) \
a61af66fc99e Initial load
duke
parents:
diff changeset
146 \
a61af66fc99e Initial load
duke
parents:
diff changeset
147 product(intx, MultiArrayExpandLimit, 6, \
a61af66fc99e Initial load
duke
parents:
diff changeset
148 "Maximum number of individual allocations in an inline-expanded " \
a61af66fc99e Initial load
duke
parents:
diff changeset
149 "multianewarray instruction") \
a61af66fc99e Initial load
duke
parents:
diff changeset
150 \
a61af66fc99e Initial load
duke
parents:
diff changeset
151 notproduct(bool, TraceProfileTripCount, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
152 "Trace profile loop trip count information") \
a61af66fc99e Initial load
duke
parents:
diff changeset
153 \
1172
b2b6a9bf6238 6894779: Loop Predication for Loop Optimizer in C2
cfang
parents: 1081
diff changeset
154 product(bool, UseLoopPredicate, true, \
b2b6a9bf6238 6894779: Loop Predication for Loop Optimizer in C2
cfang
parents: 1081
diff changeset
155 "Generate a predicate to select fast/slow loop versions") \
b2b6a9bf6238 6894779: Loop Predication for Loop Optimizer in C2
cfang
parents: 1081
diff changeset
156 \
b2b6a9bf6238 6894779: Loop Predication for Loop Optimizer in C2
cfang
parents: 1081
diff changeset
157 develop(bool, TraceLoopPredicate, false, \
b2b6a9bf6238 6894779: Loop Predication for Loop Optimizer in C2
cfang
parents: 1081
diff changeset
158 "Trace generation of loop predicates") \
b2b6a9bf6238 6894779: Loop Predication for Loop Optimizer in C2
cfang
parents: 1081
diff changeset
159 \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
160 develop(bool, OptoCoalesce, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
161 "Use Conservative Copy Coalescing in the Register Allocator") \
a61af66fc99e Initial load
duke
parents:
diff changeset
162 \
a61af66fc99e Initial load
duke
parents:
diff changeset
163 develop(bool, UseUniqueSubclasses, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
164 "Narrow an abstract reference to the unique concrete subclass") \
a61af66fc99e Initial load
duke
parents:
diff changeset
165 \
a61af66fc99e Initial load
duke
parents:
diff changeset
166 develop(bool, UseExactTypes, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
167 "Use exact types to eliminate array store checks and v-calls") \
a61af66fc99e Initial load
duke
parents:
diff changeset
168 \
a61af66fc99e Initial load
duke
parents:
diff changeset
169 product(intx, TrackedInitializationLimit, 50, \
a61af66fc99e Initial load
duke
parents:
diff changeset
170 "When initializing fields, track up to this many words") \
a61af66fc99e Initial load
duke
parents:
diff changeset
171 \
a61af66fc99e Initial load
duke
parents:
diff changeset
172 product(bool, ReduceFieldZeroing, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
173 "When initializing fields, try to avoid needless zeroing") \
a61af66fc99e Initial load
duke
parents:
diff changeset
174 \
a61af66fc99e Initial load
duke
parents:
diff changeset
175 product(bool, ReduceInitialCardMarks, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
176 "When initializing fields, try to avoid needless card marks") \
a61af66fc99e Initial load
duke
parents:
diff changeset
177 \
a61af66fc99e Initial load
duke
parents:
diff changeset
178 product(bool, ReduceBulkZeroing, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
179 "When bulk-initializing, try to avoid needless zeroing") \
a61af66fc99e Initial load
duke
parents:
diff changeset
180 \
a61af66fc99e Initial load
duke
parents:
diff changeset
181 develop_pd(intx, RegisterCostAreaRatio, \
a61af66fc99e Initial load
duke
parents:
diff changeset
182 "Spill selection in reg allocator: scale area by (X/64K) before " \
a61af66fc99e Initial load
duke
parents:
diff changeset
183 "adding cost") \
a61af66fc99e Initial load
duke
parents:
diff changeset
184 \
a61af66fc99e Initial load
duke
parents:
diff changeset
185 develop_pd(bool, UseCISCSpill, \
a61af66fc99e Initial load
duke
parents:
diff changeset
186 "Use ADLC supplied cisc instructions during allocation") \
a61af66fc99e Initial load
duke
parents:
diff changeset
187 \
a61af66fc99e Initial load
duke
parents:
diff changeset
188 notproduct(bool, VerifyGraphEdges , false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
189 "Verify Bi-directional Edges") \
a61af66fc99e Initial load
duke
parents:
diff changeset
190 \
a61af66fc99e Initial load
duke
parents:
diff changeset
191 notproduct(bool, VerifyDUIterators, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
192 "Verify the safety of all iterations of Bi-directional Edges") \
a61af66fc99e Initial load
duke
parents:
diff changeset
193 \
a61af66fc99e Initial load
duke
parents:
diff changeset
194 notproduct(bool, VerifyHashTableKeys, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
195 "Verify the immutability of keys in the VN hash tables") \
a61af66fc99e Initial load
duke
parents:
diff changeset
196 \
550
96964ebdb154 6782232: assert("CreateEx must be first instruction in block" )
kvn
parents: 434
diff changeset
197 notproduct(bool, VerifyRegisterAllocator , false, \
96964ebdb154 6782232: assert("CreateEx must be first instruction in block" )
kvn
parents: 434
diff changeset
198 "Verify Register Allocator") \
96964ebdb154 6782232: assert("CreateEx must be first instruction in block" )
kvn
parents: 434
diff changeset
199 \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
200 develop_pd(intx, FLOATPRESSURE, \
a61af66fc99e Initial load
duke
parents:
diff changeset
201 "Number of float LRG's that constitute high register pressure") \
a61af66fc99e Initial load
duke
parents:
diff changeset
202 \
a61af66fc99e Initial load
duke
parents:
diff changeset
203 develop_pd(intx, INTPRESSURE, \
a61af66fc99e Initial load
duke
parents:
diff changeset
204 "Number of integer LRG's that constitute high register pressure") \
a61af66fc99e Initial load
duke
parents:
diff changeset
205 \
a61af66fc99e Initial load
duke
parents:
diff changeset
206 notproduct(bool, TraceOptoPipelining, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
207 "Trace pipelining information") \
a61af66fc99e Initial load
duke
parents:
diff changeset
208 \
a61af66fc99e Initial load
duke
parents:
diff changeset
209 notproduct(bool, TraceOptoOutput, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
210 "Trace pipelining information") \
a61af66fc99e Initial load
duke
parents:
diff changeset
211 \
a61af66fc99e Initial load
duke
parents:
diff changeset
212 product_pd(bool, OptoScheduling, \
a61af66fc99e Initial load
duke
parents:
diff changeset
213 "Instruction Scheduling after register allocation") \
a61af66fc99e Initial load
duke
parents:
diff changeset
214 \
a61af66fc99e Initial load
duke
parents:
diff changeset
215 product(bool, PartialPeelLoop, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
216 "Partial peel (rotate) loops") \
a61af66fc99e Initial load
duke
parents:
diff changeset
217 \
a61af66fc99e Initial load
duke
parents:
diff changeset
218 product(intx, PartialPeelNewPhiDelta, 0, \
a61af66fc99e Initial load
duke
parents:
diff changeset
219 "Additional phis that can be created by partial peeling") \
a61af66fc99e Initial load
duke
parents:
diff changeset
220 \
a61af66fc99e Initial load
duke
parents:
diff changeset
221 notproduct(bool, TracePartialPeeling, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
222 "Trace partial peeling (loop rotation) information") \
a61af66fc99e Initial load
duke
parents:
diff changeset
223 \
a61af66fc99e Initial load
duke
parents:
diff changeset
224 product(bool, PartialPeelAtUnsignedTests, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
225 "Partial peel at unsigned tests if no signed test exists") \
a61af66fc99e Initial load
duke
parents:
diff changeset
226 \
a61af66fc99e Initial load
duke
parents:
diff changeset
227 product(bool, ReassociateInvariants, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
228 "Enable reassociation of expressions with loop invariants.") \
a61af66fc99e Initial load
duke
parents:
diff changeset
229 \
a61af66fc99e Initial load
duke
parents:
diff changeset
230 product(bool, LoopUnswitching, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
231 "Enable loop unswitching (a form of invariant test hoisting)") \
a61af66fc99e Initial load
duke
parents:
diff changeset
232 \
a61af66fc99e Initial load
duke
parents:
diff changeset
233 notproduct(bool, TraceLoopUnswitching, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
234 "Trace loop unswitching") \
a61af66fc99e Initial load
duke
parents:
diff changeset
235 \
a61af66fc99e Initial load
duke
parents:
diff changeset
236 product(bool, UseSuperWord, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
237 "Transform scalar operations into superword operations") \
a61af66fc99e Initial load
duke
parents:
diff changeset
238 \
a61af66fc99e Initial load
duke
parents:
diff changeset
239 develop(bool, SuperWordRTDepCheck, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
240 "Enable runtime dependency checks.") \
a61af66fc99e Initial load
duke
parents:
diff changeset
241 \
a61af66fc99e Initial load
duke
parents:
diff changeset
242 product(bool, TraceSuperWord, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
243 "Trace superword transforms") \
a61af66fc99e Initial load
duke
parents:
diff changeset
244 \
a61af66fc99e Initial load
duke
parents:
diff changeset
245 product_pd(bool, OptoBundling, \
a61af66fc99e Initial load
duke
parents:
diff changeset
246 "Generate nops to fill i-cache lines") \
a61af66fc99e Initial load
duke
parents:
diff changeset
247 \
a61af66fc99e Initial load
duke
parents:
diff changeset
248 product_pd(intx, ConditionalMoveLimit, \
a61af66fc99e Initial load
duke
parents:
diff changeset
249 "Limit of ops to make speculative when using CMOVE") \
a61af66fc99e Initial load
duke
parents:
diff changeset
250 \
a61af66fc99e Initial load
duke
parents:
diff changeset
251 /* Set BranchOnRegister == false. See 4965987. */ \
a61af66fc99e Initial load
duke
parents:
diff changeset
252 product(bool, BranchOnRegister, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
253 "Use Sparc V9 branch-on-register opcodes") \
a61af66fc99e Initial load
duke
parents:
diff changeset
254 \
a61af66fc99e Initial load
duke
parents:
diff changeset
255 develop(bool, SparcV9RegsHiBitsZero, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
256 "Assume Sparc V9 I&L registers on V8+ systems are zero-extended") \
a61af66fc99e Initial load
duke
parents:
diff changeset
257 \
a61af66fc99e Initial load
duke
parents:
diff changeset
258 develop(intx, PrintIdealGraphLevel, 0, \
a61af66fc99e Initial load
duke
parents:
diff changeset
259 "Print ideal graph to XML file / network interface. " \
a61af66fc99e Initial load
duke
parents:
diff changeset
260 "By default attempts to connect to the visualizer on a socket.") \
a61af66fc99e Initial load
duke
parents:
diff changeset
261 \
a61af66fc99e Initial load
duke
parents:
diff changeset
262 develop(intx, PrintIdealGraphPort, 4444, \
a61af66fc99e Initial load
duke
parents:
diff changeset
263 "Ideal graph printer to network port") \
a61af66fc99e Initial load
duke
parents:
diff changeset
264 \
434
de78b80cedec 6772413: code cleanup
kvn
parents: 420
diff changeset
265 notproduct(ccstr, PrintIdealGraphAddress, "127.0.0.1", \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
266 "IP address to connect to visualizer") \
a61af66fc99e Initial load
duke
parents:
diff changeset
267 \
434
de78b80cedec 6772413: code cleanup
kvn
parents: 420
diff changeset
268 notproduct(ccstr, PrintIdealGraphFile, NULL, \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
269 "File to dump ideal graph to. If set overrides the " \
a61af66fc99e Initial load
duke
parents:
diff changeset
270 "use of the network") \
a61af66fc99e Initial load
duke
parents:
diff changeset
271 \
a61af66fc99e Initial load
duke
parents:
diff changeset
272 product(bool, UseOldInlining, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
273 "Enable the 1.3 inlining strategy") \
a61af66fc99e Initial load
duke
parents:
diff changeset
274 \
a61af66fc99e Initial load
duke
parents:
diff changeset
275 product(bool, UseBimorphicInlining, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
276 "Profiling based inlining for two receivers") \
a61af66fc99e Initial load
duke
parents:
diff changeset
277 \
a61af66fc99e Initial load
duke
parents:
diff changeset
278 product(bool, UseOnlyInlinedBimorphic, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
279 "Don't use BimorphicInlining if can't inline a second method") \
a61af66fc99e Initial load
duke
parents:
diff changeset
280 \
a61af66fc99e Initial load
duke
parents:
diff changeset
281 product(bool, InsertMemBarAfterArraycopy, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
282 "Insert memory barrier after arraycopy call") \
a61af66fc99e Initial load
duke
parents:
diff changeset
283 \
1685
0e35fa8ebccd 6973963: SEGV in ciBlock::start_bci() with EA
kvn
parents: 1552
diff changeset
284 develop(bool, SubsumeLoads, true, \
0e35fa8ebccd 6973963: SEGV in ciBlock::start_bci() with EA
kvn
parents: 1552
diff changeset
285 "Attempt to compile while subsuming loads into machine instructions.") \
0e35fa8ebccd 6973963: SEGV in ciBlock::start_bci() with EA
kvn
parents: 1552
diff changeset
286 \
0e35fa8ebccd 6973963: SEGV in ciBlock::start_bci() with EA
kvn
parents: 1552
diff changeset
287 develop(bool, StressRecompilation, false, \
0e35fa8ebccd 6973963: SEGV in ciBlock::start_bci() with EA
kvn
parents: 1552
diff changeset
288 "Recompile each compiled method without subsuming loads or escape analysis.") \
0e35fa8ebccd 6973963: SEGV in ciBlock::start_bci() with EA
kvn
parents: 1552
diff changeset
289 \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
290 /* controls for tier 1 compilations */ \
a61af66fc99e Initial load
duke
parents:
diff changeset
291 \
a61af66fc99e Initial load
duke
parents:
diff changeset
292 develop(bool, Tier1CountInvocations, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
293 "Generate code, during tier 1, to update invocation counter") \
a61af66fc99e Initial load
duke
parents:
diff changeset
294 \
a61af66fc99e Initial load
duke
parents:
diff changeset
295 product(intx, Tier1Inline, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
296 "enable inlining during tier 1") \
a61af66fc99e Initial load
duke
parents:
diff changeset
297 \
a61af66fc99e Initial load
duke
parents:
diff changeset
298 product(intx, Tier1MaxInlineSize, 8, \
a61af66fc99e Initial load
duke
parents:
diff changeset
299 "maximum bytecode size of a method to be inlined, during tier 1") \
a61af66fc99e Initial load
duke
parents:
diff changeset
300 \
a61af66fc99e Initial load
duke
parents:
diff changeset
301 product(intx, Tier1FreqInlineSize, 35, \
a61af66fc99e Initial load
duke
parents:
diff changeset
302 "max bytecode size of a frequent method to be inlined, tier 1") \
a61af66fc99e Initial load
duke
parents:
diff changeset
303 \
a61af66fc99e Initial load
duke
parents:
diff changeset
304 develop(intx, ImplicitNullCheckThreshold, 3, \
a61af66fc99e Initial load
duke
parents:
diff changeset
305 "Don't do implicit null checks if NPE's in a method exceeds limit") \
a61af66fc99e Initial load
duke
parents:
diff changeset
306 \
a61af66fc99e Initial load
duke
parents:
diff changeset
307 /* controls for loop optimization */ \
a61af66fc99e Initial load
duke
parents:
diff changeset
308 product(intx, Tier1LoopOptsCount, 0, \
a61af66fc99e Initial load
duke
parents:
diff changeset
309 "Set level of loop optimization for tier 1 compiles") \
a61af66fc99e Initial load
duke
parents:
diff changeset
310 \
a61af66fc99e Initial load
duke
parents:
diff changeset
311 product(intx, LoopOptsCount, 43, \
a61af66fc99e Initial load
duke
parents:
diff changeset
312 "Set level of loop optimization for tier 1 compiles") \
a61af66fc99e Initial load
duke
parents:
diff changeset
313 \
a61af66fc99e Initial load
duke
parents:
diff changeset
314 /* controls for heat-based inlining */ \
a61af66fc99e Initial load
duke
parents:
diff changeset
315 \
a61af66fc99e Initial load
duke
parents:
diff changeset
316 develop(intx, NodeCountInliningCutoff, 18000, \
a61af66fc99e Initial load
duke
parents:
diff changeset
317 "If parser node generation exceeds limit stop inlining") \
a61af66fc99e Initial load
duke
parents:
diff changeset
318 \
a61af66fc99e Initial load
duke
parents:
diff changeset
319 develop(intx, NodeCountInliningStep, 1000, \
a61af66fc99e Initial load
duke
parents:
diff changeset
320 "Target size of warm calls inlined between optimization passes") \
a61af66fc99e Initial load
duke
parents:
diff changeset
321 \
a61af66fc99e Initial load
duke
parents:
diff changeset
322 develop(bool, InlineWarmCalls, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
323 "Use a heat-based priority queue to govern inlining") \
a61af66fc99e Initial load
duke
parents:
diff changeset
324 \
a61af66fc99e Initial load
duke
parents:
diff changeset
325 develop(intx, HotCallCountThreshold, 999999, \
a61af66fc99e Initial load
duke
parents:
diff changeset
326 "large numbers of calls (per method invocation) force hotness") \
a61af66fc99e Initial load
duke
parents:
diff changeset
327 \
a61af66fc99e Initial load
duke
parents:
diff changeset
328 develop(intx, HotCallProfitThreshold, 999999, \
a61af66fc99e Initial load
duke
parents:
diff changeset
329 "highly profitable inlining opportunities force hotness") \
a61af66fc99e Initial load
duke
parents:
diff changeset
330 \
a61af66fc99e Initial load
duke
parents:
diff changeset
331 develop(intx, HotCallTrivialWork, -1, \
a61af66fc99e Initial load
duke
parents:
diff changeset
332 "trivial execution time (no larger than this) forces hotness") \
a61af66fc99e Initial load
duke
parents:
diff changeset
333 \
a61af66fc99e Initial load
duke
parents:
diff changeset
334 develop(intx, HotCallTrivialSize, -1, \
a61af66fc99e Initial load
duke
parents:
diff changeset
335 "trivial methods (no larger than this) force calls to be hot") \
a61af66fc99e Initial load
duke
parents:
diff changeset
336 \
a61af66fc99e Initial load
duke
parents:
diff changeset
337 develop(intx, WarmCallMinCount, -1, \
a61af66fc99e Initial load
duke
parents:
diff changeset
338 "number of calls (per method invocation) to enable inlining") \
a61af66fc99e Initial load
duke
parents:
diff changeset
339 \
a61af66fc99e Initial load
duke
parents:
diff changeset
340 develop(intx, WarmCallMinProfit, -1, \
a61af66fc99e Initial load
duke
parents:
diff changeset
341 "number of calls (per method invocation) to enable inlining") \
a61af66fc99e Initial load
duke
parents:
diff changeset
342 \
a61af66fc99e Initial load
duke
parents:
diff changeset
343 develop(intx, WarmCallMaxWork, 999999, \
a61af66fc99e Initial load
duke
parents:
diff changeset
344 "execution time of the largest inlinable method") \
a61af66fc99e Initial load
duke
parents:
diff changeset
345 \
a61af66fc99e Initial load
duke
parents:
diff changeset
346 develop(intx, WarmCallMaxSize, 999999, \
a61af66fc99e Initial load
duke
parents:
diff changeset
347 "size of the largest inlinable method") \
a61af66fc99e Initial load
duke
parents:
diff changeset
348 \
a61af66fc99e Initial load
duke
parents:
diff changeset
349 product(intx, MaxNodeLimit, 65000, \
a61af66fc99e Initial load
duke
parents:
diff changeset
350 "Maximum number of nodes") \
a61af66fc99e Initial load
duke
parents:
diff changeset
351 \
a61af66fc99e Initial load
duke
parents:
diff changeset
352 product(intx, NodeLimitFudgeFactor, 1000, \
a61af66fc99e Initial load
duke
parents:
diff changeset
353 "Fudge Factor for certain optimizations") \
a61af66fc99e Initial load
duke
parents:
diff changeset
354 \
a61af66fc99e Initial load
duke
parents:
diff changeset
355 product(bool, UseJumpTables, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
356 "Use JumpTables instead of a binary search tree for switches") \
a61af66fc99e Initial load
duke
parents:
diff changeset
357 \
a61af66fc99e Initial load
duke
parents:
diff changeset
358 product(bool, UseDivMod, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
359 "Use combined DivMod instruction if available") \
a61af66fc99e Initial load
duke
parents:
diff changeset
360 \
a61af66fc99e Initial load
duke
parents:
diff changeset
361 product(intx, MinJumpTableSize, 18, \
a61af66fc99e Initial load
duke
parents:
diff changeset
362 "Minimum number of targets in a generated jump table") \
a61af66fc99e Initial load
duke
parents:
diff changeset
363 \
a61af66fc99e Initial load
duke
parents:
diff changeset
364 product(intx, MaxJumpTableSize, 65000, \
a61af66fc99e Initial load
duke
parents:
diff changeset
365 "Maximum number of targets in a generated jump table") \
a61af66fc99e Initial load
duke
parents:
diff changeset
366 \
a61af66fc99e Initial load
duke
parents:
diff changeset
367 product(intx, MaxJumpTableSparseness, 5, \
a61af66fc99e Initial load
duke
parents:
diff changeset
368 "Maximum sparseness for jumptables") \
a61af66fc99e Initial load
duke
parents:
diff changeset
369 \
a61af66fc99e Initial load
duke
parents:
diff changeset
370 product(bool, EliminateLocks, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
371 "Coarsen locks when possible") \
a61af66fc99e Initial load
duke
parents:
diff changeset
372 \
a61af66fc99e Initial load
duke
parents:
diff changeset
373 notproduct(bool, PrintLockStatistics, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
374 "Print precise statistics on the dynamic lock usage") \
a61af66fc99e Initial load
duke
parents:
diff changeset
375 \
a61af66fc99e Initial load
duke
parents:
diff changeset
376 diagnostic(bool, PrintPreciseBiasedLockingStatistics, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
377 "Print per-lock-site statistics of biased locking in JVM") \
a61af66fc99e Initial load
duke
parents:
diff changeset
378 \
a61af66fc99e Initial load
duke
parents:
diff changeset
379 notproduct(bool, PrintEliminateLocks, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
380 "Print out when locks are eliminated") \
a61af66fc99e Initial load
duke
parents:
diff changeset
381 \
17
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
382 diagnostic(bool, EliminateAutoBox, false, \
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
383 "Private flag to control optimizations for autobox elimination") \
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
384 \
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
385 product(intx, AutoBoxCacheMax, 128, \
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
386 "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
387 \
930
357d4e2eb4dd 6873799: enable escape analysis by default
kvn
parents: 673
diff changeset
388 product(bool, DoEscapeAnalysis, true, \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
389 "Perform escape analysis") \
a61af66fc99e Initial load
duke
parents:
diff changeset
390 \
a61af66fc99e Initial load
duke
parents:
diff changeset
391 notproduct(bool, PrintEscapeAnalysis, false, \
a61af66fc99e Initial load
duke
parents:
diff changeset
392 "Print the results of escape analysis") \
a61af66fc99e Initial load
duke
parents:
diff changeset
393 \
a61af66fc99e Initial load
duke
parents:
diff changeset
394 product(bool, EliminateAllocations, true, \
a61af66fc99e Initial load
duke
parents:
diff changeset
395 "Use escape analysis to eliminate allocations") \
a61af66fc99e Initial load
duke
parents:
diff changeset
396 \
65
99269dbf4ba8 6674588: (Escape Analysis) Improve Escape Analysis code
kvn
parents: 17
diff changeset
397 notproduct(bool, PrintEliminateAllocations, false, \
99269dbf4ba8 6674588: (Escape Analysis) Improve Escape Analysis code
kvn
parents: 17
diff changeset
398 "Print out when allocations are eliminated") \
99269dbf4ba8 6674588: (Escape Analysis) Improve Escape Analysis code
kvn
parents: 17
diff changeset
399 \
99269dbf4ba8 6674588: (Escape Analysis) Improve Escape Analysis code
kvn
parents: 17
diff changeset
400 product(intx, EliminateAllocationArraySizeLimit, 64, \
99269dbf4ba8 6674588: (Escape Analysis) Improve Escape Analysis code
kvn
parents: 17
diff changeset
401 "Array size (number of elements) limit for scalar replacement") \
99269dbf4ba8 6674588: (Escape Analysis) Improve Escape Analysis code
kvn
parents: 17
diff changeset
402 \
673
fbc12e71c476 6810845: Performance regression in mpegaudio on x64
kvn
parents: 579
diff changeset
403 product(bool, UseOptoBiasInlining, true, \
420
a1980da045cc 6462850: generate biased locking code in C2 ideal graph
kvn
parents: 418
diff changeset
404 "Generate biased locking code in C2 ideal graph") \
a1980da045cc 6462850: generate biased locking code in C2 ideal graph
kvn
parents: 418
diff changeset
405 \
1081
bd12fff78df5 6904191: OptimizeStringConcat should be product instead of experimental
cfang
parents: 1080
diff changeset
406 product(bool, OptimizeStringConcat, false, \
1080
7c57aead6d3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 930
diff changeset
407 "Optimize the construction of Strings by StringBuilder") \
7c57aead6d3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 930
diff changeset
408 \
7c57aead6d3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 930
diff changeset
409 notproduct(bool, PrintOptimizeStringConcat, false, \
7c57aead6d3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 930
diff changeset
410 "Print information about transformations performed on Strings") \
7c57aead6d3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 930
diff changeset
411 \
253
b0fe4deeb9fb 6726999: nsk/stress/jck12a/jck12a010 assert(n != null,"Bad immediate dominator info.")
kvn
parents: 245
diff changeset
412 product(intx, ValueSearchLimit, 1000, \
b0fe4deeb9fb 6726999: nsk/stress/jck12a/jck12a010 assert(n != null,"Bad immediate dominator info.")
kvn
parents: 245
diff changeset
413 "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
414 \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
415 product(intx, MaxLabelRootDepth, 1100, \
a61af66fc99e Initial load
duke
parents:
diff changeset
416 "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
417 \
723be81c1212 6701887: JDK7 server VM in endless loop in Node::dominates
kvn
parents: 65
diff changeset
418 diagnostic(intx, DominatorSearchLimit, 1000, \
723be81c1212 6701887: JDK7 server VM in endless loop in Node::dominates
kvn
parents: 65
diff changeset
419 "Iterations limit in Node::dominates") \
418
72c5366e5d86 6743900: frequency based block layout
rasbold
parents: 257
diff changeset
420 \
72c5366e5d86 6743900: frequency based block layout
rasbold
parents: 257
diff changeset
421 product(bool, BlockLayoutByFrequency, true, \
72c5366e5d86 6743900: frequency based block layout
rasbold
parents: 257
diff changeset
422 "Use edge frequencies to drive block ordering") \
72c5366e5d86 6743900: frequency based block layout
rasbold
parents: 257
diff changeset
423 \
72c5366e5d86 6743900: frequency based block layout
rasbold
parents: 257
diff changeset
424 product(intx, BlockLayoutMinDiamondPercentage, 20, \
72c5366e5d86 6743900: frequency based block layout
rasbold
parents: 257
diff changeset
425 "Miniumum %% of a successor (predecessor) for which block layout "\
72c5366e5d86 6743900: frequency based block layout
rasbold
parents: 257
diff changeset
426 "a will allow a fork (join) in a single chain") \
72c5366e5d86 6743900: frequency based block layout
rasbold
parents: 257
diff changeset
427 \
673
fbc12e71c476 6810845: Performance regression in mpegaudio on x64
kvn
parents: 579
diff changeset
428 product(bool, BlockLayoutRotateLoops, true, \
418
72c5366e5d86 6743900: frequency based block layout
rasbold
parents: 257
diff changeset
429 "Allow back branches to be fall throughs in the block layour") \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
430
1080
7c57aead6d3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 930
diff changeset
431 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)