1 /* 2 * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 #include "precompiled.hpp" 26 #include "runtime/flags/jvmFlagConstraintsCompiler.hpp" 27 28 // -- Define all JVM flags that have been declared in share/opto/c2_globals.hpp 29 30 // Add JVMFlag::C2 to the JVMFlag::attr() for all flags defined in this file 31 #ifdef FLAG_COMMON_ATTRS 32 #undef FLAG_COMMON_ATTRS 33 #endif 34 #define FLAG_COMMON_ATTRS JVMFlag::C2 35 36 #include "c2_globals.hpp" 37 #include "runtime/flags/jvmFlag.inline.hpp" 38 DEFN_PRODUCT_FLAG(StressLCM); 39 DEFN_PRODUCT_FLAG(StressGCM); 40 DEFN_DEVELOP_FLAG(StressMethodHandleLinkerInlining); 41 DEFN_DEVELOP_FLAG(OptoPrologueNops); DEFN_DEVELOP_RANGE(OptoPrologueNops); 42 DEFN_PRODUCT_FLAG_PD(InteriorEntryAlignment); DEFN_PRODUCT_CONSTRAINT(InteriorEntryAlignment); 43 DEFN_PRODUCT_FLAG(MaxLoopPad); DEFN_PRODUCT_RANGE(MaxLoopPad); 44 DEFN_PRODUCT_FLAG(MaxVectorSize); DEFN_PRODUCT_RANGE(MaxVectorSize); 45 DEFN_PRODUCT_FLAG(AlignVector); 46 DEFN_PRODUCT_FLAG(NumberOfLoopInstrToAlign); DEFN_PRODUCT_RANGE(NumberOfLoopInstrToAlign); 47 DEFN_NOTPROD_FLAG(IndexSetWatch); DEFN_NOTPROD_RANGE(IndexSetWatch); 48 DEFN_DEVELOP_FLAG(OptoNodeListSize); DEFN_DEVELOP_RANGE(OptoNodeListSize); 49 DEFN_DEVELOP_FLAG(OptoBlockListSize); DEFN_DEVELOP_RANGE(OptoBlockListSize); 50 DEFN_DEVELOP_FLAG(OptoPeepholeAt); 51 DEFN_NOTPROD_FLAG(PrintIdeal); 52 DEFN_DEVELOP_FLAG(PrintOpto); 53 DEFN_DEVELOP_FLAG(PrintOptoInlining); 54 DEFN_NOTPROD_FLAG(VerifyIdealNodeCount); 55 DEFN_NOTPROD_FLAG(PrintIdealNodeCount); 56 DEFN_NOTPROD_FLAG(VerifyOptoOopOffsets); 57 DEFN_DEVELOP_FLAG(IdealizedNumerics); 58 DEFN_PRODUCT_FLAG_PD(IdealizeClearArrayNode); 59 DEFN_DEVELOP_FLAG(OptoBreakpoint); 60 DEFN_DEVELOP_FLAG(OptoBreakpointOSR); 61 DEFN_NOTPROD_FLAG(BreakAtNode); 62 DEFN_DEVELOP_FLAG(OptoBreakpointC2R); 63 DEFN_NOTPROD_FLAG(OptoNoExecute); 64 DEFN_NOTPROD_FLAG(PrintOptoStatistics); 65 DEFN_PRODUCT_FLAG(PrintOptoAssembly); 66 DEFN_DEVELOP_FLAG_PD(OptoPeephole); 67 DEFN_DEVELOP_FLAG(OptoRemoveUseless); 68 DEFN_NOTPROD_FLAG(PrintFrameConverterAssembly); 69 DEFN_NOTPROD_FLAG(PrintParseStatistics); 70 DEFN_NOTPROD_FLAG(PrintOptoPeephole); 71 DEFN_DEVELOP_FLAG(PrintCFGBlockFreq); 72 DEFN_DEVELOP_FLAG(TraceOptoParse); 73 DEFN_PRODUCT_FLAG_PD(LoopUnrollLimit); DEFN_PRODUCT_RANGE(LoopUnrollLimit); 74 DEFN_PRODUCT_FLAG_PD(LoopPercentProfileLimit); DEFN_PRODUCT_RANGE(LoopPercentProfileLimit); 75 DEFN_PRODUCT_FLAG(LoopMaxUnroll); DEFN_PRODUCT_RANGE(LoopMaxUnroll); 76 DEFN_PRODUCT_FLAG_PD(SuperWordLoopUnrollAnalysis); 77 DEFN_PRODUCT_FLAG(PostLoopMultiversioning); 78 DEFN_DEVELOP_FLAG(TraceSuperWordLoopUnrollAnalysis); 79 DEFN_PRODUCT_FLAG(UseVectorMacroLogic); 80 DEFN_PRODUCT_FLAG(LoopUnrollMin); DEFN_PRODUCT_RANGE(LoopUnrollMin); 81 DEFN_PRODUCT_FLAG(UseSubwordForMaxVector); 82 DEFN_PRODUCT_FLAG(UseVectorCmov); 83 DEFN_DEVELOP_FLAG(UnrollLimitForProfileCheck); DEFN_DEVELOP_RANGE(UnrollLimitForProfileCheck); 84 DEFN_PRODUCT_FLAG(MultiArrayExpandLimit); DEFN_PRODUCT_RANGE(MultiArrayExpandLimit); 85 DEFN_NOTPROD_FLAG(TraceProfileTripCount); 86 DEFN_PRODUCT_FLAG(UseCountedLoopSafepoints); 87 DEFN_PRODUCT_FLAG(UseLoopPredicate); 88 DEFN_DEVELOP_FLAG(TraceLoopPredicate); 89 DEFN_DEVELOP_FLAG(TraceLoopOpts); 90 DEFN_DEVELOP_FLAG(TraceLoopLimitCheck); 91 DEFN_DEVELOP_FLAG(TraceRangeLimitCheck); 92 DEFN_PRODUCT_FLAG(OptimizeFill); 93 DEFN_DEVELOP_FLAG(TraceOptimizeFill); 94 DEFN_DEVELOP_FLAG(OptoCoalesce); 95 DEFN_DEVELOP_FLAG(UseUniqueSubclasses); 96 DEFN_DEVELOP_FLAG(UseExactTypes); 97 DEFN_PRODUCT_FLAG(TrackedInitializationLimit); DEFN_PRODUCT_RANGE(TrackedInitializationLimit); 98 DEFN_PRODUCT_FLAG(ReduceFieldZeroing); 99 DEFN_PRODUCT_FLAG(ReduceInitialCardMarks); 100 DEFN_PRODUCT_FLAG(ReduceBulkZeroing); 101 DEFN_PRODUCT_FLAG(UseFPUForSpilling); 102 DEFN_DEVELOP_FLAG_PD(RegisterCostAreaRatio); 103 DEFN_DEVELOP_FLAG_PD(UseCISCSpill); 104 DEFN_NOTPROD_FLAG(VerifyGraphEdges); 105 DEFN_NOTPROD_FLAG(VerifyDUIterators); 106 DEFN_NOTPROD_FLAG(VerifyHashTableKeys); 107 DEFN_NOTPROD_FLAG(VerifyRegisterAllocator); 108 DEFN_DEVELOP_FLAG_PD(FLOATPRESSURE); DEFN_DEVELOP_RANGE(FLOATPRESSURE); 109 DEFN_DEVELOP_FLAG_PD(INTPRESSURE); DEFN_DEVELOP_RANGE(INTPRESSURE); 110 DEFN_NOTPROD_FLAG(TraceOptoPipelining); 111 DEFN_NOTPROD_FLAG(TraceOptoOutput); 112 DEFN_PRODUCT_FLAG_PD(OptoScheduling); 113 DEFN_PRODUCT_FLAG_PD(OptoRegScheduling); 114 DEFN_PRODUCT_FLAG(PartialPeelLoop); 115 DEFN_PRODUCT_FLAG(PartialPeelNewPhiDelta); DEFN_PRODUCT_RANGE(PartialPeelNewPhiDelta); 116 DEFN_NOTPROD_FLAG(TracePartialPeeling); 117 DEFN_PRODUCT_FLAG(PartialPeelAtUnsignedTests); 118 DEFN_PRODUCT_FLAG(ReassociateInvariants); 119 DEFN_PRODUCT_FLAG(LoopUnswitching); 120 DEFN_NOTPROD_FLAG(TraceLoopUnswitching); 121 DEFN_PRODUCT_FLAG(AllowVectorizeOnDemand); 122 DEFN_PRODUCT_FLAG(UseSuperWord); 123 DEFN_DEVELOP_FLAG(SuperWordRTDepCheck); 124 DEFN_PRODUCT_FLAG(SuperWordReductions); 125 DEFN_PRODUCT_FLAG(UseCMoveUnconditionally); 126 DEFN_PRODUCT_FLAG(DoReserveCopyInSuperWord); 127 DEFN_DEVELOP_FLAG(TraceSuperWord); 128 DEFN_NOTPROD_FLAG(TraceNewVectors); 129 DEFN_PRODUCT_FLAG_PD(OptoBundling); 130 DEFN_PRODUCT_FLAG_PD(ConditionalMoveLimit); DEFN_PRODUCT_RANGE(ConditionalMoveLimit); 131 DEFN_PRODUCT_FLAG(BranchOnRegister); 132 DEFN_DEVELOP_FLAG(SparcV9RegsHiBitsZero); 133 DEFN_PRODUCT_FLAG(UseRDPCForConstantTableBase); 134 DEFN_NOTPROD_FLAG(PrintIdealGraph); 135 DEFN_NOTPROD_FLAG(PrintIdealGraphLevel); DEFN_NOTPROD_RANGE(PrintIdealGraphLevel); 136 DEFN_NOTPROD_FLAG(PrintIdealGraphPort); DEFN_NOTPROD_RANGE(PrintIdealGraphPort); 137 DEFN_NOTPROD_FLAG(PrintIdealGraphAddress); 138 DEFN_NOTPROD_FLAG(PrintIdealGraphFile); 139 DEFN_PRODUCT_FLAG(UseBimorphicInlining); 140 DEFN_PRODUCT_FLAG(UseOnlyInlinedBimorphic); 141 DEFN_PRODUCT_FLAG(InsertMemBarAfterArraycopy); 142 DEFN_DEVELOP_FLAG(SubsumeLoads); 143 DEFN_DEVELOP_FLAG(StressRecompilation); 144 DEFN_DEVELOP_FLAG(ImplicitNullCheckThreshold); DEFN_DEVELOP_RANGE(ImplicitNullCheckThreshold); 145 DEFN_PRODUCT_FLAG(LoopOptsCount); DEFN_PRODUCT_RANGE(LoopOptsCount); 146 DEFN_DEVELOP_FLAG(NodeCountInliningCutoff); DEFN_DEVELOP_RANGE(NodeCountInliningCutoff); 147 DEFN_DEVELOP_FLAG(NodeCountInliningStep); DEFN_DEVELOP_RANGE(NodeCountInliningStep); 148 DEFN_DEVELOP_FLAG(InlineWarmCalls); 149 DEFN_DEVELOP_FLAG(HotCallCountThreshold); DEFN_DEVELOP_RANGE(HotCallCountThreshold); 150 DEFN_DEVELOP_FLAG(HotCallProfitThreshold); DEFN_DEVELOP_RANGE(HotCallProfitThreshold); 151 DEFN_DEVELOP_FLAG(HotCallTrivialWork); DEFN_DEVELOP_RANGE(HotCallTrivialWork); 152 DEFN_DEVELOP_FLAG(HotCallTrivialSize); DEFN_DEVELOP_RANGE(HotCallTrivialSize); 153 DEFN_DEVELOP_FLAG(WarmCallMinCount); DEFN_DEVELOP_RANGE(WarmCallMinCount); 154 DEFN_DEVELOP_FLAG(WarmCallMinProfit); DEFN_DEVELOP_RANGE(WarmCallMinProfit); 155 DEFN_DEVELOP_FLAG(WarmCallMaxWork); DEFN_DEVELOP_RANGE(WarmCallMaxWork); 156 DEFN_DEVELOP_FLAG(WarmCallMaxSize); DEFN_DEVELOP_RANGE(WarmCallMaxSize); 157 DEFN_PRODUCT_FLAG(MaxNodeLimit); DEFN_PRODUCT_RANGE(MaxNodeLimit); 158 DEFN_PRODUCT_FLAG(NodeLimitFudgeFactor); DEFN_PRODUCT_CONSTRAINT(NodeLimitFudgeFactor); 159 DEFN_PRODUCT_FLAG(UseJumpTables); 160 DEFN_PRODUCT_FLAG(UseDivMod); 161 DEFN_PRODUCT_FLAG_PD(MinJumpTableSize); DEFN_PRODUCT_RANGE(MinJumpTableSize); 162 DEFN_PRODUCT_FLAG(MaxJumpTableSize); DEFN_PRODUCT_RANGE(MaxJumpTableSize); 163 DEFN_PRODUCT_FLAG(MaxJumpTableSparseness); DEFN_PRODUCT_RANGE(MaxJumpTableSparseness); 164 DEFN_PRODUCT_FLAG(EliminateLocks); 165 DEFN_PRODUCT_FLAG(EliminateNestedLocks); 166 DEFN_NOTPROD_FLAG(PrintLockStatistics); 167 DEFN_PRODUCT_FLAG(PrintPreciseBiasedLockingStatistics); 168 DEFN_PRODUCT_FLAG(PrintPreciseRTMLockingStatistics); 169 DEFN_NOTPROD_FLAG(PrintEliminateLocks); 170 DEFN_PRODUCT_FLAG(EliminateAutoBox); 171 DEFN_PRODUCT_FLAG(AutoBoxCacheMax); DEFN_PRODUCT_RANGE(AutoBoxCacheMax); 172 DEFN_PRODUCT_FLAG(AggressiveUnboxing); 173 DEFN_DEVELOP_FLAG(TracePostallocExpand); 174 DEFN_PRODUCT_FLAG(DoEscapeAnalysis); 175 DEFN_PRODUCT_FLAG(EscapeAnalysisTimeout); DEFN_PRODUCT_RANGE(EscapeAnalysisTimeout); 176 DEFN_DEVELOP_FLAG(ExitEscapeAnalysisOnTimeout); 177 DEFN_NOTPROD_FLAG(PrintEscapeAnalysis); 178 DEFN_PRODUCT_FLAG(EliminateAllocations); 179 DEFN_NOTPROD_FLAG(PrintEliminateAllocations); 180 DEFN_PRODUCT_FLAG(EliminateAllocationArraySizeLimit); DEFN_PRODUCT_RANGE(EliminateAllocationArraySizeLimit); 181 DEFN_PRODUCT_FLAG(OptimizePtrCompare); 182 DEFN_NOTPROD_FLAG(PrintOptimizePtrCompare); 183 DEFN_NOTPROD_FLAG(VerifyConnectionGraph); 184 DEFN_PRODUCT_FLAG(UseOptoBiasInlining); 185 DEFN_PRODUCT_FLAG(OptimizeStringConcat); 186 DEFN_NOTPROD_FLAG(PrintOptimizeStringConcat); 187 DEFN_PRODUCT_FLAG(ValueSearchLimit); DEFN_PRODUCT_RANGE(ValueSearchLimit); 188 DEFN_PRODUCT_FLAG(MaxLabelRootDepth); DEFN_PRODUCT_RANGE(MaxLabelRootDepth); 189 DEFN_PRODUCT_FLAG(DominatorSearchLimit); DEFN_PRODUCT_RANGE(DominatorSearchLimit); 190 DEFN_PRODUCT_FLAG(BlockLayoutByFrequency); 191 DEFN_PRODUCT_FLAG(BlockLayoutMinDiamondPercentage); DEFN_PRODUCT_RANGE(BlockLayoutMinDiamondPercentage); 192 DEFN_PRODUCT_FLAG(BlockLayoutRotateLoops); 193 DEFN_PRODUCT_FLAG(InlineReflectionGetCallerClass); 194 DEFN_PRODUCT_FLAG(InlineObjectCopy); 195 DEFN_PRODUCT_FLAG(SpecialStringCompareTo); 196 DEFN_PRODUCT_FLAG(SpecialStringIndexOf); 197 DEFN_PRODUCT_FLAG(SpecialStringEquals); 198 DEFN_PRODUCT_FLAG(SpecialArraysEquals); 199 DEFN_PRODUCT_FLAG(SpecialEncodeISOArray); 200 DEFN_DEVELOP_FLAG(BailoutToInterpreterForThrows); 201 DEFN_DEVELOP_FLAG(ConvertCmpD2CmpF); 202 DEFN_DEVELOP_FLAG(ConvertFloat2IntClipping); 203 DEFN_DEVELOP_FLAG(MonomorphicArrayCheck); 204 DEFN_NOTPROD_FLAG(TracePhaseCCP); 205 DEFN_DEVELOP_FLAG(PrintDominators); 206 DEFN_PRODUCT_FLAG(TraceSpilling); 207 DEFN_PRODUCT_FLAG(TraceTypeProfile); 208 DEFN_DEVELOP_FLAG(PoisonOSREntry); 209 DEFN_DEVELOP_FLAG(SoftMatchFailure); 210 DEFN_DEVELOP_FLAG(InlineAccessors); 211 DEFN_PRODUCT_FLAG(TypeProfileMajorReceiverPercent); DEFN_PRODUCT_RANGE(TypeProfileMajorReceiverPercent); 212 DEFN_PRODUCT_FLAG(PrintIntrinsics); 213 DEFN_DEVELOP_FLAG(StressReflectiveCode); 214 DEFN_PRODUCT_FLAG(DebugInlinedCalls); 215 DEFN_DEVELOP_FLAG(VerifyLoopOptimizations); 216 DEFN_PRODUCT_FLAG(ProfileDynamicTypes); 217 DEFN_DEVELOP_FLAG(TraceIterativeGVN); 218 DEFN_DEVELOP_FLAG(VerifyIterativeGVN); 219 DEFN_NOTPROD_FLAG(TraceCISCSpill); 220 DEFN_PRODUCT_FLAG(SplitIfBlocks); 221 DEFN_DEVELOP_FLAG(FreqCountInvocations); DEFN_DEVELOP_RANGE(FreqCountInvocations); 222 DEFN_PRODUCT_FLAG(AliasLevel); DEFN_PRODUCT_RANGE(AliasLevel); DEFN_PRODUCT_CONSTRAINT(AliasLevel); 223 DEFN_DEVELOP_FLAG(VerifyAliases); 224 DEFN_PRODUCT_FLAG(IncrementalInline); 225 DEFN_DEVELOP_FLAG(AlwaysIncrementalInline); 226 DEFN_PRODUCT_FLAG(LiveNodeCountInliningCutoff); DEFN_PRODUCT_RANGE(LiveNodeCountInliningCutoff); 227 DEFN_PRODUCT_FLAG(OptimizeExpensiveOps); 228 DEFN_PRODUCT_FLAG(UseMathExactIntrinsics); 229 DEFN_PRODUCT_FLAG(UseCharacterCompareIntrinsics); 230 DEFN_PRODUCT_FLAG(UseMultiplyToLenIntrinsic); 231 DEFN_PRODUCT_FLAG(UseSquareToLenIntrinsic); 232 DEFN_PRODUCT_FLAG(UseMulAddIntrinsic); 233 DEFN_PRODUCT_FLAG(UseMontgomeryMultiplyIntrinsic); 234 DEFN_PRODUCT_FLAG(UseMontgomerySquareIntrinsic); 235 DEFN_PRODUCT_FLAG(UseTypeSpeculation); 236 DEFN_PRODUCT_FLAG(UseInlineDepthForSpeculativeTypes); 237 DEFN_PRODUCT_FLAG_PD(TrapBasedRangeChecks); 238 DEFN_PRODUCT_FLAG(ArrayCopyLoadStoreMaxElem); DEFN_PRODUCT_RANGE(ArrayCopyLoadStoreMaxElem); 239 DEFN_DEVELOP_FLAG(StressArrayCopyMacroNode); 240 DEFN_DEVELOP_FLAG(RenumberLiveNodes); 241 DEFN_PRODUCT_FLAG(LoopStripMiningIter); DEFN_PRODUCT_RANGE(LoopStripMiningIter); 242 DEFN_PRODUCT_FLAG(LoopStripMiningIterShortLoop); DEFN_PRODUCT_RANGE(LoopStripMiningIterShortLoop); 243 DEFN_PRODUCT_FLAG(UseProfiledLoopPredicate); 244 DEFN_PRODUCT_FLAG(ExpandSubTypeCheckAtParseTime);