Mercurial > hg > truffle
annotate src/share/vm/runtime/globals.hpp @ 1483:ba37b9335e1e
New option "-graal" that sets up the correct boot class path and C1X options using only the two environment variables MAXINE and GRAAL.
This greatly simplifies command line arguments necessary to start the Graal VM.
author | Thomas Wuerthinger <wuerthinger@ssw.jku.at> |
---|---|
date | Mon, 29 Nov 2010 16:58:26 +0100 |
parents | 2c754f3a2722 |
children | 2d26b0046e0d |
rev | line source |
---|---|
0 | 1 /* |
880
2b4230d1e589
6862295: JDWP threadid changes during debugging session (leading to ingored breakpoints)
dcubed
parents:
484
diff
changeset
|
2 * Copyright 1997-2009 Sun Microsystems, Inc. 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 * | |
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, | |
20 * CA 95054 USA or visit www.sun.com if you need additional information or | |
21 * have any questions. | |
22 * | |
23 */ | |
24 | |
25 #if !defined(COMPILER1) && !defined(COMPILER2) | |
26 define_pd_global(bool, BackgroundCompilation, false); | |
27 define_pd_global(bool, UseTLAB, false); | |
28 define_pd_global(bool, CICompileOSR, false); | |
29 define_pd_global(bool, UseTypeProfile, false); | |
30 define_pd_global(bool, UseOnStackReplacement, false); | |
31 define_pd_global(bool, InlineIntrinsics, false); | |
32 define_pd_global(bool, PreferInterpreterNativeStubs, true); | |
33 define_pd_global(bool, ProfileInterpreter, false); | |
34 define_pd_global(bool, ProfileTraps, false); | |
35 define_pd_global(bool, TieredCompilation, false); | |
36 | |
37 define_pd_global(intx, CompileThreshold, 0); | |
38 define_pd_global(intx, Tier2CompileThreshold, 0); | |
39 define_pd_global(intx, Tier3CompileThreshold, 0); | |
40 define_pd_global(intx, Tier4CompileThreshold, 0); | |
41 | |
42 define_pd_global(intx, BackEdgeThreshold, 0); | |
43 define_pd_global(intx, Tier2BackEdgeThreshold, 0); | |
44 define_pd_global(intx, Tier3BackEdgeThreshold, 0); | |
45 define_pd_global(intx, Tier4BackEdgeThreshold, 0); | |
46 | |
47 define_pd_global(intx, OnStackReplacePercentage, 0); | |
48 define_pd_global(bool, ResizeTLAB, false); | |
49 define_pd_global(intx, FreqInlineSize, 0); | |
1064 | 50 define_pd_global(intx, InlineSmallCode, 0); |
0 | 51 define_pd_global(intx, NewSizeThreadIncrease, 4*K); |
52 define_pd_global(intx, InlineClassNatives, true); | |
53 define_pd_global(intx, InlineUnsafeOps, true); | |
54 define_pd_global(intx, InitialCodeCacheSize, 160*K); | |
55 define_pd_global(intx, ReservedCodeCacheSize, 32*M); | |
56 define_pd_global(intx, CodeCacheExpansionSize, 32*K); | |
57 define_pd_global(intx, CodeCacheMinBlockLength, 1); | |
58 define_pd_global(uintx,PermSize, ScaleForWordSize(4*M)); | |
59 define_pd_global(uintx,MaxPermSize, ScaleForWordSize(64*M)); | |
60 define_pd_global(bool, NeverActAsServerClassMachine, true); | |
1064 | 61 define_pd_global(uint64_t,MaxRAM, 1ULL*G); |
0 | 62 #define CI_COMPILER_COUNT 0 |
63 #else | |
64 | |
65 #ifdef COMPILER2 | |
66 #define CI_COMPILER_COUNT 2 | |
67 #else | |
68 #define CI_COMPILER_COUNT 1 | |
69 #endif // COMPILER2 | |
70 | |
71 #endif // no compilers | |
72 | |
73 | |
74 // string type aliases used only in this file | |
75 typedef const char* ccstr; | |
76 typedef const char* ccstrlist; // represents string arguments which accumulate | |
77 | |
78 enum FlagValueOrigin { | |
79 DEFAULT = 0, | |
80 COMMAND_LINE = 1, | |
81 ENVIRON_VAR = 2, | |
82 CONFIG_FILE = 3, | |
83 MANAGEMENT = 4, | |
84 ERGONOMIC = 5, | |
85 ATTACH_ON_DEMAND = 6, | |
86 INTERNAL = 99 | |
87 }; | |
88 | |
89 struct Flag { | |
90 const char *type; | |
91 const char *name; | |
92 void* addr; | |
93 const char *kind; | |
94 FlagValueOrigin origin; | |
95 | |
96 // points to all Flags static array | |
97 static Flag *flags; | |
98 | |
99 // number of flags | |
100 static size_t numFlags; | |
101 | |
102 static Flag* find_flag(char* name, size_t length); | |
103 | |
104 bool is_bool() const { return strcmp(type, "bool") == 0; } | |
105 bool get_bool() const { return *((bool*) addr); } | |
106 void set_bool(bool value) { *((bool*) addr) = value; } | |
107 | |
108 bool is_intx() const { return strcmp(type, "intx") == 0; } | |
109 intx get_intx() const { return *((intx*) addr); } | |
110 void set_intx(intx value) { *((intx*) addr) = value; } | |
111 | |
112 bool is_uintx() const { return strcmp(type, "uintx") == 0; } | |
113 uintx get_uintx() const { return *((uintx*) addr); } | |
114 void set_uintx(uintx value) { *((uintx*) addr) = value; } | |
115 | |
1064 | 116 bool is_uint64_t() const { return strcmp(type, "uint64_t") == 0; } |
117 uint64_t get_uint64_t() const { return *((uint64_t*) addr); } | |
118 void set_uint64_t(uint64_t value) { *((uint64_t*) addr) = value; } | |
119 | |
0 | 120 bool is_double() const { return strcmp(type, "double") == 0; } |
121 double get_double() const { return *((double*) addr); } | |
122 void set_double(double value) { *((double*) addr) = value; } | |
123 | |
124 bool is_ccstr() const { return strcmp(type, "ccstr") == 0 || strcmp(type, "ccstrlist") == 0; } | |
125 bool ccstr_accumulates() const { return strcmp(type, "ccstrlist") == 0; } | |
126 ccstr get_ccstr() const { return *((ccstr*) addr); } | |
127 void set_ccstr(ccstr value) { *((ccstr*) addr) = value; } | |
128 | |
129 bool is_unlocker() const; | |
130 bool is_unlocked() const; | |
131 bool is_writeable() const; | |
132 bool is_external() const; | |
133 | |
134 void print_on(outputStream* st); | |
135 void print_as_flag(outputStream* st); | |
136 }; | |
137 | |
138 // debug flags control various aspects of the VM and are global accessible | |
139 | |
140 // use FlagSetting to temporarily change some debug flag | |
141 // e.g. FlagSetting fs(DebugThisAndThat, true); | |
142 // restored to previous value upon leaving scope | |
143 class FlagSetting { | |
144 bool val; | |
145 bool* flag; | |
146 public: | |
147 FlagSetting(bool& fl, bool newValue) { flag = &fl; val = fl; fl = newValue; } | |
148 ~FlagSetting() { *flag = val; } | |
149 }; | |
150 | |
151 | |
152 class CounterSetting { | |
153 intx* counter; | |
154 public: | |
155 CounterSetting(intx* cnt) { counter = cnt; (*counter)++; } | |
156 ~CounterSetting() { (*counter)--; } | |
157 }; | |
158 | |
159 | |
160 class IntFlagSetting { | |
161 intx val; | |
162 intx* flag; | |
163 public: | |
164 IntFlagSetting(intx& fl, intx newValue) { flag = &fl; val = fl; fl = newValue; } | |
165 ~IntFlagSetting() { *flag = val; } | |
166 }; | |
167 | |
168 | |
169 class DoubleFlagSetting { | |
170 double val; | |
171 double* flag; | |
172 public: | |
173 DoubleFlagSetting(double& fl, double newValue) { flag = &fl; val = fl; fl = newValue; } | |
174 ~DoubleFlagSetting() { *flag = val; } | |
175 }; | |
176 | |
177 | |
178 class CommandLineFlags { | |
179 public: | |
180 static bool boolAt(char* name, size_t len, bool* value); | |
181 static bool boolAt(char* name, bool* value) { return boolAt(name, strlen(name), value); } | |
182 static bool boolAtPut(char* name, size_t len, bool* value, FlagValueOrigin origin); | |
183 static bool boolAtPut(char* name, bool* value, FlagValueOrigin origin) { return boolAtPut(name, strlen(name), value, origin); } | |
184 | |
185 static bool intxAt(char* name, size_t len, intx* value); | |
186 static bool intxAt(char* name, intx* value) { return intxAt(name, strlen(name), value); } | |
187 static bool intxAtPut(char* name, size_t len, intx* value, FlagValueOrigin origin); | |
188 static bool intxAtPut(char* name, intx* value, FlagValueOrigin origin) { return intxAtPut(name, strlen(name), value, origin); } | |
189 | |
190 static bool uintxAt(char* name, size_t len, uintx* value); | |
191 static bool uintxAt(char* name, uintx* value) { return uintxAt(name, strlen(name), value); } | |
192 static bool uintxAtPut(char* name, size_t len, uintx* value, FlagValueOrigin origin); | |
193 static bool uintxAtPut(char* name, uintx* value, FlagValueOrigin origin) { return uintxAtPut(name, strlen(name), value, origin); } | |
194 | |
1064 | 195 static bool uint64_tAt(char* name, size_t len, uint64_t* value); |
196 static bool uint64_tAt(char* name, uint64_t* value) { return uint64_tAt(name, strlen(name), value); } | |
197 static bool uint64_tAtPut(char* name, size_t len, uint64_t* value, FlagValueOrigin origin); | |
198 static bool uint64_tAtPut(char* name, uint64_t* value, FlagValueOrigin origin) { return uint64_tAtPut(name, strlen(name), value, origin); } | |
199 | |
0 | 200 static bool doubleAt(char* name, size_t len, double* value); |
201 static bool doubleAt(char* name, double* value) { return doubleAt(name, strlen(name), value); } | |
202 static bool doubleAtPut(char* name, size_t len, double* value, FlagValueOrigin origin); | |
203 static bool doubleAtPut(char* name, double* value, FlagValueOrigin origin) { return doubleAtPut(name, strlen(name), value, origin); } | |
204 | |
205 static bool ccstrAt(char* name, size_t len, ccstr* value); | |
206 static bool ccstrAt(char* name, ccstr* value) { return ccstrAt(name, strlen(name), value); } | |
207 static bool ccstrAtPut(char* name, size_t len, ccstr* value, FlagValueOrigin origin); | |
208 static bool ccstrAtPut(char* name, ccstr* value, FlagValueOrigin origin) { return ccstrAtPut(name, strlen(name), value, origin); } | |
209 | |
210 // Returns false if name is not a command line flag. | |
211 static bool wasSetOnCmdline(const char* name, bool* value); | |
212 static void printSetFlags(); | |
213 | |
1150 | 214 static void printFlags(); |
0 | 215 |
216 static void verify() PRODUCT_RETURN; | |
217 }; | |
218 | |
219 // use this for flags that are true by default in the debug version but | |
220 // false in the optimized version, and vice versa | |
221 #ifdef ASSERT | |
222 #define trueInDebug true | |
223 #define falseInDebug false | |
224 #else | |
225 #define trueInDebug false | |
226 #define falseInDebug true | |
227 #endif | |
228 | |
229 // use this for flags that are true per default in the product build | |
230 // but false in development builds, and vice versa | |
231 #ifdef PRODUCT | |
232 #define trueInProduct true | |
233 #define falseInProduct false | |
234 #else | |
235 #define trueInProduct false | |
236 #define falseInProduct true | |
237 #endif | |
238 | |
239 // use this for flags that are true per default in the tiered build | |
240 // but false in non-tiered builds, and vice versa | |
241 #ifdef TIERED | |
242 #define trueInTiered true | |
243 #define falseInTiered false | |
244 #else | |
245 #define trueInTiered false | |
246 #define falseInTiered true | |
247 #endif | |
248 | |
249 // develop flags are settable / visible only during development and are constant in the PRODUCT version | |
250 // product flags are always settable / visible | |
251 // notproduct flags are settable / visible only during development and are not declared in the PRODUCT version | |
252 | |
253 // A flag must be declared with one of the following types: | |
254 // bool, intx, uintx, ccstr. | |
255 // The type "ccstr" is an alias for "const char*" and is used | |
256 // only in this file, because the macrology requires single-token type names. | |
257 | |
258 // Note: Diagnostic options not meant for VM tuning or for product modes. | |
259 // They are to be used for VM quality assurance or field diagnosis | |
260 // of VM bugs. They are hidden so that users will not be encouraged to | |
261 // try them as if they were VM ordinary execution options. However, they | |
262 // are available in the product version of the VM. Under instruction | |
263 // from support engineers, VM customers can turn them on to collect | |
264 // diagnostic information about VM problems. To use a VM diagnostic | |
265 // option, you must first specify +UnlockDiagnosticVMOptions. | |
266 // (This master switch also affects the behavior of -Xprintflags.) | |
350
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
267 // |
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
268 // experimental flags are in support of features that are not |
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
269 // part of the officially supported product, but are available |
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
270 // for experimenting with. They could, for example, be performance |
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
271 // features that may not have undergone full or rigorous QA, but which may |
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
272 // help performance in some cases and released for experimentation |
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
273 // by the community of users and developers. This flag also allows one to |
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
274 // be able to build a fully supported product that nonetheless also |
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
275 // ships with some unsupported, lightly tested, experimental features. |
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
276 // Like the UnlockDiagnosticVMOptions flag above, there is a corresponding |
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
277 // UnlockExperimentalVMOptions flag, which allows the control and |
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
278 // modification of the experimental flags. |
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
279 // |
0 | 280 // manageable flags are writeable external product flags. |
281 // They are dynamically writeable through the JDK management interface | |
282 // (com.sun.management.HotSpotDiagnosticMXBean API) and also through JConsole. | |
283 // These flags are external exported interface (see CCC). The list of | |
284 // manageable flags can be queried programmatically through the management | |
285 // interface. | |
286 // | |
287 // A flag can be made as "manageable" only if | |
288 // - the flag is defined in a CCC as an external exported interface. | |
289 // - the VM implementation supports dynamic setting of the flag. | |
290 // This implies that the VM must *always* query the flag variable | |
291 // and not reuse state related to the flag state at any given time. | |
292 // - you want the flag to be queried programmatically by the customers. | |
293 // | |
294 // product_rw flags are writeable internal product flags. | |
295 // They are like "manageable" flags but for internal/private use. | |
296 // The list of product_rw flags are internal/private flags which | |
297 // may be changed/removed in a future release. It can be set | |
298 // through the management interface to get/set value | |
299 // when the name of flag is supplied. | |
300 // | |
301 // A flag can be made as "product_rw" only if | |
302 // - the VM implementation supports dynamic setting of the flag. | |
303 // This implies that the VM must *always* query the flag variable | |
304 // and not reuse state related to the flag state at any given time. | |
305 // | |
306 // Note that when there is a need to support develop flags to be writeable, | |
307 // it can be done in the same way as product_rw. | |
308 | |
350
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
309 #define RUNTIME_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct, manageable, product_rw, lp64_product) \ |
113
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
109
diff
changeset
|
310 \ |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
109
diff
changeset
|
311 lp64_product(bool, UseCompressedOops, false, \ |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
109
diff
changeset
|
312 "Use 32-bit object references in 64-bit VM. " \ |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
109
diff
changeset
|
313 "lp64_product means flag is always constant in 32 bit VM") \ |
0 | 314 \ |
642
660978a2a31a
6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents:
615
diff
changeset
|
315 notproduct(bool, CheckCompressedOops, true, \ |
660978a2a31a
6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents:
615
diff
changeset
|
316 "generate checks in encoding/decoding code in debug VM") \ |
660978a2a31a
6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents:
615
diff
changeset
|
317 \ |
660978a2a31a
6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents:
615
diff
changeset
|
318 product_pd(uintx, HeapBaseMinAddress, \ |
660978a2a31a
6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents:
615
diff
changeset
|
319 "OS specific low limit for heap base address") \ |
660978a2a31a
6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents:
615
diff
changeset
|
320 \ |
660978a2a31a
6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents:
615
diff
changeset
|
321 diagnostic(bool, PrintCompressedOopsMode, false, \ |
660978a2a31a
6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents:
615
diff
changeset
|
322 "Print compressed oops base address and encoding mode") \ |
325
93befa083681
6741004: UseLargePages + UseCompressedOops breaks implicit null checking guard page
coleenp
parents:
300
diff
changeset
|
323 \ |
0 | 324 /* UseMembar is theoretically a temp flag used for memory barrier \ |
325 * removal testing. It was supposed to be removed before FCS but has \ | |
326 * been re-added (see 6401008) */ \ | |
327 product(bool, UseMembar, false, \ | |
328 "(Unstable) Issues membars on thread state transitions") \ | |
329 \ | |
330 diagnostic(bool, UnlockDiagnosticVMOptions, trueInDebug, \ | |
350
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
331 "Enable normal processing of flags relating to field diagnostics")\ |
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
332 \ |
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
333 experimental(bool, UnlockExperimentalVMOptions, false, \ |
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
334 "Enable normal processing of flags relating to experimental features")\ |
0 | 335 \ |
336 product(bool, JavaMonitorsInStackTrace, true, \ | |
337 "Print info. about Java monitor locks when the stacks are dumped")\ | |
338 \ | |
339 product_pd(bool, UseLargePages, \ | |
340 "Use large page memory") \ | |
341 \ | |
389
ee21eaa8ffe1
6660681: Incrementally reserve pages on win server 2003 for better large page affinity
jmasa
parents:
377
diff
changeset
|
342 product_pd(bool, UseLargePagesIndividualAllocation, \ |
ee21eaa8ffe1
6660681: Incrementally reserve pages on win server 2003 for better large page affinity
jmasa
parents:
377
diff
changeset
|
343 "Allocate large pages individually for better affinity") \ |
ee21eaa8ffe1
6660681: Incrementally reserve pages on win server 2003 for better large page affinity
jmasa
parents:
377
diff
changeset
|
344 \ |
ee21eaa8ffe1
6660681: Incrementally reserve pages on win server 2003 for better large page affinity
jmasa
parents:
377
diff
changeset
|
345 develop(bool, LargePagesIndividualAllocationInjectError, false, \ |
ee21eaa8ffe1
6660681: Incrementally reserve pages on win server 2003 for better large page affinity
jmasa
parents:
377
diff
changeset
|
346 "Fail large pages individual allocation") \ |
ee21eaa8ffe1
6660681: Incrementally reserve pages on win server 2003 for better large page affinity
jmasa
parents:
377
diff
changeset
|
347 \ |
0 | 348 develop(bool, TracePageSizes, false, \ |
349 "Trace page size selection and usage.") \ | |
350 \ | |
351 product(bool, UseNUMA, false, \ | |
352 "Use NUMA if available") \ | |
353 \ | |
462
85f1b9537f70
6779436: NUMA allocator: libnuma expects certain size of the buffer in numa_node_to_cpus()
iveresov
parents:
455
diff
changeset
|
354 product(bool, ForceNUMA, false, \ |
85f1b9537f70
6779436: NUMA allocator: libnuma expects certain size of the buffer in numa_node_to_cpus()
iveresov
parents:
455
diff
changeset
|
355 "Force NUMA optimizations on single-node/UMA systems") \ |
85f1b9537f70
6779436: NUMA allocator: libnuma expects certain size of the buffer in numa_node_to_cpus()
iveresov
parents:
455
diff
changeset
|
356 \ |
0 | 357 product(intx, NUMAChunkResizeWeight, 20, \ |
358 "Percentage (0-100) used to weight the current sample when " \ | |
359 "computing exponentially decaying average for " \ | |
360 "AdaptiveNUMAChunkSizing") \ | |
361 \ | |
362 product(intx, NUMASpaceResizeRate, 1*G, \ | |
363 "Do not reallocate more that this amount per collection") \ | |
364 \ | |
365 product(bool, UseAdaptiveNUMAChunkSizing, true, \ | |
366 "Enable adaptive chunk sizing for NUMA") \ | |
367 \ | |
368 product(bool, NUMAStats, false, \ | |
369 "Print NUMA stats in detailed heap information") \ | |
370 \ | |
371 product(intx, NUMAPageScanRate, 256, \ | |
372 "Maximum number of pages to include in the page scan procedure") \ | |
373 \ | |
374 product_pd(bool, NeedsDeoptSuspend, \ | |
375 "True for register window machines (sparc/ia64)") \ | |
376 \ | |
377 product(intx, UseSSE, 99, \ | |
378 "Highest supported SSE instructions set on x86/x64") \ | |
379 \ | |
380 product(uintx, LargePageSizeInBytes, 0, \ | |
381 "Large page size (0 to let VM choose the page size") \ | |
382 \ | |
383 product(uintx, LargePageHeapSizeThreshold, 128*M, \ | |
384 "Use large pages if max heap is at least this big") \ | |
385 \ | |
386 product(bool, ForceTimeHighResolution, false, \ | |
387 "Using high time resolution(For Win32 only)") \ | |
388 \ | |
389 develop(bool, TraceItables, false, \ | |
390 "Trace initialization and use of itables") \ | |
391 \ | |
392 develop(bool, TracePcPatching, false, \ | |
393 "Trace usage of frame::patch_pc") \ | |
394 \ | |
395 develop(bool, TraceJumps, false, \ | |
396 "Trace assembly jumps in thread ring buffer") \ | |
397 \ | |
398 develop(bool, TraceRelocator, false, \ | |
399 "Trace the bytecode relocator") \ | |
400 \ | |
401 develop(bool, TraceLongCompiles, false, \ | |
402 "Print out every time compilation is longer than " \ | |
403 "a given threashold") \ | |
404 \ | |
405 develop(bool, SafepointALot, false, \ | |
406 "Generates a lot of safepoints. Works with " \ | |
407 "GuaranteedSafepointInterval") \ | |
408 \ | |
409 product_pd(bool, BackgroundCompilation, \ | |
410 "A thread requesting compilation is not blocked during " \ | |
411 "compilation") \ | |
412 \ | |
413 product(bool, PrintVMQWaitTime, false, \ | |
414 "Prints out the waiting time in VM operation queue") \ | |
415 \ | |
416 develop(bool, BailoutToInterpreterForThrows, false, \ | |
417 "Compiled methods which throws/catches exceptions will be " \ | |
418 "deopt and intp.") \ | |
419 \ | |
420 develop(bool, NoYieldsInMicrolock, false, \ | |
421 "Disable yields in microlock") \ | |
422 \ | |
423 develop(bool, TraceOopMapGeneration, false, \ | |
424 "Shows oopmap generation") \ | |
425 \ | |
426 product(bool, MethodFlushing, true, \ | |
427 "Reclamation of zombie and not-entrant methods") \ | |
428 \ | |
429 develop(bool, VerifyStack, false, \ | |
430 "Verify stack of each thread when it is entering a runtime call") \ | |
431 \ | |
432 develop(bool, ForceUnreachable, false, \ | |
433 "(amd64) Make all non code cache addresses to be unreachable with rip-rel forcing use of 64bit literal fixups") \ | |
434 \ | |
435 notproduct(bool, StressDerivedPointers, false, \ | |
436 "Force scavenge when a derived pointers is detected on stack " \ | |
437 "after rtm call") \ | |
438 \ | |
439 develop(bool, TraceDerivedPointers, false, \ | |
440 "Trace traversal of derived pointers on stack") \ | |
441 \ | |
442 notproduct(bool, TraceCodeBlobStacks, false, \ | |
443 "Trace stack-walk of codeblobs") \ | |
444 \ | |
445 product(bool, PrintJNIResolving, false, \ | |
446 "Used to implement -v:jni") \ | |
447 \ | |
448 notproduct(bool, PrintRewrites, false, \ | |
449 "Print methods that are being rewritten") \ | |
450 \ | |
451 product(bool, UseInlineCaches, true, \ | |
452 "Use Inline Caches for virtual calls ") \ | |
453 \ | |
454 develop(bool, InlineArrayCopy, true, \ | |
455 "inline arraycopy native that is known to be part of " \ | |
456 "base library DLL") \ | |
457 \ | |
458 develop(bool, InlineObjectHash, true, \ | |
459 "inline Object::hashCode() native that is known to be part " \ | |
460 "of base library DLL") \ | |
461 \ | |
462 develop(bool, InlineObjectCopy, true, \ | |
463 "inline Object.clone and Arrays.copyOf[Range] intrinsics") \ | |
464 \ | |
465 develop(bool, InlineNatives, true, \ | |
466 "inline natives that are known to be part of base library DLL") \ | |
467 \ | |
468 develop(bool, InlineMathNatives, true, \ | |
469 "inline SinD, CosD, etc.") \ | |
470 \ | |
471 develop(bool, InlineClassNatives, true, \ | |
472 "inline Class.isInstance, etc") \ | |
473 \ | |
474 develop(bool, InlineAtomicLong, true, \ | |
475 "inline sun.misc.AtomicLong") \ | |
476 \ | |
477 develop(bool, InlineThreadNatives, true, \ | |
478 "inline Thread.currentThread, etc") \ | |
479 \ | |
480 develop(bool, InlineReflectionGetCallerClass, true, \ | |
481 "inline sun.reflect.Reflection.getCallerClass(), known to be part "\ | |
482 "of base library DLL") \ | |
483 \ | |
484 develop(bool, InlineUnsafeOps, true, \ | |
485 "inline memory ops (native methods) from sun.misc.Unsafe") \ | |
486 \ | |
487 develop(bool, ConvertCmpD2CmpF, true, \ | |
488 "Convert cmpD to cmpF when one input is constant in float range") \ | |
489 \ | |
490 develop(bool, ConvertFloat2IntClipping, true, \ | |
491 "Convert float2int clipping idiom to integer clipping") \ | |
492 \ | |
493 develop(bool, SpecialStringCompareTo, true, \ | |
494 "special version of string compareTo") \ | |
495 \ | |
496 develop(bool, SpecialStringIndexOf, true, \ | |
497 "special version of string indexOf") \ | |
498 \ | |
681 | 499 develop(bool, SpecialStringEquals, true, \ |
500 "special version of string equals") \ | |
501 \ | |
502 develop(bool, SpecialArraysEquals, true, \ | |
169
9148c65abefc
6695049: (coll) Create an x86 intrinsic for Arrays.equals
rasbold
parents:
164
diff
changeset
|
503 "special version of Arrays.equals(char[],char[])") \ |
9148c65abefc
6695049: (coll) Create an x86 intrinsic for Arrays.equals
rasbold
parents:
164
diff
changeset
|
504 \ |
681 | 505 product(bool, UseSSE42Intrinsics, false, \ |
506 "SSE4.2 versions of intrinsics") \ | |
507 \ | |
0 | 508 develop(bool, TraceCallFixup, false, \ |
509 "traces all call fixups") \ | |
510 \ | |
511 develop(bool, DeoptimizeALot, false, \ | |
512 "deoptimize at every exit from the runtime system") \ | |
513 \ | |
434 | 514 notproduct(ccstrlist, DeoptimizeOnlyAt, "", \ |
0 | 515 "a comma separated list of bcis to deoptimize at") \ |
516 \ | |
517 product(bool, DeoptimizeRandom, false, \ | |
518 "deoptimize random frames on random exit from the runtime system")\ | |
519 \ | |
520 notproduct(bool, ZombieALot, false, \ | |
521 "creates zombies (non-entrant) at exit from the runt. system") \ | |
522 \ | |
523 notproduct(bool, WalkStackALot, false, \ | |
524 "trace stack (no print) at every exit from the runtime system") \ | |
525 \ | |
526 develop(bool, Debugging, false, \ | |
527 "set when executing debug methods in debug.ccp " \ | |
528 "(to prevent triggering assertions)") \ | |
529 \ | |
530 notproduct(bool, StrictSafepointChecks, trueInDebug, \ | |
531 "Enable strict checks that safepoints cannot happen for threads " \ | |
532 "that used No_Safepoint_Verifier") \ | |
533 \ | |
534 notproduct(bool, VerifyLastFrame, false, \ | |
535 "Verify oops on last frame on entry to VM") \ | |
536 \ | |
537 develop(bool, TraceHandleAllocation, false, \ | |
538 "Prints out warnings when suspicious many handles are allocated") \ | |
539 \ | |
540 product(bool, UseCompilerSafepoints, true, \ | |
541 "Stop at safepoints in compiled code") \ | |
542 \ | |
543 product(bool, UseSplitVerifier, true, \ | |
544 "use split verifier with StackMapTable attributes") \ | |
545 \ | |
546 product(bool, FailOverToOldVerifier, true, \ | |
547 "fail over to old verifier when split verifier fails") \ | |
548 \ | |
549 develop(bool, ShowSafepointMsgs, false, \ | |
550 "Show msg. about safepoint synch.") \ | |
551 \ | |
552 product(bool, SafepointTimeout, false, \ | |
553 "Time out and warn or fail after SafepointTimeoutDelay " \ | |
554 "milliseconds if failed to reach safepoint") \ | |
555 \ | |
556 develop(bool, DieOnSafepointTimeout, false, \ | |
557 "Die upon failure to reach safepoint (see SafepointTimeout)") \ | |
558 \ | |
559 /* 50 retries * (5 * current_retry_count) millis = ~6.375 seconds */ \ | |
560 /* typically, at most a few retries are needed */ \ | |
561 product(intx, SuspendRetryCount, 50, \ | |
562 "Maximum retry count for an external suspend request") \ | |
563 \ | |
564 product(intx, SuspendRetryDelay, 5, \ | |
565 "Milliseconds to delay per retry (* current_retry_count)") \ | |
566 \ | |
567 product(bool, AssertOnSuspendWaitFailure, false, \ | |
568 "Assert/Guarantee on external suspend wait failure") \ | |
569 \ | |
570 product(bool, TraceSuspendWaitFailures, false, \ | |
571 "Trace external suspend wait failures") \ | |
572 \ | |
573 product(bool, MaxFDLimit, true, \ | |
574 "Bump the number of file descriptors to max in solaris.") \ | |
575 \ | |
576 notproduct(bool, LogEvents, trueInDebug, \ | |
577 "Enable Event log") \ | |
578 \ | |
579 product(bool, BytecodeVerificationRemote, true, \ | |
580 "Enables the Java bytecode verifier for remote classes") \ | |
581 \ | |
582 product(bool, BytecodeVerificationLocal, false, \ | |
583 "Enables the Java bytecode verifier for local classes") \ | |
584 \ | |
585 develop(bool, ForceFloatExceptions, trueInDebug, \ | |
586 "Force exceptions on FP stack under/overflow") \ | |
587 \ | |
588 develop(bool, SoftMatchFailure, trueInProduct, \ | |
589 "If the DFA fails to match a node, print a message and bail out") \ | |
590 \ | |
591 develop(bool, VerifyStackAtCalls, false, \ | |
592 "Verify that the stack pointer is unchanged after calls") \ | |
593 \ | |
594 develop(bool, TraceJavaAssertions, false, \ | |
595 "Trace java language assertions") \ | |
596 \ | |
597 notproduct(bool, CheckAssertionStatusDirectives, false, \ | |
598 "temporary - see javaClasses.cpp") \ | |
599 \ | |
600 notproduct(bool, PrintMallocFree, false, \ | |
601 "Trace calls to C heap malloc/free allocation") \ | |
602 \ | |
603 notproduct(bool, PrintOopAddress, false, \ | |
604 "Always print the location of the oop") \ | |
605 \ | |
606 notproduct(bool, VerifyCodeCacheOften, false, \ | |
607 "Verify compiled-code cache often") \ | |
608 \ | |
609 develop(bool, ZapDeadCompiledLocals, false, \ | |
610 "Zap dead locals in compiler frames") \ | |
611 \ | |
612 notproduct(bool, ZapDeadLocalsOld, false, \ | |
613 "Zap dead locals (old version, zaps all frames when " \ | |
614 "entering the VM") \ | |
615 \ | |
616 notproduct(bool, CheckOopishValues, false, \ | |
617 "Warn if value contains oop ( requires ZapDeadLocals)") \ | |
618 \ | |
619 develop(bool, UseMallocOnly, false, \ | |
620 "use only malloc/free for allocation (no resource area/arena)") \ | |
621 \ | |
622 develop(bool, PrintMalloc, false, \ | |
623 "print all malloc/free calls") \ | |
624 \ | |
625 develop(bool, ZapResourceArea, trueInDebug, \ | |
626 "Zap freed resource/arena space with 0xABABABAB") \ | |
627 \ | |
628 notproduct(bool, ZapVMHandleArea, trueInDebug, \ | |
629 "Zap freed VM handle space with 0xBCBCBCBC") \ | |
630 \ | |
631 develop(bool, ZapJNIHandleArea, trueInDebug, \ | |
632 "Zap freed JNI handle space with 0xFEFEFEFE") \ | |
633 \ | |
263
12eea04c8b06
6672698: mangle_unused_area() should not remangle the entire heap at each collection.
jmasa
parents:
219
diff
changeset
|
634 develop(bool, ZapUnusedHeapArea, trueInDebug, \ |
0 | 635 "Zap unused heap space with 0xBAADBABE") \ |
636 \ | |
263
12eea04c8b06
6672698: mangle_unused_area() should not remangle the entire heap at each collection.
jmasa
parents:
219
diff
changeset
|
637 develop(bool, TraceZapUnusedHeapArea, false, \ |
12eea04c8b06
6672698: mangle_unused_area() should not remangle the entire heap at each collection.
jmasa
parents:
219
diff
changeset
|
638 "Trace zapping of unused heap space") \ |
12eea04c8b06
6672698: mangle_unused_area() should not remangle the entire heap at each collection.
jmasa
parents:
219
diff
changeset
|
639 \ |
12eea04c8b06
6672698: mangle_unused_area() should not remangle the entire heap at each collection.
jmasa
parents:
219
diff
changeset
|
640 develop(bool, CheckZapUnusedHeapArea, false, \ |
12eea04c8b06
6672698: mangle_unused_area() should not remangle the entire heap at each collection.
jmasa
parents:
219
diff
changeset
|
641 "Check zapping of unused heap space") \ |
12eea04c8b06
6672698: mangle_unused_area() should not remangle the entire heap at each collection.
jmasa
parents:
219
diff
changeset
|
642 \ |
481
7d7a7c599c17
6578152: fill_region_with_object has usability and safety issues
jcoomes
parents:
462
diff
changeset
|
643 develop(bool, ZapFillerObjects, trueInDebug, \ |
7d7a7c599c17
6578152: fill_region_with_object has usability and safety issues
jcoomes
parents:
462
diff
changeset
|
644 "Zap filler objects with 0xDEAFBABE") \ |
7d7a7c599c17
6578152: fill_region_with_object has usability and safety issues
jcoomes
parents:
462
diff
changeset
|
645 \ |
0 | 646 develop(bool, PrintVMMessages, true, \ |
647 "Print vm messages on console") \ | |
648 \ | |
649 product(bool, PrintGCApplicationConcurrentTime, false, \ | |
650 "Print the time the application has been running") \ | |
651 \ | |
652 product(bool, PrintGCApplicationStoppedTime, false, \ | |
653 "Print the time the application has been stopped") \ | |
654 \ | |
655 develop(bool, Verbose, false, \ | |
656 "Prints additional debugging information from other modes") \ | |
657 \ | |
658 develop(bool, PrintMiscellaneous, false, \ | |
659 "Prints uncategorized debugging information (requires +Verbose)") \ | |
660 \ | |
661 develop(bool, WizardMode, false, \ | |
662 "Prints much more debugging information") \ | |
663 \ | |
664 product(bool, ShowMessageBoxOnError, false, \ | |
665 "Keep process alive on VM fatal error") \ | |
666 \ | |
667 product_pd(bool, UseOSErrorReporting, \ | |
668 "Let VM fatal error propagate to the OS (ie. WER on Windows)") \ | |
669 \ | |
670 product(bool, SuppressFatalErrorMessage, false, \ | |
671 "Do NO Fatal Error report [Avoid deadlock]") \ | |
672 \ | |
673 product(ccstrlist, OnError, "", \ | |
674 "Run user-defined commands on fatal error; see VMError.cpp " \ | |
675 "for examples") \ | |
676 \ | |
677 product(ccstrlist, OnOutOfMemoryError, "", \ | |
678 "Run user-defined commands on first java.lang.OutOfMemoryError") \ | |
679 \ | |
615
c6c601a0f2d6
6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents:
570
diff
changeset
|
680 manageable(bool, HeapDumpBeforeFullGC, false, \ |
c6c601a0f2d6
6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents:
570
diff
changeset
|
681 "Dump heap to file before any major stop-world GC") \ |
c6c601a0f2d6
6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents:
570
diff
changeset
|
682 \ |
c6c601a0f2d6
6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents:
570
diff
changeset
|
683 manageable(bool, HeapDumpAfterFullGC, false, \ |
c6c601a0f2d6
6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents:
570
diff
changeset
|
684 "Dump heap to file after any major stop-world GC") \ |
c6c601a0f2d6
6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents:
570
diff
changeset
|
685 \ |
0 | 686 manageable(bool, HeapDumpOnOutOfMemoryError, false, \ |
687 "Dump heap to file when java.lang.OutOfMemoryError is thrown") \ | |
688 \ | |
689 manageable(ccstr, HeapDumpPath, NULL, \ | |
690 "When HeapDumpOnOutOfMemoryError is on, the path (filename or" \ | |
691 "directory) of the dump file (defaults to java_pid<pid>.hprof" \ | |
692 "in the working directory)") \ | |
693 \ | |
694 develop(uintx, SegmentedHeapDumpThreshold, 2*G, \ | |
695 "Generate a segmented heap dump (JAVA PROFILE 1.0.2 format) " \ | |
696 "when the heap usage is larger than this") \ | |
697 \ | |
698 develop(uintx, HeapDumpSegmentSize, 1*G, \ | |
699 "Approximate segment size when generating a segmented heap dump") \ | |
700 \ | |
701 develop(bool, BreakAtWarning, false, \ | |
702 "Execute breakpoint upon encountering VM warning") \ | |
703 \ | |
704 product_pd(bool, UseVectoredExceptions, \ | |
705 "Temp Flag - Use Vectored Exceptions rather than SEH (Windows Only)") \ | |
706 \ | |
707 develop(bool, TraceVMOperation, false, \ | |
708 "Trace vm operations") \ | |
709 \ | |
710 develop(bool, UseFakeTimers, false, \ | |
711 "Tells whether the VM should use system time or a fake timer") \ | |
712 \ | |
713 diagnostic(bool, LogCompilation, false, \ | |
714 "Log compilation activity in detail to hotspot.log or LogFile") \ | |
715 \ | |
716 product(bool, PrintCompilation, false, \ | |
717 "Print compilations") \ | |
718 \ | |
719 diagnostic(bool, TraceNMethodInstalls, false, \ | |
720 "Trace nmethod intallation") \ | |
721 \ | |
1465
2c754f3a2722
Inlining of static final field values. Java mirror instead of VmID. Support for PrintMetrics option.
Thomas Wuerthinger <wuerthinger@ssw.jku.at>
parents:
1367
diff
changeset
|
722 diagnostic(intx, ScavengeRootsInCode, 1, \ |
989
148e5441d916
6863023: need non-perm oops in code cache for JSR 292
jrose
parents:
910
diff
changeset
|
723 "0: do not allow scavengable oops in the code cache; " \ |
148e5441d916
6863023: need non-perm oops in code cache for JSR 292
jrose
parents:
910
diff
changeset
|
724 "1: allow scavenging from the code cache; " \ |
148e5441d916
6863023: need non-perm oops in code cache for JSR 292
jrose
parents:
910
diff
changeset
|
725 "2: emit as many constants as the compiler can see") \ |
148e5441d916
6863023: need non-perm oops in code cache for JSR 292
jrose
parents:
910
diff
changeset
|
726 \ |
0 | 727 diagnostic(bool, TraceOSRBreakpoint, false, \ |
728 "Trace OSR Breakpoint ") \ | |
729 \ | |
730 diagnostic(bool, TraceCompileTriggered, false, \ | |
731 "Trace compile triggered") \ | |
732 \ | |
733 diagnostic(bool, TraceTriggers, false, \ | |
734 "Trace triggers") \ | |
735 \ | |
736 product(bool, AlwaysRestoreFPU, false, \ | |
737 "Restore the FPU control word after every JNI call (expensive)") \ | |
738 \ | |
739 notproduct(bool, PrintCompilation2, false, \ | |
740 "Print additional statistics per compilation") \ | |
741 \ | |
100
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
76
diff
changeset
|
742 diagnostic(bool, PrintAdapterHandlers, false, \ |
0 | 743 "Print code generated for i2c/c2i adapters") \ |
744 \ | |
1207
74c848d437ab
6921922: fix for 6911204 breaks tagged stack interpreter
never
parents:
1206
diff
changeset
|
745 develop(bool, VerifyAdapterSharing, false, \ |
74c848d437ab
6921922: fix for 6911204 breaks tagged stack interpreter
never
parents:
1206
diff
changeset
|
746 "Verify that the code for shared adapters is the equivalent") \ |
74c848d437ab
6921922: fix for 6911204 breaks tagged stack interpreter
never
parents:
1206
diff
changeset
|
747 \ |
100
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
76
diff
changeset
|
748 diagnostic(bool, PrintAssembly, false, \ |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
76
diff
changeset
|
749 "Print assembly code (using external disassembler.so)") \ |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
76
diff
changeset
|
750 \ |
370
885fe0f95828
6744783: HotSpot segfaults if given -XX options with an empty string argument
never
parents:
325
diff
changeset
|
751 diagnostic(ccstr, PrintAssemblyOptions, NULL, \ |
100
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
76
diff
changeset
|
752 "Options string passed to disassembler.so") \ |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
76
diff
changeset
|
753 \ |
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
76
diff
changeset
|
754 diagnostic(bool, PrintNMethods, false, \ |
0 | 755 "Print assembly code for nmethods when generated") \ |
756 \ | |
100
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
76
diff
changeset
|
757 diagnostic(bool, PrintNativeNMethods, false, \ |
0 | 758 "Print assembly code for native nmethods when generated") \ |
759 \ | |
760 develop(bool, PrintDebugInfo, false, \ | |
761 "Print debug information for all nmethods when generated") \ | |
762 \ | |
763 develop(bool, PrintRelocations, false, \ | |
764 "Print relocation information for all nmethods when generated") \ | |
765 \ | |
766 develop(bool, PrintDependencies, false, \ | |
767 "Print dependency information for all nmethods when generated") \ | |
768 \ | |
769 develop(bool, PrintExceptionHandlers, false, \ | |
770 "Print exception handler tables for all nmethods when generated") \ | |
771 \ | |
772 develop(bool, InterceptOSException, false, \ | |
773 "Starts debugger when an implicit OS (e.g., NULL) " \ | |
774 "exception happens") \ | |
775 \ | |
776 notproduct(bool, PrintCodeCache, false, \ | |
777 "Print the compiled_code cache when exiting") \ | |
778 \ | |
779 develop(bool, PrintCodeCache2, false, \ | |
780 "Print detailed info on the compiled_code cache when exiting") \ | |
781 \ | |
100
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
76
diff
changeset
|
782 diagnostic(bool, PrintStubCode, false, \ |
0 | 783 "Print generated stub code") \ |
784 \ | |
785 product(bool, StackTraceInThrowable, true, \ | |
786 "Collect backtrace in throwable when exception happens") \ | |
787 \ | |
788 product(bool, OmitStackTraceInFastThrow, true, \ | |
789 "Omit backtraces for some 'hot' exceptions in optimized code") \ | |
790 \ | |
791 product(bool, ProfilerPrintByteCodeStatistics, false, \ | |
792 "Prints byte code statictics when dumping profiler output") \ | |
793 \ | |
794 product(bool, ProfilerRecordPC, false, \ | |
795 "Collects tick for each 16 byte interval of compiled code") \ | |
796 \ | |
1064 | 797 product(bool, ProfileVM, false, \ |
0 | 798 "Profiles ticks that fall within VM (either in the VM Thread " \ |
799 "or VM code called through stubs)") \ | |
800 \ | |
801 product(bool, ProfileIntervals, false, \ | |
802 "Prints profiles for each interval (see ProfileIntervalsTicks)") \ | |
803 \ | |
804 notproduct(bool, ProfilerCheckIntervals, false, \ | |
805 "Collect and print info on spacing of profiler ticks") \ | |
806 \ | |
807 develop(bool, PrintJVMWarnings, false, \ | |
808 "Prints warnings for unimplemented JVM functions") \ | |
809 \ | |
810 notproduct(uintx, WarnOnStalledSpinLock, 0, \ | |
811 "Prints warnings for stalled SpinLocks") \ | |
812 \ | |
813 develop(bool, InitializeJavaLangSystem, true, \ | |
814 "Initialize java.lang.System - turn off for individual " \ | |
815 "method debugging") \ | |
816 \ | |
817 develop(bool, InitializeJavaLangString, true, \ | |
818 "Initialize java.lang.String - turn off for individual " \ | |
819 "method debugging") \ | |
820 \ | |
821 develop(bool, InitializeJavaLangExceptionsErrors, true, \ | |
822 "Initialize various error and exception classes - turn off for " \ | |
823 "individual method debugging") \ | |
824 \ | |
825 product(bool, RegisterFinalizersAtInit, true, \ | |
826 "Register finalizable objects at end of Object.<init> or " \ | |
1064 | 827 "after allocation") \ |
0 | 828 \ |
829 develop(bool, RegisterReferences, true, \ | |
830 "Tells whether the VM should register soft/weak/final/phantom " \ | |
831 "references") \ | |
832 \ | |
833 develop(bool, IgnoreRewrites, false, \ | |
834 "Supress rewrites of bytecodes in the oopmap generator. " \ | |
835 "This is unsafe!") \ | |
836 \ | |
837 develop(bool, PrintCodeCacheExtension, false, \ | |
838 "Print extension of code cache") \ | |
839 \ | |
840 develop(bool, UsePrivilegedStack, true, \ | |
841 "Enable the security JVM functions") \ | |
842 \ | |
843 develop(bool, IEEEPrecision, true, \ | |
844 "Enables IEEE precision (for INTEL only)") \ | |
845 \ | |
846 develop(bool, ProtectionDomainVerification, true, \ | |
847 "Verifies protection domain before resolution in system " \ | |
848 "dictionary") \ | |
849 \ | |
850 product(bool, ClassUnloading, true, \ | |
851 "Do unloading of classes") \ | |
852 \ | |
474
7a018855d2f0
6779339: turn off LinkWellKnownClasses by default pending further testing
jrose
parents:
455
diff
changeset
|
853 diagnostic(bool, LinkWellKnownClasses, false, \ |
132
60b728ec77c1
6652736: well known classes in system dictionary are inefficiently processed
jrose
parents:
116
diff
changeset
|
854 "Resolve a well known class as soon as its name is seen") \ |
60b728ec77c1
6652736: well known classes in system dictionary are inefficiently processed
jrose
parents:
116
diff
changeset
|
855 \ |
0 | 856 develop(bool, DisableStartThread, false, \ |
857 "Disable starting of additional Java threads " \ | |
858 "(for debugging only)") \ | |
859 \ | |
860 develop(bool, MemProfiling, false, \ | |
861 "Write memory usage profiling to log file") \ | |
862 \ | |
863 notproduct(bool, PrintSystemDictionaryAtExit, false, \ | |
864 "Prints the system dictionary at exit") \ | |
865 \ | |
866 diagnostic(bool, UnsyncloadClass, false, \ | |
514 | 867 "Unstable: VM calls loadClass unsynchronized. Custom " \ |
868 "class loader must call VM synchronized for findClass " \ | |
869 "and defineClass.") \ | |
870 \ | |
871 product(bool, AlwaysLockClassLoader, false, \ | |
872 "Require the VM to acquire the class loader lock before calling " \ | |
873 "loadClass() even for class loaders registering " \ | |
1064 | 874 "as parallel capable") \ |
514 | 875 \ |
876 product(bool, AllowParallelDefineClass, false, \ | |
877 "Allow parallel defineClass requests for class loaders " \ | |
1064 | 878 "registering as parallel capable") \ |
514 | 879 \ |
880 product(bool, MustCallLoadClassInternal, false, \ | |
1064 | 881 "Call loadClassInternal() rather than loadClass()") \ |
0 | 882 \ |
883 product_pd(bool, DontYieldALot, \ | |
884 "Throw away obvious excess yield calls (for SOLARIS only)") \ | |
885 \ | |
886 product_pd(bool, ConvertSleepToYield, \ | |
887 "Converts sleep(0) to thread yield " \ | |
888 "(may be off for SOLARIS to improve GUI)") \ | |
889 \ | |
890 product(bool, ConvertYieldToSleep, false, \ | |
891 "Converts yield to a sleep of MinSleepInterval to simulate Win32 "\ | |
892 "behavior (SOLARIS only)") \ | |
893 \ | |
894 product(bool, UseBoundThreads, true, \ | |
895 "Bind user level threads to kernel threads (for SOLARIS only)") \ | |
896 \ | |
897 develop(bool, UseDetachedThreads, true, \ | |
898 "Use detached threads that are recycled upon termination " \ | |
899 "(for SOLARIS only)") \ | |
900 \ | |
901 product(bool, UseLWPSynchronization, true, \ | |
902 "Use LWP-based instead of libthread-based synchronization " \ | |
903 "(SPARC only)") \ | |
904 \ | |
370
885fe0f95828
6744783: HotSpot segfaults if given -XX options with an empty string argument
never
parents:
325
diff
changeset
|
905 product(ccstr, SyncKnobs, NULL, \ |
0 | 906 "(Unstable) Various monitor synchronization tunables") \ |
907 \ | |
908 product(intx, EmitSync, 0, \ | |
909 "(Unsafe,Unstable) " \ | |
910 " Controls emission of inline sync fast-path code") \ | |
911 \ | |
912 product(intx, AlwaysInflate, 0, "(Unstable) Force inflation") \ | |
913 \ | |
914 product(intx, Atomics, 0, \ | |
915 "(Unsafe,Unstable) Diagnostic - Controls emission of atomics") \ | |
916 \ | |
917 product(intx, FenceInstruction, 0, \ | |
918 "(Unsafe,Unstable) Experimental") \ | |
919 \ | |
920 product(intx, SyncFlags, 0, "(Unsafe,Unstable) Experimental Sync flags" ) \ | |
921 \ | |
922 product(intx, SyncVerbose, 0, "(Unstable)" ) \ | |
923 \ | |
924 product(intx, ClearFPUAtPark, 0, "(Unsafe,Unstable)" ) \ | |
925 \ | |
926 product(intx, hashCode, 0, \ | |
927 "(Unstable) select hashCode generation algorithm" ) \ | |
928 \ | |
929 product(intx, WorkAroundNPTLTimedWaitHang, 1, \ | |
930 "(Unstable, Linux-specific)" \ | |
931 " avoid NPTL-FUTEX hang pthread_cond_timedwait" ) \ | |
932 \ | |
1064 | 933 product(bool, FilterSpuriousWakeups, true, \ |
934 "Prevent spurious or premature wakeups from object.wait " \ | |
935 "(Solaris only)") \ | |
0 | 936 \ |
937 product(intx, NativeMonitorTimeout, -1, "(Unstable)" ) \ | |
938 product(intx, NativeMonitorFlags, 0, "(Unstable)" ) \ | |
939 product(intx, NativeMonitorSpinLimit, 20, "(Unstable)" ) \ | |
940 \ | |
941 develop(bool, UsePthreads, false, \ | |
942 "Use pthread-based instead of libthread-based synchronization " \ | |
943 "(SPARC only)") \ | |
944 \ | |
945 product(bool, AdjustConcurrency, false, \ | |
946 "call thr_setconcurrency at thread create time to avoid " \ | |
947 "LWP starvation on MP systems (For Solaris Only)") \ | |
948 \ | |
949 develop(bool, UpdateHotSpotCompilerFileOnError, true, \ | |
950 "Should the system attempt to update the compiler file when " \ | |
951 "an error occurs?") \ | |
952 \ | |
953 product(bool, ReduceSignalUsage, false, \ | |
954 "Reduce the use of OS signals in Java and/or the VM") \ | |
955 \ | |
956 notproduct(bool, ValidateMarkSweep, false, \ | |
957 "Do extra validation during MarkSweep collection") \ | |
958 \ | |
959 notproduct(bool, RecordMarkSweepCompaction, false, \ | |
960 "Enable GC-to-GC recording and querying of compaction during " \ | |
961 "MarkSweep") \ | |
962 \ | |
963 develop_pd(bool, ShareVtableStubs, \ | |
964 "Share vtable stubs (smaller code but worse branch prediction") \ | |
965 \ | |
966 develop(bool, LoadLineNumberTables, true, \ | |
967 "Tells whether the class file parser loads line number tables") \ | |
968 \ | |
969 develop(bool, LoadLocalVariableTables, true, \ | |
970 "Tells whether the class file parser loads local variable tables")\ | |
971 \ | |
972 develop(bool, LoadLocalVariableTypeTables, true, \ | |
973 "Tells whether the class file parser loads local variable type tables")\ | |
974 \ | |
975 product(bool, AllowUserSignalHandlers, false, \ | |
976 "Do not complain if the application installs signal handlers " \ | |
977 "(Solaris & Linux only)") \ | |
978 \ | |
979 product(bool, UseSignalChaining, true, \ | |
980 "Use signal-chaining to invoke signal handlers installed " \ | |
981 "by the application (Solaris & Linux only)") \ | |
982 \ | |
983 product(bool, UseAltSigs, false, \ | |
984 "Use alternate signals instead of SIGUSR1 & SIGUSR2 for VM " \ | |
1064 | 985 "internal signals (Solaris only)") \ |
0 | 986 \ |
987 product(bool, UseSpinning, false, \ | |
988 "Use spinning in monitor inflation and before entry") \ | |
989 \ | |
990 product(bool, PreSpinYield, false, \ | |
991 "Yield before inner spinning loop") \ | |
992 \ | |
993 product(bool, PostSpinYield, true, \ | |
994 "Yield after inner spinning loop") \ | |
995 \ | |
996 product(bool, AllowJNIEnvProxy, false, \ | |
997 "Allow JNIEnv proxies for jdbx") \ | |
998 \ | |
999 product(bool, JNIDetachReleasesMonitors, true, \ | |
1000 "JNI DetachCurrentThread releases monitors owned by thread") \ | |
1001 \ | |
1002 product(bool, RestoreMXCSROnJNICalls, false, \ | |
1003 "Restore MXCSR when returning from JNI calls") \ | |
1004 \ | |
1005 product(bool, CheckJNICalls, false, \ | |
1006 "Verify all arguments to JNI calls") \ | |
1007 \ | |
1008 product(bool, UseFastJNIAccessors, true, \ | |
1009 "Use optimized versions of Get<Primitive>Field") \ | |
1010 \ | |
1011 product(bool, EagerXrunInit, false, \ | |
1012 "Eagerly initialize -Xrun libraries; allows startup profiling, " \ | |
1013 " but not all -Xrun libraries may support the state of the VM at this time") \ | |
1014 \ | |
1015 product(bool, PreserveAllAnnotations, false, \ | |
1016 "Preserve RuntimeInvisibleAnnotations as well as RuntimeVisibleAnnotations") \ | |
1017 \ | |
1018 develop(uintx, PreallocatedOutOfMemoryErrorCount, 4, \ | |
1019 "Number of OutOfMemoryErrors preallocated with backtrace") \ | |
1020 \ | |
1021 product(bool, LazyBootClassLoader, true, \ | |
1022 "Enable/disable lazy opening of boot class path entries") \ | |
1023 \ | |
1024 diagnostic(bool, UseIncDec, true, \ | |
1025 "Use INC, DEC instructions on x86") \ | |
1026 \ | |
219 | 1027 product(bool, UseNewLongLShift, false, \ |
1028 "Use optimized bitwise shift left") \ | |
1029 \ | |
0 | 1030 product(bool, UseStoreImmI16, true, \ |
1031 "Use store immediate 16-bits value instruction on x86") \ | |
1032 \ | |
1033 product(bool, UseAddressNop, false, \ | |
1034 "Use '0F 1F [addr]' NOP instructions on x86 cpus") \ | |
1035 \ | |
1036 product(bool, UseXmmLoadAndClearUpper, true, \ | |
1037 "Load low part of XMM register and clear upper part") \ | |
1038 \ | |
1039 product(bool, UseXmmRegToRegMoveAll, false, \ | |
1040 "Copy all XMM register bits when moving value between registers") \ | |
1041 \ | |
71 | 1042 product(bool, UseXmmI2D, false, \ |
1043 "Use SSE2 CVTDQ2PD instruction to convert Integer to Double") \ | |
1044 \ | |
1045 product(bool, UseXmmI2F, false, \ | |
1046 "Use SSE2 CVTDQ2PS instruction to convert Integer to Float") \ | |
1047 \ | |
405 | 1048 product(bool, UseXMMForArrayCopy, false, \ |
1049 "Use SSE2 MOVQ instruction for Arraycopy") \ | |
1050 \ | |
1051 product(bool, UseUnalignedLoadStores, false, \ | |
1052 "Use SSE2 MOVDQU instruction for Arraycopy") \ | |
1053 \ | |
0 | 1054 product(intx, FieldsAllocationStyle, 1, \ |
1366
b9d85fcdf743
6940733: allocate non static oop fields in super and sub classes together
kvn
parents:
1365
diff
changeset
|
1055 "0 - type based with oops first, 1 - with oops last, " \ |
b9d85fcdf743
6940733: allocate non static oop fields in super and sub classes together
kvn
parents:
1365
diff
changeset
|
1056 "2 - oops in super and sub classes are together") \ |
0 | 1057 \ |
1058 product(bool, CompactFields, true, \ | |
1059 "Allocate nonstatic fields in gaps between previous fields") \ | |
1060 \ | |
1061 notproduct(bool, PrintCompactFieldsSavings, false, \ | |
1062 "Print how many words were saved with CompactFields") \ | |
1063 \ | |
1064 product(bool, UseBiasedLocking, true, \ | |
1065 "Enable biased locking in JVM") \ | |
1066 \ | |
1067 product(intx, BiasedLockingStartupDelay, 4000, \ | |
1068 "Number of milliseconds to wait before enabling biased locking") \ | |
1069 \ | |
1070 diagnostic(bool, PrintBiasedLockingStatistics, false, \ | |
1071 "Print statistics of biased locking in JVM") \ | |
1072 \ | |
1073 product(intx, BiasedLockingBulkRebiasThreshold, 20, \ | |
1074 "Threshold of number of revocations per type to try to " \ | |
1075 "rebias all objects in the heap of that type") \ | |
1076 \ | |
1077 product(intx, BiasedLockingBulkRevokeThreshold, 40, \ | |
1078 "Threshold of number of revocations per type to permanently " \ | |
1079 "revoke biases of all objects in the heap of that type") \ | |
1080 \ | |
1081 product(intx, BiasedLockingDecayTime, 25000, \ | |
1082 "Decay time (in milliseconds) to re-enable bulk rebiasing of a " \ | |
1083 "type after previous bulk rebias") \ | |
1084 \ | |
1085 /* tracing */ \ | |
1086 \ | |
1087 notproduct(bool, TraceRuntimeCalls, false, \ | |
1088 "Trace run-time calls") \ | |
1089 \ | |
1090 develop(bool, TraceJNICalls, false, \ | |
1091 "Trace JNI calls") \ | |
1092 \ | |
1093 notproduct(bool, TraceJVMCalls, false, \ | |
1094 "Trace JVM calls") \ | |
1095 \ | |
370
885fe0f95828
6744783: HotSpot segfaults if given -XX options with an empty string argument
never
parents:
325
diff
changeset
|
1096 product(ccstr, TraceJVMTI, NULL, \ |
0 | 1097 "Trace flags for JVMTI functions and events") \ |
1098 \ | |
880
2b4230d1e589
6862295: JDWP threadid changes during debugging session (leading to ingored breakpoints)
dcubed
parents:
484
diff
changeset
|
1099 product(bool, ForceFullGCJVMTIEpilogues, false, \ |
2b4230d1e589
6862295: JDWP threadid changes during debugging session (leading to ingored breakpoints)
dcubed
parents:
484
diff
changeset
|
1100 "Force 'Full GC' was done semantics for JVMTI GC epilogues") \ |
2b4230d1e589
6862295: JDWP threadid changes during debugging session (leading to ingored breakpoints)
dcubed
parents:
484
diff
changeset
|
1101 \ |
0 | 1102 /* This option can change an EMCP method into an obsolete method. */ \ |
1103 /* This can affect tests that except specific methods to be EMCP. */ \ | |
1104 /* This option should be used with caution. */ \ | |
1105 product(bool, StressLdcRewrite, false, \ | |
1106 "Force ldc -> ldc_w rewrite during RedefineClasses") \ | |
1107 \ | |
1108 product(intx, TraceRedefineClasses, 0, \ | |
1109 "Trace level for JVMTI RedefineClasses") \ | |
1110 \ | |
1111 /* change to false by default sometime after Mustang */ \ | |
1112 product(bool, VerifyMergedCPBytecodes, true, \ | |
1113 "Verify bytecodes after RedefineClasses constant pool merging") \ | |
1114 \ | |
1115 develop(bool, TraceJNIHandleAllocation, false, \ | |
1116 "Trace allocation/deallocation of JNI handle blocks") \ | |
1117 \ | |
1118 develop(bool, TraceThreadEvents, false, \ | |
1119 "Trace all thread events") \ | |
1120 \ | |
1121 develop(bool, TraceBytecodes, false, \ | |
1122 "Trace bytecode execution") \ | |
1123 \ | |
1124 develop(bool, TraceClassInitialization, false, \ | |
1125 "Trace class initialization") \ | |
1126 \ | |
1127 develop(bool, TraceExceptions, false, \ | |
1128 "Trace exceptions") \ | |
1129 \ | |
1130 develop(bool, TraceICs, false, \ | |
1131 "Trace inline cache changes") \ | |
1132 \ | |
1133 notproduct(bool, TraceInvocationCounterOverflow, false, \ | |
1134 "Trace method invocation counter overflow") \ | |
1135 \ | |
1136 develop(bool, TraceInlineCacheClearing, false, \ | |
1137 "Trace clearing of inline caches in nmethods") \ | |
1138 \ | |
1139 develop(bool, TraceDependencies, false, \ | |
1140 "Trace dependencies") \ | |
1141 \ | |
1142 develop(bool, VerifyDependencies, trueInDebug, \ | |
1143 "Exercise and verify the compilation dependency mechanism") \ | |
1144 \ | |
1145 develop(bool, TraceNewOopMapGeneration, false, \ | |
1146 "Trace OopMapGeneration") \ | |
1147 \ | |
1148 develop(bool, TraceNewOopMapGenerationDetailed, false, \ | |
1149 "Trace OopMapGeneration: print detailed cell states") \ | |
1150 \ | |
1151 develop(bool, TimeOopMap, false, \ | |
1152 "Time calls to GenerateOopMap::compute_map() in sum") \ | |
1153 \ | |
1154 develop(bool, TimeOopMap2, false, \ | |
1155 "Time calls to GenerateOopMap::compute_map() individually") \ | |
1156 \ | |
1157 develop(bool, TraceMonitorMismatch, false, \ | |
1158 "Trace monitor matching failures during OopMapGeneration") \ | |
1159 \ | |
1160 develop(bool, TraceOopMapRewrites, false, \ | |
1161 "Trace rewritting of method oops during oop map generation") \ | |
1162 \ | |
1163 develop(bool, TraceSafepoint, false, \ | |
1164 "Trace safepoint operations") \ | |
1165 \ | |
1166 develop(bool, TraceICBuffer, false, \ | |
1167 "Trace usage of IC buffer") \ | |
1168 \ | |
1169 develop(bool, TraceCompiledIC, false, \ | |
1170 "Trace changes of compiled IC") \ | |
1171 \ | |
1172 notproduct(bool, TraceZapDeadLocals, false, \ | |
1173 "Trace zapping dead locals") \ | |
1174 \ | |
1175 develop(bool, TraceStartupTime, false, \ | |
1176 "Trace setup time") \ | |
1177 \ | |
1178 develop(bool, TraceHPI, false, \ | |
1179 "Trace Host Porting Interface (HPI)") \ | |
1180 \ | |
1181 product(ccstr, HPILibPath, NULL, \ | |
1182 "Specify alternate path to HPI library") \ | |
1183 \ | |
1184 develop(bool, TraceProtectionDomainVerification, false, \ | |
1185 "Trace protection domain verifcation") \ | |
1186 \ | |
1187 develop(bool, TraceClearedExceptions, false, \ | |
1188 "Prints when an exception is forcibly cleared") \ | |
1189 \ | |
1190 product(bool, TraceClassResolution, false, \ | |
1191 "Trace all constant pool resolutions (for debugging)") \ | |
1192 \ | |
1193 product(bool, TraceBiasedLocking, false, \ | |
1194 "Trace biased locking in JVM") \ | |
1195 \ | |
1196 product(bool, TraceMonitorInflation, false, \ | |
1197 "Trace monitor inflation in JVM") \ | |
1198 \ | |
1199 /* assembler */ \ | |
1200 product(bool, Use486InstrsOnly, false, \ | |
1201 "Use 80486 Compliant instruction subset") \ | |
1202 \ | |
1203 /* gc */ \ | |
1204 \ | |
1205 product(bool, UseSerialGC, false, \ | |
342
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
142
diff
changeset
|
1206 "Use the serial garbage collector") \ |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
142
diff
changeset
|
1207 \ |
1193
c81fa70144aa
6919980: G1: remove +UseG1GC from under experimental options (second attempt)
tonyp
parents:
1179
diff
changeset
|
1208 product(bool, UseG1GC, false, \ |
342
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
142
diff
changeset
|
1209 "Use the Garbage-First garbage collector") \ |
0 | 1210 \ |
1211 product(bool, UseParallelGC, false, \ | |
1212 "Use the Parallel Scavenge garbage collector") \ | |
1213 \ | |
1214 product(bool, UseParallelOldGC, false, \ | |
1215 "Use the Parallel Old garbage collector") \ | |
1216 \ | |
1217 product(bool, UseParallelOldGCCompacting, true, \ | |
1218 "In the Parallel Old garbage collector use parallel compaction") \ | |
1219 \ | |
1220 product(bool, UseParallelDensePrefixUpdate, true, \ | |
1221 "In the Parallel Old garbage collector use parallel dense" \ | |
1222 " prefix update") \ | |
1223 \ | |
1224 product(uintx, HeapMaximumCompactionInterval, 20, \ | |
1225 "How often should we maximally compact the heap (not allowing " \ | |
1226 "any dead space)") \ | |
1227 \ | |
1228 product(uintx, HeapFirstMaximumCompactionCount, 3, \ | |
1229 "The collection count for the first maximum compaction") \ | |
1230 \ | |
1231 product(bool, UseMaximumCompactionOnSystemGC, true, \ | |
1232 "In the Parallel Old garbage collector maximum compaction for " \ | |
1233 "a system GC") \ | |
1234 \ | |
1235 product(uintx, ParallelOldDeadWoodLimiterMean, 50, \ | |
1236 "The mean used by the par compact dead wood" \ | |
1237 "limiter (a number between 0-100).") \ | |
1238 \ | |
1239 product(uintx, ParallelOldDeadWoodLimiterStdDev, 80, \ | |
1240 "The standard deviation used by the par compact dead wood" \ | |
1241 "limiter (a number between 0-100).") \ | |
1242 \ | |
1243 product(bool, UseParallelOldGCDensePrefix, true, \ | |
1244 "Use a dense prefix with the Parallel Old garbage collector") \ | |
1245 \ | |
1246 product(uintx, ParallelGCThreads, 0, \ | |
1247 "Number of parallel threads parallel gc will use") \ | |
1248 \ | |
483
0f773163217d
6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents:
481
diff
changeset
|
1249 develop(bool, ParallelOldGCSplitALot, false, \ |
0f773163217d
6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents:
481
diff
changeset
|
1250 "Provoke splitting (copying data from a young gen space to" \ |
0f773163217d
6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents:
481
diff
changeset
|
1251 "multiple destination spaces)") \ |
0f773163217d
6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents:
481
diff
changeset
|
1252 \ |
0f773163217d
6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents:
481
diff
changeset
|
1253 develop(uintx, ParallelOldGCSplitInterval, 3, \ |
0f773163217d
6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents:
481
diff
changeset
|
1254 "How often to provoke splitting a young gen space") \ |
0 | 1255 \ |
375
81cd571500b0
6725697: par compact - rename class ChunkData to RegionData
jcoomes
parents:
374
diff
changeset
|
1256 develop(bool, TraceRegionTasksQueuing, false, \ |
81cd571500b0
6725697: par compact - rename class ChunkData to RegionData
jcoomes
parents:
374
diff
changeset
|
1257 "Trace the queuing of the region tasks") \ |
0 | 1258 \ |
1284 | 1259 product(uintx, ConcGCThreads, 0, \ |
1260 "Number of threads concurrent gc will use") \ | |
342
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
142
diff
changeset
|
1261 \ |
0 | 1262 product(uintx, YoungPLABSize, 4096, \ |
1263 "Size of young gen promotion labs (in HeapWords)") \ | |
1264 \ | |
1265 product(uintx, OldPLABSize, 1024, \ | |
1266 "Size of old gen promotion labs (in HeapWords)") \ | |
1267 \ | |
1268 product(uintx, GCTaskTimeStampEntries, 200, \ | |
1269 "Number of time stamp entries per gc worker thread") \ | |
1270 \ | |
1271 product(bool, AlwaysTenure, false, \ | |
1272 "Always tenure objects in eden. (ParallelGC only)") \ | |
1273 \ | |
1274 product(bool, NeverTenure, false, \ | |
1064 | 1275 "Never tenure objects in eden, May tenure on overflow " \ |
1276 "(ParallelGC only)") \ | |
0 | 1277 \ |
1278 product(bool, ScavengeBeforeFullGC, true, \ | |
1064 | 1279 "Scavenge youngest generation before each full GC, " \ |
1280 "used with UseParallelGC") \ | |
0 | 1281 \ |
1282 develop(bool, ScavengeWithObjectsInToSpace, false, \ | |
1283 "Allow scavenges to occur when to_space contains objects.") \ | |
1284 \ | |
1285 product(bool, UseConcMarkSweepGC, false, \ | |
1286 "Use Concurrent Mark-Sweep GC in the old generation") \ | |
1287 \ | |
1288 product(bool, ExplicitGCInvokesConcurrent, false, \ | |
1289 "A System.gc() request invokes a concurrent collection;" \ | |
1290 " (effective only when UseConcMarkSweepGC)") \ | |
1291 \ | |
1292 product(bool, ExplicitGCInvokesConcurrentAndUnloadsClasses, false, \ | |
1064 | 1293 "A System.gc() request invokes a concurrent collection and " \ |
1294 "also unloads classes during such a concurrent gc cycle " \ | |
1295 "(effective only when UseConcMarkSweepGC)") \ | |
0 | 1296 \ |
1297 develop(bool, UseCMSAdaptiveFreeLists, true, \ | |
1298 "Use Adaptive Free Lists in the CMS generation") \ | |
1299 \ | |
1300 develop(bool, UseAsyncConcMarkSweepGC, true, \ | |
1301 "Use Asynchronous Concurrent Mark-Sweep GC in the old generation")\ | |
1302 \ | |
1303 develop(bool, RotateCMSCollectionTypes, false, \ | |
1304 "Rotate the CMS collections among concurrent and STW") \ | |
1305 \ | |
1306 product(bool, UseCMSBestFit, true, \ | |
1307 "Use CMS best fit allocation strategy") \ | |
1308 \ | |
1309 product(bool, UseCMSCollectionPassing, true, \ | |
1310 "Use passing of collection from background to foreground") \ | |
1311 \ | |
1312 product(bool, UseParNewGC, false, \ | |
1313 "Use parallel threads in the new generation.") \ | |
1314 \ | |
1315 product(bool, ParallelGCVerbose, false, \ | |
1316 "Verbose output for parallel GC.") \ | |
1317 \ | |
1318 product(intx, ParallelGCBufferWastePct, 10, \ | |
1319 "wasted fraction of parallel allocation buffer.") \ | |
1320 \ | |
1321 product(bool, ParallelGCRetainPLAB, true, \ | |
1322 "Retain parallel allocation buffers across scavenges.") \ | |
1323 \ | |
1324 product(intx, TargetPLABWastePct, 10, \ | |
1325 "target wasted space in last buffer as pct of overall allocation")\ | |
1326 \ | |
1327 product(uintx, PLABWeight, 75, \ | |
1328 "Percentage (0-100) used to weight the current sample when" \ | |
1329 "computing exponentially decaying average for ResizePLAB.") \ | |
1330 \ | |
1331 product(bool, ResizePLAB, true, \ | |
1332 "Dynamically resize (survivor space) promotion labs") \ | |
1333 \ | |
1334 product(bool, PrintPLAB, false, \ | |
1335 "Print (survivor space) promotion labs sizing decisions") \ | |
1336 \ | |
1337 product(intx, ParGCArrayScanChunk, 50, \ | |
1338 "Scan a subset and push remainder, if array is bigger than this") \ | |
1339 \ | |
695 | 1340 product(bool, ParGCUseLocalOverflow, false, \ |
1341 "Instead of a global overflow list, use local overflow stacks") \ | |
1342 \ | |
679
cea947c8a988
6819891: ParNew: Fix work queue overflow code to deal correctly with +UseCompressedOops
ysr
parents:
647
diff
changeset
|
1343 product(bool, ParGCTrimOverflow, true, \ |
695 | 1344 "Eagerly trim the local overflow lists (when ParGCUseLocalOverflow") \ |
679
cea947c8a988
6819891: ParNew: Fix work queue overflow code to deal correctly with +UseCompressedOops
ysr
parents:
647
diff
changeset
|
1345 \ |
534 | 1346 notproduct(bool, ParGCWorkQueueOverflowALot, false, \ |
1347 "Whether we should simulate work queue overflow in ParNew") \ | |
1348 \ | |
1349 notproduct(uintx, ParGCWorkQueueOverflowInterval, 1000, \ | |
1064 | 1350 "An `interval' counter that determines how frequently " \ |
1351 "we simulate overflow; a smaller number increases frequency") \ | |
534 | 1352 \ |
1353 product(uintx, ParGCDesiredObjsFromOverflowList, 20, \ | |
0 | 1354 "The desired number of objects to claim from the overflow list") \ |
1355 \ | |
1145
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1356 product(uintx, CMSParPromoteBlocksToClaim, 16, \ |
0 | 1357 "Number of blocks to attempt to claim when refilling CMS LAB for "\ |
1358 "parallel GC.") \ | |
1359 \ | |
1145
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1360 product(uintx, OldPLABWeight, 50, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1361 "Percentage (0-100) used to weight the current sample when" \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1362 "computing exponentially decaying average for resizing CMSParPromoteBlocksToClaim.") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1363 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1364 product(bool, ResizeOldPLAB, true, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1365 "Dynamically resize (old gen) promotion labs") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1366 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1367 product(bool, PrintOldPLAB, false, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1368 "Print (old gen) promotion labs sizing decisions") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1369 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1370 product(uintx, CMSOldPLABMin, 16, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1371 "Min size of CMS gen promotion lab caches per worker per blksize")\ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1372 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1373 product(uintx, CMSOldPLABMax, 1024, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1374 "Max size of CMS gen promotion lab caches per worker per blksize")\ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1375 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1376 product(uintx, CMSOldPLABNumRefills, 4, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1377 "Nominal number of refills of CMS gen promotion lab cache" \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1378 " per worker per block size") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1379 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1380 product(bool, CMSOldPLABResizeQuicker, false, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1381 "Whether to react on-the-fly during a scavenge to a sudden" \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1382 " change in block demand rate") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1383 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1384 product(uintx, CMSOldPLABToleranceFactor, 4, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1385 "The tolerance of the phase-change detector for on-the-fly" \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1386 " PLAB resizing during a scavenge") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1387 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1388 product(uintx, CMSOldPLABReactivityFactor, 2, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1389 "The gain in the feedback loop for on-the-fly PLAB resizing" \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1390 " during a scavenge") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1391 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1392 product(uintx, CMSOldPLABReactivityCeiling, 10, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1393 "The clamping of the gain in the feedback loop for on-the-fly" \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1394 " PLAB resizing during a scavenge") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1395 \ |
0 | 1396 product(bool, AlwaysPreTouch, false, \ |
1397 "It forces all freshly committed pages to be pre-touched.") \ | |
1398 \ | |
1399 product(bool, CMSUseOldDefaults, false, \ | |
1064 | 1400 "A flag temporarily introduced to allow reverting to some " \ |
1401 "older default settings; older as of 6.0") \ | |
0 | 1402 \ |
1403 product(intx, CMSYoungGenPerWorker, 16*M, \ | |
1404 "The amount of young gen chosen by default per GC worker " \ | |
1064 | 1405 "thread available") \ |
0 | 1406 \ |
342
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
142
diff
changeset
|
1407 product(bool, GCOverheadReporting, false, \ |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
142
diff
changeset
|
1408 "Enables the GC overhead reporting facility") \ |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
142
diff
changeset
|
1409 \ |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
142
diff
changeset
|
1410 product(intx, GCOverheadReportingPeriodMS, 100, \ |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
142
diff
changeset
|
1411 "Reporting period for conc GC overhead reporting, in ms ") \ |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
142
diff
changeset
|
1412 \ |
0 | 1413 product(bool, CMSIncrementalMode, false, \ |
1414 "Whether CMS GC should operate in \"incremental\" mode") \ | |
1415 \ | |
1416 product(uintx, CMSIncrementalDutyCycle, 10, \ | |
1417 "CMS incremental mode duty cycle (a percentage, 0-100). If" \ | |
1418 "CMSIncrementalPacing is enabled, then this is just the initial" \ | |
1419 "value") \ | |
1420 \ | |
1421 product(bool, CMSIncrementalPacing, true, \ | |
1422 "Whether the CMS incremental mode duty cycle should be " \ | |
1423 "automatically adjusted") \ | |
1424 \ | |
1425 product(uintx, CMSIncrementalDutyCycleMin, 0, \ | |
1064 | 1426 "Lower bound on the duty cycle when CMSIncrementalPacing is " \ |
1427 "enabled (a percentage, 0-100)") \ | |
0 | 1428 \ |
1429 product(uintx, CMSIncrementalSafetyFactor, 10, \ | |
1064 | 1430 "Percentage (0-100) used to add conservatism when computing the " \ |
1431 "duty cycle") \ | |
0 | 1432 \ |
1433 product(uintx, CMSIncrementalOffset, 0, \ | |
1434 "Percentage (0-100) by which the CMS incremental mode duty cycle" \ | |
1064 | 1435 " is shifted to the right within the period between young GCs") \ |
0 | 1436 \ |
1145
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1437 product(uintx, CMSExpAvgFactor, 50, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1438 "Percentage (0-100) used to weight the current sample when" \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1439 "computing exponential averages for CMS statistics.") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1440 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1441 product(uintx, CMS_FLSWeight, 75, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1442 "Percentage (0-100) used to weight the current sample when" \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1443 "computing exponentially decating averages for CMS FLS statistics.") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1444 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1445 product(uintx, CMS_FLSPadding, 1, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1446 "The multiple of deviation from mean to use for buffering" \ |
0 | 1447 "against volatility in free list demand.") \ |
1448 \ | |
1449 product(uintx, FLSCoalescePolicy, 2, \ | |
1450 "CMS: Aggression level for coalescing, increasing from 0 to 4") \ | |
1451 \ | |
1145
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1452 product(bool, FLSAlwaysCoalesceLarge, false, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1453 "CMS: Larger free blocks are always available for coalescing") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1454 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1455 product(double, FLSLargestBlockCoalesceProximity, 0.99, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1456 "CMS: the smaller the percentage the greater the coalition force")\ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1457 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1458 product(double, CMSSmallCoalSurplusPercent, 1.05, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1459 "CMS: the factor by which to inflate estimated demand of small" \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1460 " block sizes to prevent coalescing with an adjoining block") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1461 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1462 product(double, CMSLargeCoalSurplusPercent, 0.95, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1463 "CMS: the factor by which to inflate estimated demand of large" \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1464 " block sizes to prevent coalescing with an adjoining block") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1465 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1466 product(double, CMSSmallSplitSurplusPercent, 1.10, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1467 "CMS: the factor by which to inflate estimated demand of small" \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1468 " block sizes to prevent splitting to supply demand for smaller" \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1469 " blocks") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1470 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1471 product(double, CMSLargeSplitSurplusPercent, 1.00, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1472 "CMS: the factor by which to inflate estimated demand of large" \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1473 " block sizes to prevent splitting to supply demand for smaller" \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1474 " blocks") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1475 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1476 product(bool, CMSExtrapolateSweep, false, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1477 "CMS: cushion for block demand during sweep") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1478 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1479 product(uintx, CMS_SweepWeight, 75, \ |
1064 | 1480 "Percentage (0-100) used to weight the current sample when " \ |
1481 "computing exponentially decaying average for inter-sweep " \ | |
1482 "duration") \ | |
0 | 1483 \ |
1145
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1484 product(uintx, CMS_SweepPadding, 1, \ |
1064 | 1485 "The multiple of deviation from mean to use for buffering " \ |
0 | 1486 "against volatility in inter-sweep duration.") \ |
1487 \ | |
1488 product(uintx, CMS_SweepTimerThresholdMillis, 10, \ | |
1489 "Skip block flux-rate sampling for an epoch unless inter-sweep " \ | |
1064 | 1490 "duration exceeds this threhold in milliseconds") \ |
0 | 1491 \ |
1492 develop(bool, CMSTraceIncrementalMode, false, \ | |
1493 "Trace CMS incremental mode") \ | |
1494 \ | |
1495 develop(bool, CMSTraceIncrementalPacing, false, \ | |
1496 "Trace CMS incremental mode pacing computation") \ | |
1497 \ | |
1498 develop(bool, CMSTraceThreadState, false, \ | |
1499 "Trace the CMS thread state (enable the trace_state() method)") \ | |
1500 \ | |
1501 product(bool, CMSClassUnloadingEnabled, false, \ | |
1502 "Whether class unloading enabled when using CMS GC") \ | |
1503 \ | |
94
0834225a7916
6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents:
15
diff
changeset
|
1504 product(uintx, CMSClassUnloadingMaxInterval, 0, \ |
0834225a7916
6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents:
15
diff
changeset
|
1505 "When CMS class unloading is enabled, the maximum CMS cycle count"\ |
0834225a7916
6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents:
15
diff
changeset
|
1506 " for which classes may not be unloaded") \ |
0834225a7916
6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents:
15
diff
changeset
|
1507 \ |
0 | 1508 product(bool, CMSCompactWhenClearAllSoftRefs, true, \ |
1509 "Compact when asked to collect CMS gen with clear_all_soft_refs") \ | |
1510 \ | |
1511 product(bool, UseCMSCompactAtFullCollection, true, \ | |
1512 "Use mark sweep compact at full collections") \ | |
1513 \ | |
1514 product(uintx, CMSFullGCsBeforeCompaction, 0, \ | |
1515 "Number of CMS full collection done before compaction if > 0") \ | |
1516 \ | |
1517 develop(intx, CMSDictionaryChoice, 0, \ | |
1518 "Use BinaryTreeDictionary as default in the CMS generation") \ | |
1519 \ | |
1520 product(uintx, CMSIndexedFreeListReplenish, 4, \ | |
1521 "Replenish and indexed free list with this number of chunks") \ | |
1522 \ | |
1145
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1523 product(bool, CMSReplenishIntermediate, true, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1524 "Replenish all intermediate free-list caches") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1525 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1526 product(bool, CMSSplitIndexedFreeListBlocks, true, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1527 "When satisfying batched demand, splot blocks from the " \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1528 "IndexedFreeList whose size is a multiple of requested size") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1529 \ |
0 | 1530 product(bool, CMSLoopWarn, false, \ |
1531 "Warn in case of excessive CMS looping") \ | |
1532 \ | |
1533 develop(bool, CMSOverflowEarlyRestoration, false, \ | |
1534 "Whether preserved marks should be restored early") \ | |
1535 \ | |
1284 | 1536 product(uintx, MarkStackSize, NOT_LP64(32*K) LP64_ONLY(4*M), \ |
1537 "Size of marking stack") \ | |
1538 \ | |
1539 product(uintx, MarkStackSizeMax, NOT_LP64(4*M) LP64_ONLY(512*M), \ | |
1540 "Max size of marking stack") \ | |
0 | 1541 \ |
1542 notproduct(bool, CMSMarkStackOverflowALot, false, \ | |
1543 "Whether we should simulate frequent marking stack / work queue" \ | |
1544 " overflow") \ | |
1545 \ | |
534 | 1546 notproduct(uintx, CMSMarkStackOverflowInterval, 1000, \ |
1547 "An `interval' counter that determines how frequently" \ | |
0 | 1548 " we simulate overflow; a smaller number increases frequency") \ |
1549 \ | |
1550 product(uintx, CMSMaxAbortablePrecleanLoops, 0, \ | |
1551 "(Temporary, subject to experimentation)" \ | |
1552 "Maximum number of abortable preclean iterations, if > 0") \ | |
1553 \ | |
1554 product(intx, CMSMaxAbortablePrecleanTime, 5000, \ | |
1555 "(Temporary, subject to experimentation)" \ | |
1556 "Maximum time in abortable preclean in ms") \ | |
1557 \ | |
1558 product(uintx, CMSAbortablePrecleanMinWorkPerIteration, 100, \ | |
1559 "(Temporary, subject to experimentation)" \ | |
1560 "Nominal minimum work per abortable preclean iteration") \ | |
1561 \ | |
1562 product(intx, CMSAbortablePrecleanWaitMillis, 100, \ | |
1563 "(Temporary, subject to experimentation)" \ | |
1564 " Time that we sleep between iterations when not given" \ | |
1565 " enough work per iteration") \ | |
1566 \ | |
1567 product(uintx, CMSRescanMultiple, 32, \ | |
1568 "Size (in cards) of CMS parallel rescan task") \ | |
1569 \ | |
1570 product(uintx, CMSConcMarkMultiple, 32, \ | |
1571 "Size (in cards) of CMS concurrent MT marking task") \ | |
1572 \ | |
1573 product(uintx, CMSRevisitStackSize, 1*M, \ | |
1574 "Size of CMS KlassKlass revisit stack") \ | |
1575 \ | |
1576 product(bool, CMSAbortSemantics, false, \ | |
1577 "Whether abort-on-overflow semantics is implemented") \ | |
1578 \ | |
1579 product(bool, CMSParallelRemarkEnabled, true, \ | |
1580 "Whether parallel remark enabled (only if ParNewGC)") \ | |
1581 \ | |
1582 product(bool, CMSParallelSurvivorRemarkEnabled, true, \ | |
1583 "Whether parallel remark of survivor space" \ | |
1584 " enabled (effective only if CMSParallelRemarkEnabled)") \ | |
1585 \ | |
1586 product(bool, CMSPLABRecordAlways, true, \ | |
1587 "Whether to always record survivor space PLAB bdries" \ | |
1588 " (effective only if CMSParallelSurvivorRemarkEnabled)") \ | |
1589 \ | |
1590 product(bool, CMSConcurrentMTEnabled, true, \ | |
1591 "Whether multi-threaded concurrent work enabled (if ParNewGC)") \ | |
1592 \ | |
1593 product(bool, CMSPermGenPrecleaningEnabled, true, \ | |
1594 "Whether concurrent precleaning enabled in perm gen" \ | |
1595 " (effective only when CMSPrecleaningEnabled is true)") \ | |
1596 \ | |
1597 product(bool, CMSPrecleaningEnabled, true, \ | |
1598 "Whether concurrent precleaning enabled") \ | |
1599 \ | |
1600 product(uintx, CMSPrecleanIter, 3, \ | |
1601 "Maximum number of precleaning iteration passes") \ | |
1602 \ | |
1603 product(uintx, CMSPrecleanNumerator, 2, \ | |
1604 "CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence" \ | |
1605 " ratio") \ | |
1606 \ | |
1607 product(uintx, CMSPrecleanDenominator, 3, \ | |
1608 "CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence" \ | |
1609 " ratio") \ | |
1610 \ | |
452
00b023ae2d78
6722113: CMS: Incorrect overflow handling during precleaning of Reference lists
ysr
parents:
443
diff
changeset
|
1611 product(bool, CMSPrecleanRefLists1, true, \ |
0 | 1612 "Preclean ref lists during (initial) preclean phase") \ |
1613 \ | |
1614 product(bool, CMSPrecleanRefLists2, false, \ | |
1615 "Preclean ref lists during abortable preclean phase") \ | |
1616 \ | |
1617 product(bool, CMSPrecleanSurvivors1, false, \ | |
1618 "Preclean survivors during (initial) preclean phase") \ | |
1619 \ | |
1620 product(bool, CMSPrecleanSurvivors2, true, \ | |
1621 "Preclean survivors during abortable preclean phase") \ | |
1622 \ | |
1623 product(uintx, CMSPrecleanThreshold, 1000, \ | |
1624 "Don't re-iterate if #dirty cards less than this") \ | |
1625 \ | |
1626 product(bool, CMSCleanOnEnter, true, \ | |
1627 "Clean-on-enter optimization for reducing number of dirty cards") \ | |
1628 \ | |
1629 product(uintx, CMSRemarkVerifyVariant, 1, \ | |
1630 "Choose variant (1,2) of verification following remark") \ | |
1631 \ | |
1632 product(uintx, CMSScheduleRemarkEdenSizeThreshold, 2*M, \ | |
1633 "If Eden used is below this value, don't try to schedule remark") \ | |
1634 \ | |
1635 product(uintx, CMSScheduleRemarkEdenPenetration, 50, \ | |
1636 "The Eden occupancy % at which to try and schedule remark pause") \ | |
1637 \ | |
1638 product(uintx, CMSScheduleRemarkSamplingRatio, 5, \ | |
1639 "Start sampling Eden top at least before yg occupancy reaches" \ | |
1640 " 1/<ratio> of the size at which we plan to schedule remark") \ | |
1641 \ | |
1642 product(uintx, CMSSamplingGrain, 16*K, \ | |
1643 "The minimum distance between eden samples for CMS (see above)") \ | |
1644 \ | |
1645 product(bool, CMSScavengeBeforeRemark, false, \ | |
1646 "Attempt scavenge before the CMS remark step") \ | |
1647 \ | |
1648 develop(bool, CMSTraceSweeper, false, \ | |
1649 "Trace some actions of the CMS sweeper") \ | |
1650 \ | |
1651 product(uintx, CMSWorkQueueDrainThreshold, 10, \ | |
1652 "Don't drain below this size per parallel worker/thief") \ | |
1653 \ | |
1654 product(intx, CMSWaitDuration, 2000, \ | |
1655 "Time in milliseconds that CMS thread waits for young GC") \ | |
1656 \ | |
1657 product(bool, CMSYield, true, \ | |
1658 "Yield between steps of concurrent mark & sweep") \ | |
1659 \ | |
1660 product(uintx, CMSBitMapYieldQuantum, 10*M, \ | |
1661 "Bitmap operations should process at most this many bits" \ | |
1662 "between yields") \ | |
1663 \ | |
1145
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1664 product(bool, CMSDumpAtPromotionFailure, false, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1665 "Dump useful information about the state of the CMS old " \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1666 " generation upon a promotion failure.") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1667 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1668 product(bool, CMSPrintChunksInDump, false, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1669 "In a dump enabled by CMSDumpAtPromotionFailure, include " \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1670 " more detailed information about the free chunks.") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1671 \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1672 product(bool, CMSPrintObjectsInDump, false, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1673 "In a dump enabled by CMSDumpAtPromotionFailure, include " \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1674 " more detailed information about the allocated objects.") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1675 \ |
0 | 1676 diagnostic(bool, FLSVerifyAllHeapReferences, false, \ |
1677 "Verify that all refs across the FLS boundary " \ | |
1678 " are to valid objects") \ | |
1679 \ | |
1680 diagnostic(bool, FLSVerifyLists, false, \ | |
1681 "Do lots of (expensive) FreeListSpace verification") \ | |
1682 \ | |
1683 diagnostic(bool, FLSVerifyIndexTable, false, \ | |
1684 "Do lots of (expensive) FLS index table verification") \ | |
1685 \ | |
1686 develop(bool, FLSVerifyDictionary, false, \ | |
1687 "Do lots of (expensive) FLS dictionary verification") \ | |
1688 \ | |
1689 develop(bool, VerifyBlockOffsetArray, false, \ | |
1690 "Do (expensive!) block offset array verification") \ | |
1691 \ | |
1692 product(bool, BlockOffsetArrayUseUnallocatedBlock, trueInDebug, \ | |
1693 "Maintain _unallocated_block in BlockOffsetArray" \ | |
1694 " (currently applicable only to CMS collector)") \ | |
1695 \ | |
1696 develop(bool, TraceCMSState, false, \ | |
1697 "Trace the state of the CMS collection") \ | |
1698 \ | |
1699 product(intx, RefDiscoveryPolicy, 0, \ | |
1700 "Whether reference-based(0) or referent-based(1)") \ | |
1701 \ | |
1702 product(bool, ParallelRefProcEnabled, false, \ | |
1703 "Enable parallel reference processing whenever possible") \ | |
1704 \ | |
1705 product(bool, ParallelRefProcBalancingEnabled, true, \ | |
1706 "Enable balancing of reference processing queues") \ | |
1707 \ | |
1708 product(intx, CMSTriggerRatio, 80, \ | |
1709 "Percentage of MinHeapFreeRatio in CMS generation that is " \ | |
1064 | 1710 "allocated before a CMS collection cycle commences") \ |
0 | 1711 \ |
94
0834225a7916
6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents:
15
diff
changeset
|
1712 product(intx, CMSTriggerPermRatio, 80, \ |
1064 | 1713 "Percentage of MinHeapFreeRatio in the CMS perm generation that " \ |
1714 "is allocated before a CMS collection cycle commences, that " \ | |
1715 "also collects the perm generation") \ | |
94
0834225a7916
6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents:
15
diff
changeset
|
1716 \ |
0834225a7916
6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents:
15
diff
changeset
|
1717 product(uintx, CMSBootstrapOccupancy, 50, \ |
0 | 1718 "Percentage CMS generation occupancy at which to " \ |
1064 | 1719 "initiate CMS collection for bootstrapping collection stats") \ |
0 | 1720 \ |
1721 product(intx, CMSInitiatingOccupancyFraction, -1, \ | |
1722 "Percentage CMS generation occupancy to start a CMS collection " \ | |
1064 | 1723 "cycle. A negative value means that CMSTriggerRatio is used") \ |
94
0834225a7916
6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents:
15
diff
changeset
|
1724 \ |
1283
1c72304f1885
6928073: G1: use existing command line parameters for marking cycle initiation
tonyp
parents:
1211
diff
changeset
|
1725 product(uintx, InitiatingHeapOccupancyPercent, 45, \ |
1c72304f1885
6928073: G1: use existing command line parameters for marking cycle initiation
tonyp
parents:
1211
diff
changeset
|
1726 "Percentage of the (entire) heap occupancy to start a " \ |
1c72304f1885
6928073: G1: use existing command line parameters for marking cycle initiation
tonyp
parents:
1211
diff
changeset
|
1727 "concurrent GC cycle. It us used by GCs that trigger a " \ |
1c72304f1885
6928073: G1: use existing command line parameters for marking cycle initiation
tonyp
parents:
1211
diff
changeset
|
1728 "concurrent GC cycle based on the occupancy of the entire heap, " \ |
1c72304f1885
6928073: G1: use existing command line parameters for marking cycle initiation
tonyp
parents:
1211
diff
changeset
|
1729 "not just one of the generations (e.g., G1). A value of 0 " \ |
1c72304f1885
6928073: G1: use existing command line parameters for marking cycle initiation
tonyp
parents:
1211
diff
changeset
|
1730 "denotes 'do constant GC cycles'.") \ |
1c72304f1885
6928073: G1: use existing command line parameters for marking cycle initiation
tonyp
parents:
1211
diff
changeset
|
1731 \ |
94
0834225a7916
6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents:
15
diff
changeset
|
1732 product(intx, CMSInitiatingPermOccupancyFraction, -1, \ |
1064 | 1733 "Percentage CMS perm generation occupancy to start a " \ |
1734 "CMScollection cycle. A negative value means that " \ | |
1735 "CMSTriggerPermRatio is used") \ | |
0 | 1736 \ |
1737 product(bool, UseCMSInitiatingOccupancyOnly, false, \ | |
1738 "Only use occupancy as a crierion for starting a CMS collection") \ | |
1739 \ | |
94
0834225a7916
6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents:
15
diff
changeset
|
1740 product(intx, CMSIsTooFullPercentage, 98, \ |
1064 | 1741 "An absolute ceiling above which CMS will always consider the " \ |
1742 "perm gen ripe for collection") \ | |
94
0834225a7916
6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction
ysr
parents:
15
diff
changeset
|
1743 \ |
0 | 1744 develop(bool, CMSTestInFreeList, false, \ |
1745 "Check if the coalesced range is already in the " \ | |
1064 | 1746 "free lists as claimed") \ |
0 | 1747 \ |
1748 notproduct(bool, CMSVerifyReturnedBytes, false, \ | |
1749 "Check that all the garbage collected was returned to the " \ | |
1750 "free lists.") \ | |
1751 \ | |
1752 notproduct(bool, ScavengeALot, false, \ | |
1753 "Force scavenge at every Nth exit from the runtime system " \ | |
1754 "(N=ScavengeALotInterval)") \ | |
1755 \ | |
1756 develop(bool, FullGCALot, false, \ | |
1757 "Force full gc at every Nth exit from the runtime system " \ | |
1758 "(N=FullGCALotInterval)") \ | |
1759 \ | |
1760 notproduct(bool, GCALotAtAllSafepoints, false, \ | |
1761 "Enforce ScavengeALot/GCALot at all potential safepoints") \ | |
1762 \ | |
1763 product(bool, HandlePromotionFailure, true, \ | |
1064 | 1764 "The youngest generation collection does not require " \ |
1765 "a guarantee of full promotion of all live objects.") \ | |
0 | 1766 \ |
1145
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1767 product(bool, PrintPromotionFailure, false, \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1768 "Print additional diagnostic information following " \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1769 " promotion failure") \ |
e018e6884bd8
6631166: CMS: better heuristics when combatting fragmentation
ysr
parents:
1064
diff
changeset
|
1770 \ |
0 | 1771 notproduct(bool, PromotionFailureALot, false, \ |
1772 "Use promotion failure handling on every youngest generation " \ | |
1773 "collection") \ | |
1774 \ | |
1775 develop(uintx, PromotionFailureALotCount, 1000, \ | |
1776 "Number of promotion failures occurring at ParGCAllocBuffer" \ | |
1777 "refill attempts (ParNew) or promotion attempts " \ | |
1778 "(other young collectors) ") \ | |
1779 \ | |
1780 develop(uintx, PromotionFailureALotInterval, 5, \ | |
1781 "Total collections between promotion failures alot") \ | |
1782 \ | |
1783 develop(intx, WorkStealingSleepMillis, 1, \ | |
1784 "Sleep time when sleep is used for yields") \ | |
1785 \ | |
1786 develop(uintx, WorkStealingYieldsBeforeSleep, 1000, \ | |
1787 "Number of yields before a sleep is done during workstealing") \ | |
1788 \ | |
546
05c6d52fa7a9
6690928: Use spinning in combination with yields for workstealing termination.
jmasa
parents:
541
diff
changeset
|
1789 develop(uintx, WorkStealingHardSpins, 4096, \ |
05c6d52fa7a9
6690928: Use spinning in combination with yields for workstealing termination.
jmasa
parents:
541
diff
changeset
|
1790 "Number of iterations in a spin loop between checks on " \ |
05c6d52fa7a9
6690928: Use spinning in combination with yields for workstealing termination.
jmasa
parents:
541
diff
changeset
|
1791 "time out of hard spin") \ |
05c6d52fa7a9
6690928: Use spinning in combination with yields for workstealing termination.
jmasa
parents:
541
diff
changeset
|
1792 \ |
05c6d52fa7a9
6690928: Use spinning in combination with yields for workstealing termination.
jmasa
parents:
541
diff
changeset
|
1793 develop(uintx, WorkStealingSpinToYieldRatio, 10, \ |
05c6d52fa7a9
6690928: Use spinning in combination with yields for workstealing termination.
jmasa
parents:
541
diff
changeset
|
1794 "Ratio of hard spins to calls to yield") \ |
05c6d52fa7a9
6690928: Use spinning in combination with yields for workstealing termination.
jmasa
parents:
541
diff
changeset
|
1795 \ |
534 | 1796 product(uintx, PreserveMarkStackSize, 1024, \ |
1064 | 1797 "Size for stack used in promotion failure handling") \ |
0 | 1798 \ |
1311
2a1472c30599
4396719: Mark Sweep stack overflow on deeply nested Object arrays
jcoomes
parents:
1288
diff
changeset
|
1799 develop(uintx, ObjArrayMarkingStride, 512, \ |
2a1472c30599
4396719: Mark Sweep stack overflow on deeply nested Object arrays
jcoomes
parents:
1288
diff
changeset
|
1800 "Number of ObjArray elements to push onto the marking stack" \ |
2a1472c30599
4396719: Mark Sweep stack overflow on deeply nested Object arrays
jcoomes
parents:
1288
diff
changeset
|
1801 "before pushing a continuation entry") \ |
2a1472c30599
4396719: Mark Sweep stack overflow on deeply nested Object arrays
jcoomes
parents:
1288
diff
changeset
|
1802 \ |
0 | 1803 product_pd(bool, UseTLAB, "Use thread-local object allocation") \ |
1804 \ | |
1805 product_pd(bool, ResizeTLAB, \ | |
1806 "Dynamically resize tlab size for threads") \ | |
1807 \ | |
1808 product(bool, ZeroTLAB, false, \ | |
1809 "Zero out the newly created TLAB") \ | |
1810 \ | |
342
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
142
diff
changeset
|
1811 product(bool, FastTLABRefill, true, \ |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
142
diff
changeset
|
1812 "Use fast TLAB refill code") \ |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
142
diff
changeset
|
1813 \ |
0 | 1814 product(bool, PrintTLAB, false, \ |
1815 "Print various TLAB related information") \ | |
1816 \ | |
1817 product(bool, TLABStats, true, \ | |
1818 "Print various TLAB related information") \ | |
1819 \ | |
941 | 1820 product(bool, PrintRevisitStats, false, \ |
1821 "Print revisit (klass and MDO) stack related information") \ | |
1822 \ | |
0 | 1823 product_pd(bool, NeverActAsServerClassMachine, \ |
1824 "Never act like a server-class machine") \ | |
1825 \ | |
1826 product(bool, AlwaysActAsServerClassMachine, false, \ | |
1827 "Always act like a server-class machine") \ | |
1828 \ | |
1064 | 1829 product_pd(uint64_t, MaxRAM, \ |
1830 "Real memory size (in bytes) used to set maximum heap size") \ | |
1831 \ | |
1832 product(uintx, ErgoHeapSizeLimit, 0, \ | |
1833 "Maximum ergonomically set heap size (in bytes); zero means use " \ | |
1834 "MaxRAM / MaxRAMFraction") \ | |
1835 \ | |
1836 product(uintx, MaxRAMFraction, 4, \ | |
1837 "Maximum fraction (1/n) of real memory used for maximum heap " \ | |
1838 "size") \ | |
0 | 1839 \ |
1840 product(uintx, DefaultMaxRAMFraction, 4, \ | |
1064 | 1841 "Maximum fraction (1/n) of real memory used for maximum heap " \ |
1842 "size; deprecated: to be renamed to MaxRAMFraction") \ | |
1843 \ | |
1844 product(uintx, MinRAMFraction, 2, \ | |
1845 "Minimum fraction (1/n) of real memory used for maxmimum heap " \ | |
1846 "size on systems with small physical memory size") \ | |
1847 \ | |
1848 product(uintx, InitialRAMFraction, 64, \ | |
1849 "Fraction (1/n) of real memory used for initial heap size") \ | |
0 | 1850 \ |
1851 product(bool, UseAutoGCSelectPolicy, false, \ | |
1852 "Use automatic collection selection policy") \ | |
1853 \ | |
1854 product(uintx, AutoGCSelectPauseMillis, 5000, \ | |
1855 "Automatic GC selection pause threshhold in ms") \ | |
1856 \ | |
1857 product(bool, UseAdaptiveSizePolicy, true, \ | |
1858 "Use adaptive generation sizing policies") \ | |
1859 \ | |
1860 product(bool, UsePSAdaptiveSurvivorSizePolicy, true, \ | |
1861 "Use adaptive survivor sizing policies") \ | |
1862 \ | |
1863 product(bool, UseAdaptiveGenerationSizePolicyAtMinorCollection, true, \ | |
1864 "Use adaptive young-old sizing policies at minor collections") \ | |
1865 \ | |
1866 product(bool, UseAdaptiveGenerationSizePolicyAtMajorCollection, true, \ | |
1867 "Use adaptive young-old sizing policies at major collections") \ | |
1868 \ | |
1869 product(bool, UseAdaptiveSizePolicyWithSystemGC, false, \ | |
1870 "Use statistics from System.GC for adaptive size policy") \ | |
1871 \ | |
1872 product(bool, UseAdaptiveGCBoundary, false, \ | |
1873 "Allow young-old boundary to move") \ | |
1874 \ | |
1875 develop(bool, TraceAdaptiveGCBoundary, false, \ | |
1876 "Trace young-old boundary moves") \ | |
1877 \ | |
1878 develop(intx, PSAdaptiveSizePolicyResizeVirtualSpaceAlot, -1, \ | |
1879 "Resize the virtual spaces of the young or old generations") \ | |
1880 \ | |
1881 product(uintx, AdaptiveSizeThroughPutPolicy, 0, \ | |
1882 "Policy for changeing generation size for throughput goals") \ | |
1883 \ | |
1884 product(uintx, AdaptiveSizePausePolicy, 0, \ | |
1885 "Policy for changing generation size for pause goals") \ | |
1886 \ | |
1887 develop(bool, PSAdjustTenuredGenForMinorPause, false, \ | |
1888 "Adjust tenured generation to achive a minor pause goal") \ | |
1889 \ | |
1890 develop(bool, PSAdjustYoungGenForMajorPause, false, \ | |
1891 "Adjust young generation to achive a major pause goal") \ | |
1892 \ | |
1893 product(uintx, AdaptiveSizePolicyInitializingSteps, 20, \ | |
1894 "Number of steps where heuristics is used before data is used") \ | |
1895 \ | |
1896 develop(uintx, AdaptiveSizePolicyReadyThreshold, 5, \ | |
1897 "Number of collections before the adaptive sizing is started") \ | |
1898 \ | |
1899 product(uintx, AdaptiveSizePolicyOutputInterval, 0, \ | |
1064 | 1900 "Collecton interval for printing information; zero => never") \ |
0 | 1901 \ |
1902 product(bool, UseAdaptiveSizePolicyFootprintGoal, true, \ | |
1903 "Use adaptive minimum footprint as a goal") \ | |
1904 \ | |
1905 product(uintx, AdaptiveSizePolicyWeight, 10, \ | |
1906 "Weight given to exponential resizing, between 0 and 100") \ | |
1907 \ | |
1908 product(uintx, AdaptiveTimeWeight, 25, \ | |
1909 "Weight given to time in adaptive policy, between 0 and 100") \ | |
1910 \ | |
1911 product(uintx, PausePadding, 1, \ | |
1912 "How much buffer to keep for pause time") \ | |
1913 \ | |
1914 product(uintx, PromotedPadding, 3, \ | |
1915 "How much buffer to keep for promotion failure") \ | |
1916 \ | |
1917 product(uintx, SurvivorPadding, 3, \ | |
1918 "How much buffer to keep for survivor overflow") \ | |
1919 \ | |
1920 product(uintx, AdaptivePermSizeWeight, 20, \ | |
1921 "Weight for perm gen exponential resizing, between 0 and 100") \ | |
1922 \ | |
1923 product(uintx, PermGenPadding, 3, \ | |
1924 "How much buffer to keep for perm gen sizing") \ | |
1925 \ | |
1926 product(uintx, ThresholdTolerance, 10, \ | |
1927 "Allowed collection cost difference between generations") \ | |
1928 \ | |
1929 product(uintx, AdaptiveSizePolicyCollectionCostMargin, 50, \ | |
1064 | 1930 "If collection costs are within margin, reduce both by full " \ |
1931 "delta") \ | |
0 | 1932 \ |
1933 product(uintx, YoungGenerationSizeIncrement, 20, \ | |
1934 "Adaptive size percentage change in young generation") \ | |
1935 \ | |
1936 product(uintx, YoungGenerationSizeSupplement, 80, \ | |
1937 "Supplement to YoungedGenerationSizeIncrement used at startup") \ | |
1938 \ | |
1939 product(uintx, YoungGenerationSizeSupplementDecay, 8, \ | |
1940 "Decay factor to YoungedGenerationSizeSupplement") \ | |
1941 \ | |
1942 product(uintx, TenuredGenerationSizeIncrement, 20, \ | |
1943 "Adaptive size percentage change in tenured generation") \ | |
1944 \ | |
1945 product(uintx, TenuredGenerationSizeSupplement, 80, \ | |
1946 "Supplement to TenuredGenerationSizeIncrement used at startup") \ | |
1947 \ | |
1948 product(uintx, TenuredGenerationSizeSupplementDecay, 2, \ | |
1949 "Decay factor to TenuredGenerationSizeIncrement") \ | |
1950 \ | |
1951 product(uintx, MaxGCPauseMillis, max_uintx, \ | |
751 | 1952 "Adaptive size policy maximum GC pause time goal in msec, " \ |
1953 "or (G1 Only) the max. GC time per MMU time slice") \ | |
1954 \ | |
1955 product(intx, GCPauseIntervalMillis, 500, \ | |
1956 "Time slice for MMU specification") \ | |
0 | 1957 \ |
1958 product(uintx, MaxGCMinorPauseMillis, max_uintx, \ | |
1959 "Adaptive size policy maximum GC minor pause time goal in msec") \ | |
1960 \ | |
1961 product(uintx, GCTimeRatio, 99, \ | |
1962 "Adaptive size policy application time to GC time ratio") \ | |
1963 \ | |
1964 product(uintx, AdaptiveSizeDecrementScaleFactor, 4, \ | |
1965 "Adaptive size scale down factor for shrinking") \ | |
1966 \ | |
1967 product(bool, UseAdaptiveSizeDecayMajorGCCost, true, \ | |
1968 "Adaptive size decays the major cost for long major intervals") \ | |
1969 \ | |
1970 product(uintx, AdaptiveSizeMajorGCDecayTimeScale, 10, \ | |
1971 "Time scale over which major costs decay") \ | |
1972 \ | |
1973 product(uintx, MinSurvivorRatio, 3, \ | |
1974 "Minimum ratio of young generation/survivor space size") \ | |
1975 \ | |
1976 product(uintx, InitialSurvivorRatio, 8, \ | |
1977 "Initial ratio of eden/survivor space size") \ | |
1978 \ | |
1979 product(uintx, BaseFootPrintEstimate, 256*M, \ | |
1980 "Estimate of footprint other than Java Heap") \ | |
1981 \ | |
1982 product(bool, UseGCOverheadLimit, true, \ | |
1983 "Use policy to limit of proportion of time spent in GC " \ | |
1984 "before an OutOfMemory error is thrown") \ | |
1985 \ | |
1986 product(uintx, GCTimeLimit, 98, \ | |
1987 "Limit of proportion of time spent in GC before an OutOfMemory" \ | |
1988 "error is thrown (used with GCHeapFreeLimit)") \ | |
1989 \ | |
1990 product(uintx, GCHeapFreeLimit, 2, \ | |
1991 "Minimum percentage of free space after a full GC before an " \ | |
1992 "OutOfMemoryError is thrown (used with GCTimeLimit)") \ | |
1993 \ | |
1994 develop(uintx, AdaptiveSizePolicyGCTimeLimitThreshold, 5, \ | |
1995 "Number of consecutive collections before gc time limit fires") \ | |
1996 \ | |
1997 product(bool, PrintAdaptiveSizePolicy, false, \ | |
1998 "Print information about AdaptiveSizePolicy") \ | |
1999 \ | |
2000 product(intx, PrefetchCopyIntervalInBytes, -1, \ | |
2001 "How far ahead to prefetch destination area (<= 0 means off)") \ | |
2002 \ | |
2003 product(intx, PrefetchScanIntervalInBytes, -1, \ | |
2004 "How far ahead to prefetch scan area (<= 0 means off)") \ | |
2005 \ | |
2006 product(intx, PrefetchFieldsAhead, -1, \ | |
2007 "How many fields ahead to prefetch in oop scan (<= 0 means off)") \ | |
2008 \ | |
2009 develop(bool, UsePrefetchQueue, true, \ | |
2010 "Use the prefetch queue during PS promotion") \ | |
2011 \ | |
2012 diagnostic(bool, VerifyBeforeExit, trueInDebug, \ | |
2013 "Verify system before exiting") \ | |
2014 \ | |
2015 diagnostic(bool, VerifyBeforeGC, false, \ | |
2016 "Verify memory system before GC") \ | |
2017 \ | |
2018 diagnostic(bool, VerifyAfterGC, false, \ | |
2019 "Verify memory system after GC") \ | |
2020 \ | |
2021 diagnostic(bool, VerifyDuringGC, false, \ | |
2022 "Verify memory system during GC (between phases)") \ | |
2023 \ | |
390 | 2024 diagnostic(bool, GCParallelVerificationEnabled, true, \ |
2025 "Enable parallel memory system verification") \ | |
2026 \ | |
1166 | 2027 diagnostic(bool, DeferInitialCardMark, false, \ |
2028 "When +ReduceInitialCardMarks, explicitly defer any that " \ | |
2029 "may arise from new_pre_store_barrier") \ | |
2030 \ | |
0 | 2031 diagnostic(bool, VerifyRememberedSets, false, \ |
2032 "Verify GC remembered sets") \ | |
2033 \ | |
2034 diagnostic(bool, VerifyObjectStartArray, true, \ | |
2035 "Verify GC object start array if verify before/after") \ | |
2036 \ | |
2037 product(bool, DisableExplicitGC, false, \ | |
2038 "Tells whether calling System.gc() does a full GC") \ | |
2039 \ | |
2040 notproduct(bool, CheckMemoryInitialization, false, \ | |
2041 "Checks memory initialization") \ | |
2042 \ | |
2043 product(bool, CollectGen0First, false, \ | |
2044 "Collect youngest generation before each full GC") \ | |
2045 \ | |
2046 diagnostic(bool, BindCMSThreadToCPU, false, \ | |
2047 "Bind CMS Thread to CPU if possible") \ | |
2048 \ | |
2049 diagnostic(uintx, CPUForCMSThread, 0, \ | |
2050 "When BindCMSThreadToCPU is true, the CPU to bind CMS thread to") \ | |
2051 \ | |
2052 product(bool, BindGCTaskThreadsToCPUs, false, \ | |
2053 "Bind GCTaskThreads to CPUs if possible") \ | |
2054 \ | |
2055 product(bool, UseGCTaskAffinity, false, \ | |
2056 "Use worker affinity when asking for GCTasks") \ | |
2057 \ | |
2058 product(uintx, ProcessDistributionStride, 4, \ | |
2059 "Stride through processors when distributing processes") \ | |
2060 \ | |
2061 product(uintx, CMSCoordinatorYieldSleepCount, 10, \ | |
2062 "number of times the coordinator GC thread will sleep while " \ | |
2063 "yielding before giving up and resuming GC") \ | |
2064 \ | |
2065 product(uintx, CMSYieldSleepCount, 0, \ | |
2066 "number of times a GC thread (minus the coordinator) " \ | |
2067 "will sleep while yielding before giving up and resuming GC") \ | |
2068 \ | |
2069 /* gc tracing */ \ | |
2070 manageable(bool, PrintGC, false, \ | |
2071 "Print message at garbage collect") \ | |
2072 \ | |
2073 manageable(bool, PrintGCDetails, false, \ | |
2074 "Print more details at garbage collect") \ | |
2075 \ | |
2076 manageable(bool, PrintGCDateStamps, false, \ | |
2077 "Print date stamps at garbage collect") \ | |
2078 \ | |
2079 manageable(bool, PrintGCTimeStamps, false, \ | |
2080 "Print timestamps at garbage collect") \ | |
2081 \ | |
2082 product(bool, PrintGCTaskTimeStamps, false, \ | |
2083 "Print timestamps for individual gc worker thread tasks") \ | |
2084 \ | |
2085 develop(intx, ConcGCYieldTimeout, 0, \ | |
2086 "If non-zero, assert that GC threads yield within this # of ms.") \ | |
2087 \ | |
2088 notproduct(bool, TraceMarkSweep, false, \ | |
2089 "Trace mark sweep") \ | |
2090 \ | |
2091 product(bool, PrintReferenceGC, false, \ | |
2092 "Print times spent handling reference objects during GC " \ | |
2093 " (enabled only when PrintGCDetails)") \ | |
2094 \ | |
2095 develop(bool, TraceReferenceGC, false, \ | |
2096 "Trace handling of soft/weak/final/phantom references") \ | |
2097 \ | |
2098 develop(bool, TraceFinalizerRegistration, false, \ | |
2099 "Trace registration of final references") \ | |
2100 \ | |
2101 notproduct(bool, TraceScavenge, false, \ | |
2102 "Trace scavenge") \ | |
2103 \ | |
2104 product_rw(bool, TraceClassLoading, false, \ | |
2105 "Trace all classes loaded") \ | |
2106 \ | |
2107 product(bool, TraceClassLoadingPreorder, false, \ | |
2108 "Trace all classes loaded in order referenced (not loaded)") \ | |
2109 \ | |
2110 product_rw(bool, TraceClassUnloading, false, \ | |
2111 "Trace unloading of classes") \ | |
2112 \ | |
2113 product_rw(bool, TraceLoaderConstraints, false, \ | |
2114 "Trace loader constraints") \ | |
2115 \ | |
2116 product(bool, TraceGen0Time, false, \ | |
2117 "Trace accumulated time for Gen 0 collection") \ | |
2118 \ | |
2119 product(bool, TraceGen1Time, false, \ | |
2120 "Trace accumulated time for Gen 1 collection") \ | |
2121 \ | |
2122 product(bool, PrintTenuringDistribution, false, \ | |
2123 "Print tenuring age information") \ | |
2124 \ | |
2125 product_rw(bool, PrintHeapAtGC, false, \ | |
2126 "Print heap layout before and after each GC") \ | |
2127 \ | |
838
0316eac49d5a
6855834: G1: minimize the output when -XX:+PrintHeapAtGC is set
tonyp
parents:
779
diff
changeset
|
2128 product_rw(bool, PrintHeapAtGCExtended, false, \ |
0316eac49d5a
6855834: G1: minimize the output when -XX:+PrintHeapAtGC is set
tonyp
parents:
779
diff
changeset
|
2129 "Prints extended information about the layout of the heap " \ |
0316eac49d5a
6855834: G1: minimize the output when -XX:+PrintHeapAtGC is set
tonyp
parents:
779
diff
changeset
|
2130 "when -XX:+PrintHeapAtGC is set") \ |
0316eac49d5a
6855834: G1: minimize the output when -XX:+PrintHeapAtGC is set
tonyp
parents:
779
diff
changeset
|
2131 \ |
0 | 2132 product(bool, PrintHeapAtSIGBREAK, true, \ |
2133 "Print heap layout in response to SIGBREAK") \ | |
2134 \ | |
615
c6c601a0f2d6
6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents:
570
diff
changeset
|
2135 manageable(bool, PrintClassHistogramBeforeFullGC, false, \ |
c6c601a0f2d6
6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents:
570
diff
changeset
|
2136 "Print a class histogram before any major stop-world GC") \ |
c6c601a0f2d6
6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents:
570
diff
changeset
|
2137 \ |
c6c601a0f2d6
6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents:
570
diff
changeset
|
2138 manageable(bool, PrintClassHistogramAfterFullGC, false, \ |
c6c601a0f2d6
6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents:
570
diff
changeset
|
2139 "Print a class histogram after any major stop-world GC") \ |
c6c601a0f2d6
6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
ysr
parents:
570
diff
changeset
|
2140 \ |
0 | 2141 manageable(bool, PrintClassHistogram, false, \ |
2142 "Print a histogram of class instances") \ | |
2143 \ | |
2144 develop(bool, TraceWorkGang, false, \ | |
2145 "Trace activities of work gangs") \ | |
2146 \ | |
2147 product(bool, TraceParallelOldGCTasks, false, \ | |
2148 "Trace multithreaded GC activity") \ | |
2149 \ | |
2150 develop(bool, TraceBlockOffsetTable, false, \ | |
2151 "Print BlockOffsetTable maps") \ | |
2152 \ | |
2153 develop(bool, TraceCardTableModRefBS, false, \ | |
2154 "Print CardTableModRefBS maps") \ | |
2155 \ | |
2156 develop(bool, TraceGCTaskManager, false, \ | |
2157 "Trace actions of the GC task manager") \ | |
2158 \ | |
2159 develop(bool, TraceGCTaskQueue, false, \ | |
2160 "Trace actions of the GC task queues") \ | |
2161 \ | |
2162 develop(bool, TraceGCTaskThread, false, \ | |
2163 "Trace actions of the GC task threads") \ | |
2164 \ | |
2165 product(bool, PrintParallelOldGCPhaseTimes, false, \ | |
2166 "Print the time taken by each parallel old gc phase." \ | |
2167 "PrintGCDetails must also be enabled.") \ | |
2168 \ | |
2169 develop(bool, TraceParallelOldGCMarkingPhase, false, \ | |
2170 "Trace parallel old gc marking phase") \ | |
2171 \ | |
2172 develop(bool, TraceParallelOldGCSummaryPhase, false, \ | |
2173 "Trace parallel old gc summary phase") \ | |
2174 \ | |
2175 develop(bool, TraceParallelOldGCCompactionPhase, false, \ | |
2176 "Trace parallel old gc compaction phase") \ | |
2177 \ | |
2178 develop(bool, TraceParallelOldGCDensePrefix, false, \ | |
2179 "Trace parallel old gc dense prefix computation") \ | |
2180 \ | |
2181 develop(bool, IgnoreLibthreadGPFault, false, \ | |
2182 "Suppress workaround for libthread GP fault") \ | |
2183 \ | |
139
c0492d52d55b
6539517: CR 6186200 should be extended to perm gen allocation to prevent spurious OOM's from perm gen
apetrusenko
parents:
95
diff
changeset
|
2184 product(bool, PrintJNIGCStalls, false, \ |
c0492d52d55b
6539517: CR 6186200 should be extended to perm gen allocation to prevent spurious OOM's from perm gen
apetrusenko
parents:
95
diff
changeset
|
2185 "Print diagnostic message when GC is stalled" \ |
c0492d52d55b
6539517: CR 6186200 should be extended to perm gen allocation to prevent spurious OOM's from perm gen
apetrusenko
parents:
95
diff
changeset
|
2186 "by JNI critical section") \ |
c0492d52d55b
6539517: CR 6186200 should be extended to perm gen allocation to prevent spurious OOM's from perm gen
apetrusenko
parents:
95
diff
changeset
|
2187 \ |
0 | 2188 /* JVMTI heap profiling */ \ |
2189 \ | |
2190 diagnostic(bool, TraceJVMTIObjectTagging, false, \ | |
2191 "Trace JVMTI object tagging calls") \ | |
2192 \ | |
2193 diagnostic(bool, VerifyBeforeIteration, false, \ | |
2194 "Verify memory system before JVMTI iteration") \ | |
2195 \ | |
2196 /* compiler interface */ \ | |
2197 \ | |
2198 develop(bool, CIPrintCompilerName, false, \ | |
2199 "when CIPrint is active, print the name of the active compiler") \ | |
2200 \ | |
2201 develop(bool, CIPrintCompileQueue, false, \ | |
2202 "display the contents of the compile queue whenever a " \ | |
2203 "compilation is enqueued") \ | |
2204 \ | |
2205 develop(bool, CIPrintRequests, false, \ | |
2206 "display every request for compilation") \ | |
2207 \ | |
2208 product(bool, CITime, false, \ | |
2209 "collect timing information for compilation") \ | |
2210 \ | |
2211 develop(bool, CITimeEach, false, \ | |
2212 "display timing information after each successful compilation") \ | |
2213 \ | |
2214 develop(bool, CICountOSR, true, \ | |
2215 "use a separate counter when assigning ids to osr compilations") \ | |
2216 \ | |
2217 develop(bool, CICompileNatives, true, \ | |
2218 "compile native methods if supported by the compiler") \ | |
2219 \ | |
2220 develop_pd(bool, CICompileOSR, \ | |
2221 "compile on stack replacement methods if supported by the " \ | |
2222 "compiler") \ | |
2223 \ | |
2224 develop(bool, CIPrintMethodCodes, false, \ | |
2225 "print method bytecodes of the compiled code") \ | |
2226 \ | |
2227 develop(bool, CIPrintTypeFlow, false, \ | |
2228 "print the results of ciTypeFlow analysis") \ | |
2229 \ | |
2230 develop(bool, CITraceTypeFlow, false, \ | |
2231 "detailed per-bytecode tracing of ciTypeFlow analysis") \ | |
2232 \ | |
2233 develop(intx, CICloneLoopTestLimit, 100, \ | |
2234 "size limit for blocks heuristically cloned in ciTypeFlow") \ | |
2235 \ | |
2236 /* temp diagnostics */ \ | |
2237 \ | |
2238 diagnostic(bool, TraceRedundantCompiles, false, \ | |
2239 "Have compile broker print when a request already in the queue is"\ | |
2240 " requested again") \ | |
2241 \ | |
2242 diagnostic(bool, InitialCompileFast, false, \ | |
2243 "Initial compile at CompLevel_fast_compile") \ | |
2244 \ | |
2245 diagnostic(bool, InitialCompileReallyFast, false, \ | |
2246 "Initial compile at CompLevel_really_fast_compile (no profile)") \ | |
2247 \ | |
2248 diagnostic(bool, FullProfileOnReInterpret, true, \ | |
2249 "On re-interpret unc-trap compile next at CompLevel_fast_compile")\ | |
2250 \ | |
2251 /* compiler */ \ | |
2252 \ | |
2253 product(intx, CICompilerCount, CI_COMPILER_COUNT, \ | |
2254 "Number of compiler threads to run") \ | |
2255 \ | |
2256 product(intx, CompilationPolicyChoice, 0, \ | |
2257 "which compilation policy (0/1)") \ | |
2258 \ | |
2259 develop(bool, UseStackBanging, true, \ | |
2260 "use stack banging for stack overflow checks (required for " \ | |
2261 "proper StackOverflow handling; disable only to measure cost " \ | |
2262 "of stackbanging)") \ | |
2263 \ | |
2264 develop(bool, Use24BitFPMode, true, \ | |
2265 "Set 24-bit FPU mode on a per-compile basis ") \ | |
2266 \ | |
2267 develop(bool, Use24BitFP, true, \ | |
2268 "use FP instructions that produce 24-bit precise results") \ | |
2269 \ | |
2270 develop(bool, UseStrictFP, true, \ | |
2271 "use strict fp if modifier strictfp is set") \ | |
2272 \ | |
2273 develop(bool, GenerateSynchronizationCode, true, \ | |
2274 "generate locking/unlocking code for synchronized methods and " \ | |
2275 "monitors") \ | |
2276 \ | |
2277 develop(bool, GenerateCompilerNullChecks, true, \ | |
2278 "Generate explicit null checks for loads/stores/calls") \ | |
2279 \ | |
2280 develop(bool, GenerateRangeChecks, true, \ | |
2281 "Generate range checks for array accesses") \ | |
2282 \ | |
2283 develop_pd(bool, ImplicitNullChecks, \ | |
2284 "generate code for implicit null checks") \ | |
2285 \ | |
2286 product(bool, PrintSafepointStatistics, false, \ | |
2287 "print statistics about safepoint synchronization") \ | |
2288 \ | |
2289 product(intx, PrintSafepointStatisticsCount, 300, \ | |
2290 "total number of safepoint statistics collected " \ | |
2291 "before printing them out") \ | |
2292 \ | |
2293 product(intx, PrintSafepointStatisticsTimeout, -1, \ | |
2294 "print safepoint statistics only when safepoint takes" \ | |
2295 " more than PrintSafepointSatisticsTimeout in millis") \ | |
2296 \ | |
1321
0f6600cee529
6934758: Expose the break down of clean up task time during safepoint.
xlu
parents:
1288
diff
changeset
|
2297 product(bool, TraceSafepointCleanupTime, false, \ |
0f6600cee529
6934758: Expose the break down of clean up task time during safepoint.
xlu
parents:
1288
diff
changeset
|
2298 "print the break down of clean up tasks performed during" \ |
0f6600cee529
6934758: Expose the break down of clean up task time during safepoint.
xlu
parents:
1288
diff
changeset
|
2299 " safepoint") \ |
0f6600cee529
6934758: Expose the break down of clean up task time during safepoint.
xlu
parents:
1288
diff
changeset
|
2300 \ |
0 | 2301 develop(bool, InlineAccessors, true, \ |
2302 "inline accessor methods (get/set)") \ | |
2303 \ | |
2304 product(bool, Inline, true, \ | |
2305 "enable inlining") \ | |
2306 \ | |
2307 product(bool, ClipInlining, true, \ | |
2308 "clip inlining if aggregate method exceeds DesiredMethodLimit") \ | |
2309 \ | |
2310 develop(bool, UseCHA, true, \ | |
2311 "enable CHA") \ | |
2312 \ | |
2313 product(bool, UseTypeProfile, true, \ | |
2314 "Check interpreter profile for historically monomorphic calls") \ | |
2315 \ | |
2316 product(intx, TypeProfileMajorReceiverPercent, 90, \ | |
2317 "% of major receiver type to all profiled receivers") \ | |
2318 \ | |
2319 notproduct(bool, TimeCompiler, false, \ | |
2320 "time the compiler") \ | |
2321 \ | |
2322 notproduct(bool, TimeCompiler2, false, \ | |
2323 "detailed time the compiler (requires +TimeCompiler)") \ | |
2324 \ | |
2325 diagnostic(bool, PrintInlining, false, \ | |
2326 "prints inlining optimizations") \ | |
2327 \ | |
2328 diagnostic(bool, PrintIntrinsics, false, \ | |
2329 "prints attempted and successful inlining of intrinsics") \ | |
2330 \ | |
775
93c14e5562c4
6823354: Add intrinsics for {Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}()
twisti
parents:
726
diff
changeset
|
2331 product(bool, UseCountLeadingZerosInstruction, false, \ |
93c14e5562c4
6823354: Add intrinsics for {Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}()
twisti
parents:
726
diff
changeset
|
2332 "Use count leading zeros instruction") \ |
93c14e5562c4
6823354: Add intrinsics for {Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}()
twisti
parents:
726
diff
changeset
|
2333 \ |
643
c771b7f43bbf
6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents:
642
diff
changeset
|
2334 product(bool, UsePopCountInstruction, false, \ |
c771b7f43bbf
6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents:
642
diff
changeset
|
2335 "Use population count instruction") \ |
c771b7f43bbf
6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents:
642
diff
changeset
|
2336 \ |
0 | 2337 diagnostic(ccstrlist, DisableIntrinsic, "", \ |
2338 "do not expand intrinsics whose (internal) names appear here") \ | |
2339 \ | |
2340 develop(bool, StressReflectiveCode, false, \ | |
2341 "Use inexact types at allocations, etc., to test reflection") \ | |
2342 \ | |
2343 develop(bool, EagerInitialization, false, \ | |
2344 "Eagerly initialize classes if possible") \ | |
2345 \ | |
2346 product(bool, Tier1UpdateMethodData, trueInTiered, \ | |
2347 "Update methodDataOops in Tier1-generated code") \ | |
2348 \ | |
2349 develop(bool, TraceMethodReplacement, false, \ | |
2350 "Print when methods are replaced do to recompilation") \ | |
2351 \ | |
2352 develop(bool, PrintMethodFlushing, false, \ | |
2353 "print the nmethods being flushed") \ | |
2354 \ | |
2355 notproduct(bool, LogMultipleMutexLocking, false, \ | |
2356 "log locking and unlocking of mutexes (only if multiple locks " \ | |
2357 "are held)") \ | |
2358 \ | |
2359 develop(bool, UseRelocIndex, false, \ | |
2360 "use an index to speed random access to relocations") \ | |
2361 \ | |
2362 develop(bool, StressCodeBuffers, false, \ | |
2363 "Exercise code buffer expansion and other rare state changes") \ | |
2364 \ | |
2365 diagnostic(bool, DebugNonSafepoints, trueInDebug, \ | |
2366 "Generate extra debugging info for non-safepoints in nmethods") \ | |
2367 \ | |
2368 diagnostic(bool, DebugInlinedCalls, true, \ | |
2369 "If false, restricts profiled locations to the root method only") \ | |
2370 \ | |
2371 product(bool, PrintVMOptions, trueInDebug, \ | |
1150 | 2372 "Print flags that appeared on the command line") \ |
0 | 2373 \ |
564 | 2374 product(bool, IgnoreUnrecognizedVMOptions, false, \ |
2375 "Ignore unrecognized VM options") \ | |
2376 \ | |
1150 | 2377 product(bool, PrintCommandLineFlags, false, \ |
2378 "Print flags specified on command line or set by ergonomics") \ | |
2379 \ | |
2380 product(bool, PrintFlagsInitial, false, \ | |
2381 "Print all VM flags before argument processing and exit VM") \ | |
2382 \ | |
2383 product(bool, PrintFlagsFinal, false, \ | |
2384 "Print all VM flags after argument and ergonomic processing") \ | |
2385 \ | |
0 | 2386 diagnostic(bool, SerializeVMOutput, true, \ |
2387 "Use a mutex to serialize output to tty and hotspot.log") \ | |
2388 \ | |
2389 diagnostic(bool, DisplayVMOutput, true, \ | |
2390 "Display all VM output on the tty, independently of LogVMOutput") \ | |
2391 \ | |
2392 diagnostic(bool, LogVMOutput, trueInDebug, \ | |
2393 "Save VM output to hotspot.log, or to LogFile") \ | |
2394 \ | |
2395 diagnostic(ccstr, LogFile, NULL, \ | |
2396 "If LogVMOutput is on, save VM output to this file [hotspot.log]") \ | |
2397 \ | |
2398 product(ccstr, ErrorFile, NULL, \ | |
2399 "If an error occurs, save the error data to this file " \ | |
2400 "[default: ./hs_err_pid%p.log] (%p replaced with pid)") \ | |
2401 \ | |
2402 product(bool, DisplayVMOutputToStderr, false, \ | |
2403 "If DisplayVMOutput is true, display all VM output to stderr") \ | |
2404 \ | |
2405 product(bool, DisplayVMOutputToStdout, false, \ | |
2406 "If DisplayVMOutput is true, display all VM output to stdout") \ | |
2407 \ | |
2408 product(bool, UseHeavyMonitors, false, \ | |
2409 "use heavyweight instead of lightweight Java monitors") \ | |
2410 \ | |
2411 notproduct(bool, PrintSymbolTableSizeHistogram, false, \ | |
2412 "print histogram of the symbol table") \ | |
2413 \ | |
2414 notproduct(bool, ExitVMOnVerifyError, false, \ | |
2415 "standard exit from VM if bytecode verify error " \ | |
2416 "(only in debug mode)") \ | |
2417 \ | |
2418 notproduct(ccstr, AbortVMOnException, NULL, \ | |
2419 "Call fatal if this exception is thrown. Example: " \ | |
2420 "java -XX:AbortVMOnException=java.lang.NullPointerException Foo") \ | |
2421 \ | |
2422 develop(bool, DebugVtables, false, \ | |
2423 "add debugging code to vtable dispatch") \ | |
2424 \ | |
2425 develop(bool, PrintVtables, false, \ | |
2426 "print vtables when printing klass") \ | |
2427 \ | |
2428 notproduct(bool, PrintVtableStats, false, \ | |
2429 "print vtables stats at end of run") \ | |
2430 \ | |
2431 develop(bool, TraceCreateZombies, false, \ | |
2432 "trace creation of zombie nmethods") \ | |
2433 \ | |
2434 notproduct(bool, IgnoreLockingAssertions, false, \ | |
2435 "disable locking assertions (for speed)") \ | |
2436 \ | |
2437 notproduct(bool, VerifyLoopOptimizations, false, \ | |
2438 "verify major loop optimizations") \ | |
2439 \ | |
2440 product(bool, RangeCheckElimination, true, \ | |
2441 "Split loop iterations to eliminate range checks") \ | |
2442 \ | |
2443 develop_pd(bool, UncommonNullCast, \ | |
2444 "track occurrences of null in casts; adjust compiler tactics") \ | |
2445 \ | |
2446 develop(bool, TypeProfileCasts, true, \ | |
2447 "treat casts like calls for purposes of type profiling") \ | |
2448 \ | |
2449 develop(bool, MonomorphicArrayCheck, true, \ | |
2450 "Uncommon-trap array store checks that require full type check") \ | |
2451 \ | |
2452 develop(bool, DelayCompilationDuringStartup, true, \ | |
2453 "Delay invoking the compiler until main application class is " \ | |
2454 "loaded") \ | |
2455 \ | |
2456 develop(bool, CompileTheWorld, false, \ | |
2457 "Compile all methods in all classes in bootstrap class path " \ | |
2458 "(stress test)") \ | |
2459 \ | |
2460 develop(bool, CompileTheWorldPreloadClasses, true, \ | |
2461 "Preload all classes used by a class before start loading") \ | |
2462 \ | |
2463 notproduct(bool, CompileTheWorldIgnoreInitErrors, false, \ | |
2464 "Compile all methods although class initializer failed") \ | |
2465 \ | |
1188
99af867dfa05
6919886: Sweep CodeCache more aggressively to reduce its usage for CompileTheWorld
kvn
parents:
1179
diff
changeset
|
2466 notproduct(intx, CompileTheWorldSafepointInterval, 100, \ |
99af867dfa05
6919886: Sweep CodeCache more aggressively to reduce its usage for CompileTheWorld
kvn
parents:
1179
diff
changeset
|
2467 "Force a safepoint every n compiles so sweeper can keep up") \ |
99af867dfa05
6919886: Sweep CodeCache more aggressively to reduce its usage for CompileTheWorld
kvn
parents:
1179
diff
changeset
|
2468 \ |
0 | 2469 develop(bool, TraceIterativeGVN, false, \ |
2470 "Print progress during Iterative Global Value Numbering") \ | |
2471 \ | |
2472 develop(bool, FillDelaySlots, true, \ | |
2473 "Fill delay slots (on SPARC only)") \ | |
2474 \ | |
2475 develop(bool, VerifyIterativeGVN, false, \ | |
2476 "Verify Def-Use modifications during sparse Iterative Global " \ | |
2477 "Value Numbering") \ | |
2478 \ | |
2479 notproduct(bool, TracePhaseCCP, false, \ | |
2480 "Print progress during Conditional Constant Propagation") \ | |
2481 \ | |
2482 develop(bool, TimeLivenessAnalysis, false, \ | |
2483 "Time computation of bytecode liveness analysis") \ | |
2484 \ | |
2485 develop(bool, TraceLivenessGen, false, \ | |
2486 "Trace the generation of liveness analysis information") \ | |
2487 \ | |
2488 notproduct(bool, TraceLivenessQuery, false, \ | |
2489 "Trace queries of liveness analysis information") \ | |
2490 \ | |
2491 notproduct(bool, CollectIndexSetStatistics, false, \ | |
2492 "Collect information about IndexSets") \ | |
2493 \ | |
2494 develop(bool, PrintDominators, false, \ | |
2495 "Print out dominator trees for GVN") \ | |
2496 \ | |
2497 develop(bool, UseLoopSafepoints, true, \ | |
2498 "Generate Safepoint nodes in every loop") \ | |
2499 \ | |
2500 notproduct(bool, TraceCISCSpill, false, \ | |
2501 "Trace allocators use of cisc spillable instructions") \ | |
2502 \ | |
2503 notproduct(bool, TraceSpilling, false, \ | |
2504 "Trace spilling") \ | |
2505 \ | |
2506 product(bool, SplitIfBlocks, true, \ | |
2507 "Clone compares and control flow through merge points to fold " \ | |
2508 "some branches") \ | |
2509 \ | |
2510 develop(intx, FastAllocateSizeLimit, 128*K, \ | |
2511 /* Note: This value is zero mod 1<<13 for a cheap sparc set. */ \ | |
2512 "Inline allocations larger than this in doublewords must go slow")\ | |
2513 \ | |
2514 product(bool, AggressiveOpts, false, \ | |
2515 "Enable aggressive optimizations - see arguments.cpp") \ | |
2516 \ | |
192
6d13fcb3663f
6714404: Add UseStringCache switch to enable String caching under AggressiveOpts
kvn
parents:
174
diff
changeset
|
2517 product(bool, UseStringCache, false, \ |
6d13fcb3663f
6714404: Add UseStringCache switch to enable String caching under AggressiveOpts
kvn
parents:
174
diff
changeset
|
2518 "Enable String cache capabilities on String.java") \ |
6d13fcb3663f
6714404: Add UseStringCache switch to enable String caching under AggressiveOpts
kvn
parents:
174
diff
changeset
|
2519 \ |
0 | 2520 /* statistics */ \ |
2521 develop(bool, UseVTune, false, \ | |
2522 "enable support for Intel's VTune profiler") \ | |
2523 \ | |
2524 develop(bool, CountCompiledCalls, false, \ | |
2525 "counts method invocations") \ | |
2526 \ | |
2527 notproduct(bool, CountRuntimeCalls, false, \ | |
2528 "counts VM runtime calls") \ | |
2529 \ | |
2530 develop(bool, CountJNICalls, false, \ | |
2531 "counts jni method invocations") \ | |
2532 \ | |
2533 notproduct(bool, CountJVMCalls, false, \ | |
2534 "counts jvm method invocations") \ | |
2535 \ | |
2536 notproduct(bool, CountRemovableExceptions, false, \ | |
2537 "count exceptions that could be replaced by branches due to " \ | |
2538 "inlining") \ | |
2539 \ | |
2540 notproduct(bool, ICMissHistogram, false, \ | |
2541 "produce histogram of IC misses") \ | |
2542 \ | |
2543 notproduct(bool, PrintClassStatistics, false, \ | |
2544 "prints class statistics at end of run") \ | |
2545 \ | |
2546 notproduct(bool, PrintMethodStatistics, false, \ | |
2547 "prints method statistics at end of run") \ | |
2548 \ | |
2549 /* interpreter */ \ | |
2550 develop(bool, ClearInterpreterLocals, false, \ | |
2551 "Always clear local variables of interpreter activations upon " \ | |
2552 "entry") \ | |
2553 \ | |
2554 product_pd(bool, RewriteBytecodes, \ | |
2555 "Allow rewriting of bytecodes (bytecodes are not immutable)") \ | |
2556 \ | |
2557 product_pd(bool, RewriteFrequentPairs, \ | |
2558 "Rewrite frequently used bytecode pairs into a single bytecode") \ | |
2559 \ | |
100
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
76
diff
changeset
|
2560 diagnostic(bool, PrintInterpreter, false, \ |
0 | 2561 "Prints the generated interpreter code") \ |
2562 \ | |
2563 product(bool, UseInterpreter, true, \ | |
2564 "Use interpreter for non-compiled methods") \ | |
2565 \ | |
2566 develop(bool, UseFastSignatureHandlers, true, \ | |
2567 "Use fast signature handlers for native calls") \ | |
2568 \ | |
2569 develop(bool, UseV8InstrsOnly, false, \ | |
2570 "Use SPARC-V8 Compliant instruction subset") \ | |
2571 \ | |
2572 product(bool, UseNiagaraInstrs, false, \ | |
2573 "Use Niagara-efficient instruction subset") \ | |
2574 \ | |
2575 develop(bool, UseCASForSwap, false, \ | |
2576 "Do not use swap instructions, but only CAS (in a loop) on SPARC")\ | |
2577 \ | |
2578 product(bool, UseLoopCounter, true, \ | |
2579 "Increment invocation counter on backward branch") \ | |
2580 \ | |
2581 product(bool, UseFastEmptyMethods, true, \ | |
2582 "Use fast method entry code for empty methods") \ | |
2583 \ | |
2584 product(bool, UseFastAccessorMethods, true, \ | |
2585 "Use fast method entry code for accessor methods") \ | |
2586 \ | |
2587 product_pd(bool, UseOnStackReplacement, \ | |
2588 "Use on stack replacement, calls runtime if invoc. counter " \ | |
2589 "overflows in loop") \ | |
2590 \ | |
2591 notproduct(bool, TraceOnStackReplacement, false, \ | |
2592 "Trace on stack replacement") \ | |
2593 \ | |
2594 develop(bool, PoisonOSREntry, true, \ | |
2595 "Detect abnormal calls to OSR code") \ | |
2596 \ | |
2597 product_pd(bool, PreferInterpreterNativeStubs, \ | |
2598 "Use always interpreter stubs for native methods invoked via " \ | |
2599 "interpreter") \ | |
2600 \ | |
2601 develop(bool, CountBytecodes, false, \ | |
2602 "Count number of bytecodes executed") \ | |
2603 \ | |
2604 develop(bool, PrintBytecodeHistogram, false, \ | |
2605 "Print histogram of the executed bytecodes") \ | |
2606 \ | |
2607 develop(bool, PrintBytecodePairHistogram, false, \ | |
2608 "Print histogram of the executed bytecode pairs") \ | |
2609 \ | |
100
c7c777385a15
6667042: PrintAssembly option does not work without special plugin
jrose
parents:
76
diff
changeset
|
2610 diagnostic(bool, PrintSignatureHandlers, false, \ |
0 | 2611 "Print code generated for native method signature handlers") \ |
2612 \ | |
2613 develop(bool, VerifyOops, false, \ | |
2614 "Do plausibility checks for oops") \ | |
2615 \ | |
2616 develop(bool, CheckUnhandledOops, false, \ | |
2617 "Check for unhandled oops in VM code") \ | |
2618 \ | |
2619 develop(bool, VerifyJNIFields, trueInDebug, \ | |
2620 "Verify jfieldIDs for instance fields") \ | |
2621 \ | |
2622 notproduct(bool, VerifyJNIEnvThread, false, \ | |
2623 "Verify JNIEnv.thread == Thread::current() when entering VM " \ | |
2624 "from JNI") \ | |
2625 \ | |
2626 develop(bool, VerifyFPU, false, \ | |
2627 "Verify FPU state (check for NaN's, etc.)") \ | |
2628 \ | |
2629 develop(bool, VerifyThread, false, \ | |
2630 "Watch the thread register for corruption (SPARC only)") \ | |
2631 \ | |
2632 develop(bool, VerifyActivationFrameSize, false, \ | |
2633 "Verify that activation frame didn't become smaller than its " \ | |
2634 "minimal size") \ | |
2635 \ | |
2636 develop(bool, TraceFrequencyInlining, false, \ | |
2637 "Trace frequency based inlining") \ | |
2638 \ | |
2639 notproduct(bool, TraceTypeProfile, false, \ | |
2640 "Trace type profile") \ | |
2641 \ | |
2642 develop_pd(bool, InlineIntrinsics, \ | |
2643 "Inline intrinsics that can be statically resolved") \ | |
2644 \ | |
2645 product_pd(bool, ProfileInterpreter, \ | |
2646 "Profile at the bytecode level during interpretation") \ | |
2647 \ | |
2648 develop_pd(bool, ProfileTraps, \ | |
2649 "Profile deoptimization traps at the bytecode level") \ | |
2650 \ | |
2651 product(intx, ProfileMaturityPercentage, 20, \ | |
2652 "number of method invocations/branches (expressed as % of " \ | |
2653 "CompileThreshold) before using the method's profile") \ | |
2654 \ | |
2655 develop(bool, PrintMethodData, false, \ | |
2656 "Print the results of +ProfileInterpreter at end of run") \ | |
2657 \ | |
2658 develop(bool, VerifyDataPointer, trueInDebug, \ | |
2659 "Verify the method data pointer during interpreter profiling") \ | |
2660 \ | |
2661 develop(bool, VerifyCompiledCode, false, \ | |
2662 "Include miscellaneous runtime verifications in nmethod code; " \ | |
1064 | 2663 "default off because it disturbs nmethod size heuristics") \ |
0 | 2664 \ |
1119
547f81740344
6361589: Print out stack trace for target thread of GC crash
minqi
parents:
1064
diff
changeset
|
2665 notproduct(bool, CrashGCForDumpingJavaThread, false, \ |
547f81740344
6361589: Print out stack trace for target thread of GC crash
minqi
parents:
1064
diff
changeset
|
2666 "Manually make GC thread crash then dump java stack trace; " \ |
547f81740344
6361589: Print out stack trace for target thread of GC crash
minqi
parents:
1064
diff
changeset
|
2667 "Test only") \ |
0 | 2668 \ |
2669 /* compilation */ \ | |
2670 product(bool, UseCompiler, true, \ | |
2671 "use compilation") \ | |
2672 \ | |
2673 develop(bool, TraceCompilationPolicy, false, \ | |
2674 "Trace compilation policy") \ | |
2675 \ | |
2676 develop(bool, TimeCompilationPolicy, false, \ | |
2677 "Time the compilation policy") \ | |
2678 \ | |
2679 product(bool, UseCounterDecay, true, \ | |
2680 "adjust recompilation counters") \ | |
2681 \ | |
2682 develop(intx, CounterHalfLifeTime, 30, \ | |
2683 "half-life time of invocation counters (in secs)") \ | |
2684 \ | |
2685 develop(intx, CounterDecayMinIntervalLength, 500, \ | |
2686 "Min. ms. between invocation of CounterDecay") \ | |
2687 \ | |
2688 product(bool, AlwaysCompileLoopMethods, false, \ | |
2689 "when using recompilation, never interpret methods " \ | |
2690 "containing loops") \ | |
2691 \ | |
2692 product(bool, DontCompileHugeMethods, true, \ | |
2693 "don't compile methods > HugeMethodLimit") \ | |
2694 \ | |
2695 /* Bytecode escape analysis estimation. */ \ | |
2696 product(bool, EstimateArgEscape, true, \ | |
2697 "Analyze bytecodes to estimate escape state of arguments") \ | |
2698 \ | |
2699 product(intx, BCEATraceLevel, 0, \ | |
2700 "How much tracing to do of bytecode escape analysis estimates") \ | |
2701 \ | |
2702 product(intx, MaxBCEAEstimateLevel, 5, \ | |
2703 "Maximum number of nested calls that are analyzed by BC EA.") \ | |
2704 \ | |
2705 product(intx, MaxBCEAEstimateSize, 150, \ | |
2706 "Maximum bytecode size of a method to be analyzed by BC EA.") \ | |
2707 \ | |
2708 product(intx, AllocatePrefetchStyle, 1, \ | |
2709 "0 = no prefetch, " \ | |
2710 "1 = prefetch instructions for each allocation, " \ | |
1367
9e321dcfa5b7
6940726: Use BIS instruction for allocation prefetch on Sparc
kvn
parents:
1366
diff
changeset
|
2711 "2 = use TLAB watermark to gate allocation prefetch, " \ |
9e321dcfa5b7
6940726: Use BIS instruction for allocation prefetch on Sparc
kvn
parents:
1366
diff
changeset
|
2712 "3 = use BIS instruction on Sparc for allocation prefetch") \ |
0 | 2713 \ |
2714 product(intx, AllocatePrefetchDistance, -1, \ | |
2715 "Distance to prefetch ahead of allocation pointer") \ | |
2716 \ | |
2717 product(intx, AllocatePrefetchLines, 1, \ | |
2718 "Number of lines to prefetch ahead of allocation pointer") \ | |
2719 \ | |
2720 product(intx, AllocatePrefetchStepSize, 16, \ | |
2721 "Step size in bytes of sequential prefetch instructions") \ | |
2722 \ | |
2723 product(intx, AllocatePrefetchInstr, 0, \ | |
2724 "Prefetch instruction to prefetch ahead of allocation pointer") \ | |
2725 \ | |
2726 product(intx, ReadPrefetchInstr, 0, \ | |
2727 "Prefetch instruction to prefetch ahead") \ | |
2728 \ | |
2729 /* deoptimization */ \ | |
2730 develop(bool, TraceDeoptimization, false, \ | |
2731 "Trace deoptimization") \ | |
2732 \ | |
2733 develop(bool, DebugDeoptimization, false, \ | |
2734 "Tracing various information while debugging deoptimization") \ | |
2735 \ | |
2736 product(intx, SelfDestructTimer, 0, \ | |
2737 "Will cause VM to terminate after a given time (in minutes) " \ | |
2738 "(0 means off)") \ | |
2739 \ | |
2740 product(intx, MaxJavaStackTraceDepth, 1024, \ | |
2741 "Max. no. of lines in the stack trace for Java exceptions " \ | |
2742 "(0 means all)") \ | |
2743 \ | |
2744 develop(intx, GuaranteedSafepointInterval, 1000, \ | |
2745 "Guarantee a safepoint (at least) every so many milliseconds " \ | |
2746 "(0 means none)") \ | |
2747 \ | |
2748 product(intx, SafepointTimeoutDelay, 10000, \ | |
2749 "Delay in milliseconds for option SafepointTimeout") \ | |
2750 \ | |
2751 product(intx, NmethodSweepFraction, 4, \ | |
2752 "Number of invocations of sweeper to cover all nmethods") \ | |
2753 \ | |
2754 notproduct(intx, MemProfilingInterval, 500, \ | |
2755 "Time between each invocation of the MemProfiler") \ | |
2756 \ | |
2757 develop(intx, MallocCatchPtr, -1, \ | |
2758 "Hit breakpoint when mallocing/freeing this pointer") \ | |
2759 \ | |
2760 notproduct(intx, AssertRepeat, 1, \ | |
2761 "number of times to evaluate expression in assert " \ | |
2762 "(to estimate overhead); only works with -DUSE_REPEATED_ASSERTS") \ | |
2763 \ | |
2764 notproduct(ccstrlist, SuppressErrorAt, "", \ | |
2765 "List of assertions (file:line) to muzzle") \ | |
2766 \ | |
2767 notproduct(uintx, HandleAllocationLimit, 1024, \ | |
2768 "Threshold for HandleMark allocation when +TraceHandleAllocation "\ | |
2769 "is used") \ | |
2770 \ | |
2771 develop(uintx, TotalHandleAllocationLimit, 1024, \ | |
2772 "Threshold for total handle allocation when " \ | |
2773 "+TraceHandleAllocation is used") \ | |
2774 \ | |
2775 develop(intx, StackPrintLimit, 100, \ | |
2776 "number of stack frames to print in VM-level stack dump") \ | |
2777 \ | |
2778 notproduct(intx, MaxElementPrintSize, 256, \ | |
2779 "maximum number of elements to print") \ | |
2780 \ | |
2781 notproduct(intx, MaxSubklassPrintSize, 4, \ | |
2782 "maximum number of subklasses to print when printing klass") \ | |
2783 \ | |
1157
c3b315a0d58a
6912063: inlining parameters need to be adjusted for some uses of the JVM
jrose
parents:
1150
diff
changeset
|
2784 product(intx, MaxInlineLevel, 9, \ |
0 | 2785 "maximum number of nested calls that are inlined") \ |
2786 \ | |
1157
c3b315a0d58a
6912063: inlining parameters need to be adjusted for some uses of the JVM
jrose
parents:
1150
diff
changeset
|
2787 product(intx, MaxRecursiveInlineLevel, 1, \ |
0 | 2788 "maximum number of nested recursive calls that are inlined") \ |
2789 \ | |
675 | 2790 product_pd(intx, InlineSmallCode, \ |
0 | 2791 "Only inline already compiled methods if their code size is " \ |
2792 "less than this") \ | |
2793 \ | |
2794 product(intx, MaxInlineSize, 35, \ | |
2795 "maximum bytecode size of a method to be inlined") \ | |
2796 \ | |
2797 product_pd(intx, FreqInlineSize, \ | |
2798 "maximum bytecode size of a frequent method to be inlined") \ | |
2799 \ | |
1157
c3b315a0d58a
6912063: inlining parameters need to be adjusted for some uses of the JVM
jrose
parents:
1150
diff
changeset
|
2800 product(intx, MaxTrivialSize, 6, \ |
0 | 2801 "maximum bytecode size of a trivial method to be inlined") \ |
2802 \ | |
1157
c3b315a0d58a
6912063: inlining parameters need to be adjusted for some uses of the JVM
jrose
parents:
1150
diff
changeset
|
2803 product(intx, MinInliningThreshold, 250, \ |
0 | 2804 "min. invocation count a method needs to have to be inlined") \ |
2805 \ | |
2806 develop(intx, AlignEntryCode, 4, \ | |
2807 "aligns entry code to specified value (in bytes)") \ | |
2808 \ | |
2809 develop(intx, MethodHistogramCutoff, 100, \ | |
2810 "cutoff value for method invoc. histogram (+CountCalls)") \ | |
2811 \ | |
2812 develop(intx, ProfilerNumberOfInterpretedMethods, 25, \ | |
2813 "# of interpreted methods to show in profile") \ | |
2814 \ | |
2815 develop(intx, ProfilerNumberOfCompiledMethods, 25, \ | |
2816 "# of compiled methods to show in profile") \ | |
2817 \ | |
2818 develop(intx, ProfilerNumberOfStubMethods, 25, \ | |
2819 "# of stub methods to show in profile") \ | |
2820 \ | |
2821 develop(intx, ProfilerNumberOfRuntimeStubNodes, 25, \ | |
2822 "# of runtime stub nodes to show in profile") \ | |
2823 \ | |
2824 product(intx, ProfileIntervalsTicks, 100, \ | |
2825 "# of ticks between printing of interval profile " \ | |
2826 "(+ProfileIntervals)") \ | |
2827 \ | |
2828 notproduct(intx, ScavengeALotInterval, 1, \ | |
2829 "Interval between which scavenge will occur with +ScavengeALot") \ | |
2830 \ | |
2831 notproduct(intx, FullGCALotInterval, 1, \ | |
2832 "Interval between which full gc will occur with +FullGCALot") \ | |
2833 \ | |
2834 notproduct(intx, FullGCALotStart, 0, \ | |
2835 "For which invocation to start FullGCAlot") \ | |
2836 \ | |
2837 notproduct(intx, FullGCALotDummies, 32*K, \ | |
2838 "Dummy object allocated with +FullGCALot, forcing all objects " \ | |
2839 "to move") \ | |
2840 \ | |
2841 develop(intx, DontYieldALotInterval, 10, \ | |
2842 "Interval between which yields will be dropped (milliseconds)") \ | |
2843 \ | |
2844 develop(intx, MinSleepInterval, 1, \ | |
2845 "Minimum sleep() interval (milliseconds) when " \ | |
2846 "ConvertSleepToYield is off (used for SOLARIS)") \ | |
2847 \ | |
2848 product(intx, EventLogLength, 2000, \ | |
2849 "maximum nof events in event log") \ | |
2850 \ | |
2851 develop(intx, ProfilerPCTickThreshold, 15, \ | |
2852 "Number of ticks in a PC buckets to be a hotspot") \ | |
2853 \ | |
2854 notproduct(intx, DeoptimizeALotInterval, 5, \ | |
2855 "Number of exits until DeoptimizeALot kicks in") \ | |
2856 \ | |
2857 notproduct(intx, ZombieALotInterval, 5, \ | |
2858 "Number of exits until ZombieALot kicks in") \ | |
2859 \ | |
2860 develop(bool, StressNonEntrant, false, \ | |
2861 "Mark nmethods non-entrant at registration") \ | |
2862 \ | |
2863 diagnostic(intx, MallocVerifyInterval, 0, \ | |
2864 "if non-zero, verify C heap after every N calls to " \ | |
2865 "malloc/realloc/free") \ | |
2866 \ | |
2867 diagnostic(intx, MallocVerifyStart, 0, \ | |
2868 "if non-zero, start verifying C heap after Nth call to " \ | |
2869 "malloc/realloc/free") \ | |
2870 \ | |
2871 product(intx, TypeProfileWidth, 2, \ | |
2872 "number of receiver types to record in call/cast profile") \ | |
2873 \ | |
2874 develop(intx, BciProfileWidth, 2, \ | |
2875 "number of return bci's to record in ret profile") \ | |
2876 \ | |
2877 product(intx, PerMethodRecompilationCutoff, 400, \ | |
2878 "After recompiling N times, stay in the interpreter (-1=>'Inf')") \ | |
2879 \ | |
1206
87684f1a88b5
6614597: Performance variability in jvm2008 xml.validation
kvn
parents:
1202
diff
changeset
|
2880 product(intx, PerBytecodeRecompilationCutoff, 200, \ |
0 | 2881 "Per-BCI limit on repeated recompilation (-1=>'Inf')") \ |
2882 \ | |
2883 product(intx, PerMethodTrapLimit, 100, \ | |
2884 "Limit on traps (of one kind) in a method (includes inlines)") \ | |
2885 \ | |
2886 product(intx, PerBytecodeTrapLimit, 4, \ | |
2887 "Limit on traps (of one kind) at a particular BCI") \ | |
2888 \ | |
2889 develop(intx, FreqCountInvocations, 1, \ | |
2890 "Scaling factor for branch frequencies (deprecated)") \ | |
2891 \ | |
2892 develop(intx, InlineFrequencyRatio, 20, \ | |
2893 "Ratio of call site execution to caller method invocation") \ | |
2894 \ | |
2895 develop_pd(intx, InlineFrequencyCount, \ | |
2896 "Count of call site execution necessary to trigger frequent " \ | |
2897 "inlining") \ | |
2898 \ | |
2899 develop(intx, InlineThrowCount, 50, \ | |
2900 "Force inlining of interpreted methods that throw this often") \ | |
2901 \ | |
2902 develop(intx, InlineThrowMaxSize, 200, \ | |
2903 "Force inlining of throwing methods smaller than this") \ | |
2904 \ | |
2905 product(intx, AliasLevel, 3, \ | |
2906 "0 for no aliasing, 1 for oop/field/static/array split, " \ | |
2907 "2 for class split, 3 for unique instances") \ | |
2908 \ | |
2909 develop(bool, VerifyAliases, false, \ | |
2910 "perform extra checks on the results of alias analysis") \ | |
2911 \ | |
2912 develop(intx, ProfilerNodeSize, 1024, \ | |
2913 "Size in K to allocate for the Profile Nodes of each thread") \ | |
2914 \ | |
2915 develop(intx, V8AtomicOperationUnderLockSpinCount, 50, \ | |
2916 "Number of times to spin wait on a v8 atomic operation lock") \ | |
2917 \ | |
2918 product(intx, ReadSpinIterations, 100, \ | |
2919 "Number of read attempts before a yield (spin inner loop)") \ | |
2920 \ | |
2921 product_pd(intx, PreInflateSpin, \ | |
2922 "Number of times to spin wait before inflation") \ | |
2923 \ | |
2924 product(intx, PreBlockSpin, 10, \ | |
2925 "Number of times to spin in an inflated lock before going to " \ | |
2926 "an OS lock") \ | |
2927 \ | |
2928 /* gc parameters */ \ | |
1064 | 2929 product(uintx, InitialHeapSize, 0, \ |
2930 "Initial heap size (in bytes); zero means OldSize + NewSize") \ | |
2931 \ | |
2932 product(uintx, MaxHeapSize, ScaleForWordSize(96*M), \ | |
2933 "Maximum heap size (in bytes)") \ | |
2934 \ | |
2935 product(uintx, OldSize, ScaleForWordSize(4*M), \ | |
2936 "Initial tenured generation size (in bytes)") \ | |
2937 \ | |
1287
8911d8c0596f
6923123: Hotspot refuses to start when -Xmx4m or -Xms4m is specified
phh
parents:
1211
diff
changeset
|
2938 product(uintx, NewSize, ScaleForWordSize(1*M), \ |
1064 | 2939 "Initial new generation size (in bytes)") \ |
0 | 2940 \ |
2941 product(uintx, MaxNewSize, max_uintx, \ | |
1064 | 2942 "Maximum new generation size (in bytes), max_uintx means set " \ |
2943 "ergonomically") \ | |
0 | 2944 \ |
2945 product(uintx, PretenureSizeThreshold, 0, \ | |
1064 | 2946 "Maximum size in bytes of objects allocated in DefNew " \ |
2947 "generation; zero means no maximum") \ | |
2948 \ | |
2949 product(uintx, TLABSize, 0, \ | |
2950 "Starting TLAB size (in bytes); zero means set ergonomically") \ | |
0 | 2951 \ |
2952 product(uintx, MinTLABSize, 2*K, \ | |
2953 "Minimum allowed TLAB size (in bytes)") \ | |
2954 \ | |
2955 product(uintx, TLABAllocationWeight, 35, \ | |
2956 "Allocation averaging weight") \ | |
2957 \ | |
2958 product(uintx, TLABWasteTargetPercent, 1, \ | |
2959 "Percentage of Eden that can be wasted") \ | |
2960 \ | |
2961 product(uintx, TLABRefillWasteFraction, 64, \ | |
2962 "Max TLAB waste at a refill (internal fragmentation)") \ | |
2963 \ | |
2964 product(uintx, TLABWasteIncrement, 4, \ | |
2965 "Increment allowed waste at slow allocation") \ | |
2966 \ | |
1064 | 2967 product(intx, SurvivorRatio, 8, \ |
0 | 2968 "Ratio of eden/survivor space size") \ |
2969 \ | |
1064 | 2970 product(intx, NewRatio, 2, \ |
0 | 2971 "Ratio of new/old generation sizes") \ |
2972 \ | |
2973 product(uintx, MaxLiveObjectEvacuationRatio, 100, \ | |
2974 "Max percent of eden objects that will be live at scavenge") \ | |
2975 \ | |
2976 product_pd(uintx, NewSizeThreadIncrease, \ | |
2977 "Additional size added to desired new generation size per " \ | |
2978 "non-daemon thread (in bytes)") \ | |
2979 \ | |
2980 product_pd(uintx, PermSize, \ | |
1064 | 2981 "Initial size of permanent generation (in bytes)") \ |
0 | 2982 \ |
2983 product_pd(uintx, MaxPermSize, \ | |
2984 "Maximum size of permanent generation (in bytes)") \ | |
2985 \ | |
2986 product(uintx, MinHeapFreeRatio, 40, \ | |
2987 "Min percentage of heap free after GC to avoid expansion") \ | |
2988 \ | |
2989 product(uintx, MaxHeapFreeRatio, 70, \ | |
2990 "Max percentage of heap free after GC to avoid shrinking") \ | |
2991 \ | |
2992 product(intx, SoftRefLRUPolicyMSPerMB, 1000, \ | |
2993 "Number of milliseconds per MB of free space in the heap") \ | |
2994 \ | |
2995 product(uintx, MinHeapDeltaBytes, ScaleForWordSize(128*K), \ | |
2996 "Min change in heap space due to GC (in bytes)") \ | |
2997 \ | |
2998 product(uintx, MinPermHeapExpansion, ScaleForWordSize(256*K), \ | |
2999 "Min expansion of permanent heap (in bytes)") \ | |
3000 \ | |
3001 product(uintx, MaxPermHeapExpansion, ScaleForWordSize(4*M), \ | |
3002 "Max expansion of permanent heap without full GC (in bytes)") \ | |
3003 \ | |
3004 product(intx, QueuedAllocationWarningCount, 0, \ | |
3005 "Number of times an allocation that queues behind a GC " \ | |
3006 "will retry before printing a warning") \ | |
3007 \ | |
3008 diagnostic(uintx, VerifyGCStartAt, 0, \ | |
3009 "GC invoke count where +VerifyBefore/AfterGC kicks in") \ | |
3010 \ | |
3011 diagnostic(intx, VerifyGCLevel, 0, \ | |
3012 "Generation level at which to start +VerifyBefore/AfterGC") \ | |
3013 \ | |
3014 develop(uintx, ExitAfterGCNum, 0, \ | |
3015 "If non-zero, exit after this GC.") \ | |
3016 \ | |
3017 product(intx, MaxTenuringThreshold, 15, \ | |
3018 "Maximum value for tenuring threshold") \ | |
3019 \ | |
3020 product(intx, InitialTenuringThreshold, 7, \ | |
3021 "Initial value for tenuring threshold") \ | |
3022 \ | |
3023 product(intx, TargetSurvivorRatio, 50, \ | |
3024 "Desired percentage of survivor space used after scavenge") \ | |
3025 \ | |
438 | 3026 product(uintx, MarkSweepDeadRatio, 5, \ |
0 | 3027 "Percentage (0-100) of the old gen allowed as dead wood." \ |
3028 "Serial mark sweep treats this as both the min and max value." \ | |
3029 "CMS uses this value only if it falls back to mark sweep." \ | |
3030 "Par compact uses a variable scale based on the density of the" \ | |
3031 "generation and treats this as the max value when the heap is" \ | |
3032 "either completely full or completely empty. Par compact also" \ | |
3033 "has a smaller default value; see arguments.cpp.") \ | |
3034 \ | |
438 | 3035 product(uintx, PermMarkSweepDeadRatio, 20, \ |
0 | 3036 "Percentage (0-100) of the perm gen allowed as dead wood." \ |
3037 "See MarkSweepDeadRatio for collector-specific comments.") \ | |
3038 \ | |
3039 product(intx, MarkSweepAlwaysCompactCount, 4, \ | |
3040 "How often should we fully compact the heap (ignoring the dead " \ | |
3041 "space parameters)") \ | |
3042 \ | |
3043 product(intx, PrintCMSStatistics, 0, \ | |
3044 "Statistics for CMS") \ | |
3045 \ | |
3046 product(bool, PrintCMSInitiationStatistics, false, \ | |
3047 "Statistics for initiating a CMS collection") \ | |
3048 \ | |
3049 product(intx, PrintFLSStatistics, 0, \ | |
3050 "Statistics for CMS' FreeListSpace") \ | |
3051 \ | |
3052 product(intx, PrintFLSCensus, 0, \ | |
3053 "Census for CMS' FreeListSpace") \ | |
3054 \ | |
3055 develop(uintx, GCExpandToAllocateDelayMillis, 0, \ | |
3056 "Delay in ms between expansion and allocation") \ | |
3057 \ | |
3058 product(intx, DeferThrSuspendLoopCount, 4000, \ | |
3059 "(Unstable) Number of times to iterate in safepoint loop " \ | |
3060 " before blocking VM threads ") \ | |
3061 \ | |
3062 product(intx, DeferPollingPageLoopCount, -1, \ | |
3063 "(Unsafe,Unstable) Number of iterations in safepoint loop " \ | |
3064 "before changing safepoint polling page to RO ") \ | |
3065 \ | |
3066 product(intx, SafepointSpinBeforeYield, 2000, "(Unstable)") \ | |
3067 \ | |
3068 product(bool, UseDepthFirstScavengeOrder, true, \ | |
3069 "true: the scavenge order will be depth-first, " \ | |
3070 "false: the scavenge order will be breadth-first") \ | |
3071 \ | |
3072 product(bool, PSChunkLargeArrays, true, \ | |
3073 "true: process large arrays in chunks") \ | |
3074 \ | |
3075 product(uintx, GCDrainStackTargetSize, 64, \ | |
3076 "how many entries we'll try to leave on the stack during " \ | |
3077 "parallel GC") \ | |
3078 \ | |
3079 /* stack parameters */ \ | |
3080 product_pd(intx, StackYellowPages, \ | |
3081 "Number of yellow zone (recoverable overflows) pages") \ | |
3082 \ | |
3083 product_pd(intx, StackRedPages, \ | |
3084 "Number of red zone (unrecoverable overflows) pages") \ | |
3085 \ | |
3086 product_pd(intx, StackShadowPages, \ | |
3087 "Number of shadow zone (for overflow checking) pages" \ | |
3088 " this should exceed the depth of the VM and native call stack") \ | |
3089 \ | |
3090 product_pd(intx, ThreadStackSize, \ | |
3091 "Thread Stack Size (in Kbytes)") \ | |
3092 \ | |
3093 product_pd(intx, VMThreadStackSize, \ | |
3094 "Non-Java Thread Stack Size (in Kbytes)") \ | |
3095 \ | |
3096 product_pd(intx, CompilerThreadStackSize, \ | |
3097 "Compiler Thread Stack Size (in Kbytes)") \ | |
3098 \ | |
3099 develop_pd(uintx, JVMInvokeMethodSlack, \ | |
3100 "Stack space (bytes) required for JVM_InvokeMethod to complete") \ | |
3101 \ | |
3102 product(uintx, ThreadSafetyMargin, 50*M, \ | |
3103 "Thread safety margin is used on fixed-stack LinuxThreads (on " \ | |
3104 "Linux/x86 only) to prevent heap-stack collision. Set to 0 to " \ | |
3105 "disable this feature") \ | |
3106 \ | |
3107 /* code cache parameters */ \ | |
3108 develop(uintx, CodeCacheSegmentSize, 64, \ | |
3109 "Code cache segment size (in bytes) - smallest unit of " \ | |
3110 "allocation") \ | |
3111 \ | |
3112 develop_pd(intx, CodeEntryAlignment, \ | |
3113 "Code entry alignment for generated code (in bytes)") \ | |
3114 \ | |
1365 | 3115 product_pd(intx, OptoLoopAlignment, \ |
3116 "Align inner loops to zero relative to this modulus") \ | |
3117 \ | |
0 | 3118 product_pd(uintx, InitialCodeCacheSize, \ |
3119 "Initial code cache size (in bytes)") \ | |
3120 \ | |
3121 product_pd(uintx, ReservedCodeCacheSize, \ | |
3122 "Reserved code cache size (in bytes) - maximum code cache size") \ | |
3123 \ | |
3124 product(uintx, CodeCacheMinimumFreeSpace, 500*K, \ | |
3125 "When less than X space left, we stop compiling.") \ | |
3126 \ | |
3127 product_pd(uintx, CodeCacheExpansionSize, \ | |
3128 "Code cache expansion size (in bytes)") \ | |
3129 \ | |
3130 develop_pd(uintx, CodeCacheMinBlockLength, \ | |
3131 "Minimum number of segments in a code cache block.") \ | |
3132 \ | |
3133 notproduct(bool, ExitOnFullCodeCache, false, \ | |
3134 "Exit the VM if we fill the code cache.") \ | |
3135 \ | |
1202 | 3136 product(bool, UseCodeCacheFlushing, false, \ |
3137 "Attempt to clean the code cache before shutting off compiler") \ | |
3138 \ | |
3139 product(intx, MinCodeCacheFlushingInterval, 30, \ | |
3140 "Min number of seconds between code cache cleaning sessions") \ | |
3141 \ | |
3142 product(uintx, CodeCacheFlushingMinimumFreeSpace, 1500*K, \ | |
3143 "When less than X space left, start code cache cleaning") \ | |
3144 \ | |
0 | 3145 /* interpreter debugging */ \ |
3146 develop(intx, BinarySwitchThreshold, 5, \ | |
3147 "Minimal number of lookupswitch entries for rewriting to binary " \ | |
3148 "switch") \ | |
3149 \ | |
3150 develop(intx, StopInterpreterAt, 0, \ | |
3151 "Stops interpreter execution at specified bytecode number") \ | |
3152 \ | |
3153 develop(intx, TraceBytecodesAt, 0, \ | |
3154 "Traces bytecodes starting with specified bytecode number") \ | |
3155 \ | |
3156 /* compiler interface */ \ | |
3157 develop(intx, CIStart, 0, \ | |
3158 "the id of the first compilation to permit") \ | |
3159 \ | |
3160 develop(intx, CIStop, -1, \ | |
3161 "the id of the last compilation to permit") \ | |
3162 \ | |
3163 develop(intx, CIStartOSR, 0, \ | |
3164 "the id of the first osr compilation to permit " \ | |
3165 "(CICountOSR must be on)") \ | |
3166 \ | |
3167 develop(intx, CIStopOSR, -1, \ | |
3168 "the id of the last osr compilation to permit " \ | |
3169 "(CICountOSR must be on)") \ | |
3170 \ | |
3171 develop(intx, CIBreakAtOSR, -1, \ | |
3172 "id of osr compilation to break at") \ | |
3173 \ | |
3174 develop(intx, CIBreakAt, -1, \ | |
3175 "id of compilation to break at") \ | |
3176 \ | |
3177 product(ccstrlist, CompileOnly, "", \ | |
3178 "List of methods (pkg/class.name) to restrict compilation to") \ | |
3179 \ | |
3180 product(ccstr, CompileCommandFile, NULL, \ | |
3181 "Read compiler commands from this file [.hotspot_compiler]") \ | |
3182 \ | |
3183 product(ccstrlist, CompileCommand, "", \ | |
3184 "Prepend to .hotspot_compiler; e.g. log,java/lang/String.<init>") \ | |
3185 \ | |
3186 product(bool, CICompilerCountPerCPU, false, \ | |
3187 "1 compiler thread for log(N CPUs)") \ | |
3188 \ | |
3189 develop(intx, CIFireOOMAt, -1, \ | |
3190 "Fire OutOfMemoryErrors throughout CI for testing the compiler " \ | |
3191 "(non-negative value throws OOM after this many CI accesses " \ | |
3192 "in each compile)") \ | |
3193 \ | |
3194 develop(intx, CIFireOOMAtDelay, -1, \ | |
3195 "Wait for this many CI accesses to occur in all compiles before " \ | |
3196 "beginning to throw OutOfMemoryErrors in each compile") \ | |
3197 \ | |
909
b32a809aab08
6866585: debug code in ciObjectFactory too slow for large objects
jcoomes
parents:
905
diff
changeset
|
3198 notproduct(bool, CIObjectFactoryVerify, false, \ |
b32a809aab08
6866585: debug code in ciObjectFactory too slow for large objects
jcoomes
parents:
905
diff
changeset
|
3199 "enable potentially expensive verification in ciObjectFactory") \ |
b32a809aab08
6866585: debug code in ciObjectFactory too slow for large objects
jcoomes
parents:
905
diff
changeset
|
3200 \ |
0 | 3201 /* Priorities */ \ |
3202 product_pd(bool, UseThreadPriorities, "Use native thread priorities") \ | |
3203 \ | |
3204 product(intx, ThreadPriorityPolicy, 0, \ | |
3205 "0 : Normal. "\ | |
3206 " VM chooses priorities that are appropriate for normal "\ | |
3207 " applications. On Solaris NORM_PRIORITY and above are mapped "\ | |
3208 " to normal native priority. Java priorities below NORM_PRIORITY"\ | |
3209 " map to lower native priority values. On Windows applications"\ | |
3210 " are allowed to use higher native priorities. However, with "\ | |
3211 " ThreadPriorityPolicy=0, VM will not use the highest possible"\ | |
3212 " native priority, THREAD_PRIORITY_TIME_CRITICAL, as it may "\ | |
3213 " interfere with system threads. On Linux thread priorities "\ | |
3214 " are ignored because the OS does not support static priority "\ | |
3215 " in SCHED_OTHER scheduling class which is the only choice for"\ | |
3216 " non-root, non-realtime applications. "\ | |
3217 "1 : Aggressive. "\ | |
3218 " Java thread priorities map over to the entire range of "\ | |
3219 " native thread priorities. Higher Java thread priorities map "\ | |
3220 " to higher native thread priorities. This policy should be "\ | |
3221 " used with care, as sometimes it can cause performance "\ | |
3222 " degradation in the application and/or the entire system. On "\ | |
3223 " Linux this policy requires root privilege.") \ | |
3224 \ | |
3225 product(bool, ThreadPriorityVerbose, false, \ | |
3226 "print priority changes") \ | |
3227 \ | |
3228 product(intx, DefaultThreadPriority, -1, \ | |
3229 "what native priority threads run at if not specified elsewhere (-1 means no change)") \ | |
3230 \ | |
3231 product(intx, CompilerThreadPriority, -1, \ | |
3232 "what priority should compiler threads run at (-1 means no change)") \ | |
3233 \ | |
3234 product(intx, VMThreadPriority, -1, \ | |
3235 "what priority should VM threads run at (-1 means no change)") \ | |
3236 \ | |
3237 product(bool, CompilerThreadHintNoPreempt, true, \ | |
3238 "(Solaris only) Give compiler threads an extra quanta") \ | |
3239 \ | |
3240 product(bool, VMThreadHintNoPreempt, false, \ | |
3241 "(Solaris only) Give VM thread an extra quanta") \ | |
3242 \ | |
3243 product(intx, JavaPriority1_To_OSPriority, -1, "Map Java priorities to OS priorities") \ | |
3244 product(intx, JavaPriority2_To_OSPriority, -1, "Map Java priorities to OS priorities") \ | |
3245 product(intx, JavaPriority3_To_OSPriority, -1, "Map Java priorities to OS priorities") \ | |
3246 product(intx, JavaPriority4_To_OSPriority, -1, "Map Java priorities to OS priorities") \ | |
3247 product(intx, JavaPriority5_To_OSPriority, -1, "Map Java priorities to OS priorities") \ | |
3248 product(intx, JavaPriority6_To_OSPriority, -1, "Map Java priorities to OS priorities") \ | |
3249 product(intx, JavaPriority7_To_OSPriority, -1, "Map Java priorities to OS priorities") \ | |
3250 product(intx, JavaPriority8_To_OSPriority, -1, "Map Java priorities to OS priorities") \ | |
3251 product(intx, JavaPriority9_To_OSPriority, -1, "Map Java priorities to OS priorities") \ | |
3252 product(intx, JavaPriority10_To_OSPriority,-1, "Map Java priorities to OS priorities") \ | |
3253 \ | |
3254 /* compiler debugging */ \ | |
3255 notproduct(intx, CompileTheWorldStartAt, 1, \ | |
3256 "First class to consider when using +CompileTheWorld") \ | |
3257 \ | |
3258 notproduct(intx, CompileTheWorldStopAt, max_jint, \ | |
3259 "Last class to consider when using +CompileTheWorld") \ | |
3260 \ | |
3261 develop(intx, NewCodeParameter, 0, \ | |
3262 "Testing Only: Create a dedicated integer parameter before " \ | |
3263 "putback") \ | |
3264 \ | |
3265 /* new oopmap storage allocation */ \ | |
3266 develop(intx, MinOopMapAllocation, 8, \ | |
3267 "Minimum number of OopMap entries in an OopMapSet") \ | |
3268 \ | |
3269 /* Background Compilation */ \ | |
3270 develop(intx, LongCompileThreshold, 50, \ | |
3271 "Used with +TraceLongCompiles") \ | |
3272 \ | |
3273 product(intx, StarvationMonitorInterval, 200, \ | |
3274 "Pause between each check in ms") \ | |
3275 \ | |
3276 /* recompilation */ \ | |
3277 product_pd(intx, CompileThreshold, \ | |
3278 "number of interpreted method invocations before (re-)compiling") \ | |
3279 \ | |
3280 product_pd(intx, BackEdgeThreshold, \ | |
3281 "Interpreter Back edge threshold at which an OSR compilation is invoked")\ | |
3282 \ | |
3283 product(intx, Tier1BytecodeLimit, 10, \ | |
3284 "Must have at least this many bytecodes before tier1" \ | |
3285 "invocation counters are used") \ | |
3286 \ | |
3287 product_pd(intx, Tier2CompileThreshold, \ | |
3288 "threshold at which a tier 2 compilation is invoked") \ | |
3289 \ | |
3290 product_pd(intx, Tier2BackEdgeThreshold, \ | |
3291 "Back edge threshold at which a tier 2 compilation is invoked") \ | |
3292 \ | |
3293 product_pd(intx, Tier3CompileThreshold, \ | |
3294 "threshold at which a tier 3 compilation is invoked") \ | |
3295 \ | |
3296 product_pd(intx, Tier3BackEdgeThreshold, \ | |
3297 "Back edge threshold at which a tier 3 compilation is invoked") \ | |
3298 \ | |
3299 product_pd(intx, Tier4CompileThreshold, \ | |
3300 "threshold at which a tier 4 compilation is invoked") \ | |
3301 \ | |
3302 product_pd(intx, Tier4BackEdgeThreshold, \ | |
3303 "Back edge threshold at which a tier 4 compilation is invoked") \ | |
3304 \ | |
3305 product_pd(bool, TieredCompilation, \ | |
3306 "Enable two-tier compilation") \ | |
3307 \ | |
3308 product(bool, StressTieredRuntime, false, \ | |
3309 "Alternate client and server compiler on compile requests") \ | |
3310 \ | |
3311 product_pd(intx, OnStackReplacePercentage, \ | |
3312 "NON_TIERED number of method invocations/branches (expressed as %"\ | |
3313 "of CompileThreshold) before (re-)compiling OSR code") \ | |
3314 \ | |
3315 product(intx, InterpreterProfilePercentage, 33, \ | |
3316 "NON_TIERED number of method invocations/branches (expressed as %"\ | |
3317 "of CompileThreshold) before profiling in the interpreter") \ | |
3318 \ | |
3319 develop(intx, MaxRecompilationSearchLength, 10, \ | |
3320 "max. # frames to inspect searching for recompilee") \ | |
3321 \ | |
3322 develop(intx, MaxInterpretedSearchLength, 3, \ | |
3323 "max. # interp. frames to skip when searching for recompilee") \ | |
3324 \ | |
3325 develop(intx, DesiredMethodLimit, 8000, \ | |
3326 "desired max. method size (in bytecodes) after inlining") \ | |
3327 \ | |
3328 develop(intx, HugeMethodLimit, 8000, \ | |
3329 "don't compile methods larger than this if " \ | |
3330 "+DontCompileHugeMethods") \ | |
3331 \ | |
3332 /* New JDK 1.4 reflection implementation */ \ | |
3333 \ | |
3334 develop(bool, UseNewReflection, true, \ | |
3335 "Temporary flag for transition to reflection based on dynamic " \ | |
3336 "bytecode generation in 1.4; can no longer be turned off in 1.4 " \ | |
3337 "JDK, and is unneeded in 1.3 JDK, but marks most places VM " \ | |
3338 "changes were needed") \ | |
3339 \ | |
3340 develop(bool, VerifyReflectionBytecodes, false, \ | |
3341 "Force verification of 1.4 reflection bytecodes. Does not work " \ | |
3342 "in situations like that described in 4486457 or for " \ | |
3343 "constructors generated for serialization, so can not be enabled "\ | |
3344 "in product.") \ | |
3345 \ | |
3346 product(bool, ReflectionWrapResolutionErrors, true, \ | |
3347 "Temporary flag for transition to AbstractMethodError wrapped " \ | |
3348 "in InvocationTargetException. See 6531596") \ | |
3349 \ | |
3350 \ | |
3351 develop(intx, FastSuperclassLimit, 8, \ | |
3352 "Depth of hardwired instanceof accelerator array") \ | |
3353 \ | |
3354 /* Properties for Java libraries */ \ | |
3355 \ | |
3356 product(intx, MaxDirectMemorySize, -1, \ | |
3357 "Maximum total size of NIO direct-buffer allocations") \ | |
3358 \ | |
3359 /* temporary developer defined flags */ \ | |
3360 \ | |
3361 diagnostic(bool, UseNewCode, false, \ | |
3362 "Testing Only: Use the new version while testing") \ | |
3363 \ | |
3364 diagnostic(bool, UseNewCode2, false, \ | |
3365 "Testing Only: Use the new version while testing") \ | |
3366 \ | |
3367 diagnostic(bool, UseNewCode3, false, \ | |
3368 "Testing Only: Use the new version while testing") \ | |
3369 \ | |
3370 /* flags for performance data collection */ \ | |
3371 \ | |
3372 product(bool, UsePerfData, true, \ | |
3373 "Flag to disable jvmstat instrumentation for performance testing" \ | |
3374 "and problem isolation purposes.") \ | |
3375 \ | |
3376 product(bool, PerfDataSaveToFile, false, \ | |
3377 "Save PerfData memory to hsperfdata_<pid> file on exit") \ | |
3378 \ | |
3379 product(ccstr, PerfDataSaveFile, NULL, \ | |
3380 "Save PerfData memory to the specified absolute pathname," \ | |
3381 "%p in the file name if present will be replaced by pid") \ | |
3382 \ | |
3383 product(intx, PerfDataSamplingInterval, 50 /*ms*/, \ | |
3384 "Data sampling interval in milliseconds") \ | |
3385 \ | |
3386 develop(bool, PerfTraceDataCreation, false, \ | |
3387 "Trace creation of Performance Data Entries") \ | |
3388 \ | |
3389 develop(bool, PerfTraceMemOps, false, \ | |
3390 "Trace PerfMemory create/attach/detach calls") \ | |
3391 \ | |
3392 product(bool, PerfDisableSharedMem, false, \ | |
3393 "Store performance data in standard memory") \ | |
3394 \ | |
3395 product(intx, PerfDataMemorySize, 32*K, \ | |
3396 "Size of performance data memory region. Will be rounded " \ | |
3397 "up to a multiple of the native os page size.") \ | |
3398 \ | |
3399 product(intx, PerfMaxStringConstLength, 1024, \ | |
3400 "Maximum PerfStringConstant string length before truncation") \ | |
3401 \ | |
3402 product(bool, PerfAllowAtExitRegistration, false, \ | |
3403 "Allow registration of atexit() methods") \ | |
3404 \ | |
3405 product(bool, PerfBypassFileSystemCheck, false, \ | |
3406 "Bypass Win32 file system criteria checks (Windows Only)") \ | |
3407 \ | |
3408 product(intx, UnguardOnExecutionViolation, 0, \ | |
3409 "Unguard page and retry on no-execute fault (Win32 only)" \ | |
3410 "0=off, 1=conservative, 2=aggressive") \ | |
3411 \ | |
3412 /* Serviceability Support */ \ | |
3413 \ | |
3414 product(bool, ManagementServer, false, \ | |
3415 "Create JMX Management Server") \ | |
3416 \ | |
3417 product(bool, DisableAttachMechanism, false, \ | |
3418 "Disable mechanism that allows tools to attach to this VM") \ | |
3419 \ | |
3420 product(bool, StartAttachListener, false, \ | |
3421 "Always start Attach Listener at VM startup") \ | |
3422 \ | |
3423 manageable(bool, PrintConcurrentLocks, false, \ | |
3424 "Print java.util.concurrent locks in thread dump") \ | |
3425 \ | |
3426 /* Shared spaces */ \ | |
3427 \ | |
3428 product(bool, UseSharedSpaces, true, \ | |
3429 "Use shared spaces in the permanent generation") \ | |
3430 \ | |
3431 product(bool, RequireSharedSpaces, false, \ | |
3432 "Require shared spaces in the permanent generation") \ | |
3433 \ | |
3434 product(bool, ForceSharedSpaces, false, \ | |
3435 "Require shared spaces in the permanent generation") \ | |
3436 \ | |
3437 product(bool, DumpSharedSpaces, false, \ | |
3438 "Special mode: JVM reads a class list, loads classes, builds " \ | |
3439 "shared spaces, and dumps the shared spaces to a file to be " \ | |
3440 "used in future JVM runs.") \ | |
3441 \ | |
3442 product(bool, PrintSharedSpaces, false, \ | |
3443 "Print usage of shared spaces") \ | |
3444 \ | |
3445 product(uintx, SharedDummyBlockSize, 512*M, \ | |
3446 "Size of dummy block used to shift heap addresses (in bytes)") \ | |
3447 \ | |
3448 product(uintx, SharedReadWriteSize, 12*M, \ | |
3449 "Size of read-write space in permanent generation (in bytes)") \ | |
3450 \ | |
910
10d8c0d0d60e
6867645: java -Xshare:dump failed - read only space too small
jcoomes
parents:
909
diff
changeset
|
3451 product(uintx, SharedReadOnlySize, 10*M, \ |
0 | 3452 "Size of read-only space in permanent generation (in bytes)") \ |
3453 \ | |
3454 product(uintx, SharedMiscDataSize, 4*M, \ | |
3455 "Size of the shared data area adjacent to the heap (in bytes)") \ | |
3456 \ | |
3457 product(uintx, SharedMiscCodeSize, 4*M, \ | |
3458 "Size of the shared code area adjacent to the heap (in bytes)") \ | |
3459 \ | |
3460 diagnostic(bool, SharedOptimizeColdStart, true, \ | |
3461 "At dump time, order shared objects to achieve better " \ | |
3462 "cold startup time.") \ | |
3463 \ | |
3464 develop(intx, SharedOptimizeColdStartPolicy, 2, \ | |
3465 "Reordering policy for SharedOptimizeColdStart " \ | |
3466 "0=favor classload-time locality, 1=balanced, " \ | |
3467 "2=favor runtime locality") \ | |
3468 \ | |
3469 diagnostic(bool, SharedSkipVerify, false, \ | |
3470 "Skip assert() and verify() which page-in unwanted shared " \ | |
3471 "objects. ") \ | |
3472 \ | |
431
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
406
diff
changeset
|
3473 product(bool, AnonymousClasses, false, \ |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
406
diff
changeset
|
3474 "support sun.misc.Unsafe.defineAnonymousClass") \ |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
406
diff
changeset
|
3475 \ |
905
bd2b1f617a4e
6868487: EnableInvokeDynamic and EnableMethodHandles should not be visible flags in JDK6 or JDK7
jrose
parents:
885
diff
changeset
|
3476 experimental(bool, EnableMethodHandles, false, \ |
710 | 3477 "support method handles (true by default under JSR 292)") \ |
3478 \ | |
3479 diagnostic(intx, MethodHandlePushLimit, 3, \ | |
3480 "number of additional stack slots a method handle may push") \ | |
3481 \ | |
3482 develop(bool, TraceMethodHandles, false, \ | |
3483 "trace internal method handle operations") \ | |
3484 \ | |
3485 diagnostic(bool, VerifyMethodHandles, trueInDebug, \ | |
3486 "perform extra checks when constructing method handles") \ | |
3487 \ | |
3488 diagnostic(bool, OptimizeMethodHandles, true, \ | |
3489 "when constructing method handles, try to improve them") \ | |
3490 \ | |
1173
73b22f919c34
6912065: final fields in objects need to support inlining optimizations for JSR 292
jrose
parents:
1157
diff
changeset
|
3491 experimental(bool, TrustFinalNonStaticFields, false, \ |
73b22f919c34
6912065: final fields in objects need to support inlining optimizations for JSR 292
jrose
parents:
1157
diff
changeset
|
3492 "trust final non-static declarations for constant folding") \ |
73b22f919c34
6912065: final fields in objects need to support inlining optimizations for JSR 292
jrose
parents:
1157
diff
changeset
|
3493 \ |
905
bd2b1f617a4e
6868487: EnableInvokeDynamic and EnableMethodHandles should not be visible flags in JDK6 or JDK7
jrose
parents:
885
diff
changeset
|
3494 experimental(bool, EnableInvokeDynamic, false, \ |
726
be93aad57795
6655646: dynamic languages need dynamically linked call sites
jrose
parents:
712
diff
changeset
|
3495 "recognize the invokedynamic instruction") \ |
be93aad57795
6655646: dynamic languages need dynamically linked call sites
jrose
parents:
712
diff
changeset
|
3496 \ |
be93aad57795
6655646: dynamic languages need dynamically linked call sites
jrose
parents:
712
diff
changeset
|
3497 develop(bool, TraceInvokeDynamic, false, \ |
be93aad57795
6655646: dynamic languages need dynamically linked call sites
jrose
parents:
712
diff
changeset
|
3498 "trace internal invoke dynamic operations") \ |
be93aad57795
6655646: dynamic languages need dynamically linked call sites
jrose
parents:
712
diff
changeset
|
3499 \ |
0 | 3500 product(bool, TaggedStackInterpreter, false, \ |
3501 "Insert tags in interpreter execution stack for oopmap generaion")\ | |
3502 \ | |
3503 diagnostic(bool, PauseAtStartup, false, \ | |
3504 "Causes the VM to pause at startup time and wait for the pause " \ | |
3505 "file to be removed (default: ./vm.paused.<pid>)") \ | |
3506 \ | |
3507 diagnostic(ccstr, PauseAtStartupFile, NULL, \ | |
3508 "The file to create and for whose removal to await when pausing " \ | |
3509 "at startup. (default: ./vm.paused.<pid>)") \ | |
3510 \ | |
3511 product(bool, ExtendedDTraceProbes, false, \ | |
3512 "Enable performance-impacting dtrace probes") \ | |
3513 \ | |
3514 product(bool, DTraceMethodProbes, false, \ | |
3515 "Enable dtrace probes for method-entry and method-exit") \ | |
3516 \ | |
3517 product(bool, DTraceAllocProbes, false, \ | |
3518 "Enable dtrace probes for object allocation") \ | |
3519 \ | |
3520 product(bool, DTraceMonitorProbes, false, \ | |
3521 "Enable dtrace probes for monitor events") \ | |
3522 \ | |
3523 product(bool, RelaxAccessControlCheck, false, \ | |
3524 "Relax the access control checks in the verifier") \ | |
3525 \ | |
116
018d5b58dd4f
6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents:
113
diff
changeset
|
3526 diagnostic(bool, PrintDTraceDOF, false, \ |
018d5b58dd4f
6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents:
113
diff
changeset
|
3527 "Print the DTrace DOF passed to the system for JSDT probes") \ |
018d5b58dd4f
6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents:
113
diff
changeset
|
3528 \ |
449
171e581e8161
6554406: Change switch UseVMInterruptibleIO default to false (sol)
xlu
parents:
443
diff
changeset
|
3529 product(bool, UseVMInterruptibleIO, false, \ |
0 | 3530 "(Unstable, Solaris-specific) Thread interrupt before or with " \ |
449
171e581e8161
6554406: Change switch UseVMInterruptibleIO default to false (sol)
xlu
parents:
443
diff
changeset
|
3531 "EINTR for I/O operations results in OS_INTRPT. The default value"\ |
171e581e8161
6554406: Change switch UseVMInterruptibleIO default to false (sol)
xlu
parents:
443
diff
changeset
|
3532 " of this flag is true for JDK 6 and earliers") |
0 | 3533 |
3534 | |
3535 /* | |
3536 * Macros for factoring of globals | |
3537 */ | |
3538 | |
3539 // Interface macros | |
3540 #define DECLARE_PRODUCT_FLAG(type, name, value, doc) extern "C" type name; | |
3541 #define DECLARE_PD_PRODUCT_FLAG(type, name, doc) extern "C" type name; | |
3542 #define DECLARE_DIAGNOSTIC_FLAG(type, name, value, doc) extern "C" type name; | |
350
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
3543 #define DECLARE_EXPERIMENTAL_FLAG(type, name, value, doc) extern "C" type name; |
0 | 3544 #define DECLARE_MANAGEABLE_FLAG(type, name, value, doc) extern "C" type name; |
3545 #define DECLARE_PRODUCT_RW_FLAG(type, name, value, doc) extern "C" type name; | |
3546 #ifdef PRODUCT | |
3547 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc) const type name = value; | |
3548 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc) const type name = pd_##name; | |
3549 #define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc) | |
3550 #else | |
3551 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc) extern "C" type name; | |
3552 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc) extern "C" type name; | |
3553 #define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc) extern "C" type name; | |
3554 #endif | |
113
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
109
diff
changeset
|
3555 // Special LP64 flags, product only needed for now. |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
109
diff
changeset
|
3556 #ifdef _LP64 |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
109
diff
changeset
|
3557 #define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) extern "C" type name; |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
109
diff
changeset
|
3558 #else |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
109
diff
changeset
|
3559 #define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) const type name = value; |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
109
diff
changeset
|
3560 #endif // _LP64 |
0 | 3561 |
3562 // Implementation macros | |
3563 #define MATERIALIZE_PRODUCT_FLAG(type, name, value, doc) type name = value; | |
3564 #define MATERIALIZE_PD_PRODUCT_FLAG(type, name, doc) type name = pd_##name; | |
3565 #define MATERIALIZE_DIAGNOSTIC_FLAG(type, name, value, doc) type name = value; | |
350
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
3566 #define MATERIALIZE_EXPERIMENTAL_FLAG(type, name, value, doc) type name = value; |
0 | 3567 #define MATERIALIZE_MANAGEABLE_FLAG(type, name, value, doc) type name = value; |
3568 #define MATERIALIZE_PRODUCT_RW_FLAG(type, name, value, doc) type name = value; | |
3569 #ifdef PRODUCT | |
3570 #define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc) /* flag name is constant */ | |
3571 #define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc) /* flag name is constant */ | |
3572 #define MATERIALIZE_NOTPRODUCT_FLAG(type, name, value, doc) | |
3573 #else | |
3574 #define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc) type name = value; | |
3575 #define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc) type name = pd_##name; | |
3576 #define MATERIALIZE_NOTPRODUCT_FLAG(type, name, value, doc) type name = value; | |
3577 #endif | |
113
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
109
diff
changeset
|
3578 #ifdef _LP64 |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
109
diff
changeset
|
3579 #define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc) type name = value; |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
109
diff
changeset
|
3580 #else |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
109
diff
changeset
|
3581 #define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc) /* flag is constant */ |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
109
diff
changeset
|
3582 #endif // _LP64 |
0 | 3583 |
350
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
348
diff
changeset
|
3584 RUNTIME_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_EXPERIMENTAL_FLAG, DECLARE_NOTPRODUCT_FLAG, DECLARE_MANAGEABLE_FLAG, DECLARE_PRODUCT_RW_FLAG, DECLARE_LP64_PRODUCT_FLAG) |
0 | 3585 |
3586 RUNTIME_OS_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_NOTPRODUCT_FLAG) |