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