Mercurial > hg > truffle
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) |