Mercurial > hg > truffle
annotate src/share/vm/c1/c1_globals.hpp @ 2607:008adfd6d850
Fixed the stateBefore of invokes and monitorenter instructions to include the arguments of the instruction.
This is necessary to ensure correct continuation in the interpreter when the stateBefore is used as a deoptimization point.
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Fri, 06 May 2011 17:47:17 +0200 |
parents | 8902c4c20c69 |
children | 75a99b4f1c98 |
rev | line source |
---|---|
0 | 1 /* |
2426
1d1603768966
7010070: Update all 2010 Oracle-changed OpenJDK files to have the proper copyright dates - second pass
trims
parents:
2192
diff
changeset
|
2 * Copyright (c) 2000, 2011, 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 | |
50 | |
0 | 51 // |
52 // Defines all global flags used by the client compiler. | |
53 // | |
54 #define C1_FLAGS(develop, develop_pd, product, product_pd, notproduct) \ | |
55 \ | |
1418
55ac38887415
modifications for linux: argument register layout, makefile
Lukas Stadler <lukas.stadler@jku.at>
parents:
1406
diff
changeset
|
56 product(bool, UseC1X, false, \ |
1406
35069ca331f2
Hooked C1XCompiler class into the system.
Thomas Wuerthinger <thomas.wuerthinger@gmail.com>
parents:
1397
diff
changeset
|
57 "Use C1X instead of C1") \ |
1939
b7fb5f1e0747
Two new flags: -XX:MaxCompilationID (to enable debugging binary search for problematic method) and -XX:C1XBailoutIsFatal.
Thomas Wuerthinger <wuerthinger@ssw.jku.at>
parents:
1936
diff
changeset
|
58 product(bool, C1XBailoutIsFatal, true, \ |
b7fb5f1e0747
Two new flags: -XX:MaxCompilationID (to enable debugging binary search for problematic method) and -XX:C1XBailoutIsFatal.
Thomas Wuerthinger <wuerthinger@ssw.jku.at>
parents:
1936
diff
changeset
|
59 "Abort the VM on C1X bailout") \ |
1454
7cf1952ec5fb
Added flag -XX:BootstrapC1X that precompiles Object::<init> and then every method in the compilation queue until it is empty.
Thomas Wuerthinger <wuerthinger@ssw.jku.at>
parents:
1418
diff
changeset
|
60 product(bool, BootstrapC1X, false, \ |
7cf1952ec5fb
Added flag -XX:BootstrapC1X that precompiles Object::<init> and then every method in the compilation queue until it is empty.
Thomas Wuerthinger <wuerthinger@ssw.jku.at>
parents:
1418
diff
changeset
|
61 "Bootstrap C1X before running Java main method") \ |
1418
55ac38887415
modifications for linux: argument register layout, makefile
Lukas Stadler <lukas.stadler@jku.at>
parents:
1406
diff
changeset
|
62 product(intx, TraceC1X, 0, \ |
1406
35069ca331f2
Hooked C1XCompiler class into the system.
Thomas Wuerthinger <thomas.wuerthinger@gmail.com>
parents:
1397
diff
changeset
|
63 "Trace level for C1X") \ |
1936
8d88c9ac9247
Correct deopt handler entry. New flag -XX:+TraceSignals. More detailed deopt printing.
Thomas Wuerthinger <wuerthinger@ssw.jku.at>
parents:
1930
diff
changeset
|
64 product(bool, TraceSignals, false, \ |
8d88c9ac9247
Correct deopt handler entry. New flag -XX:+TraceSignals. More detailed deopt printing.
Thomas Wuerthinger <wuerthinger@ssw.jku.at>
parents:
1930
diff
changeset
|
65 "Trace signals and implicit exception handling") \ |
0 | 66 /* Printing */ \ |
67 notproduct(bool, PrintC1Statistics, false, \ | |
68 "Print Compiler1 statistics" ) \ | |
69 \ | |
70 notproduct(bool, PrintInitialBlockList, false, \ | |
71 "Print block list of BlockListBuilder") \ | |
72 \ | |
73 notproduct(bool, PrintCFG, false, \ | |
74 "Print control flow graph after each change") \ | |
75 \ | |
76 notproduct(bool, PrintCFG0, false, \ | |
77 "Print control flow graph after construction") \ | |
78 \ | |
79 notproduct(bool, PrintCFG1, false, \ | |
80 "Print control flow graph after optimizations") \ | |
81 \ | |
82 notproduct(bool, PrintCFG2, false, \ | |
83 "Print control flow graph before code generation") \ | |
84 \ | |
85 notproduct(bool, PrintIRDuringConstruction, false, \ | |
86 "Print IR as it's being constructed (helpful for debugging frontend)")\ | |
87 \ | |
1783 | 88 notproduct(bool, PrintPhiFunctions, false, \ |
0 | 89 "Print phi functions when they are created and simplified") \ |
90 \ | |
91 notproduct(bool, PrintIR, false, \ | |
92 "Print full intermediate representation after each change") \ | |
93 \ | |
94 notproduct(bool, PrintIR0, false, \ | |
95 "Print full intermediate representation after construction") \ | |
96 \ | |
97 notproduct(bool, PrintIR1, false, \ | |
98 "Print full intermediate representation after optimizations") \ | |
99 \ | |
100 notproduct(bool, PrintIR2, false, \ | |
101 "Print full intermediate representation before code generation") \ | |
102 \ | |
103 notproduct(bool, PrintSimpleStubs, false, \ | |
104 "Print SimpleStubs") \ | |
105 \ | |
106 /* C1 optimizations */ \ | |
107 \ | |
108 develop(bool, UseC1Optimizations, true, \ | |
109 "Turn on C1 optimizations") \ | |
110 \ | |
111 develop(bool, SelectivePhiFunctions, true, \ | |
112 "create phi functions at loop headers only when necessary") \ | |
113 \ | |
1899 | 114 develop(bool, OptimizeIfOps, true, \ |
115 "Optimize multiple IfOps") \ | |
116 \ | |
0 | 117 develop(bool, DoCEE, true, \ |
118 "Do Conditional Expression Elimination to simplify CFG") \ | |
119 \ | |
120 develop(bool, PrintCEE, false, \ | |
121 "Print Conditional Expression Elimination") \ | |
122 \ | |
123 develop(bool, UseLocalValueNumbering, true, \ | |
124 "Use Local Value Numbering (embedded in GraphBuilder)") \ | |
125 \ | |
126 develop(bool, UseGlobalValueNumbering, true, \ | |
127 "Use Global Value Numbering (separate phase)") \ | |
128 \ | |
129 develop(bool, PrintValueNumbering, false, \ | |
130 "Print Value Numbering") \ | |
131 \ | |
132 product(intx, ValueMapInitialSize, 11, \ | |
133 "Initial size of a value map") \ | |
134 \ | |
135 product(intx, ValueMapMaxLoopSize, 8, \ | |
136 "maximum size of a loop optimized by global value numbering") \ | |
137 \ | |
138 develop(bool, EliminateBlocks, true, \ | |
139 "Eliminate unneccessary basic blocks") \ | |
140 \ | |
141 develop(bool, PrintBlockElimination, false, \ | |
142 "Print basic block elimination") \ | |
143 \ | |
144 develop(bool, EliminateNullChecks, true, \ | |
145 "Eliminate unneccessary null checks") \ | |
146 \ | |
147 develop(bool, PrintNullCheckElimination, false, \ | |
148 "Print null check elimination") \ | |
149 \ | |
150 develop(bool, EliminateFieldAccess, true, \ | |
151 "Optimize field loads and stores") \ | |
152 \ | |
153 develop(bool, InlineMethodsWithExceptionHandlers, true, \ | |
154 "Inline methods containing exception handlers " \ | |
155 "(NOTE: does not work with current backend)") \ | |
156 \ | |
157 develop(bool, InlineSynchronizedMethods, true, \ | |
158 "Inline synchronized methods") \ | |
159 \ | |
160 develop(bool, InlineNIOCheckIndex, true, \ | |
161 "Intrinsify java.nio.Buffer.checkIndex") \ | |
162 \ | |
163 develop(bool, CanonicalizeNodes, true, \ | |
164 "Canonicalize graph nodes") \ | |
165 \ | |
166 develop(bool, CanonicalizeExperimental, false, \ | |
167 "Canonicalize graph nodes, experimental code") \ | |
168 \ | |
169 develop(bool, PrintCanonicalization, false, \ | |
170 "Print graph node canonicalization") \ | |
171 \ | |
172 develop(bool, UseTableRanges, true, \ | |
173 "Faster versions of lookup table using ranges") \ | |
174 \ | |
175 develop(bool, UseFastExceptionHandling, true, \ | |
176 "Faster handling of exceptions") \ | |
177 \ | |
178 develop_pd(bool, RoundFPResults, \ | |
179 "Indicates whether rounding is needed for floating point results")\ | |
180 \ | |
181 develop(intx, NestedInliningSizeRatio, 90, \ | |
182 "Percentage of prev. allowed inline size in recursive inlining") \ | |
183 \ | |
184 notproduct(bool, PrintIRWithLIR, false, \ | |
185 "Print IR instructions with generated LIR") \ | |
186 \ | |
187 notproduct(bool, PrintLIRWithAssembly, false, \ | |
188 "Show LIR instruction with generated assembly") \ | |
189 \ | |
190 develop(bool, CommentedAssembly, trueInDebug, \ | |
191 "Show extra info in PrintNMethods output") \ | |
192 \ | |
193 develop(bool, LIRTracePeephole, false, \ | |
194 "Trace peephole optimizer") \ | |
195 \ | |
196 develop(bool, LIRTraceExecution, false, \ | |
197 "add LIR code which logs the execution of blocks") \ | |
198 \ | |
199 product_pd(bool, LIRFillDelaySlots, \ | |
200 "fill delays on on SPARC with LIR") \ | |
201 \ | |
202 develop_pd(bool, CSEArrayLength, \ | |
203 "Create separate nodes for length in array accesses") \ | |
204 \ | |
205 develop_pd(bool, TwoOperandLIRForm, \ | |
206 "true if LIR requires src1 and dst to match in binary LIR ops") \ | |
207 \ | |
208 develop(intx, TraceLinearScanLevel, 0, \ | |
209 "Debug levels for the linear scan allocator") \ | |
210 \ | |
211 develop(bool, StressLinearScan, false, \ | |
212 "scramble block order used by LinearScan (stress test)") \ | |
213 \ | |
214 product(bool, TimeLinearScan, false, \ | |
215 "detailed timing of LinearScan phases") \ | |
216 \ | |
217 develop(bool, TimeEachLinearScan, false, \ | |
218 "print detailed timing of each LinearScan run") \ | |
219 \ | |
220 develop(bool, CountLinearScan, false, \ | |
221 "collect statistic counters during LinearScan") \ | |
222 \ | |
223 /* C1 variable */ \ | |
224 \ | |
225 develop(bool, C1Breakpoint, false, \ | |
226 "Sets a breakpoint at entry of each compiled method") \ | |
227 \ | |
228 develop(bool, ImplicitDiv0Checks, true, \ | |
229 "Use implicit division by zero checks") \ | |
230 \ | |
231 develop(bool, PinAllInstructions, false, \ | |
232 "All instructions are pinned") \ | |
233 \ | |
234 develop(bool, ValueStackPinStackAll, true, \ | |
235 "Pinning in ValueStack pin everything") \ | |
236 \ | |
237 develop(bool, UseFastNewInstance, true, \ | |
238 "Use fast inlined instance allocation") \ | |
239 \ | |
240 develop(bool, UseFastNewTypeArray, true, \ | |
241 "Use fast inlined type array allocation") \ | |
242 \ | |
243 develop(bool, UseFastNewObjectArray, true, \ | |
244 "Use fast inlined object array allocation") \ | |
245 \ | |
1942
00bc9eaf0e24
Support for -XX:+UseFastLocking flag. Fixed monitor enter XIR template for correct debug info at the runtime call.
Thomas Wuerthinger <wuerthinger@ssw.jku.at>
parents:
1939
diff
changeset
|
246 product(bool, UseFastLocking, true, \ |
0 | 247 "Use fast inlined locking code") \ |
248 \ | |
249 develop(bool, UseSlowPath, false, \ | |
250 "For debugging: test slow cases by always using them") \ | |
251 \ | |
252 develop(bool, GenerateArrayStoreCheck, true, \ | |
253 "Generates code for array store checks") \ | |
254 \ | |
255 develop(bool, DeoptC1, true, \ | |
256 "Use deoptimization in C1") \ | |
257 \ | |
258 develop(bool, PrintBailouts, false, \ | |
259 "Print bailout and its reason") \ | |
260 \ | |
261 develop(bool, TracePatching, false, \ | |
262 "Trace patching of field access on uninitialized classes") \ | |
263 \ | |
264 develop(bool, PatchALot, false, \ | |
265 "Marks all fields as having unloaded classes") \ | |
266 \ | |
267 develop(bool, PrintNotLoaded, false, \ | |
268 "Prints where classes are not loaded during code generation") \ | |
269 \ | |
270 notproduct(bool, VerifyOopMaps, false, \ | |
271 "Adds oopmap verification code to the generated code") \ | |
272 \ | |
273 develop(bool, PrintLIR, false, \ | |
274 "print low-level IR") \ | |
275 \ | |
276 develop(bool, BailoutAfterHIR, false, \ | |
277 "bailout of compilation after building of HIR") \ | |
278 \ | |
279 develop(bool, BailoutAfterLIR, false, \ | |
280 "bailout of compilation after building of LIR") \ | |
281 \ | |
282 develop(bool, BailoutOnExceptionHandlers, false, \ | |
283 "bailout of compilation for methods with exception handlers") \ | |
284 \ | |
285 develop(bool, InstallMethods, true, \ | |
286 "Install methods at the end of successful compilations") \ | |
287 \ | |
288 product(intx, CompilationRepeat, 0, \ | |
289 "Number of times to recompile method before returning result") \ | |
290 \ | |
2560
8902c4c20c69
increase max nmethod size, required for dacapo jython
Lukas Stadler <lukas.stadler@jku.at>
parents:
2491
diff
changeset
|
291 develop(intx, NMethodSizeLimit, (64*K)*wordSize, \ |
0 | 292 "Maximum size of a compiled method.") \ |
293 \ | |
294 develop(bool, TraceFPUStack, false, \ | |
295 "Trace emulation of the FPU stack (intel only)") \ | |
296 \ | |
297 develop(bool, TraceFPURegisterUsage, false, \ | |
298 "Trace usage of FPU registers at start of blocks (intel only)") \ | |
299 \ | |
300 develop(bool, OptimizeUnsafes, true, \ | |
301 "Optimize raw unsafe ops") \ | |
302 \ | |
303 develop(bool, PrintUnsafeOptimization, false, \ | |
304 "Print optimization of raw unsafe ops") \ | |
305 \ | |
306 develop(intx, InstructionCountCutoff, 37000, \ | |
307 "If GraphBuilder adds this many instructions, bails out") \ | |
308 \ | |
309 product_pd(intx, SafepointPollOffset, \ | |
310 "Offset added to polling address (Intel only)") \ | |
311 \ | |
312 develop(bool, ComputeExactFPURegisterUsage, true, \ | |
313 "Compute additional live set for fpu registers to simplify fpu stack merge (Intel only)") \ | |
314 \ | |
1783 | 315 product(bool, C1ProfileCalls, true, \ |
0 | 316 "Profile calls when generating code for updating MDOs") \ |
317 \ | |
1783 | 318 product(bool, C1ProfileVirtualCalls, true, \ |
0 | 319 "Profile virtual calls when generating code for updating MDOs") \ |
320 \ | |
1783 | 321 product(bool, C1ProfileInlinedCalls, true, \ |
0 | 322 "Profile inlined calls when generating code for updating MDOs") \ |
323 \ | |
1783 | 324 product(bool, C1ProfileBranches, true, \ |
0 | 325 "Profile branches when generating code for updating MDOs") \ |
326 \ | |
1783 | 327 product(bool, C1ProfileCheckcasts, true, \ |
0 | 328 "Profile checkcasts when generating code for updating MDOs") \ |
329 \ | |
1783 | 330 product(bool, C1OptimizeVirtualCallProfiling, true, \ |
331 "Use CHA and exact type results at call sites when updating MDOs")\ | |
0 | 332 \ |
1783 | 333 product(bool, C1UpdateMethodData, trueInTiered, \ |
334 "Update methodDataOops in Tier1-generated code") \ | |
0 | 335 \ |
336 develop(bool, PrintCFGToFile, false, \ | |
337 "print control flow graph to a separate file during compilation") \ | |
338 \ | |
339 | |
340 | |
341 // Read default values for c1 globals | |
342 | |
343 C1_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_NOTPRODUCT_FLAG) | |
1972 | 344 |
345 #endif // SHARE_VM_C1_C1_GLOBALS_HPP |