OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 # define V8_GNUC_PREREQ(major, minor, patchlevel) \ | 140 # define V8_GNUC_PREREQ(major, minor, patchlevel) \ |
141 ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= \ | 141 ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= \ |
142 ((major) * 10000 + (minor) * 100 + (patchlevel))) | 142 ((major) * 10000 + (minor) * 100 + (patchlevel))) |
143 | 143 |
144 # define V8_CC_GNU 1 | 144 # define V8_CC_GNU 1 |
145 # if defined(__MINGW32__) | 145 # if defined(__MINGW32__) |
146 # define V8_CC_MINGW 1 | 146 # define V8_CC_MINGW 1 |
147 # endif | 147 # endif |
148 | 148 |
149 # define V8_HAS_ATTRIBUTE___ALIGNED__ (V8_GNUC_PREREQ(2, 95, 0)) | 149 # define V8_HAS_ATTRIBUTE___ALIGNED__ (V8_GNUC_PREREQ(2, 95, 0)) |
150 # define V8_HAS_ATTRIBUTE_ALWAYS_INLINE (V8_GNUC_PREREQ(4, 0, 0)) | 150 // always_inline is available in gcc 4.0 but not very reliable until 4.4. |
| 151 // Works around "sorry, unimplemented: inlining failed" build errors with |
| 152 // older compilers. |
| 153 # define V8_HAS_ATTRIBUTE_ALWAYS_INLINE (V8_GNUC_PREREQ(4, 4, 0)) |
151 # define V8_HAS_ATTRIBUTE_DEPRECATED (V8_GNUC_PREREQ(3, 4, 0)) | 154 # define V8_HAS_ATTRIBUTE_DEPRECATED (V8_GNUC_PREREQ(3, 4, 0)) |
152 # define V8_HAS_ATTRIBUTE_VISIBILITY (V8_GNUC_PREREQ(4, 3, 0)) | 155 # define V8_HAS_ATTRIBUTE_VISIBILITY (V8_GNUC_PREREQ(4, 3, 0)) |
153 | 156 |
154 # define V8_HAS_BUILTIN_EXPECT (V8_GNUC_PREREQ(2, 96, 0)) | 157 # define V8_HAS_BUILTIN_EXPECT (V8_GNUC_PREREQ(2, 96, 0)) |
155 | 158 |
156 // g++ requires -std=c++0x or -std=gnu++0x to support C++11 functionality | 159 // g++ requires -std=c++0x or -std=gnu++0x to support C++11 functionality |
157 // without warnings (functionality used by the macros below). These modes | 160 // without warnings (functionality used by the macros below). These modes |
158 // are detectable by checking whether __GXX_EXPERIMENTAL_CXX0X__ is defined or, | 161 // are detectable by checking whether __GXX_EXPERIMENTAL_CXX0X__ is defined or, |
159 // more standardly, by checking whether __cplusplus has a C++11 or greater | 162 // more standardly, by checking whether __cplusplus has a C++11 or greater |
160 // value. Current versions of g++ do not correctly set __cplusplus, so we check | 163 // value. Current versions of g++ do not correctly set __cplusplus, so we check |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
278 # define V8_ALIGNAS(n) alignas(n) | 281 # define V8_ALIGNAS(n) alignas(n) |
279 #elif V8_HAS_ATTRIBUTE___ALIGNED__ | 282 #elif V8_HAS_ATTRIBUTE___ALIGNED__ |
280 # define V8_ALIGNAS(n) __attribute__((__aligned__(n))) | 283 # define V8_ALIGNAS(n) __attribute__((__aligned__(n))) |
281 #elif V8_HAS_DECLSPEC_ALIGN | 284 #elif V8_HAS_DECLSPEC_ALIGN |
282 # define V8_ALIGNAS(n) __declspec(align(n)) | 285 # define V8_ALIGNAS(n) __declspec(align(n)) |
283 #else | 286 #else |
284 # define V8_ALIGNAS(n) /* NOT SUPPORTED */ | 287 # define V8_ALIGNAS(n) /* NOT SUPPORTED */ |
285 #endif | 288 #endif |
286 | 289 |
287 #endif // V8CONFIG_H_ | 290 #endif // V8CONFIG_H_ |
OLD | NEW |