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
|