11 #if defined(__ANDROID__) 
   12 # include <sys/cdefs.h> 
   13 #elif defined(__APPLE__) 
   14 # include <TargetConditionals.h> 
   15 #elif defined(__linux__
) 
   16 # include <features.h> 
   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
 
   77 # define V8_OS_LINUX 1
 
   78 # define V8_OS_POSIX 1
 
   79 #elif defined(__APPLE__) 
   81 # define V8_OS_MACOSX 1
 
   82 # define V8_OS_POSIX 1
 
   83 #elif defined(__CYGWIN__) 
   84 # define V8_OS_CYGWIN 1
 
   85 # define V8_OS_POSIX 1
 
   86 #elif defined(__linux__
) 
   87 # define V8_OS_LINUX 1
 
   88 # define V8_OS_POSIX 1
 
   90 # define V8_OS_POSIX 1
 
   91 # define V8_OS_SOLARIS 1
 
   95 #elif defined(__FreeBSD__) 
   97 # define V8_OS_FREEBSD 1
 
   98 # define V8_OS_POSIX 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
 
  117 #elif defined(_WIN32) 
  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 
  204 #if defined(__clang__
) 
  206 #if defined(__GNUC__
)   
  211 # define V8_HAS___ALIGNOF 1
 
  212 # define V8_HAS___ALIGNOF__ V8_HAS___ALIGNOF
 
  214 # define V8_HAS_ATTRIBUTE_ALIGNED (__has_attribute(aligned)) 
  215 # define V8_HAS_ATTRIBUTE_ALWAYS_INLINE (__has_attribute(always_inline)) 
  216 # define V8_HAS_ATTRIBUTE_DEPRECATED (__has_attribute(deprecated)) 
  217 # define V8_HAS_ATTRIBUTE_NOINLINE (__has_attribute(noinline)) 
  218 # define V8_HAS_ATTRIBUTE_UNUSED (__has_attribute(unused)) 
  219 # define V8_HAS_ATTRIBUTE_VISIBILITY (__has_attribute(visibility)) 
  220 # define V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT 
  221     (__has_attribute(warn_unused_result)) 
  223 # define V8_HAS_BUILTIN_BSWAP16 (__has_builtin(__builtin_bswap16)) 
  224 # define V8_HAS_BUILTIN_BSWAP32 (__has_builtin(__builtin_bswap32)) 
  225 # define V8_HAS_BUILTIN_BSWAP64 (__has_builtin(__builtin_bswap64)) 
  226 # define V8_HAS_BUILTIN_CLZ (__has_builtin(__builtin_clz)) 
  227 # define V8_HAS_BUILTIN_CTZ (__has_builtin(__builtin_ctz)) 
  228 # define V8_HAS_BUILTIN_EXPECT (__has_builtin(__builtin_expect)) 
  229 # define V8_HAS_BUILTIN_FRAME_ADDRESS (__has_builtin(__builtin_frame_address)) 
  230 # define V8_HAS_BUILTIN_POPCOUNT (__has_builtin(__builtin_popcount)) 
  231 # define V8_HAS_BUILTIN_SADD_OVERFLOW (__has_builtin(__builtin_sadd_overflow)) 
  232 # define V8_HAS_BUILTIN_SSUB_OVERFLOW (__has_builtin(__builtin_ssub_overflow)) 
  233 # define V8_HAS_BUILTIN_UADD_OVERFLOW (__has_builtin(__builtin_uadd_overflow)) 
  235 # define V8_HAS_CXX11_ALIGNAS (__has_feature(cxx_alignas)) 
  237 #elif defined(__GNUC__) 
  240 # if defined(__INTEL_COMPILER)   
  241 #  define V8_CC_INTEL 1
 
  243 # if defined(__MINGW32__) 
  244 #  define V8_CC_MINGW32 1
 
  246 # if defined(__MINGW64__) 
  247 #  define V8_CC_MINGW64 1
 
  249 # define V8_CC_MINGW (V8_CC_MINGW32 || V8_CC_MINGW64) 
  251 # define V8_HAS___ALIGNOF__ (V8_GNUC_PREREQ(4
, 3
, 0
)) 
  253 # define V8_HAS_ATTRIBUTE_ALIGNED (V8_GNUC_PREREQ(2
, 95
, 0
)) 
  257 # define V8_HAS_ATTRIBUTE_ALWAYS_INLINE (V8_GNUC_PREREQ(4
, 4
, 0
)) 
  258 # define V8_HAS_ATTRIBUTE_DEPRECATED (V8_GNUC_PREREQ(3
, 4
, 0
)) 
  259 # define V8_HAS_ATTRIBUTE_DEPRECATED_MESSAGE (V8_GNUC_PREREQ(4
, 5
, 0
)) 
  260 # define V8_HAS_ATTRIBUTE_NOINLINE (V8_GNUC_PREREQ(3
, 4
, 0
)) 
  261 # define V8_HAS_ATTRIBUTE_UNUSED (V8_GNUC_PREREQ(2
, 95
, 0
)) 
  262 # define V8_HAS_ATTRIBUTE_VISIBILITY (V8_GNUC_PREREQ(4
, 3
, 0
)) 
  263 # define V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT 
  264     (!V8_CC_INTEL && V8_GNUC_PREREQ(4
, 1
, 0
)) 
  266 # define V8_HAS_BUILTIN_CLZ (V8_GNUC_PREREQ(3
, 4
, 0
)) 
  267 # define V8_HAS_BUILTIN_CTZ (V8_GNUC_PREREQ(3
, 4
, 0
)) 
  268 # define V8_HAS_BUILTIN_EXPECT (V8_GNUC_PREREQ(2
, 96
, 0
)) 
  269 # define V8_HAS_BUILTIN_FRAME_ADDRESS (V8_GNUC_PREREQ(2
, 96
, 0
)) 
  270 # define V8_HAS_BUILTIN_POPCOUNT (V8_GNUC_PREREQ(3
, 4
, 0
)) 
  272 # if __cplusplus >= 201103L
 
  273 #  define V8_HAS_CXX11_ALIGNAS (V8_GNUC_PREREQ(4
, 8
, 0
)) 
  274 #  define V8_HAS_CXX11_ALIGNOF (V8_GNUC_PREREQ(4
, 8
, 0
)) 
  278 #if defined(_MSC_VER) 
  279 # define V8_CC_MSVC 1
 
  280 # define V8_HAS___ALIGNOF 1
 
  282 # define V8_HAS_DECLSPEC_ALIGN 1
 
  283 # define V8_HAS_DECLSPEC_DEPRECATED 1
 
  284 # define V8_HAS_DECLSPEC_NOINLINE 1
 
  285 # define V8_HAS_DECLSPEC_SELECTANY 1
 
  286 # define V8_HAS_DECLSPEC_NORETURN 1
 
  288 # define V8_HAS___FORCEINLINE 1
 
  299 #if !defined(DEBUG) && V8_HAS_ATTRIBUTE_ALWAYS_INLINE
 
  300 # define V8_INLINE inline __attribute__((always_inline)) 
  301 #elif !defined(DEBUG) && V8_HAS___FORCEINLINE 
  302 # define V8_INLINE __forceinline 
  304 # define V8_INLINE inline 
  312 #if !defined(DEBUG) && V8_HAS_ATTRIBUTE_NOINLINE
 
  313 # define V8_NOINLINE __attribute__((noinline)) 
  314 #elif !defined(DEBUG) && V8_HAS_DECLSPEC_NOINLINE 
  315 # define V8_NOINLINE __declspec(noinline) 
  322 #if defined(V8_DEPRECATION_WARNINGS) && V8_HAS_ATTRIBUTE_DEPRECATED_MESSAGE 
  323 #define V8_DEPRECATED(message, declarator) 
  324   declarator __attribute__((deprecated(message))) 
  325 #elif defined(V8_DEPRECATION_WARNINGS) && V8_HAS_ATTRIBUTE_DEPRECATED
 
  326 #define V8_DEPRECATED(message, declarator) 
  327   declarator __attribute__((deprecated)) 
  328 #elif defined(V8_DEPRECATION_WARNINGS) && V8_HAS_DECLSPEC_DEPRECATED 
  329 #define V8_DEPRECATED(message, declarator) __declspec(deprecated) declarator 
  331 #define V8_DEPRECATED(message, declarator) declarator 
  336 #if defined(V8_IMMINENT_DEPRECATION_WARNINGS) && 
  337     V8_HAS_ATTRIBUTE_DEPRECATED_MESSAGE 
  338 #define V8_DEPRECATE_SOON(message, declarator) 
  339   declarator __attribute__((deprecated(message))) 
  340 #elif defined(V8_IMMINENT_DEPRECATION_WARNINGS) && V8_HAS_ATTRIBUTE_DEPRECATED
 
  341 #define V8_DEPRECATE_SOON(message, declarator) 
  342   declarator __attribute__((deprecated)) 
  343 #elif defined(V8_IMMINENT_DEPRECATION_WARNINGS) && V8_HAS_DECLSPEC_DEPRECATED 
  344 #define V8_DEPRECATE_SOON(message, declarator) __declspec(deprecated) declarator 
  346 #define V8_DEPRECATE_SOON(message, declarator) declarator 
  351 #if V8_HAS_BUILTIN_EXPECT
 
  352 # define V8_UNLIKELY(condition) (__builtin_expect(!!(condition), 0
)) 
  353 # define V8_LIKELY(condition) (__builtin_expect(!!(condition), 1
)) 
  355 # define V8_UNLIKELY(condition) (condition) 
  356 # define V8_LIKELY(condition) (condition) 
  364 #if V8_HAS_CXX11_ALIGNAS
 
  365 # define V8_ALIGNED(n) alignas(n) 
  366 #elif V8_HAS_ATTRIBUTE_ALIGNED 
  367 # define V8_ALIGNED(n) __attribute__((aligned(n))) 
  368 #elif V8_HAS_DECLSPEC_ALIGN 
  369 # define V8_ALIGNED(n) __declspec(align(n)) 
  371 # define V8_ALIGNED(n)  
  384 #if V8_HAS_CXX11_ALIGNAS
 
  385 # define V8_ALIGNAS(type, alignment) alignas(type) 
  386 #elif V8_HAS___ALIGNOF__ && V8_HAS_ATTRIBUTE_ALIGNED 
  387 # define V8_ALIGNAS(type, alignment) __attribute__((aligned(__alignof__(type)))) 
  389 # define V8_ALIGNAS(type, alignment) V8_ALIGNED(alignment) 
  398 #if V8_HAS_CXX11_ALIGNOF 
  399 # define V8_ALIGNOF(type) alignof(type) 
  400 #elif V8_HAS___ALIGNOF
 
  401 # define V8_ALIGNOF(type) __alignof(type) 
  402 #elif V8_HAS___ALIGNOF__ 
  403 # define V8_ALIGNOF(type) __alignof__(type) 
  408 namespace v8 { 
template <
typename T> 
class AlignOfHelper { 
char c; T t; }; }
 
  409 # define V8_ALIGNOF(type) (sizeof(::v8::AlignOfHelper<type>) - sizeof(type)) 
  415 #if V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT
 
  416 #define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) 
  418 #define V8_WARN_UNUSED_RESULT