891 "as RuntimeVisibleAnnotations") \
892 \
893 develop(uintx, PreallocatedOutOfMemoryErrorCount, 4, \
894 "Number of OutOfMemoryErrors preallocated with backtrace") \
895 \
896 product(bool, UseXMMForArrayCopy, false, \
897 "Use SSE2 MOVQ instruction for Arraycopy") \
898 \
899 product(intx, FieldsAllocationStyle, 1, \
900 "0 - type based with oops first, " \
901 "1 - with oops last, " \
902 "2 - oops in super and sub classes are together") \
903 range(0, 2) \
904 \
905 product(bool, CompactFields, true, \
906 "Allocate nonstatic fields in gaps between previous fields") \
907 \
908 notproduct(bool, PrintFieldLayout, false, \
909 "Print field layout for each class") \
910 \
911 /* Need to limit the extent of the padding to reasonable size. */\
912 /* 8K is well beyond the reasonable HW cache line size, even with */\
913 /* aggressive prefetching, while still leaving the room for segregating */\
914 /* among the distinct pages. */\
915 product(intx, ContendedPaddingWidth, 128, \
916 "How many bytes to pad the fields/classes marked @Contended with")\
917 range(0, 8192) \
918 constraint(ContendedPaddingWidthConstraintFunc,AfterErgo) \
919 \
920 product(bool, EnableContended, true, \
921 "Enable @Contended annotation support") \
922 \
923 product(bool, RestrictContended, true, \
924 "Restrict @Contended to trusted classes") \
925 \
926 product(bool, UseBiasedLocking, true, \
927 "Enable biased locking in JVM") \
928 \
929 product(intx, BiasedLockingStartupDelay, 0, \
930 "Number of milliseconds to wait before enabling biased locking") \
2527 \
2528 develop(bool, VerifyMetaspace, false, \
2529 "Verify metaspace on chunk movements.") \
2530 \
2531 diagnostic(bool, ShowRegistersOnAssert, true, \
2532 "On internal errors, include registers in error report.") \
2533 \
2534 experimental(bool, UseSwitchProfiling, true, \
2535 "leverage profiling for table/lookup switch") \
2536 \
2537 JFR_ONLY(product(bool, FlightRecorder, false, \
2538 "Enable Flight Recorder")) \
2539 \
2540 JFR_ONLY(product(ccstr, FlightRecorderOptions, NULL, \
2541 "Flight Recorder options")) \
2542 \
2543 JFR_ONLY(product(ccstr, StartFlightRecording, NULL, \
2544 "Start flight recording with options")) \
2545 \
2546 experimental(bool, UseFastUnorderedTimeStamps, false, \
2547 "Use platform unstable time where supported for timestamps only")
2548
2549 #define VM_FLAGS(develop, \
2550 develop_pd, \
2551 product, \
2552 product_pd, \
2553 diagnostic, \
2554 diagnostic_pd, \
2555 experimental, \
2556 notproduct, \
2557 manageable, \
2558 product_rw, \
2559 lp64_product, \
2560 range, \
2561 constraint, \
2562 writeable) \
2563 \
2564 RUNTIME_FLAGS( \
2565 develop, \
2566 develop_pd, \
2567 product, \
|
891 "as RuntimeVisibleAnnotations") \
892 \
893 develop(uintx, PreallocatedOutOfMemoryErrorCount, 4, \
894 "Number of OutOfMemoryErrors preallocated with backtrace") \
895 \
896 product(bool, UseXMMForArrayCopy, false, \
897 "Use SSE2 MOVQ instruction for Arraycopy") \
898 \
899 product(intx, FieldsAllocationStyle, 1, \
900 "0 - type based with oops first, " \
901 "1 - with oops last, " \
902 "2 - oops in super and sub classes are together") \
903 range(0, 2) \
904 \
905 product(bool, CompactFields, true, \
906 "Allocate nonstatic fields in gaps between previous fields") \
907 \
908 notproduct(bool, PrintFieldLayout, false, \
909 "Print field layout for each class") \
910 \
911 notproduct(bool, PrintValueLayout, false, \
912 "Print field layout for each value type") \
913 \
914 notproduct(bool, PrintValueArrayLayout, false, \
915 "Print array layout for each value type array") \
916 \
917 product(bool, ValueArrayFlatten, true, \
918 "Flatten value array elements, if possible") \
919 \
920 product(intx, ValueArrayElemMaxFlatSize, -1, \
921 "Max size for flattening value array elements, <0 no limit") \
922 \
923 product(intx, ValueFieldMaxFlatSize, 128, \
924 "Max size for flattening value type fields, <0 no limit") \
925 \
926 product(intx, ValueArrayElemMaxFlatOops, 4, \
927 "Max nof embedded object references in a value type to flatten, <0 no limit") \
928 \
929 product(bool, ValueArrayAtomicAccess, false, \
930 "Atomic value array accesses by-default, for all value arrays") \
931 \
932 /* Need to limit the extent of the padding to reasonable size. */\
933 /* 8K is well beyond the reasonable HW cache line size, even with */\
934 /* aggressive prefetching, while still leaving the room for segregating */\
935 /* among the distinct pages. */\
936 product(intx, ContendedPaddingWidth, 128, \
937 "How many bytes to pad the fields/classes marked @Contended with")\
938 range(0, 8192) \
939 constraint(ContendedPaddingWidthConstraintFunc,AfterErgo) \
940 \
941 product(bool, EnableContended, true, \
942 "Enable @Contended annotation support") \
943 \
944 product(bool, RestrictContended, true, \
945 "Restrict @Contended to trusted classes") \
946 \
947 product(bool, UseBiasedLocking, true, \
948 "Enable biased locking in JVM") \
949 \
950 product(intx, BiasedLockingStartupDelay, 0, \
951 "Number of milliseconds to wait before enabling biased locking") \
2548 \
2549 develop(bool, VerifyMetaspace, false, \
2550 "Verify metaspace on chunk movements.") \
2551 \
2552 diagnostic(bool, ShowRegistersOnAssert, true, \
2553 "On internal errors, include registers in error report.") \
2554 \
2555 experimental(bool, UseSwitchProfiling, true, \
2556 "leverage profiling for table/lookup switch") \
2557 \
2558 JFR_ONLY(product(bool, FlightRecorder, false, \
2559 "Enable Flight Recorder")) \
2560 \
2561 JFR_ONLY(product(ccstr, FlightRecorderOptions, NULL, \
2562 "Flight Recorder options")) \
2563 \
2564 JFR_ONLY(product(ccstr, StartFlightRecording, NULL, \
2565 "Start flight recording with options")) \
2566 \
2567 experimental(bool, UseFastUnorderedTimeStamps, false, \
2568 "Use platform unstable time where supported for timestamps only") \
2569 \
2570 product(bool, EnableValhalla, false, \
2571 "Enable experimental Valhalla features") \
2572 \
2573 product(bool, EnableValhallaC1, false, \
2574 "Enable C1 compiler for Valhalla") \
2575 \
2576 product_pd(bool, ValueTypePassFieldsAsArgs, \
2577 "Pass each value type field as an argument at calls") \
2578 \
2579 product_pd(bool, ValueTypeReturnedAsFields, \
2580 "Return fields instead of a value type reference") \
2581 \
2582 develop(bool, StressValueTypePassFieldsAsArgs, false, \
2583 "Stress passing each value type field as an argument at calls") \
2584 \
2585 develop(bool, StressValueTypeReturnedAsFields, false, \
2586 "Stress return of fields instead of a value type reference") \
2587 \
2588 develop(bool, ScalarizeValueTypes, true, \
2589 "Scalarize value types in compiled code") \
2590 \
2591 experimental(uint, ACmpOnValues, 2, \
2592 "0 = regular acmp" \
2593 "1 = always false for value, perturbation scheme" \
2594 "2 = always false for value" \
2595 "3 = substitutability test") \
2596 range(0, 3) \
2597
2598
2599
2600 #define VM_FLAGS(develop, \
2601 develop_pd, \
2602 product, \
2603 product_pd, \
2604 diagnostic, \
2605 diagnostic_pd, \
2606 experimental, \
2607 notproduct, \
2608 manageable, \
2609 product_rw, \
2610 lp64_product, \
2611 range, \
2612 constraint, \
2613 writeable) \
2614 \
2615 RUNTIME_FLAGS( \
2616 develop, \
2617 develop_pd, \
2618 product, \
|