OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8CONFIG_H_ | 5 #ifndef V8CONFIG_H_ |
6 #define V8CONFIG_H_ | 6 #define V8CONFIG_H_ |
7 | 7 |
8 // Platform headers for feature detection below. | 8 // Platform headers for feature detection below. |
9 #if defined(__ANDROID__) | 9 #if defined(__ANDROID__) |
10 # include <sys/cdefs.h> | 10 # include <sys/cdefs.h> |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 // V8_HAS_ATTRIBUTE_DEPRECATED - __attribute__((deprecated)) supported | 172 // V8_HAS_ATTRIBUTE_DEPRECATED - __attribute__((deprecated)) supported |
173 // V8_HAS_ATTRIBUTE_NOINLINE - __attribute__((noinline)) supported | 173 // V8_HAS_ATTRIBUTE_NOINLINE - __attribute__((noinline)) supported |
174 // V8_HAS_ATTRIBUTE_UNUSED - __attribute__((unused)) supported | 174 // V8_HAS_ATTRIBUTE_UNUSED - __attribute__((unused)) supported |
175 // V8_HAS_ATTRIBUTE_VISIBILITY - __attribute__((visibility)) supported | 175 // V8_HAS_ATTRIBUTE_VISIBILITY - __attribute__((visibility)) supported |
176 // V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT - __attribute__((warn_unused_result)) | 176 // V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT - __attribute__((warn_unused_result)) |
177 // supported | 177 // supported |
178 // V8_HAS_BUILTIN_CLZ - __builtin_clz() supported | 178 // V8_HAS_BUILTIN_CLZ - __builtin_clz() supported |
179 // V8_HAS_BUILTIN_CTZ - __builtin_ctz() supported | 179 // V8_HAS_BUILTIN_CTZ - __builtin_ctz() supported |
180 // V8_HAS_BUILTIN_EXPECT - __builtin_expect() supported | 180 // V8_HAS_BUILTIN_EXPECT - __builtin_expect() supported |
181 // V8_HAS_BUILTIN_POPCOUNT - __builtin_popcount() supported | 181 // V8_HAS_BUILTIN_POPCOUNT - __builtin_popcount() supported |
| 182 // V8_HAS_BUILTIN_SADD_OVERFLOW - __builtin_sadd_overflow() supported |
| 183 // V8_HAS_BUILTIN_SSUB_OVERFLOW - __builtin_ssub_overflow() supported |
182 // V8_HAS_DECLSPEC_ALIGN - __declspec(align(n)) supported | 184 // V8_HAS_DECLSPEC_ALIGN - __declspec(align(n)) supported |
183 // V8_HAS_DECLSPEC_DEPRECATED - __declspec(deprecated) supported | 185 // V8_HAS_DECLSPEC_DEPRECATED - __declspec(deprecated) supported |
184 // V8_HAS_DECLSPEC_NOINLINE - __declspec(noinline) supported | 186 // V8_HAS_DECLSPEC_NOINLINE - __declspec(noinline) supported |
185 // V8_HAS___FINAL - __final supported in non-C++11 mode | 187 // V8_HAS___FINAL - __final supported in non-C++11 mode |
186 // V8_HAS___FORCEINLINE - __forceinline supported | 188 // V8_HAS___FORCEINLINE - __forceinline supported |
187 // V8_HAS_SEALED - MSVC style sealed marker supported | 189 // V8_HAS_SEALED - MSVC style sealed marker supported |
188 // | 190 // |
189 // Note that testing for compilers and/or features must be done using #if | 191 // Note that testing for compilers and/or features must be done using #if |
190 // not #ifdef. For example, to test for Intel C++ Compiler, use: | 192 // not #ifdef. For example, to test for Intel C++ Compiler, use: |
191 // #if V8_CC_INTEL | 193 // #if V8_CC_INTEL |
(...skipping 14 matching lines...) Expand all Loading... |
206 # define V8_HAS_ATTRIBUTE_NOINLINE (__has_attribute(noinline)) | 208 # define V8_HAS_ATTRIBUTE_NOINLINE (__has_attribute(noinline)) |
207 # define V8_HAS_ATTRIBUTE_UNUSED (__has_attribute(unused)) | 209 # define V8_HAS_ATTRIBUTE_UNUSED (__has_attribute(unused)) |
208 # define V8_HAS_ATTRIBUTE_VISIBILITY (__has_attribute(visibility)) | 210 # define V8_HAS_ATTRIBUTE_VISIBILITY (__has_attribute(visibility)) |
209 # define V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT \ | 211 # define V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT \ |
210 (__has_attribute(warn_unused_result)) | 212 (__has_attribute(warn_unused_result)) |
211 | 213 |
212 # define V8_HAS_BUILTIN_CLZ (__has_builtin(__builtin_clz)) | 214 # define V8_HAS_BUILTIN_CLZ (__has_builtin(__builtin_clz)) |
213 # define V8_HAS_BUILTIN_CTZ (__has_builtin(__builtin_ctz)) | 215 # define V8_HAS_BUILTIN_CTZ (__has_builtin(__builtin_ctz)) |
214 # define V8_HAS_BUILTIN_EXPECT (__has_builtin(__builtin_expect)) | 216 # define V8_HAS_BUILTIN_EXPECT (__has_builtin(__builtin_expect)) |
215 # define V8_HAS_BUILTIN_POPCOUNT (__has_builtin(__builtin_popcount)) | 217 # define V8_HAS_BUILTIN_POPCOUNT (__has_builtin(__builtin_popcount)) |
| 218 # define V8_HAS_BUILTIN_SADD_OVERFLOW (__has_builtin(__builtin_sadd_overflow)) |
| 219 # define V8_HAS_BUILTIN_SSUB_OVERFLOW (__has_builtin(__builtin_ssub_overflow)) |
216 | 220 |
217 # define V8_HAS_CXX11_ALIGNAS (__has_feature(cxx_alignas)) | 221 # define V8_HAS_CXX11_ALIGNAS (__has_feature(cxx_alignas)) |
218 # define V8_HAS_CXX11_STATIC_ASSERT (__has_feature(cxx_static_assert)) | 222 # define V8_HAS_CXX11_STATIC_ASSERT (__has_feature(cxx_static_assert)) |
219 # define V8_HAS_CXX11_DELETE (__has_feature(cxx_deleted_functions)) | 223 # define V8_HAS_CXX11_DELETE (__has_feature(cxx_deleted_functions)) |
220 # define V8_HAS_CXX11_FINAL (__has_feature(cxx_override_control)) | 224 # define V8_HAS_CXX11_FINAL (__has_feature(cxx_override_control)) |
221 # define V8_HAS_CXX11_OVERRIDE (__has_feature(cxx_override_control)) | 225 # define V8_HAS_CXX11_OVERRIDE (__has_feature(cxx_override_control)) |
222 | 226 |
223 #elif defined(__GNUC__) | 227 #elif defined(__GNUC__) |
224 | 228 |
225 # define V8_CC_GNU 1 | 229 # define V8_CC_GNU 1 |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
406 # define V8_ALIGNOF(type) __alignof__(type) | 410 # define V8_ALIGNOF(type) __alignof__(type) |
407 #else | 411 #else |
408 // Note that alignment of a type within a struct can be less than the | 412 // Note that alignment of a type within a struct can be less than the |
409 // alignment of the type stand-alone (because of ancient ABIs), so this | 413 // alignment of the type stand-alone (because of ancient ABIs), so this |
410 // should only be used as a last resort. | 414 // should only be used as a last resort. |
411 namespace v8 { template <typename T> class AlignOfHelper { char c; T t; }; } | 415 namespace v8 { template <typename T> class AlignOfHelper { char c; T t; }; } |
412 # define V8_ALIGNOF(type) (sizeof(::v8::AlignOfHelper<type>) - sizeof(type)) | 416 # define V8_ALIGNOF(type) (sizeof(::v8::AlignOfHelper<type>) - sizeof(type)) |
413 #endif | 417 #endif |
414 | 418 |
415 #endif // V8CONFIG_H_ | 419 #endif // V8CONFIG_H_ |
OLD | NEW |