< prev index next >

src/hotspot/share/utilities/globalDefinitions_xlc.hpp

Print this page
rev 49243 : 8199698: Change 8199275 breaks template instantiation for xlC (and potentially other compliers)


 135 #define FORMAT64_MODIFIER "l"
 136 #else // !_LP64
 137 #define FORMAT64_MODIFIER "ll"
 138 #endif // _LP64
 139 
 140 // Cannot use xlc's offsetof as implementation of hotspot's
 141 // offset_of(), because xlc warns about applying offsetof() to non-POD
 142 // object and xlc cannot compile the expression offsetof(DataLayout,
 143 // _cells[index]) in DataLayout::cell_offset() .  Therefore we define
 144 // offset_of as it is defined for gcc.
 145 #define offset_of(klass,field) (size_t)((intx)&(((klass*)16)->field) - 16)
 146 
 147 // AIX 5.3 has buggy __thread support. (see JDK-8176442).
 148 #define USE_LIBRARY_BASED_TLS_ONLY 1
 149 
 150 #ifndef USE_LIBRARY_BASED_TLS_ONLY
 151 #define THREAD_LOCAL_DECL __thread
 152 #endif
 153 
 154 // Inlining support
 155 #define NOINLINE
 156 #define ALWAYSINLINE inline __attribute__((always_inline))











 157 
 158 #endif // SHARE_VM_UTILITIES_GLOBALDEFINITIONS_XLC_HPP


 135 #define FORMAT64_MODIFIER "l"
 136 #else // !_LP64
 137 #define FORMAT64_MODIFIER "ll"
 138 #endif // _LP64
 139 
 140 // Cannot use xlc's offsetof as implementation of hotspot's
 141 // offset_of(), because xlc warns about applying offsetof() to non-POD
 142 // object and xlc cannot compile the expression offsetof(DataLayout,
 143 // _cells[index]) in DataLayout::cell_offset() .  Therefore we define
 144 // offset_of as it is defined for gcc.
 145 #define offset_of(klass,field) (size_t)((intx)&(((klass*)16)->field) - 16)
 146 
 147 // AIX 5.3 has buggy __thread support. (see JDK-8176442).
 148 #define USE_LIBRARY_BASED_TLS_ONLY 1
 149 
 150 #ifndef USE_LIBRARY_BASED_TLS_ONLY
 151 #define THREAD_LOCAL_DECL __thread
 152 #endif
 153 
 154 // Inlining support
 155 //
 156 // Be aware that for function/method declarations, xlC only supports the following
 157 // syntax (i.e. the attribute must be placed AFTER the function/method declarator):
 158 //
 159 //   void* operator new(size_t size) throw() NOINLINE;
 160 //
 161 // For function/method defintions, the more common placement BEFORE the
 162 // function/method declarator seems to be supported as well:
 163 //
 164 //   NOINLINE void* CHeapObj<F>::operator new(size_t size) throw() {...}
 165 
 166 #define NOINLINE     __attribute__((__noinline__))
 167 #define ALWAYSINLINE inline __attribute__((__always_inline__))
 168 
 169 #endif // SHARE_VM_UTILITIES_GLOBALDEFINITIONS_XLC_HPP
< prev index next >