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