Mercurial > hg > graal-compiler
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 |