Index: include/v8config.h |
diff --git a/include/v8config.h b/include/v8config.h |
index 4f6cf7b7873421344328d19221323e013f48a5b5..aa24eebff50bb193543295723c9195ece613b8ec 100644 |
--- a/include/v8config.h |
+++ b/include/v8config.h |
@@ -86,31 +86,6 @@ |
#endif |
-// This macro checks for a required GCC version. It also works with compilers |
-// that pretend to be GCC, i.e. Clang, ICC or the ARM compiler with the --gnu |
-// flag. |
-// Use like this if you want to check for a GCC compatible version: |
-// #if V8_GNUC_PREREQ(x, y, z) |
-// ... |
-// #endif |
-// |
-// Use like ths if you want to check for a specific GCC version: |
-// #if V8_CC_GNU && V8_GNUC_PREREQ(x, y, z) |
-// ... |
-// #endif |
-#if defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__) |
-# define V8_GNUC_PREREQ(major, minor, patchlevel) \ |
- ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= \ |
- ((major) * 10000 + (minor) * 100 + (patchlevel))) |
-#elif defined(__GNUC__) && defined(__GNUC_MINOR__) |
-# define V8_GNUC_PREREQ(major, minor, patchlevel) \ |
- ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100) >= \ |
- ((major) * 10000 + (minor) * 100 + (patchlevel))) |
-#else |
-# define V8_GNUC_PREREQ(major, minor, patchlevel) 0 |
-#endif |
- |
- |
// ----------------------------------------------------------------------------- |
// Compiler detection |
// |
@@ -122,7 +97,6 @@ |
// C++11 feature detection |
// |
// V8_HAS_CXX11_ALIGNAS - alignas specifier supported |
-// V8_HAS_CXX11_ALIGNOF - alignas operator supported |
// V8_HAS_CXX11_STATIC_ASSERT - static_assert() supported |
// V8_HAS_CXX11_DELETE - deleted functions supported |
// V8_HAS_CXX11_FINAL - final marker supported |
@@ -130,9 +104,7 @@ |
// |
// Compiler-specific feature detection |
// |
-// V8_HAS___ALIGNOF - __alignof(t) operator supported |
-// V8_HAS___ALIGNOF__ - __alignof__(t) operator supported |
-// V8_HAS_ATTRIBUTE_ALIGNED - __attribute__((aligned(n))) supported |
+// V8_HAS_ATTRIBUTE___ALIGNED__ - __attribute__((__aligned__(n))) supported |
// V8_HAS_ATTRIBUTE_ALWAYS_INLINE - __attribute__((always_inline)) supported |
// V8_HAS_ATTRIBUTE_DEPRECATED - __attribute__((deprecated)) supported |
// V8_HAS_ATTRIBUTE_VISIBILITY - __attribute__((visibility)) supported |
@@ -145,11 +117,12 @@ |
#if defined(__clang__) |
-# define V8_CC_CLANG 1 |
+// Don't treat clang as GCC. |
+# define V8_GNUC_PREREQ(major, minor, patchlevel) 0 |
-# define V8_HAS___ALIGNOF__ (V8_GNUC_PREREQ(2, 95, 0)) |
+# define V8_CC_CLANG 1 |
-# define V8_HAS_ATTRIBUTE_ALIGNED (__has_attribute(aligned)) |
+# define V8_HAS_ATTRIBUTE___ALIGNED__ (__has_attribute(__aligned__)) |
# define V8_HAS_ATTRIBUTE_ALWAYS_INLINE (__has_attribute(always_inline)) |
# define V8_HAS_ATTRIBUTE_DEPRECATED (__has_attribute(deprecated)) |
# define V8_HAS_ATTRIBUTE_VISIBILITY (__has_attribute(visibility)) |
@@ -164,14 +137,16 @@ |
#elif defined(__GNUC__) |
+# define V8_GNUC_PREREQ(major, minor, patchlevel) \ |
+ ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= \ |
+ ((major) * 10000 + (minor) * 100 + (patchlevel))) |
+ |
# define V8_CC_GNU 1 |
# if defined(__MINGW32__) |
# define V8_CC_MINGW 1 |
# endif |
-# define V8_HAS___ALIGNOF__ (V8_GNUC_PREREQ(2, 95, 0)) |
- |
-# define V8_HAS_ATTRIBUTE_ALIGNED (V8_GNUC_PREREQ(2, 95, 0)) |
+# define V8_HAS_ATTRIBUTE___ALIGNED__ (V8_GNUC_PREREQ(2, 95, 0)) |
// always_inline is available in gcc 4.0 but not very reliable until 4.4. |
// Works around "sorry, unimplemented: inlining failed" build errors with |
// older compilers. |
@@ -189,7 +164,6 @@ |
// both for forward compatibility. |
# if defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L |
# define V8_HAS_CXX11_ALIGNAS (V8_GNUC_PREREQ(4, 8, 0)) |
-# define V8_HAS_CXX11_ALIGNOF (V8_GNUC_PREREQ(4, 5, 0)) |
# define V8_HAS_CXX11_STATIC_ASSERT (V8_GNUC_PREREQ(4, 3, 0)) |
# define V8_HAS_CXX11_DELETE (V8_GNUC_PREREQ(4, 4, 0)) |
# define V8_HAS_CXX11_OVERRIDE (V8_GNUC_PREREQ(4, 7, 0)) |
@@ -201,6 +175,8 @@ |
#elif defined(_MSC_VER) |
+# define V8_GNUC_PREREQ(major, minor, patchlevel) 0 |
+ |
# define V8_CC_MSVC 1 |
// Override control was added with Visual Studio 2005, but |
@@ -212,7 +188,6 @@ |
# define V8_HAS_DECLSPEC_ALIGN 1 |
# define V8_HAS_DECLSPEC_DEPRECATED (_MSC_VER >= 1300) |
-# define V8_HAS___ALIGNOF 1 |
# define V8_HAS___FORCEINLINE 1 |
#endif |
@@ -304,28 +279,12 @@ |
// V8_ALIGNAS(32) int array[42]; |
#if V8_HAS_CXX11_ALIGNAS |
# define V8_ALIGNAS(n) alignas(n) |
-#elif V8_HAS_ATTRIBUTE_ALIGNED |
-# define V8_ALIGNAS(n) __attribute__((aligned(n))) |
+#elif V8_HAS_ATTRIBUTE___ALIGNED__ |
+# define V8_ALIGNAS(n) __attribute__((__aligned__(n))) |
#elif V8_HAS_DECLSPEC_ALIGN |
# define V8_ALIGNAS(n) __declspec(align(n)) |
#else |
# define V8_ALIGNAS(n) /* NOT SUPPORTED */ |
#endif |
-// This macro takes a type and returns the power of 2 byte boundary on which |
-// the type instances must be allocated. |
-// Use like: |
-// size_t alignment = V8_ALIGNOF(double); |
-// V8_ALIGNAS(V8_ALIGNOF(void*)) int x; |
-#if V8_HAS_CXX11_ALIGNOF |
-# define V8_ALIGNOF(t) alignof(t) |
-#elif V8_HAS___ALIGNOF |
-# define V8_ALIGNOF(t) __alignof(t) |
-#elif V8_HAS___ALIGNOF__ |
-# define V8_ALIGNOF(t) __alignof__(t) |
-#else |
-namespace v8 { template <typename T> struct AlignOfHelper { char x; T t; }; } |
-# define V8_ALIGNOF(t) (sizeof(::v8::AlignOfHelper<t>) - sizeof(t)) |
-#endif |
- |
#endif // V8CONFIG_H_ |