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 
  27 // -- Define all JVM flags that have been declared in share/c1/c1_globals.hpp
  28 
  29 // Add JVMFlag::C1 to the JVMFlag::attr() for all flags defined in this file
  30 #ifdef FLAG_COMMON_ATTRS
  31 #undef FLAG_COMMON_ATTRS
  32 #endif
  33 #define FLAG_COMMON_ATTRS JVMFlag::C1
  34 
  35 #include "c1_globals.hpp"
  36 #include "runtime/flags/jvmFlag.inline.hpp"
  37 DEFN_NOTPROD_FLAG(PrintC1Statistics);
  38 DEFN_DEVELOP_FLAG(PrintInitialBlockList);
  39 DEFN_NOTPROD_FLAG(PrintCFG);
  40 DEFN_NOTPROD_FLAG(PrintCFG0);
  41 DEFN_NOTPROD_FLAG(PrintCFG1);
  42 DEFN_NOTPROD_FLAG(PrintCFG2);
  43 DEFN_NOTPROD_FLAG(PrintIRDuringConstruction);
  44 DEFN_NOTPROD_FLAG(PrintPhiFunctions);
  45 DEFN_NOTPROD_FLAG(PrintIR);
  46 DEFN_NOTPROD_FLAG(PrintIR0);
  47 DEFN_NOTPROD_FLAG(PrintIR1);
  48 DEFN_NOTPROD_FLAG(PrintIR2);
  49 DEFN_NOTPROD_FLAG(PrintSimpleStubs);
  50 DEFN_DEVELOP_FLAG(UseC1Optimizations);
  51 DEFN_DEVELOP_FLAG(SelectivePhiFunctions);
  52 DEFN_DEVELOP_FLAG(OptimizeIfOps);
  53 DEFN_DEVELOP_FLAG(DoCEE);
  54 DEFN_DEVELOP_FLAG(PrintCEE);
  55 DEFN_DEVELOP_FLAG(UseLocalValueNumbering);
  56 DEFN_DEVELOP_FLAG(UseGlobalValueNumbering);
  57 DEFN_PRODUCT_FLAG(UseLoopInvariantCodeMotion);
  58 DEFN_DEVELOP_FLAG(TracePredicateFailedTraps);
  59 DEFN_DEVELOP_FLAG(StressLoopInvariantCodeMotion);
  60 DEFN_DEVELOP_FLAG(TraceRangeCheckElimination);
  61 DEFN_DEVELOP_FLAG(AssertRangeCheckElimination);
  62 DEFN_DEVELOP_FLAG(StressRangeCheckElimination);
  63 DEFN_DEVELOP_FLAG(PrintValueNumbering);
  64 DEFN_PRODUCT_FLAG(ValueMapInitialSize); DEFN_PRODUCT_RANGE(ValueMapInitialSize);
  65 DEFN_PRODUCT_FLAG(ValueMapMaxLoopSize); DEFN_PRODUCT_RANGE(ValueMapMaxLoopSize);
  66 DEFN_DEVELOP_FLAG(EliminateBlocks);
  67 DEFN_DEVELOP_FLAG(PrintBlockElimination);
  68 DEFN_DEVELOP_FLAG(EliminateNullChecks);
  69 DEFN_DEVELOP_FLAG(PrintNullCheckElimination);
  70 DEFN_DEVELOP_FLAG(EliminateFieldAccess);
  71 DEFN_DEVELOP_FLAG(InlineMethodsWithExceptionHandlers);
  72 DEFN_PRODUCT_FLAG(InlineSynchronizedMethods);
  73 DEFN_PRODUCT_FLAG(InlineNIOCheckIndex);
  74 DEFN_DEVELOP_FLAG(CanonicalizeNodes);
  75 DEFN_DEVELOP_FLAG(PrintCanonicalization);
  76 DEFN_DEVELOP_FLAG(UseTableRanges);
  77 DEFN_DEVELOP_FLAG(NestedInliningSizeRatio); DEFN_DEVELOP_RANGE(NestedInliningSizeRatio);
  78 DEFN_NOTPROD_FLAG(PrintIRWithLIR);
  79 DEFN_NOTPROD_FLAG(PrintLIRWithAssembly);
  80 DEFN_DEVELOP_FLAG(CommentedAssembly);
  81 DEFN_DEVELOP_FLAG(LIRTracePeephole);
  82 DEFN_DEVELOP_FLAG(LIRTraceExecution);
  83 DEFN_PRODUCT_FLAG_PD(LIRFillDelaySlots);
  84 DEFN_DEVELOP_FLAG_PD(CSEArrayLength);
  85 DEFN_DEVELOP_FLAG_PD(TwoOperandLIRForm);
  86 DEFN_DEVELOP_FLAG(TraceLinearScanLevel); DEFN_DEVELOP_RANGE(TraceLinearScanLevel);
  87 DEFN_DEVELOP_FLAG(StressLinearScan);
  88 DEFN_PRODUCT_FLAG(TimeLinearScan);
  89 DEFN_DEVELOP_FLAG(TimeEachLinearScan);
  90 DEFN_DEVELOP_FLAG(CountLinearScan);
  91 DEFN_DEVELOP_FLAG(C1Breakpoint);
  92 DEFN_DEVELOP_FLAG(ImplicitDiv0Checks);
  93 DEFN_DEVELOP_FLAG(PinAllInstructions);
  94 DEFN_DEVELOP_FLAG(UseFastNewInstance);
  95 DEFN_DEVELOP_FLAG(UseFastNewTypeArray);
  96 DEFN_DEVELOP_FLAG(UseFastNewObjectArray);
  97 DEFN_DEVELOP_FLAG(UseFastLocking);
  98 DEFN_DEVELOP_FLAG(UseSlowPath);
  99 DEFN_DEVELOP_FLAG(GenerateArrayStoreCheck);
 100 DEFN_DEVELOP_FLAG(DeoptC1);
 101 DEFN_DEVELOP_FLAG(PrintBailouts);
 102 DEFN_DEVELOP_FLAG(TracePatching);
 103 DEFN_DEVELOP_FLAG(PatchALot);
 104 DEFN_DEVELOP_FLAG(PrintNotLoaded);
 105 DEFN_DEVELOP_FLAG(PrintLIR);
 106 DEFN_DEVELOP_FLAG(BailoutAfterHIR);
 107 DEFN_DEVELOP_FLAG(BailoutAfterLIR);
 108 DEFN_DEVELOP_FLAG(BailoutOnExceptionHandlers);
 109 DEFN_DEVELOP_FLAG(InstallMethods);
 110 DEFN_DEVELOP_FLAG(NMethodSizeLimit); DEFN_DEVELOP_RANGE(NMethodSizeLimit);
 111 DEFN_DEVELOP_FLAG(TraceFPUStack);
 112 DEFN_DEVELOP_FLAG(TraceFPURegisterUsage);
 113 DEFN_DEVELOP_FLAG(OptimizeUnsafes);
 114 DEFN_DEVELOP_FLAG(PrintUnsafeOptimization);
 115 DEFN_DEVELOP_FLAG(InstructionCountCutoff); DEFN_DEVELOP_RANGE(InstructionCountCutoff);
 116 DEFN_DEVELOP_FLAG(ComputeExactFPURegisterUsage);
 117 DEFN_PRODUCT_FLAG(C1ProfileCalls);
 118 DEFN_PRODUCT_FLAG(C1ProfileVirtualCalls);
 119 DEFN_PRODUCT_FLAG(C1ProfileInlinedCalls);
 120 DEFN_PRODUCT_FLAG(C1ProfileBranches);
 121 DEFN_PRODUCT_FLAG(C1ProfileCheckcasts);
 122 DEFN_PRODUCT_FLAG(C1OptimizeVirtualCallProfiling);
 123 DEFN_PRODUCT_FLAG(C1UpdateMethodData);
 124 DEFN_DEVELOP_FLAG(PrintCFGToFile);