comparison src/share/vm/runtime/globals.hpp @ 360:5d254928c888

Merge
author ysr
date Wed, 27 Aug 2008 11:20:46 -0700
parents 2564c620fa42
children 032ddb9432ad
comparison
equal deleted inserted replaced
341:d60e4e6d7f72 360:5d254928c888
253 // are available in the product version of the VM. Under instruction 253 // are available in the product version of the VM. Under instruction
254 // from support engineers, VM customers can turn them on to collect 254 // from support engineers, VM customers can turn them on to collect
255 // diagnostic information about VM problems. To use a VM diagnostic 255 // diagnostic information about VM problems. To use a VM diagnostic
256 // option, you must first specify +UnlockDiagnosticVMOptions. 256 // option, you must first specify +UnlockDiagnosticVMOptions.
257 // (This master switch also affects the behavior of -Xprintflags.) 257 // (This master switch also affects the behavior of -Xprintflags.)
258 258 //
259 // experimental flags are in support of features that are not
260 // part of the officially supported product, but are available
261 // for experimenting with. They could, for example, be performance
262 // features that may not have undergone full or rigorous QA, but which may
263 // help performance in some cases and released for experimentation
264 // by the community of users and developers. This flag also allows one to
265 // be able to build a fully supported product that nonetheless also
266 // ships with some unsupported, lightly tested, experimental features.
267 // Like the UnlockDiagnosticVMOptions flag above, there is a corresponding
268 // UnlockExperimentalVMOptions flag, which allows the control and
269 // modification of the experimental flags.
270 //
259 // manageable flags are writeable external product flags. 271 // manageable flags are writeable external product flags.
260 // They are dynamically writeable through the JDK management interface 272 // They are dynamically writeable through the JDK management interface
261 // (com.sun.management.HotSpotDiagnosticMXBean API) and also through JConsole. 273 // (com.sun.management.HotSpotDiagnosticMXBean API) and also through JConsole.
262 // These flags are external exported interface (see CCC). The list of 274 // These flags are external exported interface (see CCC). The list of
263 // manageable flags can be queried programmatically through the management 275 // manageable flags can be queried programmatically through the management
283 // and not reuse state related to the flag state at any given time. 295 // and not reuse state related to the flag state at any given time.
284 // 296 //
285 // Note that when there is a need to support develop flags to be writeable, 297 // Note that when there is a need to support develop flags to be writeable,
286 // it can be done in the same way as product_rw. 298 // it can be done in the same way as product_rw.
287 299
288 #define RUNTIME_FLAGS(develop, develop_pd, product, product_pd, diagnostic, notproduct, manageable, product_rw, lp64_product) \ 300 #define RUNTIME_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct, manageable, product_rw, lp64_product) \
289 \ 301 \
290 lp64_product(bool, UseCompressedOops, false, \ 302 lp64_product(bool, UseCompressedOops, false, \
291 "Use 32-bit object references in 64-bit VM. " \ 303 "Use 32-bit object references in 64-bit VM. " \
292 "lp64_product means flag is always constant in 32 bit VM") \ 304 "lp64_product means flag is always constant in 32 bit VM") \
293 \ 305 \
302 \ 314 \
303 product(bool, PrintCommandLineFlags, false, \ 315 product(bool, PrintCommandLineFlags, false, \
304 "Prints flags that appeared on the command line") \ 316 "Prints flags that appeared on the command line") \
305 \ 317 \
306 diagnostic(bool, UnlockDiagnosticVMOptions, trueInDebug, \ 318 diagnostic(bool, UnlockDiagnosticVMOptions, trueInDebug, \
307 "Enable processing of flags relating to field diagnostics") \ 319 "Enable normal processing of flags relating to field diagnostics")\
320 \
321 experimental(bool, UnlockExperimentalVMOptions, false, \
322 "Enable normal processing of flags relating to experimental features")\
308 \ 323 \
309 product(bool, JavaMonitorsInStackTrace, true, \ 324 product(bool, JavaMonitorsInStackTrace, true, \
310 "Print info. about Java monitor locks when the stacks are dumped")\ 325 "Print info. about Java monitor locks when the stacks are dumped")\
311 \ 326 \
312 product_pd(bool, UseLargePages, \ 327 product_pd(bool, UseLargePages, \
1119 "Use 80486 Compliant instruction subset") \ 1134 "Use 80486 Compliant instruction subset") \
1120 \ 1135 \
1121 /* gc */ \ 1136 /* gc */ \
1122 \ 1137 \
1123 product(bool, UseSerialGC, false, \ 1138 product(bool, UseSerialGC, false, \
1124 "Tells whether the VM should use serial garbage collector") \ 1139 "Use the serial garbage collector") \
1140 \
1141 experimental(bool, UseG1GC, false, \
1142 "Use the Garbage-First garbage collector") \
1125 \ 1143 \
1126 product(bool, UseParallelGC, false, \ 1144 product(bool, UseParallelGC, false, \
1127 "Use the Parallel Scavenge garbage collector") \ 1145 "Use the Parallel Scavenge garbage collector") \
1128 \ 1146 \
1129 product(bool, UseParallelOldGC, false, \ 1147 product(bool, UseParallelOldGC, false, \
1181 develop(bool, ParallelOldMTUnsafeUpdateLiveData, false, \ 1199 develop(bool, ParallelOldMTUnsafeUpdateLiveData, false, \
1182 "Use the Parallel Old MT unsafe in update of live size") \ 1200 "Use the Parallel Old MT unsafe in update of live size") \
1183 \ 1201 \
1184 develop(bool, TraceChunkTasksQueuing, false, \ 1202 develop(bool, TraceChunkTasksQueuing, false, \
1185 "Trace the queuing of the chunk tasks") \ 1203 "Trace the queuing of the chunk tasks") \
1204 \
1205 product(uintx, ParallelMarkingThreads, 0, \
1206 "Number of marking threads concurrent gc will use") \
1186 \ 1207 \
1187 product(uintx, YoungPLABSize, 4096, \ 1208 product(uintx, YoungPLABSize, 4096, \
1188 "Size of young gen promotion labs (in HeapWords)") \ 1209 "Size of young gen promotion labs (in HeapWords)") \
1189 \ 1210 \
1190 product(uintx, OldPLABSize, 1024, \ 1211 product(uintx, OldPLABSize, 1024, \
1278 \ 1299 \
1279 product(intx, CMSYoungGenPerWorker, 16*M, \ 1300 product(intx, CMSYoungGenPerWorker, 16*M, \
1280 "The amount of young gen chosen by default per GC worker " \ 1301 "The amount of young gen chosen by default per GC worker " \
1281 "thread available ") \ 1302 "thread available ") \
1282 \ 1303 \
1304 product(bool, GCOverheadReporting, false, \
1305 "Enables the GC overhead reporting facility") \
1306 \
1307 product(intx, GCOverheadReportingPeriodMS, 100, \
1308 "Reporting period for conc GC overhead reporting, in ms ") \
1309 \
1283 product(bool, CMSIncrementalMode, false, \ 1310 product(bool, CMSIncrementalMode, false, \
1284 "Whether CMS GC should operate in \"incremental\" mode") \ 1311 "Whether CMS GC should operate in \"incremental\" mode") \
1285 \ 1312 \
1286 product(uintx, CMSIncrementalDutyCycle, 10, \ 1313 product(uintx, CMSIncrementalDutyCycle, 10, \
1287 "CMS incremental mode duty cycle (a percentage, 0-100). If" \ 1314 "CMS incremental mode duty cycle (a percentage, 0-100). If" \
1605 product_pd(bool, ResizeTLAB, \ 1632 product_pd(bool, ResizeTLAB, \
1606 "Dynamically resize tlab size for threads") \ 1633 "Dynamically resize tlab size for threads") \
1607 \ 1634 \
1608 product(bool, ZeroTLAB, false, \ 1635 product(bool, ZeroTLAB, false, \
1609 "Zero out the newly created TLAB") \ 1636 "Zero out the newly created TLAB") \
1637 \
1638 product(bool, FastTLABRefill, true, \
1639 "Use fast TLAB refill code") \
1610 \ 1640 \
1611 product(bool, PrintTLAB, false, \ 1641 product(bool, PrintTLAB, false, \
1612 "Print various TLAB related information") \ 1642 "Print various TLAB related information") \
1613 \ 1643 \
1614 product(bool, TLABStats, true, \ 1644 product(bool, TLABStats, true, \
2805 "true: process large arrays in chunks") \ 2835 "true: process large arrays in chunks") \
2806 \ 2836 \
2807 product(uintx, GCDrainStackTargetSize, 64, \ 2837 product(uintx, GCDrainStackTargetSize, 64, \
2808 "how many entries we'll try to leave on the stack during " \ 2838 "how many entries we'll try to leave on the stack during " \
2809 "parallel GC") \ 2839 "parallel GC") \
2840 \
2841 product(intx, DCQBarrierQueueBufferSize, 256, \
2842 "Number of elements in a dirty card queue buffer") \
2843 \
2844 product(intx, DCQBarrierProcessCompletedThreshold, 5, \
2845 "Number of completed dirty card buffers to trigger processing.") \
2810 \ 2846 \
2811 /* stack parameters */ \ 2847 /* stack parameters */ \
2812 product_pd(intx, StackYellowPages, \ 2848 product_pd(intx, StackYellowPages, \
2813 "Number of yellow zone (recoverable overflows) pages") \ 2849 "Number of yellow zone (recoverable overflows) pages") \
2814 \ 2850 \
3227 3263
3228 // Interface macros 3264 // Interface macros
3229 #define DECLARE_PRODUCT_FLAG(type, name, value, doc) extern "C" type name; 3265 #define DECLARE_PRODUCT_FLAG(type, name, value, doc) extern "C" type name;
3230 #define DECLARE_PD_PRODUCT_FLAG(type, name, doc) extern "C" type name; 3266 #define DECLARE_PD_PRODUCT_FLAG(type, name, doc) extern "C" type name;
3231 #define DECLARE_DIAGNOSTIC_FLAG(type, name, value, doc) extern "C" type name; 3267 #define DECLARE_DIAGNOSTIC_FLAG(type, name, value, doc) extern "C" type name;
3268 #define DECLARE_EXPERIMENTAL_FLAG(type, name, value, doc) extern "C" type name;
3232 #define DECLARE_MANAGEABLE_FLAG(type, name, value, doc) extern "C" type name; 3269 #define DECLARE_MANAGEABLE_FLAG(type, name, value, doc) extern "C" type name;
3233 #define DECLARE_PRODUCT_RW_FLAG(type, name, value, doc) extern "C" type name; 3270 #define DECLARE_PRODUCT_RW_FLAG(type, name, value, doc) extern "C" type name;
3234 #ifdef PRODUCT 3271 #ifdef PRODUCT
3235 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc) const type name = value; 3272 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc) const type name = value;
3236 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc) const type name = pd_##name; 3273 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc) const type name = pd_##name;
3249 3286
3250 // Implementation macros 3287 // Implementation macros
3251 #define MATERIALIZE_PRODUCT_FLAG(type, name, value, doc) type name = value; 3288 #define MATERIALIZE_PRODUCT_FLAG(type, name, value, doc) type name = value;
3252 #define MATERIALIZE_PD_PRODUCT_FLAG(type, name, doc) type name = pd_##name; 3289 #define MATERIALIZE_PD_PRODUCT_FLAG(type, name, doc) type name = pd_##name;
3253 #define MATERIALIZE_DIAGNOSTIC_FLAG(type, name, value, doc) type name = value; 3290 #define MATERIALIZE_DIAGNOSTIC_FLAG(type, name, value, doc) type name = value;
3291 #define MATERIALIZE_EXPERIMENTAL_FLAG(type, name, value, doc) type name = value;
3254 #define MATERIALIZE_MANAGEABLE_FLAG(type, name, value, doc) type name = value; 3292 #define MATERIALIZE_MANAGEABLE_FLAG(type, name, value, doc) type name = value;
3255 #define MATERIALIZE_PRODUCT_RW_FLAG(type, name, value, doc) type name = value; 3293 #define MATERIALIZE_PRODUCT_RW_FLAG(type, name, value, doc) type name = value;
3256 #ifdef PRODUCT 3294 #ifdef PRODUCT
3257 #define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc) /* flag name is constant */ 3295 #define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc) /* flag name is constant */
3258 #define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc) /* flag name is constant */ 3296 #define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc) /* flag name is constant */
3266 #define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc) type name = value; 3304 #define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc) type name = value;
3267 #else 3305 #else
3268 #define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc) /* flag is constant */ 3306 #define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc) /* flag is constant */
3269 #endif // _LP64 3307 #endif // _LP64
3270 3308
3271 RUNTIME_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_NOTPRODUCT_FLAG, DECLARE_MANAGEABLE_FLAG, DECLARE_PRODUCT_RW_FLAG, DECLARE_LP64_PRODUCT_FLAG) 3309 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)
3272 3310
3273 RUNTIME_OS_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_NOTPRODUCT_FLAG) 3311 RUNTIME_OS_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_NOTPRODUCT_FLAG)