Mon, 25 Jun 2012 21:33:35 -0400
7178670: runtime/7158800/BadUtf8.java fails in SymbolTable::rehash_table
Summary: Cannot delete _buckets and HashtableEntries in shared space (CDS)
Reviewed-by: acorn, kvn, dlong, dcubed, kamg
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 */
25 #ifndef SHARE_VM_UTILITIES_MACROS_HPP
26 #define SHARE_VM_UTILITIES_MACROS_HPP
28 // Use this to mark code that needs to be cleaned up (for development only)
29 #define NEEDS_CLEANUP
31 // Makes a string of the argument (which is not macro-expanded)
32 #define STR(a) #a
34 // Makes a string of the macro expansion of a
35 #define XSTR(a) STR(a)
37 // KERNEL variant
38 #ifdef KERNEL
39 #define COMPILER1
40 #define SERIALGC
42 #define JVMTI_KERNEL
43 #define FPROF_KERNEL
44 #define VM_STRUCTS_KERNEL
45 #define JNICHECK_KERNEL
46 #define SERVICES_KERNEL
48 #define KERNEL_RETURN {}
49 #define KERNEL_RETURN_(code) { return code; }
51 #else // KERNEL
53 #define KERNEL_RETURN /* next token must be ; */
54 #define KERNEL_RETURN_(code) /* next token must be ; */
56 #endif // KERNEL
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
255 #define define_pd_global(type, name, value) const type pd_##name = value;
257 #endif // SHARE_VM_UTILITIES_MACROS_HPP