macros.hpp revision 2721:f08d439fab8c
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 258