779 develop(bool, StressArrayCopyMacroNode, false, \
780 "Perform ArrayCopy load/store replacement during IGVN only") \
781 \
782 develop(bool, RenumberLiveNodes, true, \
783 "Renumber live nodes") \
784 \
785 product(uintx, LoopStripMiningIter, 0, \
786 "Number of iterations in strip mined loop") \
787 range(0, max_juint) \
788 constraint(LoopStripMiningIterConstraintFunc, AfterErgo) \
789 \
790 product(uintx, LoopStripMiningIterShortLoop, 0, \
791 "Loop with fewer iterations are not strip mined") \
792 range(0, max_juint) \
793 \
794 product(bool, UseProfiledLoopPredicate, true, \
795 "Move checks with an uncommon trap out of loops based on " \
796 "profiling data. " \
797 "Requires UseLoopPredicate to be turned on (default).") \
798 \
799 develop(uintx, StressLongCountedLoop, 0, \
800 "if > 0, convert int counted loops to long counted loops" \
801 "to stress handling of long counted loops: run inner loop" \
802 "for at most jint_max / StressLongCountedLoop") \
803 range(0, max_juint) \
804 \
805 product(bool, DuplicateBackedge, true, DIAGNOSTIC, \
806 "Transform loop with a merge point into 2 loops if inner loop is" \
807 "expected to optimize better") \
808 \
809 develop(bool, StressDuplicateBackedge, false, \
810 "Run DuplicateBackedge whenever possible ignoring benefit" \
811 "analysis") \
812 \
813 product(bool, VerifyReceiverTypes, trueInDebug, DIAGNOSTIC, \
814 "Verify receiver types at runtime") \
815 \
816 product(intx, TypeProfileSubTypeCheckCommonThreshold, 50, \
817 "Use profile data at type check if profiled types account for" \
818 "more than this threshold") \
819 range(0, 100) \
820 \
821 develop(bool, StressPrunedExceptionHandlers, false, \
822 "Always prune exception handlers") \
823 \
824 product(bool, InlineSecondarySupersTest, true, DIAGNOSTIC, \
825 "Inline the secondary supers hash lookup.") \
826 \
827 product(bool, UseStoreStoreForCtor, true, DIAGNOSTIC, \
828 "Use StoreStore barrier instead of Release barrier at the end " \
829 "of constructors") \
830 \
831 develop(bool, KillPathsReachableByDeadTypeNode, true, \
832 "When a Type node becomes top, make paths where the node is " \
833 "used dead by replacing them with a Halt node. Turning this off " \
834 "could corrupt the graph in rare cases and should be used with " \
835 "care.") \
836
837 // end of C2_FLAGS
838
839 DECLARE_FLAGS(C2_FLAGS)
840
841 #endif // SHARE_OPTO_C2_GLOBALS_HPP
|
779 develop(bool, StressArrayCopyMacroNode, false, \
780 "Perform ArrayCopy load/store replacement during IGVN only") \
781 \
782 develop(bool, RenumberLiveNodes, true, \
783 "Renumber live nodes") \
784 \
785 product(uintx, LoopStripMiningIter, 0, \
786 "Number of iterations in strip mined loop") \
787 range(0, max_juint) \
788 constraint(LoopStripMiningIterConstraintFunc, AfterErgo) \
789 \
790 product(uintx, LoopStripMiningIterShortLoop, 0, \
791 "Loop with fewer iterations are not strip mined") \
792 range(0, max_juint) \
793 \
794 product(bool, UseProfiledLoopPredicate, true, \
795 "Move checks with an uncommon trap out of loops based on " \
796 "profiling data. " \
797 "Requires UseLoopPredicate to be turned on (default).") \
798 \
799 product(bool, UseArrayLoadStoreProfile, true, \
800 "Take advantage of profiling at array load/store") \
801 \
802 product(bool, UseACmpProfile, true, \
803 "Take advantage of profiling at acmp") \
804 \
805 develop(uintx, StressLongCountedLoop, 0, \
806 "if > 0, convert int counted loops to long counted loops" \
807 "to stress handling of long counted loops: run inner loop" \
808 "for at most jint_max / StressLongCountedLoop") \
809 range(0, max_juint) \
810 \
811 product(bool, DuplicateBackedge, true, DIAGNOSTIC, \
812 "Transform loop with a merge point into 2 loops if inner loop is" \
813 "expected to optimize better") \
814 \
815 develop(bool, StressDuplicateBackedge, false, \
816 "Run DuplicateBackedge whenever possible ignoring benefit" \
817 "analysis") \
818 \
819 product(bool, VerifyReceiverTypes, trueInDebug, DIAGNOSTIC, \
820 "Verify receiver types at runtime") \
821 \
822 product(intx, TypeProfileSubTypeCheckCommonThreshold, 50, \
823 "Use profile data at type check if profiled types account for" \
824 "more than this threshold") \
825 range(0, 100) \
826 \
827 develop(bool, StressPrunedExceptionHandlers, false, \
828 "Always prune exception handlers") \
829 \
830 product(bool, InlineSecondarySupersTest, true, DIAGNOSTIC, \
831 "Inline the secondary supers hash lookup.") \
832 \
833 product(bool, UseStoreStoreForCtor, true, DIAGNOSTIC, \
834 "Use StoreStore barrier instead of Release barrier at the end " \
835 "of constructors") \
836 \
837 develop(bool, KillPathsReachableByDeadTypeNode, true, \
838 "When a Type node becomes top, make paths where the node is " \
839 "used dead by replacing them with a Halt node. Turning this off " \
840 "could corrupt the graph in rare cases and should be used with " \
841 "care.") \
842 develop(ccstrlist, PrintInlineKlassFields, "", \
843 "Print fields collected by InlineKlass::collect_fields") \
844
845 // end of C2_FLAGS
846
847 DECLARE_FLAGS(C2_FLAGS)
848
849 #endif // SHARE_OPTO_C2_GLOBALS_HPP
|