/* * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. * */ #include "precompiled.hpp" #include "runtime/flags/jvmFlagConstraintsCompiler.hpp" // -- Define all JVM flags that have been declared in share/opto/c2_globals.hpp // Add JVMFlag::C2 to the JVMFlag::attr() for all flags defined in this file #ifdef FLAG_COMMON_ATTRS #undef FLAG_COMMON_ATTRS #endif #define FLAG_COMMON_ATTRS JVMFlag::C2 #include "c2_globals.hpp" #include "runtime/flags/jvmFlag.inline.hpp" DEFN_PRODUCT_FLAG(StressLCM); DEFN_PRODUCT_FLAG(StressGCM); DEFN_DEVELOP_FLAG(StressMethodHandleLinkerInlining); DEFN_DEVELOP_FLAG(OptoPrologueNops); DEFN_DEVELOP_RANGE(OptoPrologueNops); DEFN_PRODUCT_FLAG_PD(InteriorEntryAlignment); DEFN_PRODUCT_CONSTRAINT(InteriorEntryAlignment); DEFN_PRODUCT_FLAG(MaxLoopPad); DEFN_PRODUCT_RANGE(MaxLoopPad); DEFN_PRODUCT_FLAG(MaxVectorSize); DEFN_PRODUCT_RANGE(MaxVectorSize); DEFN_PRODUCT_FLAG(AlignVector); DEFN_PRODUCT_FLAG(NumberOfLoopInstrToAlign); DEFN_PRODUCT_RANGE(NumberOfLoopInstrToAlign); DEFN_NOTPROD_FLAG(IndexSetWatch); DEFN_NOTPROD_RANGE(IndexSetWatch); DEFN_DEVELOP_FLAG(OptoNodeListSize); DEFN_DEVELOP_RANGE(OptoNodeListSize); DEFN_DEVELOP_FLAG(OptoBlockListSize); DEFN_DEVELOP_RANGE(OptoBlockListSize); DEFN_DEVELOP_FLAG(OptoPeepholeAt); DEFN_NOTPROD_FLAG(PrintIdeal); DEFN_DEVELOP_FLAG(PrintOpto); DEFN_DEVELOP_FLAG(PrintOptoInlining); DEFN_NOTPROD_FLAG(VerifyIdealNodeCount); DEFN_NOTPROD_FLAG(PrintIdealNodeCount); DEFN_NOTPROD_FLAG(VerifyOptoOopOffsets); DEFN_DEVELOP_FLAG(IdealizedNumerics); DEFN_PRODUCT_FLAG_PD(IdealizeClearArrayNode); DEFN_DEVELOP_FLAG(OptoBreakpoint); DEFN_DEVELOP_FLAG(OptoBreakpointOSR); DEFN_NOTPROD_FLAG(BreakAtNode); DEFN_DEVELOP_FLAG(OptoBreakpointC2R); DEFN_NOTPROD_FLAG(OptoNoExecute); DEFN_NOTPROD_FLAG(PrintOptoStatistics); DEFN_PRODUCT_FLAG(PrintOptoAssembly); DEFN_DEVELOP_FLAG_PD(OptoPeephole); DEFN_DEVELOP_FLAG(OptoRemoveUseless); DEFN_NOTPROD_FLAG(PrintFrameConverterAssembly); DEFN_NOTPROD_FLAG(PrintParseStatistics); DEFN_NOTPROD_FLAG(PrintOptoPeephole); DEFN_DEVELOP_FLAG(PrintCFGBlockFreq); DEFN_DEVELOP_FLAG(TraceOptoParse); DEFN_PRODUCT_FLAG_PD(LoopUnrollLimit); DEFN_PRODUCT_RANGE(LoopUnrollLimit); DEFN_PRODUCT_FLAG_PD(LoopPercentProfileLimit); DEFN_PRODUCT_RANGE(LoopPercentProfileLimit); DEFN_PRODUCT_FLAG(LoopMaxUnroll); DEFN_PRODUCT_RANGE(LoopMaxUnroll); DEFN_PRODUCT_FLAG_PD(SuperWordLoopUnrollAnalysis); DEFN_PRODUCT_FLAG(PostLoopMultiversioning); DEFN_DEVELOP_FLAG(TraceSuperWordLoopUnrollAnalysis); DEFN_PRODUCT_FLAG(UseVectorMacroLogic); DEFN_PRODUCT_FLAG(LoopUnrollMin); DEFN_PRODUCT_RANGE(LoopUnrollMin); DEFN_PRODUCT_FLAG(UseSubwordForMaxVector); DEFN_PRODUCT_FLAG(UseVectorCmov); DEFN_DEVELOP_FLAG(UnrollLimitForProfileCheck); DEFN_DEVELOP_RANGE(UnrollLimitForProfileCheck); DEFN_PRODUCT_FLAG(MultiArrayExpandLimit); DEFN_PRODUCT_RANGE(MultiArrayExpandLimit); DEFN_NOTPROD_FLAG(TraceProfileTripCount); DEFN_PRODUCT_FLAG(UseCountedLoopSafepoints); DEFN_PRODUCT_FLAG(UseLoopPredicate); DEFN_DEVELOP_FLAG(TraceLoopPredicate); DEFN_DEVELOP_FLAG(TraceLoopOpts); DEFN_DEVELOP_FLAG(TraceLoopLimitCheck); DEFN_DEVELOP_FLAG(TraceRangeLimitCheck); DEFN_PRODUCT_FLAG(OptimizeFill); DEFN_DEVELOP_FLAG(TraceOptimizeFill); DEFN_DEVELOP_FLAG(OptoCoalesce); DEFN_DEVELOP_FLAG(UseUniqueSubclasses); DEFN_DEVELOP_FLAG(UseExactTypes); DEFN_PRODUCT_FLAG(TrackedInitializationLimit); DEFN_PRODUCT_RANGE(TrackedInitializationLimit); DEFN_PRODUCT_FLAG(ReduceFieldZeroing); DEFN_PRODUCT_FLAG(ReduceInitialCardMarks); DEFN_PRODUCT_FLAG(ReduceBulkZeroing); DEFN_PRODUCT_FLAG(UseFPUForSpilling); DEFN_DEVELOP_FLAG_PD(RegisterCostAreaRatio); DEFN_DEVELOP_FLAG_PD(UseCISCSpill); DEFN_NOTPROD_FLAG(VerifyGraphEdges); DEFN_NOTPROD_FLAG(VerifyDUIterators); DEFN_NOTPROD_FLAG(VerifyHashTableKeys); DEFN_NOTPROD_FLAG(VerifyRegisterAllocator); DEFN_DEVELOP_FLAG_PD(FLOATPRESSURE); DEFN_DEVELOP_RANGE(FLOATPRESSURE); DEFN_DEVELOP_FLAG_PD(INTPRESSURE); DEFN_DEVELOP_RANGE(INTPRESSURE); DEFN_NOTPROD_FLAG(TraceOptoPipelining); DEFN_NOTPROD_FLAG(TraceOptoOutput); DEFN_PRODUCT_FLAG_PD(OptoScheduling); DEFN_PRODUCT_FLAG_PD(OptoRegScheduling); DEFN_PRODUCT_FLAG(PartialPeelLoop); DEFN_PRODUCT_FLAG(PartialPeelNewPhiDelta); DEFN_PRODUCT_RANGE(PartialPeelNewPhiDelta); DEFN_NOTPROD_FLAG(TracePartialPeeling); DEFN_PRODUCT_FLAG(PartialPeelAtUnsignedTests); DEFN_PRODUCT_FLAG(ReassociateInvariants); DEFN_PRODUCT_FLAG(LoopUnswitching); DEFN_NOTPROD_FLAG(TraceLoopUnswitching); DEFN_PRODUCT_FLAG(AllowVectorizeOnDemand); DEFN_PRODUCT_FLAG(UseSuperWord); DEFN_DEVELOP_FLAG(SuperWordRTDepCheck); DEFN_PRODUCT_FLAG(SuperWordReductions); DEFN_PRODUCT_FLAG(UseCMoveUnconditionally); DEFN_PRODUCT_FLAG(DoReserveCopyInSuperWord); DEFN_DEVELOP_FLAG(TraceSuperWord); DEFN_NOTPROD_FLAG(TraceNewVectors); DEFN_PRODUCT_FLAG_PD(OptoBundling); DEFN_PRODUCT_FLAG_PD(ConditionalMoveLimit); DEFN_PRODUCT_RANGE(ConditionalMoveLimit); DEFN_PRODUCT_FLAG(BranchOnRegister); DEFN_DEVELOP_FLAG(SparcV9RegsHiBitsZero); DEFN_PRODUCT_FLAG(UseRDPCForConstantTableBase); DEFN_NOTPROD_FLAG(PrintIdealGraph); DEFN_NOTPROD_FLAG(PrintIdealGraphLevel); DEFN_NOTPROD_RANGE(PrintIdealGraphLevel); DEFN_NOTPROD_FLAG(PrintIdealGraphPort); DEFN_NOTPROD_RANGE(PrintIdealGraphPort); DEFN_NOTPROD_FLAG(PrintIdealGraphAddress); DEFN_NOTPROD_FLAG(PrintIdealGraphFile); DEFN_PRODUCT_FLAG(UseBimorphicInlining); DEFN_PRODUCT_FLAG(UseOnlyInlinedBimorphic); DEFN_PRODUCT_FLAG(InsertMemBarAfterArraycopy); DEFN_DEVELOP_FLAG(SubsumeLoads); DEFN_DEVELOP_FLAG(StressRecompilation); DEFN_DEVELOP_FLAG(ImplicitNullCheckThreshold); DEFN_DEVELOP_RANGE(ImplicitNullCheckThreshold); DEFN_PRODUCT_FLAG(LoopOptsCount); DEFN_PRODUCT_RANGE(LoopOptsCount); DEFN_DEVELOP_FLAG(NodeCountInliningCutoff); DEFN_DEVELOP_RANGE(NodeCountInliningCutoff); DEFN_DEVELOP_FLAG(NodeCountInliningStep); DEFN_DEVELOP_RANGE(NodeCountInliningStep); DEFN_DEVELOP_FLAG(InlineWarmCalls); DEFN_DEVELOP_FLAG(HotCallCountThreshold); DEFN_DEVELOP_RANGE(HotCallCountThreshold); DEFN_DEVELOP_FLAG(HotCallProfitThreshold); DEFN_DEVELOP_RANGE(HotCallProfitThreshold); DEFN_DEVELOP_FLAG(HotCallTrivialWork); DEFN_DEVELOP_RANGE(HotCallTrivialWork); DEFN_DEVELOP_FLAG(HotCallTrivialSize); DEFN_DEVELOP_RANGE(HotCallTrivialSize); DEFN_DEVELOP_FLAG(WarmCallMinCount); DEFN_DEVELOP_RANGE(WarmCallMinCount); DEFN_DEVELOP_FLAG(WarmCallMinProfit); DEFN_DEVELOP_RANGE(WarmCallMinProfit); DEFN_DEVELOP_FLAG(WarmCallMaxWork); DEFN_DEVELOP_RANGE(WarmCallMaxWork); DEFN_DEVELOP_FLAG(WarmCallMaxSize); DEFN_DEVELOP_RANGE(WarmCallMaxSize); DEFN_PRODUCT_FLAG(MaxNodeLimit); DEFN_PRODUCT_RANGE(MaxNodeLimit); DEFN_PRODUCT_FLAG(NodeLimitFudgeFactor); DEFN_PRODUCT_CONSTRAINT(NodeLimitFudgeFactor); DEFN_PRODUCT_FLAG(UseJumpTables); DEFN_PRODUCT_FLAG(UseDivMod); DEFN_PRODUCT_FLAG_PD(MinJumpTableSize); DEFN_PRODUCT_RANGE(MinJumpTableSize); DEFN_PRODUCT_FLAG(MaxJumpTableSize); DEFN_PRODUCT_RANGE(MaxJumpTableSize); DEFN_PRODUCT_FLAG(MaxJumpTableSparseness); DEFN_PRODUCT_RANGE(MaxJumpTableSparseness); DEFN_PRODUCT_FLAG(EliminateLocks); DEFN_PRODUCT_FLAG(EliminateNestedLocks); DEFN_NOTPROD_FLAG(PrintLockStatistics); DEFN_PRODUCT_FLAG(PrintPreciseBiasedLockingStatistics); DEFN_PRODUCT_FLAG(PrintPreciseRTMLockingStatistics); DEFN_NOTPROD_FLAG(PrintEliminateLocks); DEFN_PRODUCT_FLAG(EliminateAutoBox); DEFN_PRODUCT_FLAG(AutoBoxCacheMax); DEFN_PRODUCT_RANGE(AutoBoxCacheMax); DEFN_PRODUCT_FLAG(AggressiveUnboxing); DEFN_DEVELOP_FLAG(TracePostallocExpand); DEFN_PRODUCT_FLAG(DoEscapeAnalysis); DEFN_PRODUCT_FLAG(EscapeAnalysisTimeout); DEFN_PRODUCT_RANGE(EscapeAnalysisTimeout); DEFN_DEVELOP_FLAG(ExitEscapeAnalysisOnTimeout); DEFN_NOTPROD_FLAG(PrintEscapeAnalysis); DEFN_PRODUCT_FLAG(EliminateAllocations); DEFN_NOTPROD_FLAG(PrintEliminateAllocations); DEFN_PRODUCT_FLAG(EliminateAllocationArraySizeLimit); DEFN_PRODUCT_RANGE(EliminateAllocationArraySizeLimit); DEFN_PRODUCT_FLAG(OptimizePtrCompare); DEFN_NOTPROD_FLAG(PrintOptimizePtrCompare); DEFN_NOTPROD_FLAG(VerifyConnectionGraph); DEFN_PRODUCT_FLAG(UseOptoBiasInlining); DEFN_PRODUCT_FLAG(OptimizeStringConcat); DEFN_NOTPROD_FLAG(PrintOptimizeStringConcat); DEFN_PRODUCT_FLAG(ValueSearchLimit); DEFN_PRODUCT_RANGE(ValueSearchLimit); DEFN_PRODUCT_FLAG(MaxLabelRootDepth); DEFN_PRODUCT_RANGE(MaxLabelRootDepth); DEFN_PRODUCT_FLAG(DominatorSearchLimit); DEFN_PRODUCT_RANGE(DominatorSearchLimit); DEFN_PRODUCT_FLAG(BlockLayoutByFrequency); DEFN_PRODUCT_FLAG(BlockLayoutMinDiamondPercentage); DEFN_PRODUCT_RANGE(BlockLayoutMinDiamondPercentage); DEFN_PRODUCT_FLAG(BlockLayoutRotateLoops); DEFN_PRODUCT_FLAG(InlineReflectionGetCallerClass); DEFN_PRODUCT_FLAG(InlineObjectCopy); DEFN_PRODUCT_FLAG(SpecialStringCompareTo); DEFN_PRODUCT_FLAG(SpecialStringIndexOf); DEFN_PRODUCT_FLAG(SpecialStringEquals); DEFN_PRODUCT_FLAG(SpecialArraysEquals); DEFN_PRODUCT_FLAG(SpecialEncodeISOArray); DEFN_DEVELOP_FLAG(BailoutToInterpreterForThrows); DEFN_DEVELOP_FLAG(ConvertCmpD2CmpF); DEFN_DEVELOP_FLAG(ConvertFloat2IntClipping); DEFN_DEVELOP_FLAG(MonomorphicArrayCheck); DEFN_NOTPROD_FLAG(TracePhaseCCP); DEFN_DEVELOP_FLAG(PrintDominators); DEFN_PRODUCT_FLAG(TraceSpilling); DEFN_PRODUCT_FLAG(TraceTypeProfile); DEFN_DEVELOP_FLAG(PoisonOSREntry); DEFN_DEVELOP_FLAG(SoftMatchFailure); DEFN_DEVELOP_FLAG(InlineAccessors); DEFN_PRODUCT_FLAG(TypeProfileMajorReceiverPercent); DEFN_PRODUCT_RANGE(TypeProfileMajorReceiverPercent); DEFN_PRODUCT_FLAG(PrintIntrinsics); DEFN_DEVELOP_FLAG(StressReflectiveCode); DEFN_PRODUCT_FLAG(DebugInlinedCalls); DEFN_DEVELOP_FLAG(VerifyLoopOptimizations); DEFN_PRODUCT_FLAG(ProfileDynamicTypes); DEFN_DEVELOP_FLAG(TraceIterativeGVN); DEFN_DEVELOP_FLAG(VerifyIterativeGVN); DEFN_NOTPROD_FLAG(TraceCISCSpill); DEFN_PRODUCT_FLAG(SplitIfBlocks); DEFN_DEVELOP_FLAG(FreqCountInvocations); DEFN_DEVELOP_RANGE(FreqCountInvocations); DEFN_PRODUCT_FLAG(AliasLevel); DEFN_PRODUCT_RANGE(AliasLevel); DEFN_PRODUCT_CONSTRAINT(AliasLevel); DEFN_DEVELOP_FLAG(VerifyAliases); DEFN_PRODUCT_FLAG(IncrementalInline); DEFN_DEVELOP_FLAG(AlwaysIncrementalInline); DEFN_PRODUCT_FLAG(LiveNodeCountInliningCutoff); DEFN_PRODUCT_RANGE(LiveNodeCountInliningCutoff); DEFN_PRODUCT_FLAG(OptimizeExpensiveOps); DEFN_PRODUCT_FLAG(UseMathExactIntrinsics); DEFN_PRODUCT_FLAG(UseCharacterCompareIntrinsics); DEFN_PRODUCT_FLAG(UseMultiplyToLenIntrinsic); DEFN_PRODUCT_FLAG(UseSquareToLenIntrinsic); DEFN_PRODUCT_FLAG(UseMulAddIntrinsic); DEFN_PRODUCT_FLAG(UseMontgomeryMultiplyIntrinsic); DEFN_PRODUCT_FLAG(UseMontgomerySquareIntrinsic); DEFN_PRODUCT_FLAG(UseTypeSpeculation); DEFN_PRODUCT_FLAG(UseInlineDepthForSpeculativeTypes); DEFN_PRODUCT_FLAG_PD(TrapBasedRangeChecks); DEFN_PRODUCT_FLAG(ArrayCopyLoadStoreMaxElem); DEFN_PRODUCT_RANGE(ArrayCopyLoadStoreMaxElem); DEFN_DEVELOP_FLAG(StressArrayCopyMacroNode); DEFN_DEVELOP_FLAG(RenumberLiveNodes); DEFN_PRODUCT_FLAG(LoopStripMiningIter); DEFN_PRODUCT_RANGE(LoopStripMiningIter); DEFN_PRODUCT_FLAG(LoopStripMiningIterShortLoop); DEFN_PRODUCT_RANGE(LoopStripMiningIterShortLoop); DEFN_PRODUCT_FLAG(UseProfiledLoopPredicate); DEFN_PRODUCT_FLAG(ExpandSubTypeCheckAtParseTime);