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