237 #else // !_LP64
238 #define FORMAT64_MODIFIER "ll"
239 #endif // _LP64
240
241 // HACK: gcc warns about applying offsetof() to non-POD object or calculating
242 // offset directly when base address is NULL. Use 16 to get around the
243 // warning. gcc-3.4 has an option -Wno-invalid-offsetof to suppress
244 // this warning.
245 #define offset_of(klass,field) (size_t)((intx)&(((klass*)16)->field) - 16)
246
247 #ifdef offsetof
248 # undef offsetof
249 #endif
250 #define offsetof(klass,field) offset_of(klass,field)
251
252 #if defined(_LP64) && defined(__APPLE__)
253 #define JLONG_FORMAT "%ld"
254 #define JLONG_FORMAT_W(width) "%" #width "ld"
255 #endif // _LP64 && __APPLE__
256
257 #ifndef USE_LIBRARY_BASED_TLS_ONLY
258 #define THREAD_LOCAL_DECL __thread
259 #endif
260
261 // Inlining support
262 #define NOINLINE __attribute__ ((noinline))
263 #define ALWAYSINLINE inline __attribute__ ((always_inline))
264
265 // Alignment
266 //
267 // NOTE! The "+0" below is a workaround for a known bug in older GCC versions
268 // (known to fail with 4.6.0, fixed in 4.9.0). This bug affects systems such as
269 // RedHat/Oracle Linux 7.5, which ships with GCC 4.8.5. For more details, see
270 // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55382 and
271 // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53017
272 //
273 // GCC versions older than 4.6.4 would fail even with "+0", and needs additional
274 // cast to __typeof__(x) to work around the similar bug.
275 //
276 #define ATTRIBUTE_ALIGNED(x) __attribute__((aligned((__typeof__(x))x+0)))
277
278 #endif // SHARE_UTILITIES_GLOBALDEFINITIONS_GCC_HPP
|
237 #else // !_LP64
238 #define FORMAT64_MODIFIER "ll"
239 #endif // _LP64
240
241 // HACK: gcc warns about applying offsetof() to non-POD object or calculating
242 // offset directly when base address is NULL. Use 16 to get around the
243 // warning. gcc-3.4 has an option -Wno-invalid-offsetof to suppress
244 // this warning.
245 #define offset_of(klass,field) (size_t)((intx)&(((klass*)16)->field) - 16)
246
247 #ifdef offsetof
248 # undef offsetof
249 #endif
250 #define offsetof(klass,field) offset_of(klass,field)
251
252 #if defined(_LP64) && defined(__APPLE__)
253 #define JLONG_FORMAT "%ld"
254 #define JLONG_FORMAT_W(width) "%" #width "ld"
255 #endif // _LP64 && __APPLE__
256
257 #define THREAD_LOCAL __thread
258
259 // Inlining support
260 #define NOINLINE __attribute__ ((noinline))
261 #define ALWAYSINLINE inline __attribute__ ((always_inline))
262
263 // Alignment
264 //
265 // NOTE! The "+0" below is a workaround for a known bug in older GCC versions
266 // (known to fail with 4.6.0, fixed in 4.9.0). This bug affects systems such as
267 // RedHat/Oracle Linux 7.5, which ships with GCC 4.8.5. For more details, see
268 // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55382 and
269 // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53017
270 //
271 // GCC versions older than 4.6.4 would fail even with "+0", and needs additional
272 // cast to __typeof__(x) to work around the similar bug.
273 //
274 #define ATTRIBUTE_ALIGNED(x) __attribute__((aligned((__typeof__(x))x+0)))
275
276 #endif // SHARE_UTILITIES_GLOBALDEFINITIONS_GCC_HPP
|