Mercurial > hg > truffle
annotate src/share/vm/opto/c2_globals.hpp @ 9126:bc26f978b0ce
HotSpotResolvedObjectType: implement hasFinalizeSubclass() correctly
don't use the (wrong) cached value, but ask the runtime on each request.
Fixes regression on xml.* benchmarks @ specjvm2008. The problem was:
After the constructor of Object was deoptimized due to an assumption violation,
it was recompiled again after some time. However, on recompilation, the value
of hasFinalizeSubclass for the class was not updated and it was compiled again
with a, now wrong, assumption, which then triggers deoptimization again.
This was repeated until it hit the recompilation limit (defined by
PerMethodRecompilationCutoff), and therefore only executed by the interpreter
from now on, causing the performance regression.
author | Bernhard Urban <bernhard.urban@jku.at> |
---|---|
date | Mon, 15 Apr 2013 19:54:58 +0200 |
parents | 571076d3c79d |
children | 6f3fd5150b67 |
rev | line source |
---|---|
0 | 1 /* |
5948
ee138854b3a6
7147744: CTW: assert(false) failed: infinite EA connection graph build
kvn
parents:
4777
diff
changeset
|
2 * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. |
0 | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | |
5 * This code is free software; you can redistribute it and/or modify it | |
6 * under the terms of the GNU General Public License version 2 only, as | |
7 * published by the Free Software Foundation. | |
8 * | |
9 * This code is distributed in the hope that it will be useful, but WITHOUT | |
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
12 * version 2 for more details (a copy is included in the LICENSE file that | |
13 * accompanied this code). | |
14 * | |
15 * You should have received a copy of the GNU General Public License version | |
16 * 2 along with this work; if not, write to the Free Software Foundation, | |
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
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 | 22 * |
23 */ | |
24 | |
1972 | 25 #ifndef SHARE_VM_OPTO_C2_GLOBALS_HPP |
26 #define SHARE_VM_OPTO_C2_GLOBALS_HPP | |
27 | |
28 #include "runtime/globals.hpp" | |
29 #ifdef TARGET_ARCH_x86 | |
30 # include "c2_globals_x86.hpp" | |
31 #endif | |
32 #ifdef TARGET_ARCH_sparc | |
33 # include "c2_globals_sparc.hpp" | |
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 |
1972 | 38 #ifdef TARGET_OS_FAMILY_linux |
39 # include "c2_globals_linux.hpp" | |
40 #endif | |
41 #ifdef TARGET_OS_FAMILY_solaris | |
42 # include "c2_globals_solaris.hpp" | |
43 #endif | |
44 #ifdef TARGET_OS_FAMILY_windows | |
45 # include "c2_globals_windows.hpp" | |
46 #endif | |
3960 | 47 #ifdef TARGET_OS_FAMILY_bsd |
48 # include "c2_globals_bsd.hpp" | |
49 #endif | |
1972 | 50 |
0 | 51 // |
52 // Defines all globals flags used by the server compiler. | |
53 // | |
54 | |
1080
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
930
diff
changeset
|
55 #define C2_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct) \ |
0 | 56 \ |
8691
571076d3c79d
8009120: Fuzz instruction scheduling in HotSpot compilers
shade
parents:
8048
diff
changeset
|
57 develop(bool, StressLCM, false, \ |
571076d3c79d
8009120: Fuzz instruction scheduling in HotSpot compilers
shade
parents:
8048
diff
changeset
|
58 "Randomize instruction scheduling in LCM") \ |
571076d3c79d
8009120: Fuzz instruction scheduling in HotSpot compilers
shade
parents:
8048
diff
changeset
|
59 \ |
571076d3c79d
8009120: Fuzz instruction scheduling in HotSpot compilers
shade
parents:
8048
diff
changeset
|
60 develop(bool, StressGCM, false, \ |
571076d3c79d
8009120: Fuzz instruction scheduling in HotSpot compilers
shade
parents:
8048
diff
changeset
|
61 "Randomize instruction scheduling in GCM") \ |
571076d3c79d
8009120: Fuzz instruction scheduling in HotSpot compilers
shade
parents:
8048
diff
changeset
|
62 \ |
0 | 63 notproduct(intx, CompileZapFirst, 0, \ |
64 "If +ZapDeadCompiledLocals, " \ | |
65 "skip this many before compiling in zap calls") \ | |
66 \ | |
67 notproduct(intx, CompileZapLast, -1, \ | |
68 "If +ZapDeadCompiledLocals, " \ | |
69 "compile this many after skipping (incl. skip count, -1 = all)") \ | |
70 \ | |
71 notproduct(intx, ZapDeadCompiledLocalsFirst, 0, \ | |
72 "If +ZapDeadCompiledLocals, " \ | |
73 "skip this many before really doing it") \ | |
74 \ | |
75 notproduct(intx, ZapDeadCompiledLocalsLast, -1, \ | |
76 "If +ZapDeadCompiledLocals, " \ | |
77 "do this many after skipping (incl. skip count, -1 = all)") \ | |
78 \ | |
79 develop(intx, OptoPrologueNops, 0, \ | |
80 "Insert this many extra nop instructions " \ | |
81 "in the prologue of every nmethod") \ | |
82 \ | |
83 product_pd(intx, InteriorEntryAlignment, \ | |
84 "Code alignment for interior entry points " \ | |
85 "in generated code (in bytes)") \ | |
86 \ | |
87 product(intx, MaxLoopPad, (OptoLoopAlignment-1), \ | |
88 "Align a loop if padding size in bytes is less or equal to this value") \ | |
89 \ | |
6179
8c92982cbbc4
7119644: Increase superword's vector size up to 256 bits
kvn
parents:
5948
diff
changeset
|
90 product(intx, MaxVectorSize, 32, \ |
8c92982cbbc4
7119644: Increase superword's vector size up to 256 bits
kvn
parents:
5948
diff
changeset
|
91 "Max vector size in bytes, " \ |
8c92982cbbc4
7119644: Increase superword's vector size up to 256 bits
kvn
parents:
5948
diff
changeset
|
92 "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
|
93 \ |
6794 | 94 product(bool, AlignVector, true, \ |
6179
8c92982cbbc4
7119644: Increase superword's vector size up to 256 bits
kvn
parents:
5948
diff
changeset
|
95 "Perform vector store/load alignment in loop") \ |
8c92982cbbc4
7119644: Increase superword's vector size up to 256 bits
kvn
parents:
5948
diff
changeset
|
96 \ |
0 | 97 product(intx, NumberOfLoopInstrToAlign, 4, \ |
98 "Number of first instructions in a loop to align") \ | |
99 \ | |
100 notproduct(intx, IndexSetWatch, 0, \ | |
101 "Trace all operations on this IndexSet (-1 means all, 0 none)") \ | |
102 \ | |
103 develop(intx, OptoNodeListSize, 4, \ | |
104 "Starting allocation size of Node_List data structures") \ | |
105 \ | |
106 develop(intx, OptoBlockListSize, 8, \ | |
107 "Starting allocation size of Block_List data structures") \ | |
108 \ | |
109 develop(intx, OptoPeepholeAt, -1, \ | |
110 "Apply peephole optimizations to this peephole rule") \ | |
111 \ | |
112 notproduct(bool, PrintIdeal, false, \ | |
113 "Print ideal graph before code generation") \ | |
114 \ | |
115 notproduct(bool, PrintOpto, false, \ | |
116 "Print compiler2 attempts") \ | |
117 \ | |
118 notproduct(bool, PrintOptoInlining, false, \ | |
119 "Print compiler2 inlining decisions") \ | |
120 \ | |
121 notproduct(bool, VerifyOpto, false, \ | |
122 "Apply more time consuming verification during compilation") \ | |
123 \ | |
7196
2aff40cb4703
7092905: C2: Keep track of the number of dead nodes
bharadwaj
parents:
6895
diff
changeset
|
124 notproduct(bool, VerifyIdealNodeCount, false, \ |
2aff40cb4703
7092905: C2: Keep track of the number of dead nodes
bharadwaj
parents:
6895
diff
changeset
|
125 "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
|
126 \ |
2aff40cb4703
7092905: C2: Keep track of the number of dead nodes
bharadwaj
parents:
6895
diff
changeset
|
127 notproduct(bool, PrintIdealNodeCount, false, \ |
2aff40cb4703
7092905: C2: Keep track of the number of dead nodes
bharadwaj
parents:
6895
diff
changeset
|
128 "Print liveness counts of ideal nodes") \ |
2aff40cb4703
7092905: C2: Keep track of the number of dead nodes
bharadwaj
parents:
6895
diff
changeset
|
129 \ |
0 | 130 notproduct(bool, VerifyOptoOopOffsets, false, \ |
131 "Check types of base addresses in field references") \ | |
132 \ | |
133 develop(bool, IdealizedNumerics, false, \ | |
134 "Check performance difference allowing FP " \ | |
135 "associativity and commutativity...") \ | |
136 \ | |
137 develop(bool, OptoBreakpoint, false, \ | |
138 "insert breakpoint at method entry") \ | |
139 \ | |
140 notproduct(bool, OptoBreakpointOSR, false, \ | |
141 "insert breakpoint at osr method entry") \ | |
142 \ | |
143 notproduct(intx, BreakAtNode, 0, \ | |
144 "Break at construction of this Node (either _idx or _debug_idx)") \ | |
145 \ | |
146 notproduct(bool, OptoBreakpointC2R, false, \ | |
147 "insert breakpoint at runtime stub entry") \ | |
148 \ | |
149 notproduct(bool, OptoNoExecute, false, \ | |
150 "Attempt to parse and compile but do not execute generated code") \ | |
151 \ | |
152 notproduct(bool, PrintOptoStatistics, false, \ | |
153 "Print New compiler statistics") \ | |
154 \ | |
155 notproduct(bool, PrintOptoAssembly, false, \ | |
156 "Print New compiler assembly output") \ | |
157 \ | |
158 develop_pd(bool, OptoPeephole, \ | |
159 "Apply peephole optimizations after register allocation") \ | |
160 \ | |
161 develop(bool, OptoRemoveUseless, true, \ | |
162 "Remove useless nodes after parsing") \ | |
163 \ | |
164 notproduct(bool, PrintFrameConverterAssembly, false, \ | |
165 "Print New compiler assembly output for frame converters") \ | |
166 \ | |
167 notproduct(bool, PrintParseStatistics, false, \ | |
168 "Print nodes, transforms and new values made per bytecode parsed")\ | |
169 \ | |
170 notproduct(bool, PrintOptoPeephole, false, \ | |
171 "Print New compiler peephole replacements") \ | |
172 \ | |
173 develop(bool, PrintCFGBlockFreq, false, \ | |
174 "Print CFG block freqencies") \ | |
175 \ | |
176 develop(bool, TraceOptoParse, false, \ | |
177 "Trace bytecode parse and control-flow merge") \ | |
178 \ | |
179 product_pd(intx, LoopUnrollLimit, \ | |
180 "Unroll loop bodies with node count less than this") \ | |
181 \ | |
182 product(intx, LoopUnrollMin, 4, \ | |
183 "Minimum number of unroll loop bodies before checking progress" \ | |
184 "of rounds of unroll,optimize,..") \ | |
185 \ | |
186 develop(intx, UnrollLimitForProfileCheck, 1, \ | |
187 "Don't use profile_trip_cnt() to restrict unrolling until " \ | |
188 "unrolling would push the number of unrolled iterations above " \ | |
189 "UnrollLimitForProfileCheck. A higher value allows more " \ | |
190 "unrolling. Zero acts as a very large value." ) \ | |
191 \ | |
192 product(intx, MultiArrayExpandLimit, 6, \ | |
193 "Maximum number of individual allocations in an inline-expanded " \ | |
194 "multianewarray instruction") \ | |
195 \ | |
196 notproduct(bool, TraceProfileTripCount, false, \ | |
197 "Trace profile loop trip count information") \ | |
198 \ | |
1172 | 199 product(bool, UseLoopPredicate, true, \ |
200 "Generate a predicate to select fast/slow loop versions") \ | |
201 \ | |
202 develop(bool, TraceLoopPredicate, false, \ | |
203 "Trace generation of loop predicates") \ | |
204 \ | |
2383
9dc311b8473e
7008866: Missing loop predicate for loop with multiple entries
kvn
parents:
2192
diff
changeset
|
205 develop(bool, TraceLoopOpts, false, \ |
9dc311b8473e
7008866: Missing loop predicate for loop with multiple entries
kvn
parents:
2192
diff
changeset
|
206 "Trace executed loop optimizations") \ |
9dc311b8473e
7008866: Missing loop predicate for loop with multiple entries
kvn
parents:
2192
diff
changeset
|
207 \ |
3345 | 208 diagnostic(bool, LoopLimitCheck, true, \ |
209 "Generate a loop limits check for overflow") \ | |
210 \ | |
211 develop(bool, TraceLoopLimitCheck, false, \ | |
212 "Trace generation of loop limits checks") \ | |
213 \ | |
214 diagnostic(bool, RangeLimitCheck, true, \ | |
215 "Additional overflow checks during range check elimination") \ | |
216 \ | |
217 develop(bool, TraceRangeLimitCheck, false, \ | |
218 "Trace additional overflow checks in RCE") \ | |
219 \ | |
220 diagnostic(bool, UnrollLimitCheck, true, \ | |
221 "Additional overflow checks during loop unroll") \ | |
222 \ | |
4039 | 223 product(bool, OptimizeFill, true, \ |
1763 | 224 "convert fill/copy loops into intrinsic") \ |
225 \ | |
226 develop(bool, TraceOptimizeFill, false, \ | |
227 "print detailed information about fill conversion") \ | |
228 \ | |
0 | 229 develop(bool, OptoCoalesce, true, \ |
230 "Use Conservative Copy Coalescing in the Register Allocator") \ | |
231 \ | |
232 develop(bool, UseUniqueSubclasses, true, \ | |
233 "Narrow an abstract reference to the unique concrete subclass") \ | |
234 \ | |
235 develop(bool, UseExactTypes, true, \ | |
236 "Use exact types to eliminate array store checks and v-calls") \ | |
237 \ | |
238 product(intx, TrackedInitializationLimit, 50, \ | |
239 "When initializing fields, track up to this many words") \ | |
240 \ | |
241 product(bool, ReduceFieldZeroing, true, \ | |
242 "When initializing fields, try to avoid needless zeroing") \ | |
243 \ | |
244 product(bool, ReduceInitialCardMarks, true, \ | |
245 "When initializing fields, try to avoid needless card marks") \ | |
246 \ | |
247 product(bool, ReduceBulkZeroing, true, \ | |
248 "When bulk-initializing, try to avoid needless zeroing") \ | |
249 \ | |
1730
f55c4f82ab9d
6978249: spill between cpu and fpu registers when those moves are fast
never
parents:
1685
diff
changeset
|
250 product(bool, UseFPUForSpilling, false, \ |
f55c4f82ab9d
6978249: spill between cpu and fpu registers when those moves are fast
never
parents:
1685
diff
changeset
|
251 "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
|
252 \ |
0 | 253 develop_pd(intx, RegisterCostAreaRatio, \ |
254 "Spill selection in reg allocator: scale area by (X/64K) before " \ | |
255 "adding cost") \ | |
256 \ | |
257 develop_pd(bool, UseCISCSpill, \ | |
258 "Use ADLC supplied cisc instructions during allocation") \ | |
259 \ | |
260 notproduct(bool, VerifyGraphEdges , false, \ | |
261 "Verify Bi-directional Edges") \ | |
262 \ | |
263 notproduct(bool, VerifyDUIterators, true, \ | |
264 "Verify the safety of all iterations of Bi-directional Edges") \ | |
265 \ | |
266 notproduct(bool, VerifyHashTableKeys, true, \ | |
267 "Verify the immutability of keys in the VN hash tables") \ | |
268 \ | |
550
96964ebdb154
6782232: assert("CreateEx must be first instruction in block" )
kvn
parents:
434
diff
changeset
|
269 notproduct(bool, VerifyRegisterAllocator , false, \ |
96964ebdb154
6782232: assert("CreateEx must be first instruction in block" )
kvn
parents:
434
diff
changeset
|
270 "Verify Register Allocator") \ |
96964ebdb154
6782232: assert("CreateEx must be first instruction in block" )
kvn
parents:
434
diff
changeset
|
271 \ |
0 | 272 develop_pd(intx, FLOATPRESSURE, \ |
273 "Number of float LRG's that constitute high register pressure") \ | |
274 \ | |
275 develop_pd(intx, INTPRESSURE, \ | |
276 "Number of integer LRG's that constitute high register pressure") \ | |
277 \ | |
278 notproduct(bool, TraceOptoPipelining, false, \ | |
279 "Trace pipelining information") \ | |
280 \ | |
281 notproduct(bool, TraceOptoOutput, false, \ | |
282 "Trace pipelining information") \ | |
283 \ | |
284 product_pd(bool, OptoScheduling, \ | |
285 "Instruction Scheduling after register allocation") \ | |
286 \ | |
287 product(bool, PartialPeelLoop, true, \ | |
288 "Partial peel (rotate) loops") \ | |
289 \ | |
290 product(intx, PartialPeelNewPhiDelta, 0, \ | |
291 "Additional phis that can be created by partial peeling") \ | |
292 \ | |
293 notproduct(bool, TracePartialPeeling, false, \ | |
294 "Trace partial peeling (loop rotation) information") \ | |
295 \ | |
296 product(bool, PartialPeelAtUnsignedTests, true, \ | |
297 "Partial peel at unsigned tests if no signed test exists") \ | |
298 \ | |
299 product(bool, ReassociateInvariants, true, \ | |
300 "Enable reassociation of expressions with loop invariants.") \ | |
301 \ | |
302 product(bool, LoopUnswitching, true, \ | |
303 "Enable loop unswitching (a form of invariant test hoisting)") \ | |
304 \ | |
305 notproduct(bool, TraceLoopUnswitching, false, \ | |
306 "Trace loop unswitching") \ | |
307 \ | |
308 product(bool, UseSuperWord, true, \ | |
309 "Transform scalar operations into superword operations") \ | |
310 \ | |
311 develop(bool, SuperWordRTDepCheck, false, \ | |
312 "Enable runtime dependency checks.") \ | |
313 \ | |
6183
6f8f439e247d
7177923: SIGBUS on sparc in compiled code for java.util.Calendar.clear()
kvn
parents:
6179
diff
changeset
|
314 notproduct(bool, TraceSuperWord, false, \ |
0 | 315 "Trace superword transforms") \ |
316 \ | |
6183
6f8f439e247d
7177923: SIGBUS on sparc in compiled code for java.util.Calendar.clear()
kvn
parents:
6179
diff
changeset
|
317 notproduct(bool, TraceNewVectors, false, \ |
6f8f439e247d
7177923: SIGBUS on sparc in compiled code for java.util.Calendar.clear()
kvn
parents:
6179
diff
changeset
|
318 "Trace creation of Vector nodes") \ |
6f8f439e247d
7177923: SIGBUS on sparc in compiled code for java.util.Calendar.clear()
kvn
parents:
6179
diff
changeset
|
319 \ |
0 | 320 product_pd(bool, OptoBundling, \ |
321 "Generate nops to fill i-cache lines") \ | |
322 \ | |
323 product_pd(intx, ConditionalMoveLimit, \ | |
324 "Limit of ops to make speculative when using CMOVE") \ | |
325 \ | |
326 /* Set BranchOnRegister == false. See 4965987. */ \ | |
327 product(bool, BranchOnRegister, false, \ | |
328 "Use Sparc V9 branch-on-register opcodes") \ | |
329 \ | |
330 develop(bool, SparcV9RegsHiBitsZero, true, \ | |
331 "Assume Sparc V9 I&L registers on V8+ systems are zero-extended") \ | |
332 \ | |
2008 | 333 product(bool, UseRDPCForConstantTableBase, false, \ |
334 "Use Sparc RDPC instruction for the constant table base.") \ | |
335 \ | |
0 | 336 develop(intx, PrintIdealGraphLevel, 0, \ |
337 "Print ideal graph to XML file / network interface. " \ | |
338 "By default attempts to connect to the visualizer on a socket.") \ | |
339 \ | |
340 develop(intx, PrintIdealGraphPort, 4444, \ | |
341 "Ideal graph printer to network port") \ | |
342 \ | |
434 | 343 notproduct(ccstr, PrintIdealGraphAddress, "127.0.0.1", \ |
0 | 344 "IP address to connect to visualizer") \ |
345 \ | |
434 | 346 notproduct(ccstr, PrintIdealGraphFile, NULL, \ |
0 | 347 "File to dump ideal graph to. If set overrides the " \ |
348 "use of the network") \ | |
349 \ | |
350 product(bool, UseOldInlining, true, \ | |
351 "Enable the 1.3 inlining strategy") \ | |
352 \ | |
353 product(bool, UseBimorphicInlining, true, \ | |
354 "Profiling based inlining for two receivers") \ | |
355 \ | |
356 product(bool, UseOnlyInlinedBimorphic, true, \ | |
357 "Don't use BimorphicInlining if can't inline a second method") \ | |
358 \ | |
359 product(bool, InsertMemBarAfterArraycopy, true, \ | |
360 "Insert memory barrier after arraycopy call") \ | |
361 \ | |
1685 | 362 develop(bool, SubsumeLoads, true, \ |
363 "Attempt to compile while subsuming loads into machine instructions.") \ | |
364 \ | |
365 develop(bool, StressRecompilation, false, \ | |
366 "Recompile each compiled method without subsuming loads or escape analysis.") \ | |
367 \ | |
0 | 368 develop(intx, ImplicitNullCheckThreshold, 3, \ |
369 "Don't do implicit null checks if NPE's in a method exceeds limit") \ | |
370 \ | |
371 product(intx, LoopOptsCount, 43, \ | |
372 "Set level of loop optimization for tier 1 compiles") \ | |
373 \ | |
374 /* controls for heat-based inlining */ \ | |
375 \ | |
376 develop(intx, NodeCountInliningCutoff, 18000, \ | |
377 "If parser node generation exceeds limit stop inlining") \ | |
378 \ | |
379 develop(intx, NodeCountInliningStep, 1000, \ | |
380 "Target size of warm calls inlined between optimization passes") \ | |
381 \ | |
382 develop(bool, InlineWarmCalls, false, \ | |
383 "Use a heat-based priority queue to govern inlining") \ | |
384 \ | |
385 develop(intx, HotCallCountThreshold, 999999, \ | |
386 "large numbers of calls (per method invocation) force hotness") \ | |
387 \ | |
388 develop(intx, HotCallProfitThreshold, 999999, \ | |
389 "highly profitable inlining opportunities force hotness") \ | |
390 \ | |
391 develop(intx, HotCallTrivialWork, -1, \ | |
392 "trivial execution time (no larger than this) forces hotness") \ | |
393 \ | |
394 develop(intx, HotCallTrivialSize, -1, \ | |
395 "trivial methods (no larger than this) force calls to be hot") \ | |
396 \ | |
397 develop(intx, WarmCallMinCount, -1, \ | |
398 "number of calls (per method invocation) to enable inlining") \ | |
399 \ | |
400 develop(intx, WarmCallMinProfit, -1, \ | |
401 "number of calls (per method invocation) to enable inlining") \ | |
402 \ | |
403 develop(intx, WarmCallMaxWork, 999999, \ | |
404 "execution time of the largest inlinable method") \ | |
405 \ | |
406 develop(intx, WarmCallMaxSize, 999999, \ | |
407 "size of the largest inlinable method") \ | |
408 \ | |
409 product(intx, MaxNodeLimit, 65000, \ | |
410 "Maximum number of nodes") \ | |
411 \ | |
412 product(intx, NodeLimitFudgeFactor, 1000, \ | |
413 "Fudge Factor for certain optimizations") \ | |
414 \ | |
415 product(bool, UseJumpTables, true, \ | |
416 "Use JumpTables instead of a binary search tree for switches") \ | |
417 \ | |
418 product(bool, UseDivMod, true, \ | |
419 "Use combined DivMod instruction if available") \ | |
420 \ | |
421 product(intx, MinJumpTableSize, 18, \ | |
422 "Minimum number of targets in a generated jump table") \ | |
423 \ | |
424 product(intx, MaxJumpTableSize, 65000, \ | |
425 "Maximum number of targets in a generated jump table") \ | |
426 \ | |
427 product(intx, MaxJumpTableSparseness, 5, \ | |
428 "Maximum sparseness for jumptables") \ | |
429 \ | |
430 product(bool, EliminateLocks, true, \ | |
431 "Coarsen locks when possible") \ | |
432 \ | |
4777 | 433 product(bool, EliminateNestedLocks, true, \ |
434 "Eliminate nested locks of the same object when possible") \ | |
435 \ | |
0 | 436 notproduct(bool, PrintLockStatistics, false, \ |
437 "Print precise statistics on the dynamic lock usage") \ | |
438 \ | |
439 diagnostic(bool, PrintPreciseBiasedLockingStatistics, false, \ | |
440 "Print per-lock-site statistics of biased locking in JVM") \ | |
441 \ | |
442 notproduct(bool, PrintEliminateLocks, false, \ | |
443 "Print out when locks are eliminated") \ | |
444 \ | |
17
ff5961f4c095
6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents:
0
diff
changeset
|
445 diagnostic(bool, EliminateAutoBox, false, \ |
ff5961f4c095
6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents:
0
diff
changeset
|
446 "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
|
447 \ |
ff5961f4c095
6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents:
0
diff
changeset
|
448 product(intx, AutoBoxCacheMax, 128, \ |
ff5961f4c095
6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents:
0
diff
changeset
|
449 "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
|
450 \ |
930 | 451 product(bool, DoEscapeAnalysis, true, \ |
0 | 452 "Perform escape analysis") \ |
453 \ | |
6895
006174cfe979
7163534: VM could crashes assert(false) failed: infinite EA connection graph build
kvn
parents:
6794
diff
changeset
|
454 develop(bool, ExitEscapeAnalysisOnTimeout, true, \ |
006174cfe979
7163534: VM could crashes assert(false) failed: infinite EA connection graph build
kvn
parents:
6794
diff
changeset
|
455 "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
|
456 \ |
0 | 457 notproduct(bool, PrintEscapeAnalysis, false, \ |
458 "Print the results of escape analysis") \ | |
459 \ | |
460 product(bool, EliminateAllocations, true, \ | |
461 "Use escape analysis to eliminate allocations") \ | |
462 \ | |
65 | 463 notproduct(bool, PrintEliminateAllocations, false, \ |
464 "Print out when allocations are eliminated") \ | |
465 \ | |
466 product(intx, EliminateAllocationArraySizeLimit, 64, \ | |
467 "Array size (number of elements) limit for scalar replacement") \ | |
468 \ | |
4113 | 469 product(bool, OptimizePtrCompare, true, \ |
470 "Use escape analysis to optimize pointers compare") \ | |
471 \ | |
472 notproduct(bool, PrintOptimizePtrCompare, false, \ | |
473 "Print information about optimized pointers compare") \ | |
474 \ | |
5948
ee138854b3a6
7147744: CTW: assert(false) failed: infinite EA connection graph build
kvn
parents:
4777
diff
changeset
|
475 notproduct(bool, VerifyConnectionGraph , true, \ |
ee138854b3a6
7147744: CTW: assert(false) failed: infinite EA connection graph build
kvn
parents:
4777
diff
changeset
|
476 "Verify Connection Graph construction in Escape Analysis") \ |
ee138854b3a6
7147744: CTW: assert(false) failed: infinite EA connection graph build
kvn
parents:
4777
diff
changeset
|
477 \ |
673 | 478 product(bool, UseOptoBiasInlining, true, \ |
420
a1980da045cc
6462850: generate biased locking code in C2 ideal graph
kvn
parents:
418
diff
changeset
|
479 "Generate biased locking code in C2 ideal graph") \ |
a1980da045cc
6462850: generate biased locking code in C2 ideal graph
kvn
parents:
418
diff
changeset
|
480 \ |
4039 | 481 product(bool, OptimizeStringConcat, true, \ |
1080
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
930
diff
changeset
|
482 "Optimize the construction of Strings by StringBuilder") \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
930
diff
changeset
|
483 \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
930
diff
changeset
|
484 notproduct(bool, PrintOptimizeStringConcat, false, \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
930
diff
changeset
|
485 "Print information about transformations performed on Strings") \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
930
diff
changeset
|
486 \ |
253
b0fe4deeb9fb
6726999: nsk/stress/jck12a/jck12a010 assert(n != null,"Bad immediate dominator info.")
kvn
parents:
245
diff
changeset
|
487 product(intx, ValueSearchLimit, 1000, \ |
b0fe4deeb9fb
6726999: nsk/stress/jck12a/jck12a010 assert(n != null,"Bad immediate dominator info.")
kvn
parents:
245
diff
changeset
|
488 "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
|
489 \ |
0 | 490 product(intx, MaxLabelRootDepth, 1100, \ |
491 "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
|
492 \ |
723be81c1212
6701887: JDK7 server VM in endless loop in Node::dominates
kvn
parents:
65
diff
changeset
|
493 diagnostic(intx, DominatorSearchLimit, 1000, \ |
723be81c1212
6701887: JDK7 server VM in endless loop in Node::dominates
kvn
parents:
65
diff
changeset
|
494 "Iterations limit in Node::dominates") \ |
418 | 495 \ |
496 product(bool, BlockLayoutByFrequency, true, \ | |
497 "Use edge frequencies to drive block ordering") \ | |
498 \ | |
499 product(intx, BlockLayoutMinDiamondPercentage, 20, \ | |
500 "Miniumum %% of a successor (predecessor) for which block layout "\ | |
501 "a will allow a fork (join) in a single chain") \ | |
502 \ | |
673 | 503 product(bool, BlockLayoutRotateLoops, true, \ |
418 | 504 "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
|
505 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
506 develop(bool, InlineReflectionGetCallerClass, true, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
507 "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
|
508 "of base library DLL") \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
509 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
510 develop(bool, InlineObjectCopy, true, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
511 "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
|
512 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
513 develop(bool, SpecialStringCompareTo, true, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
514 "special version of string compareTo") \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
515 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
516 develop(bool, SpecialStringIndexOf, true, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
517 "special version of string indexOf") \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
518 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
519 develop(bool, SpecialStringEquals, true, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
520 "special version of string equals") \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
521 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
522 develop(bool, SpecialArraysEquals, true, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
523 "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
|
524 \ |
7637
b30b3c2a0cf2
6896617: Optimize sun.nio.cs.ISO_8859_1$Encode.encodeArrayLoop() on x86
kvn
parents:
7473
diff
changeset
|
525 product(bool, SpecialEncodeISOArray, true, \ |
b30b3c2a0cf2
6896617: Optimize sun.nio.cs.ISO_8859_1$Encode.encodeArrayLoop() on x86
kvn
parents:
7473
diff
changeset
|
526 "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
|
527 \ |
6633
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
528 develop(bool, BailoutToInterpreterForThrows, false, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
529 "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
|
530 "deopt and intp.") \ |
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, ConvertCmpD2CmpF, true, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
533 "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
|
534 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
535 develop(bool, ConvertFloat2IntClipping, true, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
536 "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
|
537 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
538 develop(bool, Use24BitFPMode, true, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
539 "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
|
540 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
541 develop(bool, Use24BitFP, true, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
542 "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
|
543 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
544 develop(bool, MonomorphicArrayCheck, true, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
545 "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
|
546 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
547 notproduct(bool, TracePhaseCCP, false, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
548 "Print progress during Conditional Constant Propagation") \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
549 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
550 develop(bool, PrintDominators, false, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
551 "Print out dominator trees for GVN") \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
552 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
553 notproduct(bool, TraceSpilling, false, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
554 "Trace spilling") \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
555 \ |
6793 | 556 diagnostic(bool, TraceTypeProfile, false, \ |
6633
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
557 "Trace type profile") \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
558 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
559 develop(bool, PoisonOSREntry, true, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
560 "Detect abnormal calls to OSR code") \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
561 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
562 product(bool, UseCondCardMark, false, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
563 "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
|
564 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
565 develop(bool, SoftMatchFailure, trueInProduct, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
566 "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
|
567 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
568 develop(bool, InlineAccessors, true, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
569 "inline accessor methods (get/set)") \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
570 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
571 product(intx, TypeProfileMajorReceiverPercent, 90, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
572 "% 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
|
573 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
574 notproduct(bool, TimeCompiler2, false, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
575 "detailed time the compiler (requires +TimeCompiler)") \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
576 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
577 diagnostic(bool, PrintIntrinsics, false, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
578 "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
|
579 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
580 diagnostic(ccstrlist, DisableIntrinsic, "", \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
581 "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
|
582 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
583 develop(bool, StressReflectiveCode, false, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
584 "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
|
585 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
586 diagnostic(bool, DebugInlinedCalls, true, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
587 "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
|
588 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
589 notproduct(bool, VerifyLoopOptimizations, false, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
590 "verify major loop optimizations") \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
591 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
592 diagnostic(bool, ProfileDynamicTypes, true, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
593 "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
|
594 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
595 develop(bool, TraceIterativeGVN, false, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
596 "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
|
597 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
598 develop(bool, VerifyIterativeGVN, false, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
599 "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
|
600 "Value Numbering") \ |
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 notproduct(bool, TraceCISCSpill, false, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
603 "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
|
604 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
605 product(bool, SplitIfBlocks, true, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
606 "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
|
607 "some branches") \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
608 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
609 develop(intx, FreqCountInvocations, 1, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
610 "Scaling factor for branch frequencies (deprecated)") \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
611 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
612 product(intx, AliasLevel, 3, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
613 "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
|
614 "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
|
615 \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
616 develop(bool, VerifyAliases, false, \ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
6183
diff
changeset
|
617 "perform extra checks on the results of alias analysis") \ |
7473 | 618 \ |
619 product(bool, IncrementalInline, true, \ | |
620 "do post parse inlining") \ | |
621 \ | |
622 develop(bool, AlwaysIncrementalInline, false, \ | |
623 "do all inlining incrementally") \ | |
624 \ | |
625 product(intx, LiveNodeCountInliningCutoff, 20000, \ | |
626 "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
|
627 \ |
8b3da8d14c93
7197327: 40% regression on 8 b41 comp 8 b40 on specjvm2008.mpegaudio on oob
roland
parents:
7637
diff
changeset
|
628 diagnostic(bool, OptimizeExpensiveOps, true, \ |
8b3da8d14c93
7197327: 40% regression on 8 b41 comp 8 b40 on specjvm2008.mpegaudio on oob
roland
parents:
7637
diff
changeset
|
629 "Find best control for expensive operations") \ |
7473 | 630 |
0 | 631 |
1080
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
930
diff
changeset
|
632 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 | 633 |
634 #endif // SHARE_VM_OPTO_C2_GLOBALS_HPP |