1 /* 2 * Copyright (c) 1997, 2011, 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 #ifndef SHARE_VM_UTILITIES_MACROS_HPP 26 #define SHARE_VM_UTILITIES_MACROS_HPP 27 28 // Use this to mark code that needs to be cleaned up (for development only) 29 #define NEEDS_CLEANUP 30 31 // Makes a string of the argument (which is not macro-expanded) 32 #define STR(a) #a 33 34 // Makes a string of the macro expansion of a 35 #define XSTR(a) STR(a) 36 37 // KERNEL variant 38 #ifdef KERNEL 39 #define COMPILER1 40 #define SERIALGC 41 42 #define JVMTI_KERNEL 43 #define FPROF_KERNEL 44 #define VM_STRUCTS_KERNEL 45 #define JNICHECK_KERNEL 46 #define SERVICES_KERNEL 47 48 #define KERNEL_RETURN {} 49 #define KERNEL_RETURN_(code) { return code; } 50 51 #else // KERNEL 52 53 #define KERNEL_RETURN /* next token must be ; */ 54 #define KERNEL_RETURN_(code) /* next token must be ; */ 55 56 #endif // KERNEL 57 58 // COMPILER1 variant 59 #ifdef COMPILER1 60 #ifdef COMPILER2 61 #define TIERED 62 #endif 63 #define COMPILER1_PRESENT(code) code 64 #else // COMPILER1 65 #define COMPILER1_PRESENT(code) 66 #endif // COMPILER1 67 68 // COMPILER2 variant 69 #ifdef COMPILER2 70 #define COMPILER2_PRESENT(code) code 71 #define NOT_COMPILER2(code) 72 #else // COMPILER2 73 #define COMPILER2_PRESENT(code) 74 #define NOT_COMPILER2(code) code 75 #endif // COMPILER2 76 77 #ifdef TIERED 78 #define TIERED_ONLY(code) code 79 #define NOT_TIERED(code) 80 #else 81 #define TIERED_ONLY(code) 82 #define NOT_TIERED(code) code 83 #endif // TIERED 84 85 86 // PRODUCT variant 87 #ifdef PRODUCT 88 #define PRODUCT_ONLY(code) code 89 #define NOT_PRODUCT(code) 90 #define NOT_PRODUCT_ARG(arg) 91 #define PRODUCT_RETURN {} 92 #define PRODUCT_RETURN0 { return 0; } 93 #define PRODUCT_RETURN_(code) { code } 94 #else // PRODUCT 95 #define PRODUCT_ONLY(code) 96 #define NOT_PRODUCT(code) code 97 #define NOT_PRODUCT_ARG(arg) arg, 98 #define PRODUCT_RETURN /*next token must be ;*/ 99 #define PRODUCT_RETURN0 /*next token must be ;*/ 100 #define PRODUCT_RETURN_(code) /*next token must be ;*/ 101 #endif // PRODUCT 102 103 #ifdef CHECK_UNHANDLED_OOPS 104 #define CHECK_UNHANDLED_OOPS_ONLY(code) code 105 #define NOT_CHECK_UNHANDLED_OOPS(code) 106 #else 107 #define CHECK_UNHANDLED_OOPS_ONLY(code) 108 #define NOT_CHECK_UNHANDLED_OOPS(code) code 109 #endif // CHECK_UNHANDLED_OOPS 110 111 #ifdef CC_INTERP 112 #define CC_INTERP_ONLY(code) code 113 #define NOT_CC_INTERP(code) 114 #else 115 #define CC_INTERP_ONLY(code) 116 #define NOT_CC_INTERP(code) code 117 #endif // CC_INTERP 118 119 #ifdef ASSERT 120 #define DEBUG_ONLY(code) code 121 #define NOT_DEBUG(code) 122 #define NOT_DEBUG_RETURN /*next token must be ;*/ 123 // Historical. 124 #define debug_only(code) code 125 #else // ASSERT 126 #define DEBUG_ONLY(code) 127 #define NOT_DEBUG(code) code 128 #define NOT_DEBUG_RETURN {} 129 #define debug_only(code) 130 #endif // ASSERT 131 132 #ifdef _LP64 133 #define LP64_ONLY(code) code 134 #define NOT_LP64(code) 135 #else // !_LP64 136 #define LP64_ONLY(code) 137 #define NOT_LP64(code) code 138 #endif // _LP64 139 140 #ifdef LINUX 141 #define LINUX_ONLY(code) code 142 #define NOT_LINUX(code) 143 #else 144 #define LINUX_ONLY(code) 145 #define NOT_LINUX(code) code 146 #endif 147 148 #ifdef SOLARIS 149 #define SOLARIS_ONLY(code) code 150 #define NOT_SOLARIS(code) 151 #else 152 #define SOLARIS_ONLY(code) 153 #define NOT_SOLARIS(code) code 154 #endif 155 156 #ifdef _WINDOWS 157 #define WINDOWS_ONLY(code) code 158 #define NOT_WINDOWS(code) 159 #else 160 #define WINDOWS_ONLY(code) 161 #define NOT_WINDOWS(code) code 162 #endif 163 164 #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) 165 #define BSD_ONLY(code) code 166 #define NOT_BSD(code) 167 #else 168 #define BSD_ONLY(code) 169 #define NOT_BSD(code) code 170 #endif 171 172 #ifdef _WIN64 173 #define WIN64_ONLY(code) code 174 #define NOT_WIN64(code) 175 #else 176 #define WIN64_ONLY(code) 177 #define NOT_WIN64(code) code 178 #endif 179 180 #if defined(IA32) || defined(AMD64) 181 #define X86 182 #define X86_ONLY(code) code 183 #define NOT_X86(code) 184 #else 185 #undef X86 186 #define X86_ONLY(code) 187 #define NOT_X86(code) code 188 #endif 189 190 #ifdef IA32 191 #define IA32_ONLY(code) code 192 #define NOT_IA32(code) 193 #else 194 #define IA32_ONLY(code) 195 #define NOT_IA32(code) code 196 #endif 197 198 #ifdef IA64 199 #define IA64_ONLY(code) code 200 #define NOT_IA64(code) 201 #else 202 #define IA64_ONLY(code) 203 #define NOT_IA64(code) code 204 #endif 205 206 #ifdef AMD64 207 #define AMD64_ONLY(code) code 208 #define NOT_AMD64(code) 209 #else 210 #define AMD64_ONLY(code) 211 #define NOT_AMD64(code) code 212 #endif 213 214 #ifdef SPARC 215 #define SPARC_ONLY(code) code 216 #define NOT_SPARC(code) 217 #else 218 #define SPARC_ONLY(code) 219 #define NOT_SPARC(code) code 220 #endif 221 222 #ifdef PPC 223 #define PPC_ONLY(code) code 224 #define NOT_PPC(code) 225 #else 226 #define PPC_ONLY(code) 227 #define NOT_PPC(code) code 228 #endif 229 230 #ifdef E500V2 231 #define E500V2_ONLY(code) code 232 #define NOT_E500V2(code) 233 #else 234 #define E500V2_ONLY(code) 235 #define NOT_E500V2(code) code 236 #endif 237 238 239 #ifdef ARM 240 #define ARM_ONLY(code) code 241 #define NOT_ARM(code) 242 #else 243 #define ARM_ONLY(code) 244 #define NOT_ARM(code) code 245 #endif 246 247 #ifdef JAVASE_EMBEDDED 248 #define EMBEDDED_ONLY(code) code 249 #define NOT_EMBEDDED(code) 250 #else 251 #define EMBEDDED_ONLY(code) 252 #define NOT_EMBEDDED(code) code 253 #endif 254 255 #define define_pd_global(type, name, value) const type pd_##name = value; 256 257 #endif // SHARE_VM_UTILITIES_MACROS_HPP