comparison src/share/vm/runtime/globals.hpp @ 1930:2d26b0046e0d

Merge.
author Thomas Wuerthinger <wuerthinger@ssw.jku.at>
date Tue, 30 Nov 2010 14:53:30 +0100
parents 2c754f3a2722 f5c8d6e5bfee
children 8d88c9ac9247
comparison
equal deleted inserted replaced
1484:6b7001391c97 1930:2d26b0046e0d
1 /* 1 /*
2 * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. 2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 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 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
14 * 14 *
15 * You should have received a copy of the GNU General Public License version 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, 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. 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 * 18 *
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * CA 95054 USA or visit www.sun.com if you need additional information or 20 * or visit www.oracle.com if you need additional information or have any
21 * have any questions. 21 * questions.
22 * 22 *
23 */ 23 */
24 24
25 #if !defined(COMPILER1) && !defined(COMPILER2) 25 #if !defined(COMPILER1) && !defined(COMPILER2) && !defined(SHARK)
26 define_pd_global(bool, BackgroundCompilation, false); 26 define_pd_global(bool, BackgroundCompilation, false);
27 define_pd_global(bool, UseTLAB, false); 27 define_pd_global(bool, UseTLAB, false);
28 define_pd_global(bool, CICompileOSR, false); 28 define_pd_global(bool, CICompileOSR, false);
29 define_pd_global(bool, UseTypeProfile, false); 29 define_pd_global(bool, UseTypeProfile, false);
30 define_pd_global(bool, UseOnStackReplacement, false); 30 define_pd_global(bool, UseOnStackReplacement, false);
33 define_pd_global(bool, ProfileInterpreter, false); 33 define_pd_global(bool, ProfileInterpreter, false);
34 define_pd_global(bool, ProfileTraps, false); 34 define_pd_global(bool, ProfileTraps, false);
35 define_pd_global(bool, TieredCompilation, false); 35 define_pd_global(bool, TieredCompilation, false);
36 36
37 define_pd_global(intx, CompileThreshold, 0); 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); 38 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 39
47 define_pd_global(intx, OnStackReplacePercentage, 0); 40 define_pd_global(intx, OnStackReplacePercentage, 0);
48 define_pd_global(bool, ResizeTLAB, false); 41 define_pd_global(bool, ResizeTLAB, false);
49 define_pd_global(intx, FreqInlineSize, 0); 42 define_pd_global(intx, FreqInlineSize, 0);
50 define_pd_global(intx, InlineSmallCode, 0); 43 define_pd_global(intx, InlineSmallCode, 0);
88 81
89 struct Flag { 82 struct Flag {
90 const char *type; 83 const char *type;
91 const char *name; 84 const char *name;
92 void* addr; 85 void* addr;
86
87 NOT_PRODUCT(const char *doc;)
88
93 const char *kind; 89 const char *kind;
94 FlagValueOrigin origin; 90 FlagValueOrigin origin;
95 91
96 // points to all Flags static array 92 // points to all Flags static array
97 static Flag *flags; 93 static Flag *flags;
129 bool is_unlocker() const; 125 bool is_unlocker() const;
130 bool is_unlocked() const; 126 bool is_unlocked() const;
131 bool is_writeable() const; 127 bool is_writeable() const;
132 bool is_external() const; 128 bool is_external() const;
133 129
134 void print_on(outputStream* st); 130 void print_on(outputStream* st, bool withComments = false );
135 void print_as_flag(outputStream* st); 131 void print_as_flag(outputStream* st);
136 }; 132 };
137 133
138 // debug flags control various aspects of the VM and are global accessible 134 // debug flags control various aspects of the VM and are global accessible
139 135
209 205
210 // Returns false if name is not a command line flag. 206 // Returns false if name is not a command line flag.
211 static bool wasSetOnCmdline(const char* name, bool* value); 207 static bool wasSetOnCmdline(const char* name, bool* value);
212 static void printSetFlags(); 208 static void printSetFlags();
213 209
214 static void printFlags(); 210 static void printFlags(bool withComments = false );
215 211
216 static void verify() PRODUCT_RETURN; 212 static void verify() PRODUCT_RETURN;
217 }; 213 };
218 214
219 // use this for flags that are true by default in the debug version but 215 // use this for flags that are true by default in the debug version but
274 // be able to build a fully supported product that nonetheless also 270 // be able to build a fully supported product that nonetheless also
275 // ships with some unsupported, lightly tested, experimental features. 271 // ships with some unsupported, lightly tested, experimental features.
276 // Like the UnlockDiagnosticVMOptions flag above, there is a corresponding 272 // Like the UnlockDiagnosticVMOptions flag above, there is a corresponding
277 // UnlockExperimentalVMOptions flag, which allows the control and 273 // UnlockExperimentalVMOptions flag, which allows the control and
278 // modification of the experimental flags. 274 // modification of the experimental flags.
275 //
276 // Nota bene: neither diagnostic nor experimental options should be used casually,
277 // and they are not supported on production loads, except under explicit
278 // direction from support engineers.
279 // 279 //
280 // manageable flags are writeable external product flags. 280 // manageable flags are writeable external product flags.
281 // They are dynamically writeable through the JDK management interface 281 // They are dynamically writeable through the JDK management interface
282 // (com.sun.management.HotSpotDiagnosticMXBean API) and also through JConsole. 282 // (com.sun.management.HotSpotDiagnosticMXBean API) and also through JConsole.
283 // These flags are external exported interface (see CCC). The list of 283 // These flags are external exported interface (see CCC). The list of
319 "OS specific low limit for heap base address") \ 319 "OS specific low limit for heap base address") \
320 \ 320 \
321 diagnostic(bool, PrintCompressedOopsMode, false, \ 321 diagnostic(bool, PrintCompressedOopsMode, false, \
322 "Print compressed oops base address and encoding mode") \ 322 "Print compressed oops base address and encoding mode") \
323 \ 323 \
324 lp64_product(intx, ObjectAlignmentInBytes, 8, \
325 "Default object alignment in bytes, 8 is minimum") \
326 \
324 /* UseMembar is theoretically a temp flag used for memory barrier \ 327 /* UseMembar is theoretically a temp flag used for memory barrier \
325 * removal testing. It was supposed to be removed before FCS but has \ 328 * removal testing. It was supposed to be removed before FCS but has \
326 * been re-added (see 6401008) */ \ 329 * been re-added (see 6401008) */ \
327 product(bool, UseMembar, false, \ 330 product_pd(bool, UseMembar, \
328 "(Unstable) Issues membars on thread state transitions") \ 331 "(Unstable) Issues membars on thread state transitions") \
332 \
333 /* Temporary: See 6948537 */ \
334 experimental(bool, UseMemSetInBOT, true, \
335 "(Unstable) uses memset in BOT updates in GC code") \
329 \ 336 \
330 diagnostic(bool, UnlockDiagnosticVMOptions, trueInDebug, \ 337 diagnostic(bool, UnlockDiagnosticVMOptions, trueInDebug, \
331 "Enable normal processing of flags relating to field diagnostics")\ 338 "Enable normal processing of flags relating to field diagnostics")\
332 \ 339 \
333 experimental(bool, UnlockExperimentalVMOptions, false, \ 340 experimental(bool, UnlockExperimentalVMOptions, false, \
598 "temporary - see javaClasses.cpp") \ 605 "temporary - see javaClasses.cpp") \
599 \ 606 \
600 notproduct(bool, PrintMallocFree, false, \ 607 notproduct(bool, PrintMallocFree, false, \
601 "Trace calls to C heap malloc/free allocation") \ 608 "Trace calls to C heap malloc/free allocation") \
602 \ 609 \
603 notproduct(bool, PrintOopAddress, false, \ 610 product(bool, PrintOopAddress, false, \
604 "Always print the location of the oop") \ 611 "Always print the location of the oop") \
605 \ 612 \
606 notproduct(bool, VerifyCodeCacheOften, false, \ 613 notproduct(bool, VerifyCodeCacheOften, false, \
607 "Verify compiled-code cache often") \ 614 "Verify compiled-code cache often") \
608 \ 615 \
629 "Zap freed VM handle space with 0xBCBCBCBC") \ 636 "Zap freed VM handle space with 0xBCBCBCBC") \
630 \ 637 \
631 develop(bool, ZapJNIHandleArea, trueInDebug, \ 638 develop(bool, ZapJNIHandleArea, trueInDebug, \
632 "Zap freed JNI handle space with 0xFEFEFEFE") \ 639 "Zap freed JNI handle space with 0xFEFEFEFE") \
633 \ 640 \
641 notproduct(bool, ZapStackSegments, trueInDebug, \
642 "Zap allocated/freed Stack segments with 0xFADFADED") \
643 \
634 develop(bool, ZapUnusedHeapArea, trueInDebug, \ 644 develop(bool, ZapUnusedHeapArea, trueInDebug, \
635 "Zap unused heap space with 0xBAADBABE") \ 645 "Zap unused heap space with 0xBAADBABE") \
636 \ 646 \
637 develop(bool, TraceZapUnusedHeapArea, false, \ 647 develop(bool, TraceZapUnusedHeapArea, false, \
638 "Trace zapping of unused heap space") \ 648 "Trace zapping of unused heap space") \
649 product(bool, PrintGCApplicationConcurrentTime, false, \ 659 product(bool, PrintGCApplicationConcurrentTime, false, \
650 "Print the time the application has been running") \ 660 "Print the time the application has been running") \
651 \ 661 \
652 product(bool, PrintGCApplicationStoppedTime, false, \ 662 product(bool, PrintGCApplicationStoppedTime, false, \
653 "Print the time the application has been stopped") \ 663 "Print the time the application has been stopped") \
664 \
665 notproduct(uintx, ErrorHandlerTest, 0, \
666 "If > 0, provokes an error after VM initialization; the value" \
667 "determines which error to provoke. See test_error_handler()" \
668 "in debug.cpp.") \
654 \ 669 \
655 develop(bool, Verbose, false, \ 670 develop(bool, Verbose, false, \
656 "Prints additional debugging information from other modes") \ 671 "Prints additional debugging information from other modes") \
657 \ 672 \
658 develop(bool, PrintMiscellaneous, false, \ 673 develop(bool, PrintMiscellaneous, false, \
805 "Collect and print info on spacing of profiler ticks") \ 820 "Collect and print info on spacing of profiler ticks") \
806 \ 821 \
807 develop(bool, PrintJVMWarnings, false, \ 822 develop(bool, PrintJVMWarnings, false, \
808 "Prints warnings for unimplemented JVM functions") \ 823 "Prints warnings for unimplemented JVM functions") \
809 \ 824 \
825 product(bool, PrintWarnings, true, \
826 "Prints JVM warnings to output stream") \
827 \
810 notproduct(uintx, WarnOnStalledSpinLock, 0, \ 828 notproduct(uintx, WarnOnStalledSpinLock, 0, \
811 "Prints warnings for stalled SpinLocks") \ 829 "Prints warnings for stalled SpinLocks") \
812 \ 830 \
813 develop(bool, InitializeJavaLangSystem, true, \ 831 develop(bool, InitializeJavaLangSystem, true, \
814 "Initialize java.lang.System - turn off for individual " \ 832 "Initialize java.lang.System - turn off for individual " \
908 product(intx, EmitSync, 0, \ 926 product(intx, EmitSync, 0, \
909 "(Unsafe,Unstable) " \ 927 "(Unsafe,Unstable) " \
910 " Controls emission of inline sync fast-path code") \ 928 " Controls emission of inline sync fast-path code") \
911 \ 929 \
912 product(intx, AlwaysInflate, 0, "(Unstable) Force inflation") \ 930 product(intx, AlwaysInflate, 0, "(Unstable) Force inflation") \
931 \
932 product(intx, MonitorBound, 0, "Bound Monitor population") \
933 \
934 product(bool, MonitorInUseLists, false, "Track Monitors for Deflation") \
913 \ 935 \
914 product(intx, Atomics, 0, \ 936 product(intx, Atomics, 0, \
915 "(Unsafe,Unstable) Diagnostic - Controls emission of atomics") \ 937 "(Unsafe,Unstable) Diagnostic - Controls emission of atomics") \
916 \ 938 \
917 product(intx, FenceInstruction, 0, \ 939 product(intx, FenceInstruction, 0, \
1106 "Force ldc -> ldc_w rewrite during RedefineClasses") \ 1128 "Force ldc -> ldc_w rewrite during RedefineClasses") \
1107 \ 1129 \
1108 product(intx, TraceRedefineClasses, 0, \ 1130 product(intx, TraceRedefineClasses, 0, \
1109 "Trace level for JVMTI RedefineClasses") \ 1131 "Trace level for JVMTI RedefineClasses") \
1110 \ 1132 \
1133 develop(bool, StressMethodComparator, false, \
1134 "run the MethodComparator on all loaded methods") \
1135 \
1111 /* change to false by default sometime after Mustang */ \ 1136 /* change to false by default sometime after Mustang */ \
1112 product(bool, VerifyMergedCPBytecodes, true, \ 1137 product(bool, VerifyMergedCPBytecodes, true, \
1113 "Verify bytecodes after RedefineClasses constant pool merging") \ 1138 "Verify bytecodes after RedefineClasses constant pool merging") \
1114 \ 1139 \
1115 develop(bool, TraceJNIHandleAllocation, false, \ 1140 develop(bool, TraceJNIHandleAllocation, false, \
1292 product(bool, ExplicitGCInvokesConcurrentAndUnloadsClasses, false, \ 1317 product(bool, ExplicitGCInvokesConcurrentAndUnloadsClasses, false, \
1293 "A System.gc() request invokes a concurrent collection and " \ 1318 "A System.gc() request invokes a concurrent collection and " \
1294 "also unloads classes during such a concurrent gc cycle " \ 1319 "also unloads classes during such a concurrent gc cycle " \
1295 "(effective only when UseConcMarkSweepGC)") \ 1320 "(effective only when UseConcMarkSweepGC)") \
1296 \ 1321 \
1322 product(bool, GCLockerInvokesConcurrent, false, \
1323 "The exit of a JNI CS necessitating a scavenge also" \
1324 " kicks off a bkgrd concurrent collection") \
1325 \
1297 develop(bool, UseCMSAdaptiveFreeLists, true, \ 1326 develop(bool, UseCMSAdaptiveFreeLists, true, \
1298 "Use Adaptive Free Lists in the CMS generation") \ 1327 "Use Adaptive Free Lists in the CMS generation") \
1299 \ 1328 \
1300 develop(bool, UseAsyncConcMarkSweepGC, true, \ 1329 develop(bool, UseAsyncConcMarkSweepGC, true, \
1301 "Use Asynchronous Concurrent Mark-Sweep GC in the old generation")\ 1330 "Use Asynchronous Concurrent Mark-Sweep GC in the old generation")\
1516 \ 1545 \
1517 develop(intx, CMSDictionaryChoice, 0, \ 1546 develop(intx, CMSDictionaryChoice, 0, \
1518 "Use BinaryTreeDictionary as default in the CMS generation") \ 1547 "Use BinaryTreeDictionary as default in the CMS generation") \
1519 \ 1548 \
1520 product(uintx, CMSIndexedFreeListReplenish, 4, \ 1549 product(uintx, CMSIndexedFreeListReplenish, 4, \
1521 "Replenish and indexed free list with this number of chunks") \ 1550 "Replenish an indexed free list with this number of chunks") \
1522 \ 1551 \
1523 product(bool, CMSReplenishIntermediate, true, \ 1552 product(bool, CMSReplenishIntermediate, true, \
1524 "Replenish all intermediate free-list caches") \ 1553 "Replenish all intermediate free-list caches") \
1525 \ 1554 \
1526 product(bool, CMSSplitIndexedFreeListBlocks, true, \ 1555 product(bool, CMSSplitIndexedFreeListBlocks, true, \
1527 "When satisfying batched demand, splot blocks from the " \ 1556 "When satisfying batched demand, split blocks from the " \
1528 "IndexedFreeList whose size is a multiple of requested size") \ 1557 "IndexedFreeList whose size is a multiple of requested size") \
1529 \ 1558 \
1530 product(bool, CMSLoopWarn, false, \ 1559 product(bool, CMSLoopWarn, false, \
1531 "Warn in case of excessive CMS looping") \ 1560 "Warn in case of excessive CMS looping") \
1532 \ 1561 \
1557 \ 1586 \
1558 product(uintx, CMSAbortablePrecleanMinWorkPerIteration, 100, \ 1587 product(uintx, CMSAbortablePrecleanMinWorkPerIteration, 100, \
1559 "(Temporary, subject to experimentation)" \ 1588 "(Temporary, subject to experimentation)" \
1560 "Nominal minimum work per abortable preclean iteration") \ 1589 "Nominal minimum work per abortable preclean iteration") \
1561 \ 1590 \
1562 product(intx, CMSAbortablePrecleanWaitMillis, 100, \ 1591 manageable(intx, CMSAbortablePrecleanWaitMillis, 100, \
1563 "(Temporary, subject to experimentation)" \ 1592 "(Temporary, subject to experimentation)" \
1564 " Time that we sleep between iterations when not given" \ 1593 " Time that we sleep between iterations when not given" \
1565 " enough work per iteration") \ 1594 " enough work per iteration") \
1566 \ 1595 \
1567 product(uintx, CMSRescanMultiple, 32, \ 1596 product(uintx, CMSRescanMultiple, 32, \
1649 "Trace some actions of the CMS sweeper") \ 1678 "Trace some actions of the CMS sweeper") \
1650 \ 1679 \
1651 product(uintx, CMSWorkQueueDrainThreshold, 10, \ 1680 product(uintx, CMSWorkQueueDrainThreshold, 10, \
1652 "Don't drain below this size per parallel worker/thief") \ 1681 "Don't drain below this size per parallel worker/thief") \
1653 \ 1682 \
1654 product(intx, CMSWaitDuration, 2000, \ 1683 manageable(intx, CMSWaitDuration, 2000, \
1655 "Time in milliseconds that CMS thread waits for young GC") \ 1684 "Time in milliseconds that CMS thread waits for young GC") \
1656 \ 1685 \
1657 product(bool, CMSYield, true, \ 1686 product(bool, CMSYield, true, \
1658 "Yield between steps of concurrent mark & sweep") \ 1687 "Yield between steps of concurrent mark & sweep") \
1659 \ 1688 \
1687 "Do lots of (expensive) FLS dictionary verification") \ 1716 "Do lots of (expensive) FLS dictionary verification") \
1688 \ 1717 \
1689 develop(bool, VerifyBlockOffsetArray, false, \ 1718 develop(bool, VerifyBlockOffsetArray, false, \
1690 "Do (expensive!) block offset array verification") \ 1719 "Do (expensive!) block offset array verification") \
1691 \ 1720 \
1692 product(bool, BlockOffsetArrayUseUnallocatedBlock, trueInDebug, \ 1721 product(bool, BlockOffsetArrayUseUnallocatedBlock, false, \
1693 "Maintain _unallocated_block in BlockOffsetArray" \ 1722 "Maintain _unallocated_block in BlockOffsetArray" \
1694 " (currently applicable only to CMS collector)") \ 1723 " (currently applicable only to CMS collector)") \
1695 \ 1724 \
1696 develop(bool, TraceCMSState, false, \ 1725 develop(bool, TraceCMSState, false, \
1697 "Trace the state of the CMS collection") \ 1726 "Trace the state of the CMS collection") \
1758 "(N=FullGCALotInterval)") \ 1787 "(N=FullGCALotInterval)") \
1759 \ 1788 \
1760 notproduct(bool, GCALotAtAllSafepoints, false, \ 1789 notproduct(bool, GCALotAtAllSafepoints, false, \
1761 "Enforce ScavengeALot/GCALot at all potential safepoints") \ 1790 "Enforce ScavengeALot/GCALot at all potential safepoints") \
1762 \ 1791 \
1763 product(bool, HandlePromotionFailure, true, \
1764 "The youngest generation collection does not require " \
1765 "a guarantee of full promotion of all live objects.") \
1766 \
1767 product(bool, PrintPromotionFailure, false, \ 1792 product(bool, PrintPromotionFailure, false, \
1768 "Print additional diagnostic information following " \ 1793 "Print additional diagnostic information following " \
1769 " promotion failure") \ 1794 " promotion failure") \
1770 \ 1795 \
1771 notproduct(bool, PromotionFailureALot, false, \ 1796 notproduct(bool, PromotionFailureALot, false, \
1778 "(other young collectors) ") \ 1803 "(other young collectors) ") \
1779 \ 1804 \
1780 develop(uintx, PromotionFailureALotInterval, 5, \ 1805 develop(uintx, PromotionFailureALotInterval, 5, \
1781 "Total collections between promotion failures alot") \ 1806 "Total collections between promotion failures alot") \
1782 \ 1807 \
1783 develop(intx, WorkStealingSleepMillis, 1, \ 1808 experimental(intx, WorkStealingSleepMillis, 1, \
1784 "Sleep time when sleep is used for yields") \ 1809 "Sleep time when sleep is used for yields") \
1785 \ 1810 \
1786 develop(uintx, WorkStealingYieldsBeforeSleep, 1000, \ 1811 experimental(uintx, WorkStealingYieldsBeforeSleep, 1000, \
1787 "Number of yields before a sleep is done during workstealing") \ 1812 "Number of yields before a sleep is done during workstealing") \
1788 \ 1813 \
1789 develop(uintx, WorkStealingHardSpins, 4096, \ 1814 experimental(uintx, WorkStealingHardSpins, 4096, \
1790 "Number of iterations in a spin loop between checks on " \ 1815 "Number of iterations in a spin loop between checks on " \
1791 "time out of hard spin") \ 1816 "time out of hard spin") \
1792 \ 1817 \
1793 develop(uintx, WorkStealingSpinToYieldRatio, 10, \ 1818 experimental(uintx, WorkStealingSpinToYieldRatio, 10, \
1794 "Ratio of hard spins to calls to yield") \ 1819 "Ratio of hard spins to calls to yield") \
1795 \ 1820 \
1796 product(uintx, PreserveMarkStackSize, 1024, \ 1821 product(uintx, PreserveMarkStackSize, 1024, \
1797 "Size for stack used in promotion failure handling") \ 1822 "Size for stack used in promotion failure handling") \
1798 \ 1823 \
1946 "Supplement to TenuredGenerationSizeIncrement used at startup") \ 1971 "Supplement to TenuredGenerationSizeIncrement used at startup") \
1947 \ 1972 \
1948 product(uintx, TenuredGenerationSizeSupplementDecay, 2, \ 1973 product(uintx, TenuredGenerationSizeSupplementDecay, 2, \
1949 "Decay factor to TenuredGenerationSizeIncrement") \ 1974 "Decay factor to TenuredGenerationSizeIncrement") \
1950 \ 1975 \
1951 product(uintx, MaxGCPauseMillis, max_uintx, \ 1976 product(uintx, MaxGCPauseMillis, max_uintx, \
1952 "Adaptive size policy maximum GC pause time goal in msec, " \ 1977 "Adaptive size policy maximum GC pause time goal in msec, " \
1953 "or (G1 Only) the max. GC time per MMU time slice") \ 1978 "or (G1 Only) the max. GC time per MMU time slice") \
1954 \ 1979 \
1955 product(intx, GCPauseIntervalMillis, 500, \ 1980 product(uintx, GCPauseIntervalMillis, 0, \
1956 "Time slice for MMU specification") \ 1981 "Time slice for MMU specification") \
1957 \ 1982 \
1958 product(uintx, MaxGCMinorPauseMillis, max_uintx, \ 1983 product(uintx, MaxGCMinorPauseMillis, max_uintx, \
1959 "Adaptive size policy maximum GC minor pause time goal in msec") \ 1984 "Adaptive size policy maximum GC minor pause time goal in msec") \
1960 \ 1985 \
2341 "Use inexact types at allocations, etc., to test reflection") \ 2366 "Use inexact types at allocations, etc., to test reflection") \
2342 \ 2367 \
2343 develop(bool, EagerInitialization, false, \ 2368 develop(bool, EagerInitialization, false, \
2344 "Eagerly initialize classes if possible") \ 2369 "Eagerly initialize classes if possible") \
2345 \ 2370 \
2346 product(bool, Tier1UpdateMethodData, trueInTiered, \
2347 "Update methodDataOops in Tier1-generated code") \
2348 \
2349 develop(bool, TraceMethodReplacement, false, \ 2371 develop(bool, TraceMethodReplacement, false, \
2350 "Print when methods are replaced do to recompilation") \ 2372 "Print when methods are replaced do to recompilation") \
2351 \ 2373 \
2352 develop(bool, PrintMethodFlushing, false, \ 2374 develop(bool, PrintMethodFlushing, false, \
2353 "print the nmethods being flushed") \ 2375 "print the nmethods being flushed") \
2381 "Print all VM flags before argument processing and exit VM") \ 2403 "Print all VM flags before argument processing and exit VM") \
2382 \ 2404 \
2383 product(bool, PrintFlagsFinal, false, \ 2405 product(bool, PrintFlagsFinal, false, \
2384 "Print all VM flags after argument and ergonomic processing") \ 2406 "Print all VM flags after argument and ergonomic processing") \
2385 \ 2407 \
2408 notproduct(bool, PrintFlagsWithComments, false, \
2409 "Print all VM flags with default values and descriptions and exit")\
2410 \
2386 diagnostic(bool, SerializeVMOutput, true, \ 2411 diagnostic(bool, SerializeVMOutput, true, \
2387 "Use a mutex to serialize output to tty and hotspot.log") \ 2412 "Use a mutex to serialize output to tty and hotspot.log") \
2388 \ 2413 \
2389 diagnostic(bool, DisplayVMOutput, true, \ 2414 diagnostic(bool, DisplayVMOutput, true, \
2390 "Display all VM output on the tty, independently of LogVMOutput") \ 2415 "Display all VM output on the tty, independently of LogVMOutput") \
2417 \ 2442 \
2418 notproduct(ccstr, AbortVMOnException, NULL, \ 2443 notproduct(ccstr, AbortVMOnException, NULL, \
2419 "Call fatal if this exception is thrown. Example: " \ 2444 "Call fatal if this exception is thrown. Example: " \
2420 "java -XX:AbortVMOnException=java.lang.NullPointerException Foo") \ 2445 "java -XX:AbortVMOnException=java.lang.NullPointerException Foo") \
2421 \ 2446 \
2447 notproduct(ccstr, AbortVMOnExceptionMessage, NULL, \
2448 "Call fatal if the exception pointed by AbortVMOnException " \
2449 "has this message.") \
2450 \
2422 develop(bool, DebugVtables, false, \ 2451 develop(bool, DebugVtables, false, \
2423 "add debugging code to vtable dispatch") \ 2452 "add debugging code to vtable dispatch") \
2424 \ 2453 \
2425 develop(bool, PrintVtables, false, \ 2454 develop(bool, PrintVtables, false, \
2426 "print vtables when printing klass") \ 2455 "print vtables when printing klass") \
2446 develop(bool, TypeProfileCasts, true, \ 2475 develop(bool, TypeProfileCasts, true, \
2447 "treat casts like calls for purposes of type profiling") \ 2476 "treat casts like calls for purposes of type profiling") \
2448 \ 2477 \
2449 develop(bool, MonomorphicArrayCheck, true, \ 2478 develop(bool, MonomorphicArrayCheck, true, \
2450 "Uncommon-trap array store checks that require full type check") \ 2479 "Uncommon-trap array store checks that require full type check") \
2480 \
2481 diagnostic(bool, ProfileDynamicTypes, true, \
2482 "do extra type profiling and use it more aggressively") \
2451 \ 2483 \
2452 develop(bool, DelayCompilationDuringStartup, true, \ 2484 develop(bool, DelayCompilationDuringStartup, true, \
2453 "Delay invoking the compiler until main application class is " \ 2485 "Delay invoking the compiler until main application class is " \
2454 "loaded") \ 2486 "loaded") \
2455 \ 2487 \
2516 \ 2548 \
2517 product(bool, UseStringCache, false, \ 2549 product(bool, UseStringCache, false, \
2518 "Enable String cache capabilities on String.java") \ 2550 "Enable String cache capabilities on String.java") \
2519 \ 2551 \
2520 /* statistics */ \ 2552 /* statistics */ \
2521 develop(bool, UseVTune, false, \
2522 "enable support for Intel's VTune profiler") \
2523 \
2524 develop(bool, CountCompiledCalls, false, \ 2553 develop(bool, CountCompiledCalls, false, \
2525 "counts method invocations") \ 2554 "counts method invocations") \
2526 \ 2555 \
2527 notproduct(bool, CountRuntimeCalls, false, \ 2556 notproduct(bool, CountRuntimeCalls, false, \
2528 "counts VM runtime calls") \ 2557 "counts VM runtime calls") \
2749 "Delay in milliseconds for option SafepointTimeout") \ 2778 "Delay in milliseconds for option SafepointTimeout") \
2750 \ 2779 \
2751 product(intx, NmethodSweepFraction, 4, \ 2780 product(intx, NmethodSweepFraction, 4, \
2752 "Number of invocations of sweeper to cover all nmethods") \ 2781 "Number of invocations of sweeper to cover all nmethods") \
2753 \ 2782 \
2783 product(intx, NmethodSweepCheckInterval, 5, \
2784 "Compilers wake up every n seconds to possibly sweep nmethods") \
2785 \
2754 notproduct(intx, MemProfilingInterval, 500, \ 2786 notproduct(intx, MemProfilingInterval, 500, \
2755 "Time between each invocation of the MemProfiler") \ 2787 "Time between each invocation of the MemProfiler") \
2756 \ 2788 \
2757 develop(intx, MallocCatchPtr, -1, \ 2789 develop(intx, MallocCatchPtr, -1, \
2758 "Hit breakpoint when mallocing/freeing this pointer") \ 2790 "Hit breakpoint when mallocing/freeing this pointer") \
2866 \ 2898 \
2867 diagnostic(intx, MallocVerifyStart, 0, \ 2899 diagnostic(intx, MallocVerifyStart, 0, \
2868 "if non-zero, start verifying C heap after Nth call to " \ 2900 "if non-zero, start verifying C heap after Nth call to " \
2869 "malloc/realloc/free") \ 2901 "malloc/realloc/free") \
2870 \ 2902 \
2871 product(intx, TypeProfileWidth, 2, \ 2903 product(intx, TypeProfileWidth, 2, \
2872 "number of receiver types to record in call/cast profile") \ 2904 "number of receiver types to record in call/cast profile") \
2873 \ 2905 \
2874 develop(intx, BciProfileWidth, 2, \ 2906 develop(intx, BciProfileWidth, 2, \
2875 "number of return bci's to record in ret profile") \ 2907 "number of return bci's to record in ret profile") \
2876 \ 2908 \
2967 product(intx, SurvivorRatio, 8, \ 2999 product(intx, SurvivorRatio, 8, \
2968 "Ratio of eden/survivor space size") \ 3000 "Ratio of eden/survivor space size") \
2969 \ 3001 \
2970 product(intx, NewRatio, 2, \ 3002 product(intx, NewRatio, 2, \
2971 "Ratio of new/old generation sizes") \ 3003 "Ratio of new/old generation sizes") \
2972 \
2973 product(uintx, MaxLiveObjectEvacuationRatio, 100, \
2974 "Max percent of eden objects that will be live at scavenge") \
2975 \ 3004 \
2976 product_pd(uintx, NewSizeThreadIncrease, \ 3005 product_pd(uintx, NewSizeThreadIncrease, \
2977 "Additional size added to desired new generation size per " \ 3006 "Additional size added to desired new generation size per " \
2978 "non-daemon thread (in bytes)") \ 3007 "non-daemon thread (in bytes)") \
2979 \ 3008 \
3062 product(intx, DeferPollingPageLoopCount, -1, \ 3091 product(intx, DeferPollingPageLoopCount, -1, \
3063 "(Unsafe,Unstable) Number of iterations in safepoint loop " \ 3092 "(Unsafe,Unstable) Number of iterations in safepoint loop " \
3064 "before changing safepoint polling page to RO ") \ 3093 "before changing safepoint polling page to RO ") \
3065 \ 3094 \
3066 product(intx, SafepointSpinBeforeYield, 2000, "(Unstable)") \ 3095 product(intx, SafepointSpinBeforeYield, 2000, "(Unstable)") \
3067 \
3068 product(bool, UseDepthFirstScavengeOrder, true, \
3069 "true: the scavenge order will be depth-first, " \
3070 "false: the scavenge order will be breadth-first") \
3071 \ 3096 \
3072 product(bool, PSChunkLargeArrays, true, \ 3097 product(bool, PSChunkLargeArrays, true, \
3073 "true: process large arrays in chunks") \ 3098 "true: process large arrays in chunks") \
3074 \ 3099 \
3075 product(uintx, GCDrainStackTargetSize, 64, \ 3100 product(uintx, GCDrainStackTargetSize, 64, \
3278 "number of interpreted method invocations before (re-)compiling") \ 3303 "number of interpreted method invocations before (re-)compiling") \
3279 \ 3304 \
3280 product_pd(intx, BackEdgeThreshold, \ 3305 product_pd(intx, BackEdgeThreshold, \
3281 "Interpreter Back edge threshold at which an OSR compilation is invoked")\ 3306 "Interpreter Back edge threshold at which an OSR compilation is invoked")\
3282 \ 3307 \
3283 product(intx, Tier1BytecodeLimit, 10, \ 3308 product(intx, Tier0InvokeNotifyFreqLog, 7, \
3284 "Must have at least this many bytecodes before tier1" \ 3309 "Interpreter (tier 0) invocation notification frequency.") \
3285 "invocation counters are used") \ 3310 \
3286 \ 3311 product(intx, Tier2InvokeNotifyFreqLog, 11, \
3287 product_pd(intx, Tier2CompileThreshold, \ 3312 "C1 without MDO (tier 2) invocation notification frequency.") \
3288 "threshold at which a tier 2 compilation is invoked") \ 3313 \
3289 \ 3314 product(intx, Tier3InvokeNotifyFreqLog, 10, \
3290 product_pd(intx, Tier2BackEdgeThreshold, \ 3315 "C1 with MDO profiling (tier 3) invocation notification " \
3291 "Back edge threshold at which a tier 2 compilation is invoked") \ 3316 "frequency.") \
3292 \ 3317 \
3293 product_pd(intx, Tier3CompileThreshold, \ 3318 product(intx, Tier0BackedgeNotifyFreqLog, 10, \
3294 "threshold at which a tier 3 compilation is invoked") \ 3319 "Interpreter (tier 0) invocation notification frequency.") \
3295 \ 3320 \
3296 product_pd(intx, Tier3BackEdgeThreshold, \ 3321 product(intx, Tier2BackedgeNotifyFreqLog, 14, \
3297 "Back edge threshold at which a tier 3 compilation is invoked") \ 3322 "C1 without MDO (tier 2) invocation notification frequency.") \
3298 \ 3323 \
3299 product_pd(intx, Tier4CompileThreshold, \ 3324 product(intx, Tier3BackedgeNotifyFreqLog, 13, \
3300 "threshold at which a tier 4 compilation is invoked") \ 3325 "C1 with MDO profiling (tier 3) invocation notification " \
3301 \ 3326 "frequency.") \
3302 product_pd(intx, Tier4BackEdgeThreshold, \ 3327 \
3303 "Back edge threshold at which a tier 4 compilation is invoked") \ 3328 product(intx, Tier2CompileThreshold, 0, \
3329 "threshold at which tier 2 compilation is invoked") \
3330 \
3331 product(intx, Tier2BackEdgeThreshold, 0, \
3332 "Back edge threshold at which tier 2 compilation is invoked") \
3333 \
3334 product(intx, Tier3InvocationThreshold, 200, \
3335 "Compile if number of method invocations crosses this " \
3336 "threshold") \
3337 \
3338 product(intx, Tier3MinInvocationThreshold, 100, \
3339 "Minimum invocation to compile at tier 3") \
3340 \
3341 product(intx, Tier3CompileThreshold, 2000, \
3342 "Threshold at which tier 3 compilation is invoked (invocation " \
3343 "minimum must be satisfied.") \
3344 \
3345 product(intx, Tier3BackEdgeThreshold, 7000, \
3346 "Back edge threshold at which tier 3 OSR compilation is invoked") \
3347 \
3348 product(intx, Tier4InvocationThreshold, 5000, \
3349 "Compile if number of method invocations crosses this " \
3350 "threshold") \
3351 \
3352 product(intx, Tier4MinInvocationThreshold, 600, \
3353 "Minimum invocation to compile at tier 4") \
3354 \
3355 product(intx, Tier4CompileThreshold, 15000, \
3356 "Threshold at which tier 4 compilation is invoked (invocation " \
3357 "minimum must be satisfied.") \
3358 \
3359 product(intx, Tier4BackEdgeThreshold, 40000, \
3360 "Back edge threshold at which tier 4 OSR compilation is invoked") \
3361 \
3362 product(intx, Tier3DelayOn, 5, \
3363 "If C2 queue size grows over this amount per compiler thread " \
3364 "stop compiling at tier 3 and start compiling at tier 2") \
3365 \
3366 product(intx, Tier3DelayOff, 2, \
3367 "If C2 queue size is less than this amount per compiler thread " \
3368 "allow methods compiled at tier 2 transition to tier 3") \
3369 \
3370 product(intx, Tier3LoadFeedback, 5, \
3371 "Tier 3 thresholds will increase twofold when C1 queue size " \
3372 "reaches this amount per compiler thread") \
3373 \
3374 product(intx, Tier4LoadFeedback, 3, \
3375 "Tier 4 thresholds will increase twofold when C2 queue size " \
3376 "reaches this amount per compiler thread") \
3377 \
3378 product(intx, TieredCompileTaskTimeout, 50, \
3379 "Kill compile task if method was not used within " \
3380 "given timeout in milliseconds") \
3381 \
3382 product(intx, TieredStopAtLevel, 4, \
3383 "Stop at given compilation level") \
3384 \
3385 product(intx, Tier0ProfilingStartPercentage, 200, \
3386 "Start profiling in interpreter if the counters exceed tier 3" \
3387 "thresholds by the specified percentage") \
3388 \
3389 product(intx, TieredRateUpdateMinTime, 1, \
3390 "Minimum rate sampling interval (in milliseconds)") \
3391 \
3392 product(intx, TieredRateUpdateMaxTime, 25, \
3393 "Maximum rate sampling interval (in milliseconds)") \
3304 \ 3394 \
3305 product_pd(bool, TieredCompilation, \ 3395 product_pd(bool, TieredCompilation, \
3306 "Enable two-tier compilation") \ 3396 "Enable tiered compilation") \
3397 \
3398 product(bool, PrintTieredEvents, false, \
3399 "Print tiered events notifications") \
3307 \ 3400 \
3308 product(bool, StressTieredRuntime, false, \ 3401 product(bool, StressTieredRuntime, false, \
3309 "Alternate client and server compiler on compile requests") \ 3402 "Alternate client and server compiler on compile requests") \
3310 \ 3403 \
3311 product_pd(intx, OnStackReplacePercentage, \ 3404 product_pd(intx, OnStackReplacePercentage, \
3443 "Print usage of shared spaces") \ 3536 "Print usage of shared spaces") \
3444 \ 3537 \
3445 product(uintx, SharedDummyBlockSize, 512*M, \ 3538 product(uintx, SharedDummyBlockSize, 512*M, \
3446 "Size of dummy block used to shift heap addresses (in bytes)") \ 3539 "Size of dummy block used to shift heap addresses (in bytes)") \
3447 \ 3540 \
3448 product(uintx, SharedReadWriteSize, 12*M, \ 3541 product(uintx, SharedReadWriteSize, NOT_LP64(12*M) LP64_ONLY(13*M), \
3449 "Size of read-write space in permanent generation (in bytes)") \ 3542 "Size of read-write space in permanent generation (in bytes)") \
3450 \ 3543 \
3451 product(uintx, SharedReadOnlySize, 10*M, \ 3544 product(uintx, SharedReadOnlySize, 10*M, \
3452 "Size of read-only space in permanent generation (in bytes)") \ 3545 "Size of read-only space in permanent generation (in bytes)") \
3453 \ 3546 \
3492 "trust final non-static declarations for constant folding") \ 3585 "trust final non-static declarations for constant folding") \
3493 \ 3586 \
3494 experimental(bool, EnableInvokeDynamic, false, \ 3587 experimental(bool, EnableInvokeDynamic, false, \
3495 "recognize the invokedynamic instruction") \ 3588 "recognize the invokedynamic instruction") \
3496 \ 3589 \
3590 experimental(bool, AllowTransitionalJSR292, true, \
3591 "recognize pre-PFD formats of invokedynamic") \
3592 \
3497 develop(bool, TraceInvokeDynamic, false, \ 3593 develop(bool, TraceInvokeDynamic, false, \
3498 "trace internal invoke dynamic operations") \ 3594 "trace internal invoke dynamic operations") \
3499 \
3500 product(bool, TaggedStackInterpreter, false, \
3501 "Insert tags in interpreter execution stack for oopmap generaion")\
3502 \ 3595 \
3503 diagnostic(bool, PauseAtStartup, false, \ 3596 diagnostic(bool, PauseAtStartup, false, \
3504 "Causes the VM to pause at startup time and wait for the pause " \ 3597 "Causes the VM to pause at startup time and wait for the pause " \
3505 "file to be removed (default: ./vm.paused.<pid>)") \ 3598 "file to be removed (default: ./vm.paused.<pid>)") \
3506 \ 3599 \
3528 \ 3621 \
3529 product(bool, UseVMInterruptibleIO, false, \ 3622 product(bool, UseVMInterruptibleIO, false, \
3530 "(Unstable, Solaris-specific) Thread interrupt before or with " \ 3623 "(Unstable, Solaris-specific) Thread interrupt before or with " \
3531 "EINTR for I/O operations results in OS_INTRPT. The default value"\ 3624 "EINTR for I/O operations results in OS_INTRPT. The default value"\
3532 " of this flag is true for JDK 6 and earliers") 3625 " of this flag is true for JDK 6 and earliers")
3533
3534 3626
3535 /* 3627 /*
3536 * Macros for factoring of globals 3628 * Macros for factoring of globals
3537 */ 3629 */
3538 3630