Mercurial > hg > truffle
annotate src/share/vm/c1/c1_globals.hpp @ 20543:e7d0505c8a30
8059758: Footprint regressions with JDK-8038423
Summary: Changes in JDK-8038423 always initialize (zero out) virtual memory used for auxiliary data structures. This causes a footprint regression for G1 in startup benchmarks. This is because they do not touch that memory at all, so the operating system does not actually commit these pages. The fix is to, if the initialization value of the data structures matches the default value of just committed memory (=0), do not do anything.
Reviewed-by: jwilhelm, brutisso
author | tschatzl |
---|---|
date | Fri, 10 Oct 2014 15:51:58 +0200 |
parents | a9becfeecd1b |
children | d8041d695d19 b9c94af14fd0 |
rev | line source |
---|---|
0 | 1 /* |
17467
55fb97c4c58d
8029233: Update copyright year to match last edit in jdk8 hotspot repository for 2013
mikael
parents:
13081
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:
1397
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1397
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:
1397
diff
changeset
|
21 * questions. |
0 | 22 * |
23 */ | |
24 | |
1972 | 25 #ifndef SHARE_VM_C1_C1_GLOBALS_HPP |
26 #define SHARE_VM_C1_C1_GLOBALS_HPP | |
27 | |
28 #include "runtime/globals.hpp" | |
29 #ifdef TARGET_ARCH_x86 | |
30 # include "c1_globals_x86.hpp" | |
31 #endif | |
32 #ifdef TARGET_ARCH_sparc | |
33 # include "c1_globals_sparc.hpp" | |
34 #endif | |
2192
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
35 #ifdef TARGET_ARCH_arm |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
36 # include "c1_globals_arm.hpp" |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
37 #endif |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
38 #ifdef TARGET_ARCH_ppc |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
39 # include "c1_globals_ppc.hpp" |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
40 #endif |
1972 | 41 #ifdef TARGET_OS_FAMILY_linux |
42 # include "c1_globals_linux.hpp" | |
43 #endif | |
44 #ifdef TARGET_OS_FAMILY_solaris | |
45 # include "c1_globals_solaris.hpp" | |
46 #endif | |
47 #ifdef TARGET_OS_FAMILY_windows | |
48 # include "c1_globals_windows.hpp" | |
49 #endif | |
14411 | 50 #ifdef TARGET_OS_FAMILY_aix |
51 # include "c1_globals_aix.hpp" | |
52 #endif | |
3960 | 53 #ifdef TARGET_OS_FAMILY_bsd |
54 # include "c1_globals_bsd.hpp" | |
55 #endif | |
1972 | 56 |
0 | 57 // |
58 // Defines all global flags used by the client compiler. | |
59 // | |
12160
f98f5d48f511
7199175: JSR 292: C1 needs patching when invokedynamic/invokehandle call site is not linked
roland
parents:
8860
diff
changeset
|
60 #define C1_FLAGS(develop, develop_pd, product, product_pd, diagnostic, notproduct) \ |
0 | 61 \ |
62 /* Printing */ \ | |
63 notproduct(bool, PrintC1Statistics, false, \ | |
64 "Print Compiler1 statistics" ) \ | |
65 \ | |
66 notproduct(bool, PrintInitialBlockList, false, \ | |
67 "Print block list of BlockListBuilder") \ | |
68 \ | |
69 notproduct(bool, PrintCFG, false, \ | |
70 "Print control flow graph after each change") \ | |
71 \ | |
72 notproduct(bool, PrintCFG0, false, \ | |
73 "Print control flow graph after construction") \ | |
74 \ | |
75 notproduct(bool, PrintCFG1, false, \ | |
76 "Print control flow graph after optimizations") \ | |
77 \ | |
78 notproduct(bool, PrintCFG2, false, \ | |
79 "Print control flow graph before code generation") \ | |
80 \ | |
81 notproduct(bool, PrintIRDuringConstruction, false, \ | |
82 "Print IR as it's being constructed (helpful for debugging frontend)")\ | |
83 \ | |
1783 | 84 notproduct(bool, PrintPhiFunctions, false, \ |
0 | 85 "Print phi functions when they are created and simplified") \ |
86 \ | |
87 notproduct(bool, PrintIR, false, \ | |
88 "Print full intermediate representation after each change") \ | |
89 \ | |
90 notproduct(bool, PrintIR0, false, \ | |
91 "Print full intermediate representation after construction") \ | |
92 \ | |
93 notproduct(bool, PrintIR1, false, \ | |
94 "Print full intermediate representation after optimizations") \ | |
95 \ | |
96 notproduct(bool, PrintIR2, false, \ | |
97 "Print full intermediate representation before code generation") \ | |
98 \ | |
99 notproduct(bool, PrintSimpleStubs, false, \ | |
100 "Print SimpleStubs") \ | |
101 \ | |
102 /* C1 optimizations */ \ | |
103 \ | |
104 develop(bool, UseC1Optimizations, true, \ | |
105 "Turn on C1 optimizations") \ | |
106 \ | |
107 develop(bool, SelectivePhiFunctions, true, \ | |
108 "create phi functions at loop headers only when necessary") \ | |
109 \ | |
1899 | 110 develop(bool, OptimizeIfOps, true, \ |
111 "Optimize multiple IfOps") \ | |
112 \ | |
0 | 113 develop(bool, DoCEE, true, \ |
114 "Do Conditional Expression Elimination to simplify CFG") \ | |
115 \ | |
116 develop(bool, PrintCEE, false, \ | |
117 "Print Conditional Expression Elimination") \ | |
118 \ | |
119 develop(bool, UseLocalValueNumbering, true, \ | |
120 "Use Local Value Numbering (embedded in GraphBuilder)") \ | |
121 \ | |
122 develop(bool, UseGlobalValueNumbering, true, \ | |
123 "Use Global Value Numbering (separate phase)") \ | |
124 \ | |
8860 | 125 product(bool, UseLoopInvariantCodeMotion, true, \ |
126 "Simple loop invariant code motion for short loops during GVN") \ | |
127 \ | |
128 develop(bool, TracePredicateFailedTraps, false, \ | |
129 "trace runtime traps caused by predicate failure") \ | |
130 \ | |
131 develop(bool, StressLoopInvariantCodeMotion, false, \ | |
132 "stress loop invariant code motion") \ | |
133 \ | |
134 develop(bool, TraceRangeCheckElimination, false, \ | |
135 "Trace Range Check Elimination") \ | |
136 \ | |
137 develop(bool, AssertRangeCheckElimination, false, \ | |
138 "Assert Range Check Elimination") \ | |
139 \ | |
140 develop(bool, StressRangeCheckElimination, false, \ | |
141 "stress Range Check Elimination") \ | |
142 \ | |
0 | 143 develop(bool, PrintValueNumbering, false, \ |
144 "Print Value Numbering") \ | |
145 \ | |
146 product(intx, ValueMapInitialSize, 11, \ | |
147 "Initial size of a value map") \ | |
148 \ | |
149 product(intx, ValueMapMaxLoopSize, 8, \ | |
150 "maximum size of a loop optimized by global value numbering") \ | |
151 \ | |
152 develop(bool, EliminateBlocks, true, \ | |
153 "Eliminate unneccessary basic blocks") \ | |
154 \ | |
155 develop(bool, PrintBlockElimination, false, \ | |
156 "Print basic block elimination") \ | |
157 \ | |
158 develop(bool, EliminateNullChecks, true, \ | |
159 "Eliminate unneccessary null checks") \ | |
160 \ | |
161 develop(bool, PrintNullCheckElimination, false, \ | |
162 "Print null check elimination") \ | |
163 \ | |
164 develop(bool, EliminateFieldAccess, true, \ | |
165 "Optimize field loads and stores") \ | |
166 \ | |
167 develop(bool, InlineMethodsWithExceptionHandlers, true, \ | |
168 "Inline methods containing exception handlers " \ | |
169 "(NOTE: does not work with current backend)") \ | |
170 \ | |
7594
94fa3c4e7643
8005639: Move InlineSynchronizedMethods flag from develop to product
vladidan
parents:
6725
diff
changeset
|
171 product(bool, InlineSynchronizedMethods, true, \ |
0 | 172 "Inline synchronized methods") \ |
173 \ | |
174 develop(bool, InlineNIOCheckIndex, true, \ | |
175 "Intrinsify java.nio.Buffer.checkIndex") \ | |
176 \ | |
177 develop(bool, CanonicalizeNodes, true, \ | |
178 "Canonicalize graph nodes") \ | |
179 \ | |
180 develop(bool, PrintCanonicalization, false, \ | |
181 "Print graph node canonicalization") \ | |
182 \ | |
183 develop(bool, UseTableRanges, true, \ | |
184 "Faster versions of lookup table using ranges") \ | |
185 \ | |
186 develop_pd(bool, RoundFPResults, \ | |
187 "Indicates whether rounding is needed for floating point results")\ | |
188 \ | |
189 develop(intx, NestedInliningSizeRatio, 90, \ | |
190 "Percentage of prev. allowed inline size in recursive inlining") \ | |
191 \ | |
192 notproduct(bool, PrintIRWithLIR, false, \ | |
193 "Print IR instructions with generated LIR") \ | |
194 \ | |
195 notproduct(bool, PrintLIRWithAssembly, false, \ | |
196 "Show LIR instruction with generated assembly") \ | |
197 \ | |
198 develop(bool, CommentedAssembly, trueInDebug, \ | |
199 "Show extra info in PrintNMethods output") \ | |
200 \ | |
201 develop(bool, LIRTracePeephole, false, \ | |
202 "Trace peephole optimizer") \ | |
203 \ | |
204 develop(bool, LIRTraceExecution, false, \ | |
205 "add LIR code which logs the execution of blocks") \ | |
206 \ | |
207 product_pd(bool, LIRFillDelaySlots, \ | |
208 "fill delays on on SPARC with LIR") \ | |
209 \ | |
210 develop_pd(bool, CSEArrayLength, \ | |
211 "Create separate nodes for length in array accesses") \ | |
212 \ | |
213 develop_pd(bool, TwoOperandLIRForm, \ | |
214 "true if LIR requires src1 and dst to match in binary LIR ops") \ | |
215 \ | |
216 develop(intx, TraceLinearScanLevel, 0, \ | |
217 "Debug levels for the linear scan allocator") \ | |
218 \ | |
219 develop(bool, StressLinearScan, false, \ | |
220 "scramble block order used by LinearScan (stress test)") \ | |
221 \ | |
222 product(bool, TimeLinearScan, false, \ | |
223 "detailed timing of LinearScan phases") \ | |
224 \ | |
225 develop(bool, TimeEachLinearScan, false, \ | |
226 "print detailed timing of each LinearScan run") \ | |
227 \ | |
228 develop(bool, CountLinearScan, false, \ | |
229 "collect statistic counters during LinearScan") \ | |
230 \ | |
231 /* C1 variable */ \ | |
232 \ | |
233 develop(bool, C1Breakpoint, false, \ | |
234 "Sets a breakpoint at entry of each compiled method") \ | |
235 \ | |
236 develop(bool, ImplicitDiv0Checks, true, \ | |
237 "Use implicit division by zero checks") \ | |
238 \ | |
239 develop(bool, PinAllInstructions, false, \ | |
240 "All instructions are pinned") \ | |
241 \ | |
242 develop(bool, UseFastNewInstance, true, \ | |
243 "Use fast inlined instance allocation") \ | |
244 \ | |
245 develop(bool, UseFastNewTypeArray, true, \ | |
246 "Use fast inlined type array allocation") \ | |
247 \ | |
248 develop(bool, UseFastNewObjectArray, true, \ | |
249 "Use fast inlined object array allocation") \ | |
250 \ | |
251 develop(bool, UseFastLocking, true, \ | |
252 "Use fast inlined locking code") \ | |
253 \ | |
254 develop(bool, UseSlowPath, false, \ | |
255 "For debugging: test slow cases by always using them") \ | |
256 \ | |
257 develop(bool, GenerateArrayStoreCheck, true, \ | |
258 "Generates code for array store checks") \ | |
259 \ | |
260 develop(bool, DeoptC1, true, \ | |
261 "Use deoptimization in C1") \ | |
262 \ | |
263 develop(bool, PrintBailouts, false, \ | |
264 "Print bailout and its reason") \ | |
265 \ | |
266 develop(bool, TracePatching, false, \ | |
267 "Trace patching of field access on uninitialized classes") \ | |
268 \ | |
269 develop(bool, PatchALot, false, \ | |
270 "Marks all fields as having unloaded classes") \ | |
271 \ | |
272 develop(bool, PrintNotLoaded, false, \ | |
273 "Prints where classes are not loaded during code generation") \ | |
274 \ | |
275 develop(bool, PrintLIR, false, \ | |
276 "print low-level IR") \ | |
277 \ | |
278 develop(bool, BailoutAfterHIR, false, \ | |
279 "bailout of compilation after building of HIR") \ | |
280 \ | |
281 develop(bool, BailoutAfterLIR, false, \ | |
282 "bailout of compilation after building of LIR") \ | |
283 \ | |
284 develop(bool, BailoutOnExceptionHandlers, false, \ | |
285 "bailout of compilation for methods with exception handlers") \ | |
286 \ | |
287 develop(bool, InstallMethods, true, \ | |
288 "Install methods at the end of successful compilations") \ | |
289 \ | |
290 product(intx, CompilationRepeat, 0, \ | |
291 "Number of times to recompile method before returning result") \ | |
292 \ | |
3896
b346f13112d8
7085279: C1 overflows code buffer with VerifyOops and CompressedOops
iveresov
parents:
2426
diff
changeset
|
293 develop(intx, NMethodSizeLimit, (64*K)*wordSize, \ |
0 | 294 "Maximum size of a compiled method.") \ |
295 \ | |
296 develop(bool, TraceFPUStack, false, \ | |
297 "Trace emulation of the FPU stack (intel only)") \ | |
298 \ | |
299 develop(bool, TraceFPURegisterUsage, false, \ | |
300 "Trace usage of FPU registers at start of blocks (intel only)") \ | |
301 \ | |
302 develop(bool, OptimizeUnsafes, true, \ | |
303 "Optimize raw unsafe ops") \ | |
304 \ | |
305 develop(bool, PrintUnsafeOptimization, false, \ | |
306 "Print optimization of raw unsafe ops") \ | |
307 \ | |
308 develop(intx, InstructionCountCutoff, 37000, \ | |
309 "If GraphBuilder adds this many instructions, bails out") \ | |
310 \ | |
311 product_pd(intx, SafepointPollOffset, \ | |
312 "Offset added to polling address (Intel only)") \ | |
313 \ | |
314 develop(bool, ComputeExactFPURegisterUsage, true, \ | |
315 "Compute additional live set for fpu registers to simplify fpu stack merge (Intel only)") \ | |
316 \ | |
1783 | 317 product(bool, C1ProfileCalls, true, \ |
0 | 318 "Profile calls when generating code for updating MDOs") \ |
319 \ | |
1783 | 320 product(bool, C1ProfileVirtualCalls, true, \ |
0 | 321 "Profile virtual calls when generating code for updating MDOs") \ |
322 \ | |
1783 | 323 product(bool, C1ProfileInlinedCalls, true, \ |
0 | 324 "Profile inlined calls when generating code for updating MDOs") \ |
325 \ | |
1783 | 326 product(bool, C1ProfileBranches, true, \ |
0 | 327 "Profile branches when generating code for updating MDOs") \ |
328 \ | |
1783 | 329 product(bool, C1ProfileCheckcasts, true, \ |
0 | 330 "Profile checkcasts when generating code for updating MDOs") \ |
331 \ | |
1783 | 332 product(bool, C1OptimizeVirtualCallProfiling, true, \ |
333 "Use CHA and exact type results at call sites when updating MDOs")\ | |
0 | 334 \ |
1783 | 335 product(bool, C1UpdateMethodData, trueInTiered, \ |
12160
f98f5d48f511
7199175: JSR 292: C1 needs patching when invokedynamic/invokehandle call site is not linked
roland
parents:
8860
diff
changeset
|
336 "Update MethodData*s in Tier1-generated code") \ |
0 | 337 \ |
338 develop(bool, PrintCFGToFile, false, \ | |
339 "print control flow graph to a separate file during compilation") \ | |
340 \ | |
12160
f98f5d48f511
7199175: JSR 292: C1 needs patching when invokedynamic/invokehandle call site is not linked
roland
parents:
8860
diff
changeset
|
341 diagnostic(bool, C1PatchInvokeDynamic, true, \ |
f98f5d48f511
7199175: JSR 292: C1 needs patching when invokedynamic/invokehandle call site is not linked
roland
parents:
8860
diff
changeset
|
342 "Patch invokedynamic appendix not known at compile time") \ |
f98f5d48f511
7199175: JSR 292: C1 needs patching when invokedynamic/invokehandle call site is not linked
roland
parents:
8860
diff
changeset
|
343 \ |
0 | 344 |
345 | |
346 // Read default values for c1 globals | |
347 | |
12160
f98f5d48f511
7199175: JSR 292: C1 needs patching when invokedynamic/invokehandle call site is not linked
roland
parents:
8860
diff
changeset
|
348 C1_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_NOTPRODUCT_FLAG) |
1972 | 349 |
350 #endif // SHARE_VM_C1_C1_GLOBALS_HPP |