392 "Delay in milliseconds for option AbortVMOnVMOperationTimeout") \
393 range(0, max_intx) \
394 \
395 /* 50 retries * (5 * current_retry_count) millis = ~6.375 seconds */ \
396 /* typically, at most a few retries are needed */ \
397 product(intx, SuspendRetryCount, 50, \
398 "Maximum retry count for an external suspend request") \
399 range(0, max_intx) \
400 \
401 product(intx, SuspendRetryDelay, 5, \
402 "Milliseconds to delay per retry (* current_retry_count)") \
403 range(0, max_intx) \
404 \
405 product(bool, AssertOnSuspendWaitFailure, false, \
406 "Assert/Guarantee on external suspend wait failure") \
407 \
408 product(bool, TraceSuspendWaitFailures, false, \
409 "Trace external suspend wait failures") \
410 \
411 product(bool, MaxFDLimit, true, \
412 "Bump the number of file descriptors to maximum in Solaris") \
413 \
414 diagnostic(bool, LogEvents, true, \
415 "Enable the various ring buffer event logs") \
416 \
417 diagnostic(uintx, LogEventsBufferEntries, 20, \
418 "Number of ring buffer event logs") \
419 range(1, NOT_LP64(1*K) LP64_ONLY(1*M)) \
420 \
421 diagnostic(bool, BytecodeVerificationRemote, true, \
422 "Enable the Java bytecode verifier for remote classes") \
423 \
424 diagnostic(bool, BytecodeVerificationLocal, false, \
425 "Enable the Java bytecode verifier for local classes") \
426 \
427 develop(bool, ForceFloatExceptions, trueInDebug, \
428 "Force exceptions on FP stack under/overflow") \
429 \
430 develop(bool, VerifyStackAtCalls, false, \
431 "Verify that the stack pointer is unchanged after calls") \
432 \
662 "Write memory usage profiling to log file") \
663 \
664 notproduct(bool, PrintSystemDictionaryAtExit, false, \
665 "Print the system dictionary at exit") \
666 \
667 diagnostic(bool, DynamicallyResizeSystemDictionaries, true, \
668 "Dynamically resize system dictionaries as needed") \
669 \
670 product(bool, AlwaysLockClassLoader, false, \
671 "Require the VM to acquire the class loader lock before calling " \
672 "loadClass() even for class loaders registering " \
673 "as parallel capable") \
674 \
675 product(bool, AllowParallelDefineClass, false, \
676 "Allow parallel defineClass requests for class loaders " \
677 "registering as parallel capable") \
678 \
679 product_pd(bool, DontYieldALot, \
680 "Throw away obvious excess yield calls") \
681 \
682 develop(bool, UseDetachedThreads, true, \
683 "Use detached threads that are recycled upon termination " \
684 "(for Solaris only)") \
685 \
686 experimental(bool, DisablePrimordialThreadGuardPages, false, \
687 "Disable the use of stack guard pages if the JVM is loaded " \
688 "on the primordial process thread") \
689 \
690 product(bool, UseLWPSynchronization, true, \
691 "Use LWP-based instead of libthread-based synchronization " \
692 "(SPARC only)") \
693 \
694 experimental(intx, MonitorUsedDeflationThreshold, 90, \
695 "Percentage of used monitors before triggering cleanup " \
696 "safepoint which deflates monitors (0 is off). " \
697 "The check is performed on GuaranteedSafepointInterval.") \
698 range(0, 100) \
699 \
700 experimental(intx, hashCode, 5, \
701 "(Unstable) select hashCode generation algorithm") \
702 \
703 product(bool, FilterSpuriousWakeups, true, \
704 "When true prevents OS-level spurious, or premature, wakeups " \
705 "from Object.wait (Ignored for Windows)") \
706 \
707 develop(bool, UsePthreads, false, \
708 "Use pthread-based instead of libthread-based synchronization " \
709 "(SPARC only)") \
710 \
711 product(bool, ReduceSignalUsage, false, \
712 "Reduce the use of OS signals in Java and/or the VM") \
713 \
714 develop(bool, LoadLineNumberTables, true, \
715 "Tell whether the class file parser loads line number tables") \
716 \
717 develop(bool, LoadLocalVariableTables, true, \
718 "Tell whether the class file parser loads local variable tables") \
719 \
720 develop(bool, LoadLocalVariableTypeTables, true, \
721 "Tell whether the class file parser loads local variable type" \
722 "tables") \
723 \
724 product(bool, AllowUserSignalHandlers, false, \
725 "Do not complain if the application installs signal handlers " \
726 "(Solaris & Linux only)") \
727 \
728 product(bool, UseSignalChaining, true, \
729 "Use signal-chaining to invoke signal handlers installed " \
730 "by the application (Solaris & Linux only)") \
731 \
732 product(bool, RestoreMXCSROnJNICalls, false, \
733 "Restore MXCSR when returning from JNI calls") \
734 \
735 product(bool, CheckJNICalls, false, \
736 "Verify all arguments to JNI calls") \
737 \
738 product(bool, UseFastJNIAccessors, true, \
739 "Use optimized versions of Get<Primitive>Field") \
740 \
741 product(intx, MaxJNILocalCapacity, 65536, \
742 "Maximum allowable local JNI handle capacity to " \
743 "EnsureLocalCapacity() and PushLocalFrame(), " \
744 "where <= 0 is unlimited, default: 65536") \
745 range(min_intx, max_intx) \
746 \
747 product(bool, EagerXrunInit, false, \
748 "Eagerly initialize -Xrun libraries; allows startup profiling, " \
749 "but not all -Xrun libraries may support the state of the VM " \
750 "at this time") \
1790 "Record replay data for crashing compiler threads") \
1791 \
1792 product(bool, CICompilerCountPerCPU, false, \
1793 "1 compiler thread for log(N CPUs)") \
1794 \
1795 notproduct(intx, CICrashAt, -1, \
1796 "id of compilation to trigger assert in compiler thread for " \
1797 "the purpose of testing, e.g. generation of replay data") \
1798 notproduct(bool, CIObjectFactoryVerify, false, \
1799 "enable potentially expensive verification in ciObjectFactory") \
1800 \
1801 diagnostic(bool, AbortVMOnCompilationFailure, false, \
1802 "Abort VM when method had failed to compile.") \
1803 \
1804 /* Priorities */ \
1805 product_pd(bool, UseThreadPriorities, "Use native thread priorities") \
1806 \
1807 product(intx, ThreadPriorityPolicy, 0, \
1808 "0 : Normal. "\
1809 " VM chooses priorities that are appropriate for normal "\
1810 " applications. On Solaris NORM_PRIORITY and above are mapped "\
1811 " to normal native priority. Java priorities below " \
1812 " NORM_PRIORITY map to lower native priority values. On "\
1813 " Windows applications are allowed to use higher native "\
1814 " priorities. However, with ThreadPriorityPolicy=0, VM will "\
1815 " not use the highest possible native priority, "\
1816 " THREAD_PRIORITY_TIME_CRITICAL, as it may interfere with "\
1817 " system threads. On Linux thread priorities are ignored "\
1818 " because the OS does not support static priority in "\
1819 " SCHED_OTHER scheduling class which is the only choice for "\
1820 " non-root, non-realtime applications. "\
1821 "1 : Aggressive. "\
1822 " Java thread priorities map over to the entire range of "\
1823 " native thread priorities. Higher Java thread priorities map "\
1824 " to higher native thread priorities. This policy should be "\
1825 " used with care, as sometimes it can cause performance "\
1826 " degradation in the application and/or the entire system. On "\
1827 " Linux/BSD/macOS this policy requires root privilege or an "\
1828 " extended capability.") \
1829 range(0, 1) \
1830 \
1831 product(bool, ThreadPriorityVerbose, false, \
1832 "Print priority changes") \
1833 \
1834 product(intx, CompilerThreadPriority, -1, \
1835 "The native priority at which compiler threads should run " \
1836 "(-1 means no change)") \
1837 range(min_jint, max_jint) \
1838 constraint(CompilerThreadPriorityConstraintFunc, AfterErgo) \
1839 \
1840 product(intx, VMThreadPriority, -1, \
1841 "The native priority at which the VM thread should run " \
1842 "(-1 means no change)") \
1843 range(-1, 127) \
1844 \
1845 product(intx, JavaPriority1_To_OSPriority, -1, \
1846 "Map Java priorities to OS priorities") \
1847 range(-1, 127) \
1848 \
1849 product(intx, JavaPriority2_To_OSPriority, -1, \
1850 "Map Java priorities to OS priorities") \
1851 range(-1, 127) \
1852 \
1853 product(intx, JavaPriority3_To_OSPriority, -1, \
1854 "Map Java priorities to OS priorities") \
1855 range(-1, 127) \
1856 \
1857 product(intx, JavaPriority4_To_OSPriority, -1, \
1858 "Map Java priorities to OS priorities") \
2356 product(ccstr, SharedClassListFile, NULL, \
2357 "Override the default CDS class list") \
2358 \
2359 product(ccstr, SharedArchiveFile, NULL, \
2360 "Override the default location of the CDS archive file") \
2361 \
2362 product(ccstr, ArchiveClassesAtExit, NULL, \
2363 "The path and name of the dynamic archive file") \
2364 \
2365 product(ccstr, ExtraSharedClassListFile, NULL, \
2366 "Extra classlist for building the CDS archive file") \
2367 \
2368 diagnostic(intx, ArchiveRelocationMode, 0, \
2369 "(0) first map at preferred address, and if " \
2370 "unsuccessful, map at alternative address (default); " \
2371 "(1) always map at alternative address; " \
2372 "(2) always map at preferred address, and if unsuccessful, " \
2373 "do not map the archive") \
2374 range(0, 2) \
2375 \
2376 experimental(size_t, ArrayAllocatorMallocLimit, \
2377 SOLARIS_ONLY(64*K) NOT_SOLARIS((size_t)-1), \
2378 "Allocation less than this value will be allocated " \
2379 "using malloc. Larger allocations will use mmap.") \
2380 \
2381 experimental(bool, AlwaysAtomicAccesses, false, \
2382 "Accesses to all variables should always be atomic") \
2383 \
2384 diagnostic(bool, UseUnalignedAccesses, false, \
2385 "Use unaligned memory accesses in Unsafe") \
2386 \
2387 product_pd(bool, PreserveFramePointer, \
2388 "Use the FP register for holding the frame pointer " \
2389 "and not as a general purpose register.") \
2390 \
2391 diagnostic(bool, CheckIntrinsics, true, \
2392 "When a class C is loaded, check that " \
2393 "(1) all intrinsics defined by the VM for class C are present "\
2394 "in the loaded class file and are marked with the " \
2395 "@HotSpotIntrinsicCandidate annotation, that " \
2396 "(2) there is an intrinsic registered for all loaded methods " \
2397 "that are annotated with the @HotSpotIntrinsicCandidate " \
|
392 "Delay in milliseconds for option AbortVMOnVMOperationTimeout") \
393 range(0, max_intx) \
394 \
395 /* 50 retries * (5 * current_retry_count) millis = ~6.375 seconds */ \
396 /* typically, at most a few retries are needed */ \
397 product(intx, SuspendRetryCount, 50, \
398 "Maximum retry count for an external suspend request") \
399 range(0, max_intx) \
400 \
401 product(intx, SuspendRetryDelay, 5, \
402 "Milliseconds to delay per retry (* current_retry_count)") \
403 range(0, max_intx) \
404 \
405 product(bool, AssertOnSuspendWaitFailure, false, \
406 "Assert/Guarantee on external suspend wait failure") \
407 \
408 product(bool, TraceSuspendWaitFailures, false, \
409 "Trace external suspend wait failures") \
410 \
411 product(bool, MaxFDLimit, true, \
412 "Bump the number of file descriptors to maximum (Unix only)") \
413 \
414 diagnostic(bool, LogEvents, true, \
415 "Enable the various ring buffer event logs") \
416 \
417 diagnostic(uintx, LogEventsBufferEntries, 20, \
418 "Number of ring buffer event logs") \
419 range(1, NOT_LP64(1*K) LP64_ONLY(1*M)) \
420 \
421 diagnostic(bool, BytecodeVerificationRemote, true, \
422 "Enable the Java bytecode verifier for remote classes") \
423 \
424 diagnostic(bool, BytecodeVerificationLocal, false, \
425 "Enable the Java bytecode verifier for local classes") \
426 \
427 develop(bool, ForceFloatExceptions, trueInDebug, \
428 "Force exceptions on FP stack under/overflow") \
429 \
430 develop(bool, VerifyStackAtCalls, false, \
431 "Verify that the stack pointer is unchanged after calls") \
432 \
662 "Write memory usage profiling to log file") \
663 \
664 notproduct(bool, PrintSystemDictionaryAtExit, false, \
665 "Print the system dictionary at exit") \
666 \
667 diagnostic(bool, DynamicallyResizeSystemDictionaries, true, \
668 "Dynamically resize system dictionaries as needed") \
669 \
670 product(bool, AlwaysLockClassLoader, false, \
671 "Require the VM to acquire the class loader lock before calling " \
672 "loadClass() even for class loaders registering " \
673 "as parallel capable") \
674 \
675 product(bool, AllowParallelDefineClass, false, \
676 "Allow parallel defineClass requests for class loaders " \
677 "registering as parallel capable") \
678 \
679 product_pd(bool, DontYieldALot, \
680 "Throw away obvious excess yield calls") \
681 \
682 experimental(bool, DisablePrimordialThreadGuardPages, false, \
683 "Disable the use of stack guard pages if the JVM is loaded " \
684 "on the primordial process thread") \
685 \
686 product(bool, UseLWPSynchronization, true, \
687 "Use LWP-based instead of libthread-based synchronization " \
688 "(SPARC only)") \
689 \
690 experimental(intx, MonitorUsedDeflationThreshold, 90, \
691 "Percentage of used monitors before triggering cleanup " \
692 "safepoint which deflates monitors (0 is off). " \
693 "The check is performed on GuaranteedSafepointInterval.") \
694 range(0, 100) \
695 \
696 experimental(intx, hashCode, 5, \
697 "(Unstable) select hashCode generation algorithm") \
698 \
699 product(bool, FilterSpuriousWakeups, true, \
700 "When true prevents OS-level spurious, or premature, wakeups " \
701 "from Object.wait (Ignored for Windows)") \
702 \
703 product(bool, ReduceSignalUsage, false, \
704 "Reduce the use of OS signals in Java and/or the VM") \
705 \
706 develop(bool, LoadLineNumberTables, true, \
707 "Tell whether the class file parser loads line number tables") \
708 \
709 develop(bool, LoadLocalVariableTables, true, \
710 "Tell whether the class file parser loads local variable tables") \
711 \
712 develop(bool, LoadLocalVariableTypeTables, true, \
713 "Tell whether the class file parser loads local variable type" \
714 "tables") \
715 \
716 product(bool, AllowUserSignalHandlers, false, \
717 "Do not complain if the application installs signal handlers " \
718 "(Unix only)") \
719 \
720 product(bool, UseSignalChaining, true, \
721 "Use signal-chaining to invoke signal handlers installed " \
722 "by the application (Unix only)") \
723 \
724 product(bool, RestoreMXCSROnJNICalls, false, \
725 "Restore MXCSR when returning from JNI calls") \
726 \
727 product(bool, CheckJNICalls, false, \
728 "Verify all arguments to JNI calls") \
729 \
730 product(bool, UseFastJNIAccessors, true, \
731 "Use optimized versions of Get<Primitive>Field") \
732 \
733 product(intx, MaxJNILocalCapacity, 65536, \
734 "Maximum allowable local JNI handle capacity to " \
735 "EnsureLocalCapacity() and PushLocalFrame(), " \
736 "where <= 0 is unlimited, default: 65536") \
737 range(min_intx, max_intx) \
738 \
739 product(bool, EagerXrunInit, false, \
740 "Eagerly initialize -Xrun libraries; allows startup profiling, " \
741 "but not all -Xrun libraries may support the state of the VM " \
742 "at this time") \
1782 "Record replay data for crashing compiler threads") \
1783 \
1784 product(bool, CICompilerCountPerCPU, false, \
1785 "1 compiler thread for log(N CPUs)") \
1786 \
1787 notproduct(intx, CICrashAt, -1, \
1788 "id of compilation to trigger assert in compiler thread for " \
1789 "the purpose of testing, e.g. generation of replay data") \
1790 notproduct(bool, CIObjectFactoryVerify, false, \
1791 "enable potentially expensive verification in ciObjectFactory") \
1792 \
1793 diagnostic(bool, AbortVMOnCompilationFailure, false, \
1794 "Abort VM when method had failed to compile.") \
1795 \
1796 /* Priorities */ \
1797 product_pd(bool, UseThreadPriorities, "Use native thread priorities") \
1798 \
1799 product(intx, ThreadPriorityPolicy, 0, \
1800 "0 : Normal. "\
1801 " VM chooses priorities that are appropriate for normal "\
1802 " applications. "\
1803 " On Windows applications are allowed to use higher native "\
1804 " priorities. However, with ThreadPriorityPolicy=0, VM will "\
1805 " not use the highest possible native priority, "\
1806 " THREAD_PRIORITY_TIME_CRITICAL, as it may interfere with "\
1807 " system threads. On Linux thread priorities are ignored "\
1808 " because the OS does not support static priority in "\
1809 " SCHED_OTHER scheduling class which is the only choice for "\
1810 " non-root, non-realtime applications. "\
1811 "1 : Aggressive. "\
1812 " Java thread priorities map over to the entire range of "\
1813 " native thread priorities. Higher Java thread priorities map "\
1814 " to higher native thread priorities. This policy should be "\
1815 " used with care, as sometimes it can cause performance "\
1816 " degradation in the application and/or the entire system. On "\
1817 " Linux/BSD/macOS this policy requires root privilege or an "\
1818 " extended capability.") \
1819 range(0, 1) \
1820 \
1821 product(bool, ThreadPriorityVerbose, false, \
1822 "Print priority changes") \
1823 \
1824 product(intx, CompilerThreadPriority, -1, \
1825 "The native priority at which compiler threads should run " \
1826 "(-1 means no change)") \
1827 range(min_jint, max_jint) \
1828 \
1829 product(intx, VMThreadPriority, -1, \
1830 "The native priority at which the VM thread should run " \
1831 "(-1 means no change)") \
1832 range(-1, 127) \
1833 \
1834 product(intx, JavaPriority1_To_OSPriority, -1, \
1835 "Map Java priorities to OS priorities") \
1836 range(-1, 127) \
1837 \
1838 product(intx, JavaPriority2_To_OSPriority, -1, \
1839 "Map Java priorities to OS priorities") \
1840 range(-1, 127) \
1841 \
1842 product(intx, JavaPriority3_To_OSPriority, -1, \
1843 "Map Java priorities to OS priorities") \
1844 range(-1, 127) \
1845 \
1846 product(intx, JavaPriority4_To_OSPriority, -1, \
1847 "Map Java priorities to OS priorities") \
2345 product(ccstr, SharedClassListFile, NULL, \
2346 "Override the default CDS class list") \
2347 \
2348 product(ccstr, SharedArchiveFile, NULL, \
2349 "Override the default location of the CDS archive file") \
2350 \
2351 product(ccstr, ArchiveClassesAtExit, NULL, \
2352 "The path and name of the dynamic archive file") \
2353 \
2354 product(ccstr, ExtraSharedClassListFile, NULL, \
2355 "Extra classlist for building the CDS archive file") \
2356 \
2357 diagnostic(intx, ArchiveRelocationMode, 0, \
2358 "(0) first map at preferred address, and if " \
2359 "unsuccessful, map at alternative address (default); " \
2360 "(1) always map at alternative address; " \
2361 "(2) always map at preferred address, and if unsuccessful, " \
2362 "do not map the archive") \
2363 range(0, 2) \
2364 \
2365 experimental(size_t, ArrayAllocatorMallocLimit, (size_t)-1, \
2366 "Allocation less than this value will be allocated " \
2367 "using malloc. Larger allocations will use mmap.") \
2368 \
2369 experimental(bool, AlwaysAtomicAccesses, false, \
2370 "Accesses to all variables should always be atomic") \
2371 \
2372 diagnostic(bool, UseUnalignedAccesses, false, \
2373 "Use unaligned memory accesses in Unsafe") \
2374 \
2375 product_pd(bool, PreserveFramePointer, \
2376 "Use the FP register for holding the frame pointer " \
2377 "and not as a general purpose register.") \
2378 \
2379 diagnostic(bool, CheckIntrinsics, true, \
2380 "When a class C is loaded, check that " \
2381 "(1) all intrinsics defined by the VM for class C are present "\
2382 "in the loaded class file and are marked with the " \
2383 "@HotSpotIntrinsicCandidate annotation, that " \
2384 "(2) there is an intrinsic registered for all loaded methods " \
2385 "that are annotated with the @HotSpotIntrinsicCandidate " \
|