748 range(min_intx, max_intx) \
749 \
750 product(bool, EagerXrunInit, false, \
751 "Eagerly initialize -Xrun libraries; allows startup profiling, " \
752 "but not all -Xrun libraries may support the state of the VM " \
753 "at this time") \
754 \
755 product(bool, PreserveAllAnnotations, false, \
756 "Preserve RuntimeInvisibleAnnotations as well " \
757 "as RuntimeVisibleAnnotations") \
758 \
759 develop(uintx, PreallocatedOutOfMemoryErrorCount, 4, \
760 "Number of OutOfMemoryErrors preallocated with backtrace") \
761 \
762 product(bool, UseXMMForArrayCopy, false, \
763 "Use SSE2 MOVQ instruction for Arraycopy") \
764 \
765 notproduct(bool, PrintFieldLayout, false, \
766 "Print field layout for each class") \
767 \
768 /* Need to limit the extent of the padding to reasonable size. */\
769 /* 8K is well beyond the reasonable HW cache line size, even with */\
770 /* aggressive prefetching, while still leaving the room for segregating */\
771 /* among the distinct pages. */\
772 product(intx, ContendedPaddingWidth, 128, \
773 "How many bytes to pad the fields/classes marked @Contended with")\
774 range(0, 8192) \
775 constraint(ContendedPaddingWidthConstraintFunc,AfterErgo) \
776 \
777 product(bool, EnableContended, true, \
778 "Enable @Contended annotation support") \
779 \
780 product(bool, RestrictContended, true, \
781 "Restrict @Contended to trusted classes") \
782 \
783 product(bool, UseBiasedLocking, false, \
784 "(Deprecated) Enable biased locking in JVM") \
785 \
786 product(intx, BiasedLockingStartupDelay, 0, \
787 "(Deprecated) Number of milliseconds to wait before enabling " \
788 "biased locking") \
789 range(0, (intx)(max_jint-(max_jint%PeriodicTask::interval_gran))) \
790 constraint(BiasedLockingStartupDelayFunc,AfterErgo) \
791 \
792 diagnostic(bool, PrintBiasedLockingStatistics, false, \
793 "(Deprecated) Print statistics of biased locking in JVM") \
794 \
795 product(intx, BiasedLockingBulkRebiasThreshold, 20, \
796 "(Deprecated) Threshold of number of revocations per type to " \
797 "try to rebias all objects in the heap of that type") \
798 range(0, max_intx) \
799 constraint(BiasedLockingBulkRebiasThresholdFunc,AfterErgo) \
800 \
801 product(intx, BiasedLockingBulkRevokeThreshold, 40, \
802 "(Deprecated) Threshold of number of revocations per type to " \
803 "permanently revoke biases of all objects in the heap of that " \
2438 "On internal errors, include registers in error report.") \
2439 \
2440 diagnostic(bool, UseSwitchProfiling, true, \
2441 "leverage profiling for table/lookup switch") \
2442 \
2443 develop(bool, TraceMemoryWriteback, false, \
2444 "Trace memory writeback operations") \
2445 \
2446 JFR_ONLY(product(bool, FlightRecorder, false, \
2447 "(Deprecated) Enable Flight Recorder")) \
2448 \
2449 JFR_ONLY(product(ccstr, FlightRecorderOptions, NULL, \
2450 "Flight Recorder options")) \
2451 \
2452 JFR_ONLY(product(ccstr, StartFlightRecording, NULL, \
2453 "Start flight recording with options")) \
2454 \
2455 experimental(bool, UseFastUnorderedTimeStamps, false, \
2456 "Use platform unstable time where supported for timestamps only") \
2457 \
2458 product(bool, UseNewFieldLayout, true, \
2459 "(Deprecated) Use new algorithm to compute field layouts") \
2460 \
2461 product(bool, UseEmptySlotsInSupers, true, \
2462 "Allow allocating fields in empty slots of super-classes") \
2463 \
2464 diagnostic(bool, DeoptimizeNMethodBarriersALot, false, \
2465 "Make nmethod barriers deoptimise a lot.") \
2466
2467 // Interface macros
2468 #define DECLARE_PRODUCT_FLAG(type, name, value, doc) extern "C" type name;
2469 #define DECLARE_PD_PRODUCT_FLAG(type, name, doc) extern "C" type name;
2470 #define DECLARE_DIAGNOSTIC_FLAG(type, name, value, doc) extern "C" type name;
2471 #define DECLARE_PD_DIAGNOSTIC_FLAG(type, name, doc) extern "C" type name;
2472 #define DECLARE_EXPERIMENTAL_FLAG(type, name, value, doc) extern "C" type name;
2473 #define DECLARE_MANAGEABLE_FLAG(type, name, value, doc) extern "C" type name;
2474 #define DECLARE_PRODUCT_RW_FLAG(type, name, value, doc) extern "C" type name;
2475 #ifdef PRODUCT
2476 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc) const type name = value;
2477 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc) const type name = pd_##name;
2478 #define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc) const type name = value;
2479 #else
2480 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc) extern "C" type name;
2481 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc) extern "C" type name;
2482 #define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc) extern "C" type name;
2483 #endif // PRODUCT
2484 // Special LP64 flags, product only needed for now.
2485 #ifdef _LP64
2486 #define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) extern "C" type name;
|
748 range(min_intx, max_intx) \
749 \
750 product(bool, EagerXrunInit, false, \
751 "Eagerly initialize -Xrun libraries; allows startup profiling, " \
752 "but not all -Xrun libraries may support the state of the VM " \
753 "at this time") \
754 \
755 product(bool, PreserveAllAnnotations, false, \
756 "Preserve RuntimeInvisibleAnnotations as well " \
757 "as RuntimeVisibleAnnotations") \
758 \
759 develop(uintx, PreallocatedOutOfMemoryErrorCount, 4, \
760 "Number of OutOfMemoryErrors preallocated with backtrace") \
761 \
762 product(bool, UseXMMForArrayCopy, false, \
763 "Use SSE2 MOVQ instruction for Arraycopy") \
764 \
765 notproduct(bool, PrintFieldLayout, false, \
766 "Print field layout for each class") \
767 \
768 notproduct(bool, PrintInlineLayout, false, \
769 "Print field layout for each inline type") \
770 \
771 notproduct(bool, PrintFlatArrayLayout, false, \
772 "Print array layout for each inline type array") \
773 \
774 product(intx, FlatArrayElementMaxSize, -1, \
775 "Max size for flattening inline array elements, <0 no limit") \
776 \
777 product(intx, InlineFieldMaxFlatSize, 128, \
778 "Max size for flattening inline type fields, <0 no limit") \
779 \
780 product(intx, FlatArrayElementMaxOops, 4, \
781 "Max nof embedded object references in an inline type to flatten, <0 no limit") \
782 \
783 product(bool, InlineArrayAtomicAccess, false, \
784 "Atomic inline array accesses by-default, for all inline arrays") \
785 \
786 /* Need to limit the extent of the padding to reasonable size. */\
787 /* 8K is well beyond the reasonable HW cache line size, even with */\
788 /* aggressive prefetching, while still leaving the room for segregating */\
789 /* among the distinct pages. */\
790 product(intx, ContendedPaddingWidth, 128, \
791 "How many bytes to pad the fields/classes marked @Contended with")\
792 range(0, 8192) \
793 constraint(ContendedPaddingWidthConstraintFunc,AfterErgo) \
794 \
795 product(bool, EnableContended, true, \
796 "Enable @Contended annotation support") \
797 \
798 product(bool, RestrictContended, true, \
799 "Restrict @Contended to trusted classes") \
800 \
801 product(bool, UseBiasedLocking, true, \
802 "(Deprecated) Enable biased locking in JVM") \
803 \
804 product(intx, BiasedLockingStartupDelay, 0, \
805 "(Deprecated) Number of milliseconds to wait before enabling " \
806 "biased locking") \
807 range(0, (intx)(max_jint-(max_jint%PeriodicTask::interval_gran))) \
808 constraint(BiasedLockingStartupDelayFunc,AfterErgo) \
809 \
810 diagnostic(bool, PrintBiasedLockingStatistics, false, \
811 "(Deprecated) Print statistics of biased locking in JVM") \
812 \
813 product(intx, BiasedLockingBulkRebiasThreshold, 20, \
814 "(Deprecated) Threshold of number of revocations per type to " \
815 "try to rebias all objects in the heap of that type") \
816 range(0, max_intx) \
817 constraint(BiasedLockingBulkRebiasThresholdFunc,AfterErgo) \
818 \
819 product(intx, BiasedLockingBulkRevokeThreshold, 40, \
820 "(Deprecated) Threshold of number of revocations per type to " \
821 "permanently revoke biases of all objects in the heap of that " \
2456 "On internal errors, include registers in error report.") \
2457 \
2458 diagnostic(bool, UseSwitchProfiling, true, \
2459 "leverage profiling for table/lookup switch") \
2460 \
2461 develop(bool, TraceMemoryWriteback, false, \
2462 "Trace memory writeback operations") \
2463 \
2464 JFR_ONLY(product(bool, FlightRecorder, false, \
2465 "(Deprecated) Enable Flight Recorder")) \
2466 \
2467 JFR_ONLY(product(ccstr, FlightRecorderOptions, NULL, \
2468 "Flight Recorder options")) \
2469 \
2470 JFR_ONLY(product(ccstr, StartFlightRecording, NULL, \
2471 "Start flight recording with options")) \
2472 \
2473 experimental(bool, UseFastUnorderedTimeStamps, false, \
2474 "Use platform unstable time where supported for timestamps only") \
2475 \
2476 product(bool, EnableValhalla, true, \
2477 "Enable experimental Valhalla features") \
2478 \
2479 product_pd(bool, InlineTypePassFieldsAsArgs, \
2480 "Pass each inline type field as an argument at calls") \
2481 \
2482 product_pd(bool, InlineTypeReturnedAsFields, \
2483 "Return fields instead of an inline type reference") \
2484 \
2485 develop(bool, StressInlineTypeReturnedAsFields, false, \
2486 "Stress return of fields instead of an inline type reference") \
2487 \
2488 develop(bool, ScalarizeInlineTypes, true, \
2489 "Scalarize inline types in compiled code") \
2490 \
2491 diagnostic(ccstrlist, ForceNonTearable, "", \
2492 "List of inline classes which are forced to be atomic " \
2493 "(whitespace and commas separate names, " \
2494 "and leading and trailing stars '*' are wildcards)") \
2495 \
2496 product(bool, UseNewFieldLayout, true, \
2497 "(Deprecated) Use new algorithm to compute field layouts") \
2498 \
2499 product(bool, UseEmptySlotsInSupers, true, \
2500 "Allow allocating fields in empty slots of super-classes") \
2501 \
2502 diagnostic(bool, DeoptimizeNMethodBarriersALot, false, \
2503 "Make nmethod barriers deoptimise a lot.") \
2504
2505
2506 // Interface macros
2507 #define DECLARE_PRODUCT_FLAG(type, name, value, doc) extern "C" type name;
2508 #define DECLARE_PD_PRODUCT_FLAG(type, name, doc) extern "C" type name;
2509 #define DECLARE_DIAGNOSTIC_FLAG(type, name, value, doc) extern "C" type name;
2510 #define DECLARE_PD_DIAGNOSTIC_FLAG(type, name, doc) extern "C" type name;
2511 #define DECLARE_EXPERIMENTAL_FLAG(type, name, value, doc) extern "C" type name;
2512 #define DECLARE_MANAGEABLE_FLAG(type, name, value, doc) extern "C" type name;
2513 #define DECLARE_PRODUCT_RW_FLAG(type, name, value, doc) extern "C" type name;
2514 #ifdef PRODUCT
2515 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc) const type name = value;
2516 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc) const type name = pd_##name;
2517 #define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc) const type name = value;
2518 #else
2519 #define DECLARE_DEVELOPER_FLAG(type, name, value, doc) extern "C" type name;
2520 #define DECLARE_PD_DEVELOPER_FLAG(type, name, doc) extern "C" type name;
2521 #define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc) extern "C" type name;
2522 #endif // PRODUCT
2523 // Special LP64 flags, product only needed for now.
2524 #ifdef _LP64
2525 #define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) extern "C" type name;
|