src/share/vm/runtime/globals_extension.hpp

Thu, 24 May 2018 19:24:53 +0800

author
aoqi
date
Thu, 24 May 2018 19:24:53 +0800
changeset 8861
2a33b32dd03c
parent 7535
7ae4e26cb1e0
child 9931
fd44df5e3bc3
permissions
-rw-r--r--

#7046 Disable the compilation when branch offset is beyond short branch
Contributed-by: fujie, aoqi

aoqi@0 1 /*
aoqi@0 2 * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
aoqi@0 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
aoqi@0 4 *
aoqi@0 5 * This code is free software; you can redistribute it and/or modify it
aoqi@0 6 * under the terms of the GNU General Public License version 2 only, as
aoqi@0 7 * published by the Free Software Foundation.
aoqi@0 8 *
aoqi@0 9 * This code is distributed in the hope that it will be useful, but WITHOUT
aoqi@0 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
aoqi@0 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
aoqi@0 12 * version 2 for more details (a copy is included in the LICENSE file that
aoqi@0 13 * accompanied this code).
aoqi@0 14 *
aoqi@0 15 * You should have received a copy of the GNU General Public License version
aoqi@0 16 * 2 along with this work; if not, write to the Free Software Foundation,
aoqi@0 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
aoqi@0 18 *
aoqi@0 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
aoqi@0 20 * or visit www.oracle.com if you need additional information or have any
aoqi@0 21 * questions.
aoqi@0 22 *
aoqi@0 23 */
aoqi@0 24
aoqi@0 25 #ifndef SHARE_VM_RUNTIME_GLOBALS_EXTENSION_HPP
aoqi@0 26 #define SHARE_VM_RUNTIME_GLOBALS_EXTENSION_HPP
aoqi@0 27
aoqi@0 28 #include "runtime/globals.hpp"
aoqi@0 29 #include "utilities/macros.hpp"
aoqi@0 30 #include "utilities/top.hpp"
aoqi@0 31
aoqi@0 32 // Construct enum of Flag_<cmdline-arg> constants.
aoqi@0 33
aoqi@0 34 // Parens left off in the following for the enum decl below.
aoqi@0 35 #define FLAG_MEMBER(flag) Flag_##flag
aoqi@0 36
aoqi@0 37 #define RUNTIME_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 38 #define RUNTIME_PD_PRODUCT_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
aoqi@0 39 #define RUNTIME_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 40 #define RUNTIME_EXPERIMENTAL_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 41 #define RUNTIME_MANAGEABLE_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 42 #define RUNTIME_PRODUCT_RW_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 43 #define RUNTIME_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 44 #define RUNTIME_PD_DEVELOP_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
aoqi@0 45 #define RUNTIME_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 46
aoqi@0 47 #ifdef _LP64
aoqi@0 48 #define RUNTIME_LP64_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 49 #else
aoqi@0 50 #define RUNTIME_LP64_PRODUCT_FLAG_MEMBER(type, name, value, doc) /* flag is constant */
aoqi@0 51 #endif // _LP64
aoqi@0 52
aoqi@0 53 #define C1_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 54 #define C1_PD_PRODUCT_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
aoqi@0 55 #define C1_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 56 #define C1_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 57 #define C1_PD_DEVELOP_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
aoqi@0 58 #define C1_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 59
aoqi@0 60 #define C2_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 61 #define C2_PD_PRODUCT_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
aoqi@0 62 #define C2_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 63 #define C2_EXPERIMENTAL_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 64 #define C2_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 65 #define C2_PD_DEVELOP_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
aoqi@0 66 #define C2_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 67
aoqi@0 68 #define ARCH_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 69 #define ARCH_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 70 #define ARCH_EXPERIMENTAL_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 71 #define ARCH_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 72 #define ARCH_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
aoqi@0 73
aoqi@0 74 typedef enum {
aoqi@0 75 RUNTIME_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER, RUNTIME_PD_DEVELOP_FLAG_MEMBER, RUNTIME_PRODUCT_FLAG_MEMBER, RUNTIME_PD_PRODUCT_FLAG_MEMBER, RUNTIME_DIAGNOSTIC_FLAG_MEMBER, RUNTIME_EXPERIMENTAL_FLAG_MEMBER, RUNTIME_NOTPRODUCT_FLAG_MEMBER, RUNTIME_MANAGEABLE_FLAG_MEMBER, RUNTIME_PRODUCT_RW_FLAG_MEMBER, RUNTIME_LP64_PRODUCT_FLAG_MEMBER)
aoqi@0 76 RUNTIME_OS_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER, RUNTIME_PD_DEVELOP_FLAG_MEMBER, RUNTIME_PRODUCT_FLAG_MEMBER, RUNTIME_PD_PRODUCT_FLAG_MEMBER, RUNTIME_DIAGNOSTIC_FLAG_MEMBER, RUNTIME_NOTPRODUCT_FLAG_MEMBER)
aoqi@0 77 #if INCLUDE_ALL_GCS
aoqi@0 78 G1_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER, RUNTIME_PD_DEVELOP_FLAG_MEMBER, RUNTIME_PRODUCT_FLAG_MEMBER, RUNTIME_PD_PRODUCT_FLAG_MEMBER, RUNTIME_DIAGNOSTIC_FLAG_MEMBER, RUNTIME_EXPERIMENTAL_FLAG_MEMBER, RUNTIME_NOTPRODUCT_FLAG_MEMBER, RUNTIME_MANAGEABLE_FLAG_MEMBER, RUNTIME_PRODUCT_RW_FLAG_MEMBER)
aoqi@0 79 #endif // INCLUDE_ALL_GCS
aoqi@0 80 #ifdef COMPILER1
aoqi@0 81 C1_FLAGS(C1_DEVELOP_FLAG_MEMBER, C1_PD_DEVELOP_FLAG_MEMBER, C1_PRODUCT_FLAG_MEMBER, C1_PD_PRODUCT_FLAG_MEMBER, C1_DIAGNOSTIC_FLAG_MEMBER, C1_NOTPRODUCT_FLAG_MEMBER)
aoqi@0 82 #endif
aoqi@0 83 #ifdef COMPILER2
aoqi@0 84 C2_FLAGS(C2_DEVELOP_FLAG_MEMBER, C2_PD_DEVELOP_FLAG_MEMBER, C2_PRODUCT_FLAG_MEMBER, C2_PD_PRODUCT_FLAG_MEMBER, C2_DIAGNOSTIC_FLAG_MEMBER, C2_EXPERIMENTAL_FLAG_MEMBER, C2_NOTPRODUCT_FLAG_MEMBER)
aoqi@0 85 #endif
aoqi@0 86 ARCH_FLAGS(ARCH_DEVELOP_FLAG_MEMBER, ARCH_PRODUCT_FLAG_MEMBER, ARCH_DIAGNOSTIC_FLAG_MEMBER, ARCH_EXPERIMENTAL_FLAG_MEMBER, ARCH_NOTPRODUCT_FLAG_MEMBER)
aoqi@0 87 COMMANDLINEFLAG_EXT
aoqi@0 88 NUM_CommandLineFlag
aoqi@0 89 } CommandLineFlag;
aoqi@0 90
aoqi@0 91 // Construct enum of Flag_<cmdline-arg>_<type> constants.
aoqi@0 92
aoqi@0 93 #define FLAG_MEMBER_WITH_TYPE(flag,type) Flag_##flag##_##type
aoqi@0 94
aoqi@0 95 #define RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 96 #define RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 97 #define RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 98 #define RUNTIME_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 99 #define RUNTIME_MANAGEABLE_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 100 #define RUNTIME_PRODUCT_RW_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 101 #define RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 102 #define RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 103 #define RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 104
aoqi@0 105 #define C1_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 106 #define C1_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 107 #define C1_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 108 #define C1_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 109 #define C1_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 110 #define C1_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 111
aoqi@0 112 #ifdef _LP64
aoqi@0 113 #define RUNTIME_LP64_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 114 #else
aoqi@0 115 #define RUNTIME_LP64_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) /* flag is constant */
aoqi@0 116 #endif // _LP64
aoqi@0 117
aoqi@0 118 #define C2_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 119 #define C2_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 120 #define C2_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 121 #define C2_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 122 #define C2_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 123 #define C2_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 124 #define C2_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 125
aoqi@0 126 #define ARCH_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 127 #define ARCH_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 128 #define ARCH_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 129 #define ARCH_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 130 #define ARCH_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
aoqi@0 131
aoqi@0 132 typedef enum {
aoqi@0 133 RUNTIME_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE,
aoqi@0 134 RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
aoqi@0 135 RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE,
aoqi@0 136 RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
aoqi@0 137 RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
aoqi@0 138 RUNTIME_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE,
aoqi@0 139 RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE,
aoqi@0 140 RUNTIME_MANAGEABLE_FLAG_MEMBER_WITH_TYPE,
aoqi@0 141 RUNTIME_PRODUCT_RW_FLAG_MEMBER_WITH_TYPE,
aoqi@0 142 RUNTIME_LP64_PRODUCT_FLAG_MEMBER_WITH_TYPE)
aoqi@0 143 RUNTIME_OS_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE,
aoqi@0 144 RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
aoqi@0 145 RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE,
aoqi@0 146 RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
aoqi@0 147 RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
aoqi@0 148 RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE)
aoqi@0 149 #if INCLUDE_ALL_GCS
aoqi@0 150 G1_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE,
aoqi@0 151 RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
aoqi@0 152 RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE,
aoqi@0 153 RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
aoqi@0 154 RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
aoqi@0 155 RUNTIME_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE,
aoqi@0 156 RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE,
aoqi@0 157 RUNTIME_MANAGEABLE_FLAG_MEMBER_WITH_TYPE,
aoqi@0 158 RUNTIME_PRODUCT_RW_FLAG_MEMBER_WITH_TYPE)
aoqi@0 159 #endif // INCLUDE_ALL_GCS
aoqi@0 160 #ifdef COMPILER1
aoqi@0 161 C1_FLAGS(C1_DEVELOP_FLAG_MEMBER_WITH_TYPE,
aoqi@0 162 C1_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
aoqi@0 163 C1_PRODUCT_FLAG_MEMBER_WITH_TYPE,
aoqi@0 164 C1_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
aoqi@0 165 C1_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
aoqi@0 166 C1_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE)
aoqi@0 167 #endif
aoqi@0 168 #ifdef COMPILER2
aoqi@0 169 C2_FLAGS(C2_DEVELOP_FLAG_MEMBER_WITH_TYPE,
aoqi@0 170 C2_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
aoqi@0 171 C2_PRODUCT_FLAG_MEMBER_WITH_TYPE,
aoqi@0 172 C2_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
aoqi@0 173 C2_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
aoqi@0 174 C2_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE,
aoqi@0 175 C2_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE)
aoqi@0 176 #endif
aoqi@0 177 ARCH_FLAGS(ARCH_DEVELOP_FLAG_MEMBER_WITH_TYPE,
aoqi@0 178 ARCH_PRODUCT_FLAG_MEMBER_WITH_TYPE,
aoqi@0 179 ARCH_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
aoqi@0 180 ARCH_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE,
aoqi@0 181 ARCH_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE)
aoqi@0 182 COMMANDLINEFLAGWITHTYPE_EXT
aoqi@0 183 NUM_CommandLineFlagWithType
aoqi@0 184 } CommandLineFlagWithType;
aoqi@0 185
aoqi@0 186 #define FLAG_IS_DEFAULT(name) (CommandLineFlagsEx::is_default(FLAG_MEMBER(name)))
aoqi@0 187 #define FLAG_IS_ERGO(name) (CommandLineFlagsEx::is_ergo(FLAG_MEMBER(name)))
aoqi@0 188 #define FLAG_IS_CMDLINE(name) (CommandLineFlagsEx::is_cmdline(FLAG_MEMBER(name)))
aoqi@0 189
aoqi@0 190 #define FLAG_SET_DEFAULT(name, value) ((name) = (value))
aoqi@0 191
aoqi@0 192 #define FLAG_SET_CMDLINE(type, name, value) (CommandLineFlagsEx::type##AtPut(FLAG_MEMBER_WITH_TYPE(name,type), (type)(value), Flag::COMMAND_LINE))
aoqi@0 193 #define FLAG_SET_ERGO(type, name, value) (CommandLineFlagsEx::type##AtPut(FLAG_MEMBER_WITH_TYPE(name,type), (type)(value), Flag::ERGONOMIC))
aoqi@0 194
aoqi@0 195 // Can't put the following in CommandLineFlags because
aoqi@0 196 // of a circular dependency on the enum definition.
aoqi@0 197 class CommandLineFlagsEx : CommandLineFlags {
aoqi@0 198 public:
aoqi@0 199 static void boolAtPut(CommandLineFlagWithType flag, bool value, Flag::Flags origin);
aoqi@0 200 static void intxAtPut(CommandLineFlagWithType flag, intx value, Flag::Flags origin);
aoqi@0 201 static void uintxAtPut(CommandLineFlagWithType flag, uintx value, Flag::Flags origin);
aoqi@0 202 static void uint64_tAtPut(CommandLineFlagWithType flag, uint64_t value, Flag::Flags origin);
aoqi@0 203 static void doubleAtPut(CommandLineFlagWithType flag, double value, Flag::Flags origin);
iignatyev@6962 204 // Contract: Flag will make private copy of the incoming value
aoqi@0 205 static void ccstrAtPut(CommandLineFlagWithType flag, ccstr value, Flag::Flags origin);
aoqi@0 206
aoqi@0 207 static bool is_default(CommandLineFlag flag);
aoqi@0 208 static bool is_ergo(CommandLineFlag flag);
aoqi@0 209 static bool is_cmdline(CommandLineFlag flag);
aoqi@0 210 };
aoqi@0 211
aoqi@0 212 #endif // SHARE_VM_RUNTIME_GLOBALS_EXTENSION_HPP

mercurial