diff src/share/vm/utilities/macros.hpp @ 0:a61af66fc99e jdk7-b24

Initial load
author duke
date Sat, 01 Dec 2007 00:00:00 +0000
parents
children dc7f315e41f7
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/utilities/macros.hpp	Sat Dec 01 00:00:00 2007 +0000
@@ -0,0 +1,181 @@
+/*
+ * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ *
+ */
+
+// Use this to mark code that needs to be cleaned up (for development only)
+#define NEEDS_CLEANUP
+
+// Makes a string of the argument (which is not macro-expanded)
+#define STR(a)  #a
+
+// Makes a string of the macro expansion of a
+#define XSTR(a) STR(a)
+
+// KERNEL variant
+#ifdef KERNEL
+#define COMPILER1
+#define SERIALGC
+
+#define JVMTI_KERNEL
+#define FPROF_KERNEL
+#define VM_STRUCTS_KERNEL
+#define JNICHECK_KERNEL
+#define SERVICES_KERNEL
+
+#define KERNEL_RETURN        {}
+#define KERNEL_RETURN_(code) { code }
+
+#else  // KERNEL
+
+#define KERNEL_RETURN        /* next token must be ; */
+#define KERNEL_RETURN_(code) /* next token must be ; */
+
+#endif // KERNEL
+
+// COMPILER1 variant
+#ifdef COMPILER1
+#ifdef COMPILER2
+  #define TIERED
+#endif
+#define COMPILER1_PRESENT(code) code
+#else // COMPILER1
+#define COMPILER1_PRESENT(code)
+#endif // COMPILER1
+
+// COMPILER2 variant
+#ifdef COMPILER2
+#define COMPILER2_PRESENT(code) code
+#else // COMPILER2
+#define COMPILER2_PRESENT(code)
+#endif // COMPILER2
+
+
+// PRODUCT variant
+#ifdef PRODUCT
+#define PRODUCT_ONLY(code) code
+#define NOT_PRODUCT(code)
+#define PRODUCT_RETURN  {}
+#define PRODUCT_RETURN0 { return 0; }
+#define PRODUCT_RETURN_(code) { code }
+#else // PRODUCT
+#define PRODUCT_ONLY(code)
+#define NOT_PRODUCT(code) code
+#define PRODUCT_RETURN  /*next token must be ;*/
+#define PRODUCT_RETURN0 /*next token must be ;*/
+#define PRODUCT_RETURN_(code)  /*next token must be ;*/
+#endif // PRODUCT
+
+#ifdef CHECK_UNHANDLED_OOPS
+#define CHECK_UNHANDLED_OOPS_ONLY(code) code
+#define NOT_CHECK_UNHANDLED_OOPS(code)
+#else
+#define CHECK_UNHANDLED_OOPS_ONLY(code)
+#define NOT_CHECK_UNHANDLED_OOPS(code)  code
+#endif // CHECK_UNHANDLED_OOPS
+
+#ifdef CC_INTERP
+#define CC_INTERP_ONLY(code) code
+#define NOT_CC_INTERP(code)
+#else
+#define CC_INTERP_ONLY(code)
+#define NOT_CC_INTERP(code) code
+#endif // CC_INTERP
+
+#ifdef ASSERT
+#define DEBUG_ONLY(code) code
+#define NOT_DEBUG(code)
+// Historical.
+#define debug_only(code) code
+#else // ASSERT
+#define DEBUG_ONLY(code)
+#define NOT_DEBUG(code) code
+#define debug_only(code)
+#endif // ASSERT
+
+#ifdef  _LP64
+#define LP64_ONLY(code) code
+#define NOT_LP64(code)
+#else  // !_LP64
+#define LP64_ONLY(code)
+#define NOT_LP64(code) code
+#endif // _LP64
+
+#ifdef LINUX
+#define LINUX_ONLY(code) code
+#define NOT_LINUX(code)
+#else
+#define LINUX_ONLY(code)
+#define NOT_LINUX(code) code
+#endif
+
+#ifdef SOLARIS
+#define SOLARIS_ONLY(code) code
+#define NOT_SOLARIS(code)
+#else
+#define SOLARIS_ONLY(code)
+#define NOT_SOLARIS(code) code
+#endif
+
+#ifdef _WINDOWS
+#define WINDOWS_ONLY(code) code
+#define NOT_WINDOWS(code)
+#else
+#define WINDOWS_ONLY(code)
+#define NOT_WINDOWS(code) code
+#endif
+
+#ifdef IA32
+#define IA32_ONLY(code) code
+#define NOT_IA32(code)
+#else
+#define IA32_ONLY(code)
+#define NOT_IA32(code) code
+#endif
+
+#ifdef IA64
+#define IA64_ONLY(code) code
+#define NOT_IA64(code)
+#else
+#define IA64_ONLY(code)
+#define NOT_IA64(code) code
+#endif
+
+#ifdef AMD64
+#define AMD64_ONLY(code) code
+#define NOT_AMD64(code)
+#else
+#define AMD64_ONLY(code)
+#define NOT_AMD64(code) code
+#endif
+
+#ifdef SPARC
+#define SPARC_ONLY(code) code
+#define NOT_SPARC(code)
+#else
+#define SPARC_ONLY(code)
+#define NOT_SPARC(code) code
+#endif
+
+#define FIX_THIS(code) report_assertion_failure("FIX_THIS",__FILE__, __LINE__, "")
+
+#define define_pd_global(type, name, value) const type pd_##name = value;