11#if defined(__ANDROID__)
12# include <sys/cdefs.h>
13#elif defined(__APPLE__)
14# include <TargetConditionals.h>
15#elif defined(__linux__)
27#if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
28# define V8_GLIBC_PREREQ(major, minor) \
29 ((__GLIBC__ * 100 + __GLIBC_MINOR__) >= ((major) * 100 + (minor)))
31# define V8_GLIBC_PREREQ(major, minor) 0
42#if defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
43# define V8_GNUC_PREREQ(major, minor, patchlevel) \
44 ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= \
45 ((major) * 10000 + (minor) * 100 + (patchlevel)))
46#elif defined(__GNUC__) && defined(__GNUC_MINOR__)
47# define V8_GNUC_PREREQ(major, minor, patchlevel) \
48 ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100) >= \
49 ((major) * 10000 + (minor) * 100 + (patchlevel)))
51# define V8_GNUC_PREREQ(major, minor, patchlevel) 0
75#if defined(__ANDROID__)
76# define V8_OS_ANDROID 1
79#elif defined(__APPLE__)
81# define V8_OS_MACOSX 1
83#elif defined(__CYGWIN__)
84# define V8_OS_CYGWIN 1
86#elif defined(__linux__)
91# define V8_OS_SOLARIS 1
95#elif defined(__FreeBSD__)
97# define V8_OS_FREEBSD 1
99#elif defined(__Fuchsia__)
100# define V8_OS_FUCHSIA 1
101# define V8_OS_POSIX 1
102#elif defined(__DragonFly__)
104# define V8_OS_DRAGONFLYBSD 1
105# define V8_OS_POSIX 1
106#elif defined(__NetBSD__)
108# define V8_OS_NETBSD 1
109# define V8_OS_POSIX 1
110#elif defined(__OpenBSD__)
112# define V8_OS_OPENBSD 1
113# define V8_OS_POSIX 1
114#elif defined(__QNXNTO__)
115# define V8_OS_POSIX 1
137#if defined (_MSC_VER)
138# define V8_LIBC_MSVCRT 1
139#elif defined(__BIONIC__)
140# define V8_LIBC_BIONIC 1
141# define V8_LIBC_BSD 1
142#elif defined(__UCLIBC__)
144# define V8_LIBC_UCLIBC 1
145#elif defined(__GLIBC__) || defined(__GNU_LIBRARY__)
146# define V8_LIBC_GLIBC 1
148# define V8_LIBC_BSD V8_OS_BSD
201#if defined(__clang__)
208# define V8_HAS___ALIGNOF 1
209# define V8_HAS___ALIGNOF__ V8_HAS___ALIGNOF
211# define V8_HAS_ATTRIBUTE_ALIGNED (__has_attribute(aligned))
212# define V8_HAS_ATTRIBUTE_ALWAYS_INLINE (__has_attribute(always_inline))
213# define V8_HAS_ATTRIBUTE_DEPRECATED (__has_attribute(deprecated))
214# define V8_HAS_ATTRIBUTE_NOINLINE (__has_attribute(noinline))
215# define V8_HAS_ATTRIBUTE_UNUSED (__has_attribute(unused))
216# define V8_HAS_ATTRIBUTE_VISIBILITY (__has_attribute(visibility))
217# define V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT \
218 (__has_attribute(warn_unused_result))
220# define V8_HAS_BUILTIN_CLZ (__has_builtin(__builtin_clz))
221# define V8_HAS_BUILTIN_CTZ (__has_builtin(__builtin_ctz))
222# define V8_HAS_BUILTIN_EXPECT (__has_builtin(__builtin_expect))
223# define V8_HAS_BUILTIN_FRAME_ADDRESS (__has_builtin(__builtin_frame_address))
224# define V8_HAS_BUILTIN_POPCOUNT (__has_builtin(__builtin_popcount))
225# define V8_HAS_BUILTIN_SADD_OVERFLOW (__has_builtin(__builtin_sadd_overflow))
226# define V8_HAS_BUILTIN_SSUB_OVERFLOW (__has_builtin(__builtin_ssub_overflow))
227# define V8_HAS_BUILTIN_UADD_OVERFLOW (__has_builtin(__builtin_uadd_overflow))
229# define V8_HAS_CXX11_ALIGNAS (__has_feature(cxx_alignas))
231#elif defined(__GNUC__)
234# if defined(__INTEL_COMPILER)
235# define V8_CC_INTEL 1
237# if defined(__MINGW32__)
238# define V8_CC_MINGW32 1
240# if defined(__MINGW64__)
241# define V8_CC_MINGW64 1
243# define V8_CC_MINGW (V8_CC_MINGW32 || V8_CC_MINGW64)
245# define V8_HAS___ALIGNOF__ (V8_GNUC_PREREQ(4, 3, 0))
247# define V8_HAS_ATTRIBUTE_ALIGNED (V8_GNUC_PREREQ(2, 95, 0))
251# define V8_HAS_ATTRIBUTE_ALWAYS_INLINE (V8_GNUC_PREREQ(4, 4, 0))
252# define V8_HAS_ATTRIBUTE_DEPRECATED (V8_GNUC_PREREQ(3, 4, 0))
253# define V8_HAS_ATTRIBUTE_DEPRECATED_MESSAGE (V8_GNUC_PREREQ(4, 5, 0))
254# define V8_HAS_ATTRIBUTE_NOINLINE (V8_GNUC_PREREQ(3, 4, 0))
255# define V8_HAS_ATTRIBUTE_UNUSED (V8_GNUC_PREREQ(2, 95, 0))
256# define V8_HAS_ATTRIBUTE_VISIBILITY (V8_GNUC_PREREQ(4, 3, 0))
257# define V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT \
258 (!V8_CC_INTEL && V8_GNUC_PREREQ(4, 1, 0))
260# define V8_HAS_BUILTIN_CLZ (V8_GNUC_PREREQ(3, 4, 0))
261# define V8_HAS_BUILTIN_CTZ (V8_GNUC_PREREQ(3, 4, 0))
262# define V8_HAS_BUILTIN_EXPECT (V8_GNUC_PREREQ(2, 96, 0))
263# define V8_HAS_BUILTIN_FRAME_ADDRESS (V8_GNUC_PREREQ(2, 96, 0))
264# define V8_HAS_BUILTIN_POPCOUNT (V8_GNUC_PREREQ(3, 4, 0))
266# if __cplusplus >= 201103L
267# define V8_HAS_CXX11_ALIGNAS (V8_GNUC_PREREQ(4, 8, 0))
268# define V8_HAS_CXX11_ALIGNOF (V8_GNUC_PREREQ(4, 8, 0))
274# define V8_HAS___ALIGNOF 1
276# define V8_HAS_DECLSPEC_ALIGN 1
277# define V8_HAS_DECLSPEC_DEPRECATED 1
278# define V8_HAS_DECLSPEC_NOINLINE 1
279# define V8_HAS_DECLSPEC_SELECTANY 1
280# define V8_HAS_DECLSPEC_NORETURN 1
282# define V8_HAS___FORCEINLINE 1
293#if !defined(DEBUG) && V8_HAS_ATTRIBUTE_ALWAYS_INLINE
294# define V8_INLINE inline __attribute__((always_inline))
295#elif !defined(DEBUG) && V8_HAS___FORCEINLINE
296# define V8_INLINE __forceinline
298# define V8_INLINE inline
306#if !defined(DEBUG) && V8_HAS_ATTRIBUTE_NOINLINE
307# define V8_NOINLINE __attribute__((noinline))
308#elif !defined(DEBUG) && V8_HAS_DECLSPEC_NOINLINE
309# define V8_NOINLINE __declspec(noinline)
316#if defined(V8_DEPRECATION_WARNINGS) && V8_HAS_ATTRIBUTE_DEPRECATED_MESSAGE
317#define V8_DEPRECATED(message, declarator) \
318 declarator __attribute__((deprecated(message)))
319#elif defined(V8_DEPRECATION_WARNINGS) && V8_HAS_ATTRIBUTE_DEPRECATED
320#define V8_DEPRECATED(message, declarator) \
321 declarator __attribute__((deprecated))
322#elif defined(V8_DEPRECATION_WARNINGS) && V8_HAS_DECLSPEC_DEPRECATED
323#define V8_DEPRECATED(message, declarator) __declspec(deprecated) declarator
325#define V8_DEPRECATED(message, declarator) declarator
330#if defined(V8_IMMINENT_DEPRECATION_WARNINGS) && \
331 V8_HAS_ATTRIBUTE_DEPRECATED_MESSAGE
332#define V8_DEPRECATE_SOON(message, declarator) \
333 declarator __attribute__((deprecated(message)))
334#elif defined(V8_IMMINENT_DEPRECATION_WARNINGS) && V8_HAS_ATTRIBUTE_DEPRECATED
335#define V8_DEPRECATE_SOON(message, declarator) \
336 declarator __attribute__((deprecated))
337#elif defined(V8_IMMINENT_DEPRECATION_WARNINGS) && V8_HAS_DECLSPEC_DEPRECATED
338#define V8_DEPRECATE_SOON(message, declarator) __declspec(deprecated) declarator
340#define V8_DEPRECATE_SOON(message, declarator) declarator
345#if V8_HAS_BUILTIN_EXPECT
346# define V8_UNLIKELY(condition) (__builtin_expect(!!(condition), 0))
347# define V8_LIKELY(condition) (__builtin_expect(!!(condition), 1))
349# define V8_UNLIKELY(condition) (condition)
350# define V8_LIKELY(condition) (condition)
358#if V8_HAS_CXX11_ALIGNAS
359# define V8_ALIGNED(n) alignas(n)
360#elif V8_HAS_ATTRIBUTE_ALIGNED
361# define V8_ALIGNED(n) __attribute__((aligned(n)))
362#elif V8_HAS_DECLSPEC_ALIGN
363# define V8_ALIGNED(n) __declspec(align(n))
365# define V8_ALIGNED(n)
378#if V8_HAS_CXX11_ALIGNAS
379# define V8_ALIGNAS(type, alignment) alignas(type)
380#elif V8_HAS___ALIGNOF__ && V8_HAS_ATTRIBUTE_ALIGNED
381# define V8_ALIGNAS(type, alignment) __attribute__((aligned(__alignof__(type))))
383# define V8_ALIGNAS(type, alignment) V8_ALIGNED(alignment)
392#if V8_HAS_CXX11_ALIGNOF
393# define V8_ALIGNOF(type) alignof(type)
394#elif V8_HAS___ALIGNOF
395# define V8_ALIGNOF(type) __alignof(type)
396#elif V8_HAS___ALIGNOF__
397# define V8_ALIGNOF(type) __alignof__(type)
403# define V8_ALIGNOF(type) (sizeof(::v8::AlignOfHelper<type>) - sizeof(type))
409#if V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT
410#define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
412#define V8_WARN_UNUSED_RESULT
Definition: v8config.h:402
Definition: libplatform.h:12