src/share/vm/jvmci/jvmci_globals.cpp

Print this page




  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 "jvmci/jvmci_globals.hpp"
  27 #include "utilities/defaultStream.hpp"
  28 #include "runtime/globals_extension.hpp"
  29 
  30 JVMCI_FLAGS(MATERIALIZE_DEVELOPER_FLAG, \
  31             MATERIALIZE_PD_DEVELOPER_FLAG, \
  32             MATERIALIZE_PRODUCT_FLAG, \
  33             MATERIALIZE_PD_PRODUCT_FLAG, \
  34             MATERIALIZE_DIAGNOSTIC_FLAG, \

  35             MATERIALIZE_EXPERIMENTAL_FLAG, \
  36             MATERIALIZE_NOTPRODUCT_FLAG,
  37             IGNORE_RANGE, \
  38             IGNORE_CONSTRAINT)
  39 
  40 #define JVMCI_IGNORE_FLAG_FOUR_PARAM(type, name, value, doc)
  41 #define JVMCI_IGNORE_FLAG_THREE_PARAM(type, name, doc)
  42 
  43 // Return true if jvmci flags are consistent.
  44 bool JVMCIGlobals::check_jvmci_flags_are_consistent() {
  45   if (EnableJVMCI) {
  46     return true;
  47   }
  48 
  49   // "FLAG_IS_DEFAULT" fail count.
  50   int fail_count = 0;
  51   // Number of "FLAG_IS_DEFAULT" fails that should be skipped before code
  52   // detect real consistency failure.
  53   int skip_fail_count;
  54 


  71 
  72 #define EMIT_FLAG_VALUE_CHANGED_CHECK_CODE(FLAG)  \
  73   if (!FLAG_IS_DEFAULT(FLAG)) {                   \
  74     fail_count++;                                 \
  75     if (fail_count > skip_fail_count) {           \
  76       return false;                               \
  77     }                                             \
  78   }
  79 
  80 #define JVMCI_DIAGNOSTIC_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, value, doc)     EMIT_FLAG_VALUE_CHANGED_CHECK_CODE(name)
  81 #define JVMCI_EXPERIMENTAL_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, value, doc)   EMIT_FLAG_VALUE_CHANGED_CHECK_CODE(name)
  82 
  83   // Check consistency of diagnostic flags if UnlockDiagnosticVMOptions is true
  84   // or not default. UnlockDiagnosticVMOptions is default true in debug builds.
  85   if (UnlockDiagnosticVMOptions || !FLAG_IS_DEFAULT(UnlockDiagnosticVMOptions)) {
  86     JVMCI_FLAGS(JVMCI_IGNORE_FLAG_FOUR_PARAM, \
  87                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
  88                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
  89                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
  90                 JVMCI_DIAGNOSTIC_FLAG_VALUE_CHANGED_CHECK_CODE, \

  91                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
  92                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
  93                 IGNORE_RANGE, \
  94                 IGNORE_CONSTRAINT)
  95   }
  96 
  97   // Check consistency of experimental flags if UnlockExperimentalVMOptions is
  98   // true or not default.
  99   if (UnlockExperimentalVMOptions || !FLAG_IS_DEFAULT(UnlockExperimentalVMOptions)) {
 100     JVMCI_FLAGS(JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 101                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
 102                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 103                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
 104                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \

 105                 JVMCI_EXPERIMENTAL_FLAG_VALUE_CHANGED_CHECK_CODE, \
 106                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 107                 IGNORE_RANGE, \
 108                 IGNORE_CONSTRAINT)
 109   }
 110 
 111 #ifndef PRODUCT
 112 #define JVMCI_DEVELOP_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, value, doc)        EMIT_FLAG_VALUE_CHANGED_CHECK_CODE(name)
 113 #define JVMCI_PD_DEVELOP_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, doc)            EMIT_FLAG_VALUE_CHANGED_CHECK_CODE(name)
 114 #define JVMCI_NOTPRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, value, doc)     EMIT_FLAG_VALUE_CHANGED_CHECK_CODE(name)
 115 #else
 116 #define JVMCI_DEVELOP_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, value, doc)
 117 #define JVMCI_PD_DEVELOP_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, doc)
 118 #define JVMCI_NOTPRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, value, doc)
 119 #endif
 120 
 121 #define JVMCI_PD_PRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, doc)            EMIT_FLAG_VALUE_CHANGED_CHECK_CODE(name)
 122 #define JVMCI_PRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, value, doc)        EMIT_FLAG_VALUE_CHANGED_CHECK_CODE(name)
 123 
 124   JVMCI_FLAGS(JVMCI_DEVELOP_FLAG_VALUE_CHANGED_CHECK_CODE, \
 125               JVMCI_PD_DEVELOP_FLAG_VALUE_CHANGED_CHECK_CODE, \
 126               JVMCI_PRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE, \
 127               JVMCI_PD_PRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE, \
 128               JVMCI_IGNORE_FLAG_FOUR_PARAM, \

 129               JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 130               JVMCI_NOTPRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE, \
 131               IGNORE_RANGE, \
 132               IGNORE_CONSTRAINT)
 133 
 134 #undef EMIT_FLAG_VALUE_CHANGED_CHECK_CODE
 135 #undef JVMCI_DEVELOP_FLAG_VALUE_CHANGED_CHECK_CODE
 136 #undef JVMCI_PD_DEVELOP_FLAG_VALUE_CHANGED_CHECK_CODE
 137 #undef JVMCI_NOTPRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE
 138 #undef JVMCI_DIAGNOSTIC_FLAG_VALUE_CHANGED_CHECK_CODE
 139 #undef JVMCI_PD_PRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE
 140 #undef JVMCI_PRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE
 141 #undef JVMCI_EXPERIMENTAL_FLAG_VALUE_CHANGED_CHECK_CODE
 142 
 143   return true;
 144 }
 145 
 146 // Print jvmci arguments inconsistency error message.
 147 void JVMCIGlobals::print_jvmci_args_inconsistency_error_message() {
 148   const char* error_msg = "Improperly specified VM option '%s'\n";
 149   jio_fprintf(defaultStream::error_stream(), "EnableJVMCI must be enabled\n");
 150 
 151 #define EMIT_CHECK_PRINT_ERR_MSG_CODE(FLAG)                         \
 152   if (!FLAG_IS_DEFAULT(FLAG)) {                                     \
 153     if (strcmp(#FLAG, "EnableJVMCI")) {                             \
 154       jio_fprintf(defaultStream::error_stream(), error_msg, #FLAG); \
 155     }                                                               \
 156   }
 157 
 158 #define JVMCI_DIAGNOSTIC_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, value, doc)     EMIT_CHECK_PRINT_ERR_MSG_CODE(name)
 159 #define JVMCI_EXPERIMENTAL_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, value, doc)   EMIT_CHECK_PRINT_ERR_MSG_CODE(name)
 160 
 161   if (UnlockDiagnosticVMOptions || !FLAG_IS_DEFAULT(UnlockDiagnosticVMOptions)) {
 162     JVMCI_FLAGS(JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 163                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
 164                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 165                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
 166                 JVMCI_DIAGNOSTIC_FLAG_CHECK_PRINT_ERR_MSG_CODE, \

 167                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 168                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 169                 IGNORE_RANGE, \
 170                 IGNORE_CONSTRAINT)
 171   }
 172 
 173   if (UnlockExperimentalVMOptions || !FLAG_IS_DEFAULT(UnlockExperimentalVMOptions)) {
 174     JVMCI_FLAGS(JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 175                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
 176                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 177                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
 178                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \

 179                 JVMCI_EXPERIMENTAL_FLAG_CHECK_PRINT_ERR_MSG_CODE, \
 180                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 181                 IGNORE_RANGE, \
 182                 IGNORE_CONSTRAINT)
 183   }
 184 
 185 #ifndef PRODUCT
 186 #define JVMCI_DEVELOP_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, value, doc)        EMIT_CHECK_PRINT_ERR_MSG_CODE(name)
 187 #define JVMCI_PD_DEVELOP_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, doc)            EMIT_CHECK_PRINT_ERR_MSG_CODE(name)
 188 #define JVMCI_NOTPRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, value, doc)     EMIT_CHECK_PRINT_ERR_MSG_CODE(name)
 189 #else
 190 #define JVMCI_DEVELOP_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, value, doc)
 191 #define JVMCI_PD_DEVELOP_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, doc)
 192 #define JVMCI_NOTPRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, value, doc)
 193 #endif
 194 
 195 #define JVMCI_PD_PRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, doc)            EMIT_CHECK_PRINT_ERR_MSG_CODE(name)
 196 #define JVMCI_PRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, value, doc)        EMIT_CHECK_PRINT_ERR_MSG_CODE(name)
 197 
 198   JVMCI_FLAGS(JVMCI_DEVELOP_FLAG_CHECK_PRINT_ERR_MSG_CODE, \
 199               JVMCI_PD_DEVELOP_FLAG_CHECK_PRINT_ERR_MSG_CODE, \
 200               JVMCI_PRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE, \
 201               JVMCI_PD_PRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE, \
 202               JVMCI_IGNORE_FLAG_FOUR_PARAM, \

 203               JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 204               JVMCI_NOTPRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE, \
 205               IGNORE_RANGE, \
 206               IGNORE_CONSTRAINT)
 207 
 208 #undef EMIT_CHECK_PRINT_ERR_MSG_CODE
 209 #undef JVMCI_DEVELOP_FLAG_CHECK_PRINT_ERR_MSG_CODE
 210 #undef JVMCI_PD_DEVELOP_FLAG_CHECK_PRINT_ERR_MSG_CODE
 211 #undef JVMCI_NOTPRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE
 212 #undef JVMCI_PD_PRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE
 213 #undef JVMCI_PRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE
 214 #undef JVMCI_DIAGNOSTIC_FLAG_CHECK_PRINT_ERR_MSG_CODE
 215 #undef JVMCI_EXPERIMENTAL_FLAG_CHECK_PRINT_ERR_MSG_CODE
 216 
 217 }
 218 
 219 #undef JVMCI_IGNORE_FLAG_FOUR_PARAM
 220 #undef JVMCI_IGNORE_FLAG_THREE_PARAM


  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 "jvmci/jvmci_globals.hpp"
  27 #include "utilities/defaultStream.hpp"
  28 #include "runtime/globals_extension.hpp"
  29 
  30 JVMCI_FLAGS(MATERIALIZE_DEVELOPER_FLAG, \
  31             MATERIALIZE_PD_DEVELOPER_FLAG, \
  32             MATERIALIZE_PRODUCT_FLAG, \
  33             MATERIALIZE_PD_PRODUCT_FLAG, \
  34             MATERIALIZE_DIAGNOSTIC_FLAG, \
  35             MATERIALIZE_PD_DIAGNOSTIC_FLAG, \
  36             MATERIALIZE_EXPERIMENTAL_FLAG, \
  37             MATERIALIZE_NOTPRODUCT_FLAG,
  38             IGNORE_RANGE, \
  39             IGNORE_CONSTRAINT)
  40 
  41 #define JVMCI_IGNORE_FLAG_FOUR_PARAM(type, name, value, doc)
  42 #define JVMCI_IGNORE_FLAG_THREE_PARAM(type, name, doc)
  43 
  44 // Return true if jvmci flags are consistent.
  45 bool JVMCIGlobals::check_jvmci_flags_are_consistent() {
  46   if (EnableJVMCI) {
  47     return true;
  48   }
  49 
  50   // "FLAG_IS_DEFAULT" fail count.
  51   int fail_count = 0;
  52   // Number of "FLAG_IS_DEFAULT" fails that should be skipped before code
  53   // detect real consistency failure.
  54   int skip_fail_count;
  55 


  72 
  73 #define EMIT_FLAG_VALUE_CHANGED_CHECK_CODE(FLAG)  \
  74   if (!FLAG_IS_DEFAULT(FLAG)) {                   \
  75     fail_count++;                                 \
  76     if (fail_count > skip_fail_count) {           \
  77       return false;                               \
  78     }                                             \
  79   }
  80 
  81 #define JVMCI_DIAGNOSTIC_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, value, doc)     EMIT_FLAG_VALUE_CHANGED_CHECK_CODE(name)
  82 #define JVMCI_EXPERIMENTAL_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, value, doc)   EMIT_FLAG_VALUE_CHANGED_CHECK_CODE(name)
  83 
  84   // Check consistency of diagnostic flags if UnlockDiagnosticVMOptions is true
  85   // or not default. UnlockDiagnosticVMOptions is default true in debug builds.
  86   if (UnlockDiagnosticVMOptions || !FLAG_IS_DEFAULT(UnlockDiagnosticVMOptions)) {
  87     JVMCI_FLAGS(JVMCI_IGNORE_FLAG_FOUR_PARAM, \
  88                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
  89                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
  90                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
  91                 JVMCI_DIAGNOSTIC_FLAG_VALUE_CHANGED_CHECK_CODE, \
  92                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
  93                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
  94                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
  95                 IGNORE_RANGE, \
  96                 IGNORE_CONSTRAINT)
  97   }
  98 
  99   // Check consistency of experimental flags if UnlockExperimentalVMOptions is
 100   // true or not default.
 101   if (UnlockExperimentalVMOptions || !FLAG_IS_DEFAULT(UnlockExperimentalVMOptions)) {
 102     JVMCI_FLAGS(JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 103                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
 104                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 105                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
 106                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 107                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
 108                 JVMCI_EXPERIMENTAL_FLAG_VALUE_CHANGED_CHECK_CODE, \
 109                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 110                 IGNORE_RANGE, \
 111                 IGNORE_CONSTRAINT)
 112   }
 113 
 114 #ifndef PRODUCT
 115 #define JVMCI_DEVELOP_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, value, doc)        EMIT_FLAG_VALUE_CHANGED_CHECK_CODE(name)
 116 #define JVMCI_PD_DEVELOP_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, doc)            EMIT_FLAG_VALUE_CHANGED_CHECK_CODE(name)
 117 #define JVMCI_NOTPRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, value, doc)     EMIT_FLAG_VALUE_CHANGED_CHECK_CODE(name)
 118 #else
 119 #define JVMCI_DEVELOP_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, value, doc)
 120 #define JVMCI_PD_DEVELOP_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, doc)
 121 #define JVMCI_NOTPRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, value, doc)
 122 #endif
 123 
 124 #define JVMCI_PD_PRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, doc)            EMIT_FLAG_VALUE_CHANGED_CHECK_CODE(name)
 125 #define JVMCI_PRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE(type, name, value, doc)        EMIT_FLAG_VALUE_CHANGED_CHECK_CODE(name)
 126 
 127   JVMCI_FLAGS(JVMCI_DEVELOP_FLAG_VALUE_CHANGED_CHECK_CODE, \
 128               JVMCI_PD_DEVELOP_FLAG_VALUE_CHANGED_CHECK_CODE, \
 129               JVMCI_PRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE, \
 130               JVMCI_PD_PRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE, \
 131               JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 132               JVMCI_IGNORE_FLAG_THREE_PARAM, \
 133               JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 134               JVMCI_NOTPRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE, \
 135               IGNORE_RANGE, \
 136               IGNORE_CONSTRAINT)
 137 
 138 #undef EMIT_FLAG_VALUE_CHANGED_CHECK_CODE
 139 #undef JVMCI_DEVELOP_FLAG_VALUE_CHANGED_CHECK_CODE
 140 #undef JVMCI_PD_DEVELOP_FLAG_VALUE_CHANGED_CHECK_CODE
 141 #undef JVMCI_NOTPRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE
 142 #undef JVMCI_DIAGNOSTIC_FLAG_VALUE_CHANGED_CHECK_CODE
 143 #undef JVMCI_PD_PRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE
 144 #undef JVMCI_PRODUCT_FLAG_VALUE_CHANGED_CHECK_CODE
 145 #undef JVMCI_EXPERIMENTAL_FLAG_VALUE_CHANGED_CHECK_CODE
 146 
 147   return true;
 148 }
 149 
 150 // Print jvmci arguments inconsistency error message.
 151 void JVMCIGlobals::print_jvmci_args_inconsistency_error_message() {
 152   const char* error_msg = "Improperly specified VM option '%s'\n";
 153   jio_fprintf(defaultStream::error_stream(), "EnableJVMCI must be enabled\n");
 154 
 155 #define EMIT_CHECK_PRINT_ERR_MSG_CODE(FLAG)                         \
 156   if (!FLAG_IS_DEFAULT(FLAG)) {                                     \
 157     if (strcmp(#FLAG, "EnableJVMCI")) {                             \
 158       jio_fprintf(defaultStream::error_stream(), error_msg, #FLAG); \
 159     }                                                               \
 160   }
 161 
 162 #define JVMCI_DIAGNOSTIC_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, value, doc)     EMIT_CHECK_PRINT_ERR_MSG_CODE(name)
 163 #define JVMCI_EXPERIMENTAL_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, value, doc)   EMIT_CHECK_PRINT_ERR_MSG_CODE(name)
 164 
 165   if (UnlockDiagnosticVMOptions || !FLAG_IS_DEFAULT(UnlockDiagnosticVMOptions)) {
 166     JVMCI_FLAGS(JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 167                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
 168                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 169                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
 170                 JVMCI_DIAGNOSTIC_FLAG_CHECK_PRINT_ERR_MSG_CODE, \
 171                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
 172                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 173                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 174                 IGNORE_RANGE, \
 175                 IGNORE_CONSTRAINT)
 176   }
 177 
 178   if (UnlockExperimentalVMOptions || !FLAG_IS_DEFAULT(UnlockExperimentalVMOptions)) {
 179     JVMCI_FLAGS(JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 180                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
 181                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 182                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
 183                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 184                 JVMCI_IGNORE_FLAG_THREE_PARAM, \
 185                 JVMCI_EXPERIMENTAL_FLAG_CHECK_PRINT_ERR_MSG_CODE, \
 186                 JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 187                 IGNORE_RANGE, \
 188                 IGNORE_CONSTRAINT)
 189   }
 190 
 191 #ifndef PRODUCT
 192 #define JVMCI_DEVELOP_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, value, doc)        EMIT_CHECK_PRINT_ERR_MSG_CODE(name)
 193 #define JVMCI_PD_DEVELOP_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, doc)            EMIT_CHECK_PRINT_ERR_MSG_CODE(name)
 194 #define JVMCI_NOTPRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, value, doc)     EMIT_CHECK_PRINT_ERR_MSG_CODE(name)
 195 #else
 196 #define JVMCI_DEVELOP_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, value, doc)
 197 #define JVMCI_PD_DEVELOP_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, doc)
 198 #define JVMCI_NOTPRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, value, doc)
 199 #endif
 200 
 201 #define JVMCI_PD_PRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, doc)            EMIT_CHECK_PRINT_ERR_MSG_CODE(name)
 202 #define JVMCI_PRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE(type, name, value, doc)        EMIT_CHECK_PRINT_ERR_MSG_CODE(name)
 203 
 204   JVMCI_FLAGS(JVMCI_DEVELOP_FLAG_CHECK_PRINT_ERR_MSG_CODE, \
 205               JVMCI_PD_DEVELOP_FLAG_CHECK_PRINT_ERR_MSG_CODE, \
 206               JVMCI_PRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE, \
 207               JVMCI_PD_PRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE, \
 208               JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 209               JVMCI_IGNORE_FLAG_THREE_PARAM, \
 210               JVMCI_IGNORE_FLAG_FOUR_PARAM, \
 211               JVMCI_NOTPRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE, \
 212               IGNORE_RANGE, \
 213               IGNORE_CONSTRAINT)
 214 
 215 #undef EMIT_CHECK_PRINT_ERR_MSG_CODE
 216 #undef JVMCI_DEVELOP_FLAG_CHECK_PRINT_ERR_MSG_CODE
 217 #undef JVMCI_PD_DEVELOP_FLAG_CHECK_PRINT_ERR_MSG_CODE
 218 #undef JVMCI_NOTPRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE
 219 #undef JVMCI_PD_PRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE
 220 #undef JVMCI_PRODUCT_FLAG_CHECK_PRINT_ERR_MSG_CODE
 221 #undef JVMCI_DIAGNOSTIC_FLAG_CHECK_PRINT_ERR_MSG_CODE
 222 #undef JVMCI_EXPERIMENTAL_FLAG_CHECK_PRINT_ERR_MSG_CODE
 223 
 224 }
 225 
 226 #undef JVMCI_IGNORE_FLAG_FOUR_PARAM
 227 #undef JVMCI_IGNORE_FLAG_THREE_PARAM