libv8 8.4.255.0-universal-darwin-20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. checksums.yaml +7 -0
  2. data/ext/libv8/.location.yml +1 -0
  3. data/ext/libv8/location.rb +89 -0
  4. data/ext/libv8/paths.rb +28 -0
  5. data/lib/libv8.rb +9 -0
  6. data/lib/libv8/version.rb +3 -0
  7. data/vendor/v8/include/cppgc/allocation.h +124 -0
  8. data/vendor/v8/include/cppgc/garbage-collected.h +192 -0
  9. data/vendor/v8/include/cppgc/heap.h +50 -0
  10. data/vendor/v8/include/cppgc/internal/accessors.h +26 -0
  11. data/vendor/v8/include/cppgc/internal/api-constants.h +44 -0
  12. data/vendor/v8/include/cppgc/internal/compiler-specific.h +26 -0
  13. data/vendor/v8/include/cppgc/internal/finalizer-trait.h +90 -0
  14. data/vendor/v8/include/cppgc/internal/gc-info.h +43 -0
  15. data/vendor/v8/include/cppgc/internal/logging.h +50 -0
  16. data/vendor/v8/include/cppgc/internal/persistent-node.h +109 -0
  17. data/vendor/v8/include/cppgc/internal/pointer-policies.h +133 -0
  18. data/vendor/v8/include/cppgc/internal/prefinalizer-handler.h +31 -0
  19. data/vendor/v8/include/cppgc/liveness-broker.h +50 -0
  20. data/vendor/v8/include/cppgc/macros.h +26 -0
  21. data/vendor/v8/include/cppgc/member.h +206 -0
  22. data/vendor/v8/include/cppgc/persistent.h +304 -0
  23. data/vendor/v8/include/cppgc/platform.h +31 -0
  24. data/vendor/v8/include/cppgc/prefinalizer.h +54 -0
  25. data/vendor/v8/include/cppgc/source-location.h +59 -0
  26. data/vendor/v8/include/cppgc/trace-trait.h +67 -0
  27. data/vendor/v8/include/cppgc/type-traits.h +109 -0
  28. data/vendor/v8/include/cppgc/visitor.h +137 -0
  29. data/vendor/v8/include/libplatform/libplatform-export.h +29 -0
  30. data/vendor/v8/include/libplatform/libplatform.h +85 -0
  31. data/vendor/v8/include/libplatform/v8-tracing.h +332 -0
  32. data/vendor/v8/include/v8-fast-api-calls.h +412 -0
  33. data/vendor/v8/include/v8-inspector-protocol.h +13 -0
  34. data/vendor/v8/include/v8-inspector.h +327 -0
  35. data/vendor/v8/include/v8-internal.h +389 -0
  36. data/vendor/v8/include/v8-platform.h +577 -0
  37. data/vendor/v8/include/v8-profiler.h +1059 -0
  38. data/vendor/v8/include/v8-util.h +652 -0
  39. data/vendor/v8/include/v8-value-serializer-version.h +24 -0
  40. data/vendor/v8/include/v8-version-string.h +38 -0
  41. data/vendor/v8/include/v8-version.h +20 -0
  42. data/vendor/v8/include/v8-wasm-trap-handler-posix.h +31 -0
  43. data/vendor/v8/include/v8-wasm-trap-handler-win.h +28 -0
  44. data/vendor/v8/include/v8.h +12018 -0
  45. data/vendor/v8/include/v8config.h +465 -0
  46. data/vendor/v8/out.gn/libv8/obj/libv8_libbase.a +0 -0
  47. data/vendor/v8/out.gn/libv8/obj/libv8_libplatform.a +0 -0
  48. data/vendor/v8/out.gn/libv8/obj/libv8_monolith.a +0 -0
  49. data/vendor/v8/out.gn/libv8/obj/third_party/icu/libicui18n.a +0 -0
  50. data/vendor/v8/out.gn/libv8/obj/third_party/icu/libicuuc.a +0 -0
  51. data/vendor/v8/out.gn/libv8/obj/third_party/zlib/google/libcompression_utils_portable.a +0 -0
  52. data/vendor/v8/out.gn/libv8/obj/third_party/zlib/libchrome_zlib.a +0 -0
  53. metadata +138 -0
@@ -0,0 +1,465 @@
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
3
+ // found in the LICENSE file.
4
+
5
+ #ifndef V8CONFIG_H_
6
+ #define V8CONFIG_H_
7
+
8
+ // clang-format off
9
+
10
+ // Platform headers for feature detection below.
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>
17
+ #endif
18
+
19
+
20
+ // This macro allows to test for the version of the GNU C library (or
21
+ // a compatible C library that masquerades as glibc). It evaluates to
22
+ // 0 if libc is not GNU libc or compatible.
23
+ // Use like:
24
+ // #if V8_GLIBC_PREREQ(2, 3)
25
+ // ...
26
+ // #endif
27
+ #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
28
+ # define V8_GLIBC_PREREQ(major, minor) \
29
+ ((__GLIBC__ * 100 + __GLIBC_MINOR__) >= ((major) * 100 + (minor)))
30
+ #else
31
+ # define V8_GLIBC_PREREQ(major, minor) 0
32
+ #endif
33
+
34
+
35
+ // This macro allows to test for the version of the GNU C++ compiler.
36
+ // Note that this also applies to compilers that masquerade as GCC,
37
+ // for example clang and the Intel C++ compiler for Linux.
38
+ // Use like:
39
+ // #if V8_GNUC_PREREQ(4, 3, 1)
40
+ // ...
41
+ // #endif
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)))
50
+ #else
51
+ # define V8_GNUC_PREREQ(major, minor, patchlevel) 0
52
+ #endif
53
+
54
+
55
+
56
+ // -----------------------------------------------------------------------------
57
+ // Operating system detection (host)
58
+ //
59
+ // V8_OS_ANDROID - Android
60
+ // V8_OS_BSD - BSDish (Mac OS X, Net/Free/Open/DragonFlyBSD)
61
+ // V8_OS_CYGWIN - Cygwin
62
+ // V8_OS_DRAGONFLYBSD - DragonFlyBSD
63
+ // V8_OS_FREEBSD - FreeBSD
64
+ // V8_OS_FUCHSIA - Fuchsia
65
+ // V8_OS_LINUX - Linux
66
+ // V8_OS_MACOSX - Mac OS X
67
+ // V8_OS_IOS - iOS
68
+ // V8_OS_NETBSD - NetBSD
69
+ // V8_OS_OPENBSD - OpenBSD
70
+ // V8_OS_POSIX - POSIX compatible (mostly everything except Windows)
71
+ // V8_OS_QNX - QNX Neutrino
72
+ // V8_OS_SOLARIS - Sun Solaris and OpenSolaris
73
+ // V8_OS_AIX - AIX
74
+ // V8_OS_WIN - Microsoft Windows
75
+
76
+ #if defined(__ANDROID__)
77
+ # define V8_OS_ANDROID 1
78
+ # define V8_OS_LINUX 1
79
+ # define V8_OS_POSIX 1
80
+ #elif defined(__APPLE__)
81
+ # define V8_OS_BSD 1
82
+ # define V8_OS_MACOSX 1
83
+ # define V8_OS_POSIX 1
84
+ # if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
85
+ # define V8_OS_IOS 1
86
+ # endif // defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
87
+ #elif defined(__CYGWIN__)
88
+ # define V8_OS_CYGWIN 1
89
+ # define V8_OS_POSIX 1
90
+ #elif defined(__linux__)
91
+ # define V8_OS_LINUX 1
92
+ # define V8_OS_POSIX 1
93
+ #elif defined(__sun)
94
+ # define V8_OS_POSIX 1
95
+ # define V8_OS_SOLARIS 1
96
+ #elif defined(_AIX)
97
+ #define V8_OS_POSIX 1
98
+ #define V8_OS_AIX 1
99
+ #elif defined(__FreeBSD__)
100
+ # define V8_OS_BSD 1
101
+ # define V8_OS_FREEBSD 1
102
+ # define V8_OS_POSIX 1
103
+ #elif defined(__Fuchsia__)
104
+ # define V8_OS_FUCHSIA 1
105
+ # define V8_OS_POSIX 1
106
+ #elif defined(__DragonFly__)
107
+ # define V8_OS_BSD 1
108
+ # define V8_OS_DRAGONFLYBSD 1
109
+ # define V8_OS_POSIX 1
110
+ #elif defined(__NetBSD__)
111
+ # define V8_OS_BSD 1
112
+ # define V8_OS_NETBSD 1
113
+ # define V8_OS_POSIX 1
114
+ #elif defined(__OpenBSD__)
115
+ # define V8_OS_BSD 1
116
+ # define V8_OS_OPENBSD 1
117
+ # define V8_OS_POSIX 1
118
+ #elif defined(__QNXNTO__)
119
+ # define V8_OS_POSIX 1
120
+ # define V8_OS_QNX 1
121
+ #elif defined(_WIN32)
122
+ # define V8_OS_WIN 1
123
+ #endif
124
+
125
+ // -----------------------------------------------------------------------------
126
+ // Operating system detection (target)
127
+ //
128
+ // V8_TARGET_OS_ANDROID
129
+ // V8_TARGET_OS_FUCHSIA
130
+ // V8_TARGET_OS_IOS
131
+ // V8_TARGET_OS_LINUX
132
+ // V8_TARGET_OS_MACOSX
133
+ // V8_TARGET_OS_WIN
134
+ //
135
+ // If not set explicitly, these fall back to corresponding V8_OS_ values.
136
+
137
+ #ifdef V8_HAVE_TARGET_OS
138
+
139
+ // The target OS is provided, just check that at least one known value is set.
140
+ # if !defined(V8_TARGET_OS_ANDROID) \
141
+ && !defined(V8_TARGET_OS_FUCHSIA) \
142
+ && !defined(V8_TARGET_OS_IOS) \
143
+ && !defined(V8_TARGET_OS_LINUX) \
144
+ && !defined(V8_TARGET_OS_MACOSX) \
145
+ && !defined(V8_TARGET_OS_WIN)
146
+ # error No known target OS defined.
147
+ # endif
148
+
149
+ #else // V8_HAVE_TARGET_OS
150
+
151
+ # if defined(V8_TARGET_OS_ANDROID) \
152
+ || defined(V8_TARGET_OS_FUCHSIA) \
153
+ || defined(V8_TARGET_OS_IOS) \
154
+ || defined(V8_TARGET_OS_LINUX) \
155
+ || defined(V8_TARGET_OS_MACOSX) \
156
+ || defined(V8_TARGET_OS_WIN)
157
+ # error A target OS is defined but V8_HAVE_TARGET_OS is unset.
158
+ # endif
159
+
160
+ // Fall back to the detected host OS.
161
+ #ifdef V8_OS_ANDROID
162
+ # define V8_TARGET_OS_ANDROID
163
+ #endif
164
+
165
+ #ifdef V8_OS_FUCHSIA
166
+ # define V8_TARGET_OS_FUCHSIA
167
+ #endif
168
+
169
+ #ifdef V8_OS_IOS
170
+ # define V8_TARGET_OS_IOS
171
+ #endif
172
+
173
+ #ifdef V8_OS_LINUX
174
+ # define V8_TARGET_OS_LINUX
175
+ #endif
176
+
177
+ #ifdef V8_OS_MACOSX
178
+ # define V8_TARGET_OS_MACOSX
179
+ #endif
180
+
181
+ #ifdef V8_OS_WIN
182
+ # define V8_TARGET_OS_WIN
183
+ #endif
184
+
185
+ #endif // V8_HAVE_TARGET_OS
186
+
187
+ // -----------------------------------------------------------------------------
188
+ // C library detection
189
+ //
190
+ // V8_LIBC_MSVCRT - MSVC libc
191
+ // V8_LIBC_BIONIC - Bionic libc
192
+ // V8_LIBC_BSD - BSD libc derivate
193
+ // V8_LIBC_GLIBC - GNU C library
194
+ // V8_LIBC_UCLIBC - uClibc
195
+ //
196
+ // Note that testing for libc must be done using #if not #ifdef. For example,
197
+ // to test for the GNU C library, use:
198
+ // #if V8_LIBC_GLIBC
199
+ // ...
200
+ // #endif
201
+
202
+ #if defined (_MSC_VER)
203
+ # define V8_LIBC_MSVCRT 1
204
+ #elif defined(__BIONIC__)
205
+ # define V8_LIBC_BIONIC 1
206
+ # define V8_LIBC_BSD 1
207
+ #elif defined(__UCLIBC__)
208
+ // Must test for UCLIBC before GLIBC, as UCLIBC pretends to be GLIBC.
209
+ # define V8_LIBC_UCLIBC 1
210
+ #elif defined(__GLIBC__) || defined(__GNU_LIBRARY__)
211
+ # define V8_LIBC_GLIBC 1
212
+ #else
213
+ # define V8_LIBC_BSD V8_OS_BSD
214
+ #endif
215
+
216
+
217
+ // -----------------------------------------------------------------------------
218
+ // Compiler detection
219
+ //
220
+ // V8_CC_GNU - GCC, or clang in gcc mode
221
+ // V8_CC_INTEL - Intel C++
222
+ // V8_CC_MINGW - Minimalist GNU for Windows
223
+ // V8_CC_MINGW32 - Minimalist GNU for Windows (mingw32)
224
+ // V8_CC_MINGW64 - Minimalist GNU for Windows (mingw-w64)
225
+ // V8_CC_MSVC - Microsoft Visual C/C++, or clang in cl.exe mode
226
+ //
227
+ // C++11 feature detection
228
+ //
229
+ // Compiler-specific feature detection
230
+ //
231
+ // V8_HAS_ATTRIBUTE_ALWAYS_INLINE - __attribute__((always_inline))
232
+ // supported
233
+ // V8_HAS_ATTRIBUTE_NONNULL - __attribute__((nonnull)) supported
234
+ // V8_HAS_ATTRIBUTE_NOINLINE - __attribute__((noinline)) supported
235
+ // V8_HAS_ATTRIBUTE_UNUSED - __attribute__((unused)) supported
236
+ // V8_HAS_ATTRIBUTE_VISIBILITY - __attribute__((visibility)) supported
237
+ // V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT - __attribute__((warn_unused_result))
238
+ // supported
239
+ // V8_HAS_BUILTIN_BSWAP16 - __builtin_bswap16() supported
240
+ // V8_HAS_BUILTIN_BSWAP32 - __builtin_bswap32() supported
241
+ // V8_HAS_BUILTIN_BSWAP64 - __builtin_bswap64() supported
242
+ // V8_HAS_BUILTIN_CLZ - __builtin_clz() supported
243
+ // V8_HAS_BUILTIN_CTZ - __builtin_ctz() supported
244
+ // V8_HAS_BUILTIN_EXPECT - __builtin_expect() supported
245
+ // V8_HAS_BUILTIN_FRAME_ADDRESS - __builtin_frame_address() supported
246
+ // V8_HAS_BUILTIN_POPCOUNT - __builtin_popcount() supported
247
+ // V8_HAS_BUILTIN_SADD_OVERFLOW - __builtin_sadd_overflow() supported
248
+ // V8_HAS_BUILTIN_SSUB_OVERFLOW - __builtin_ssub_overflow() supported
249
+ // V8_HAS_BUILTIN_UADD_OVERFLOW - __builtin_uadd_overflow() supported
250
+ // V8_HAS_COMPUTED_GOTO - computed goto/labels as values
251
+ // supported
252
+ // V8_HAS_DECLSPEC_NOINLINE - __declspec(noinline) supported
253
+ // V8_HAS_DECLSPEC_SELECTANY - __declspec(selectany) supported
254
+ // V8_HAS___FORCEINLINE - __forceinline supported
255
+ //
256
+ // Note that testing for compilers and/or features must be done using #if
257
+ // not #ifdef. For example, to test for Intel C++ Compiler, use:
258
+ // #if V8_CC_INTEL
259
+ // ...
260
+ // #endif
261
+
262
+ #if defined(__clang__)
263
+
264
+ #if defined(__GNUC__) // Clang in gcc mode.
265
+ # define V8_CC_GNU 1
266
+ #endif
267
+
268
+ # define V8_HAS_ATTRIBUTE_ALWAYS_INLINE (__has_attribute(always_inline))
269
+ # define V8_HAS_ATTRIBUTE_NONNULL (__has_attribute(nonnull))
270
+ # define V8_HAS_ATTRIBUTE_NOINLINE (__has_attribute(noinline))
271
+ # define V8_HAS_ATTRIBUTE_UNUSED (__has_attribute(unused))
272
+ # define V8_HAS_ATTRIBUTE_VISIBILITY (__has_attribute(visibility))
273
+ # define V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT \
274
+ (__has_attribute(warn_unused_result))
275
+
276
+ # define V8_HAS_BUILTIN_ASSUME_ALIGNED (__has_builtin(__builtin_assume_aligned))
277
+ # define V8_HAS_BUILTIN_BSWAP16 (__has_builtin(__builtin_bswap16))
278
+ # define V8_HAS_BUILTIN_BSWAP32 (__has_builtin(__builtin_bswap32))
279
+ # define V8_HAS_BUILTIN_BSWAP64 (__has_builtin(__builtin_bswap64))
280
+ # define V8_HAS_BUILTIN_CLZ (__has_builtin(__builtin_clz))
281
+ # define V8_HAS_BUILTIN_CTZ (__has_builtin(__builtin_ctz))
282
+ # define V8_HAS_BUILTIN_EXPECT (__has_builtin(__builtin_expect))
283
+ # define V8_HAS_BUILTIN_FRAME_ADDRESS (__has_builtin(__builtin_frame_address))
284
+ # define V8_HAS_BUILTIN_POPCOUNT (__has_builtin(__builtin_popcount))
285
+ # define V8_HAS_BUILTIN_SADD_OVERFLOW (__has_builtin(__builtin_sadd_overflow))
286
+ # define V8_HAS_BUILTIN_SSUB_OVERFLOW (__has_builtin(__builtin_ssub_overflow))
287
+ # define V8_HAS_BUILTIN_UADD_OVERFLOW (__has_builtin(__builtin_uadd_overflow))
288
+
289
+ // Clang has no __has_feature for computed gotos.
290
+ // GCC doc: https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
291
+ # define V8_HAS_COMPUTED_GOTO 1
292
+
293
+ // Whether constexpr has full C++14 semantics, in particular that non-constexpr
294
+ // code is allowed as long as it's not executed for any constexpr instantiation.
295
+ # define V8_HAS_CXX14_CONSTEXPR 1
296
+
297
+ #elif defined(__GNUC__)
298
+
299
+ # define V8_CC_GNU 1
300
+ # if defined(__INTEL_COMPILER) // Intel C++ also masquerades as GCC 3.2.0
301
+ # define V8_CC_INTEL 1
302
+ # endif
303
+ # if defined(__MINGW32__)
304
+ # define V8_CC_MINGW32 1
305
+ # endif
306
+ # if defined(__MINGW64__)
307
+ # define V8_CC_MINGW64 1
308
+ # endif
309
+ # define V8_CC_MINGW (V8_CC_MINGW32 || V8_CC_MINGW64)
310
+
311
+ // always_inline is available in gcc 4.0 but not very reliable until 4.4.
312
+ // Works around "sorry, unimplemented: inlining failed" build errors with
313
+ // older compilers.
314
+ # define V8_HAS_ATTRIBUTE_ALWAYS_INLINE 1
315
+ # define V8_HAS_ATTRIBUTE_NOINLINE 1
316
+ # define V8_HAS_ATTRIBUTE_UNUSED 1
317
+ # define V8_HAS_ATTRIBUTE_VISIBILITY 1
318
+ # define V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT (!V8_CC_INTEL)
319
+
320
+ # define V8_HAS_BUILTIN_ASSUME_ALIGNED 1
321
+ # define V8_HAS_BUILTIN_CLZ 1
322
+ # define V8_HAS_BUILTIN_CTZ 1
323
+ # define V8_HAS_BUILTIN_EXPECT 1
324
+ # define V8_HAS_BUILTIN_FRAME_ADDRESS 1
325
+ # define V8_HAS_BUILTIN_POPCOUNT 1
326
+
327
+ // GCC doc: https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
328
+ #define V8_HAS_COMPUTED_GOTO 1
329
+
330
+ // Whether constexpr has full C++14 semantics, in particular that non-constexpr
331
+ // code is allowed as long as it's not executed for any constexpr instantiation.
332
+ // GCC only supports this since version 6.
333
+ # define V8_HAS_CXX14_CONSTEXPR (V8_GNUC_PREREQ(6, 0, 0))
334
+
335
+ #endif
336
+
337
+ #if defined(_MSC_VER)
338
+ # define V8_CC_MSVC 1
339
+
340
+ # define V8_HAS_DECLSPEC_NOINLINE 1
341
+ # define V8_HAS_DECLSPEC_SELECTANY 1
342
+
343
+ # define V8_HAS___FORCEINLINE 1
344
+
345
+ #endif
346
+
347
+
348
+ // -----------------------------------------------------------------------------
349
+ // Helper macros
350
+
351
+ // A macro used to make better inlining. Don't bother for debug builds.
352
+ // Use like:
353
+ // V8_INLINE int GetZero() { return 0; }
354
+ #if !defined(DEBUG) && V8_HAS_ATTRIBUTE_ALWAYS_INLINE
355
+ # define V8_INLINE inline __attribute__((always_inline))
356
+ #elif !defined(DEBUG) && V8_HAS___FORCEINLINE
357
+ # define V8_INLINE __forceinline
358
+ #else
359
+ # define V8_INLINE inline
360
+ #endif
361
+
362
+ #if V8_HAS_BUILTIN_ASSUME_ALIGNED
363
+ # define V8_ASSUME_ALIGNED(ptr, alignment) \
364
+ __builtin_assume_aligned((ptr), (alignment))
365
+ #else
366
+ # define V8_ASSUME_ALIGNED(ptr, alignment) (ptr)
367
+ #endif
368
+
369
+
370
+ // A macro to mark specific arguments as non-null.
371
+ // Use like:
372
+ // int add(int* x, int y, int* z) V8_NONNULL(1, 3) { return *x + y + *z; }
373
+ #if V8_HAS_ATTRIBUTE_NONNULL
374
+ # define V8_NONNULL(...) __attribute__((nonnull(__VA_ARGS__)))
375
+ #else
376
+ # define V8_NONNULL(...) /* NOT SUPPORTED */
377
+ #endif
378
+
379
+
380
+ // A macro used to tell the compiler to never inline a particular function.
381
+ // Use like:
382
+ // V8_NOINLINE int GetMinusOne() { return -1; }
383
+ #if V8_HAS_ATTRIBUTE_NOINLINE
384
+ # define V8_NOINLINE __attribute__((noinline))
385
+ #elif V8_HAS_DECLSPEC_NOINLINE
386
+ # define V8_NOINLINE __declspec(noinline)
387
+ #else
388
+ # define V8_NOINLINE /* NOT SUPPORTED */
389
+ #endif
390
+
391
+
392
+ // A macro (V8_DEPRECATED) to mark classes or functions as deprecated.
393
+ #if defined(V8_DEPRECATION_WARNINGS)
394
+ # define V8_DEPRECATED(message) [[deprecated(message)]]
395
+ #else
396
+ # define V8_DEPRECATED(message)
397
+ #endif
398
+
399
+
400
+ // A macro (V8_DEPRECATE_SOON) to make it easier to see what will be deprecated.
401
+ #if defined(V8_IMMINENT_DEPRECATION_WARNINGS)
402
+ # define V8_DEPRECATE_SOON(message) [[deprecated(message)]]
403
+ #else
404
+ # define V8_DEPRECATE_SOON(message)
405
+ #endif
406
+
407
+
408
+ // A macro to provide the compiler with branch prediction information.
409
+ #if V8_HAS_BUILTIN_EXPECT
410
+ # define V8_UNLIKELY(condition) (__builtin_expect(!!(condition), 0))
411
+ # define V8_LIKELY(condition) (__builtin_expect(!!(condition), 1))
412
+ #else
413
+ # define V8_UNLIKELY(condition) (condition)
414
+ # define V8_LIKELY(condition) (condition)
415
+ #endif
416
+
417
+
418
+ // Annotate a function indicating the caller must examine the return value.
419
+ // Use like:
420
+ // int foo() V8_WARN_UNUSED_RESULT;
421
+ #if V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT
422
+ #define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
423
+ #else
424
+ #define V8_WARN_UNUSED_RESULT /* NOT SUPPORTED */
425
+ #endif
426
+
427
+ #if defined(BUILDING_V8_SHARED) && defined(USING_V8_SHARED)
428
+ #error Inconsistent build configuration: To build the V8 shared library \
429
+ set BUILDING_V8_SHARED, to include its headers for linking against the \
430
+ V8 shared library set USING_V8_SHARED.
431
+ #endif
432
+
433
+ #ifdef V8_OS_WIN
434
+
435
+ // Setup for Windows DLL export/import. When building the V8 DLL the
436
+ // BUILDING_V8_SHARED needs to be defined. When building a program which uses
437
+ // the V8 DLL USING_V8_SHARED needs to be defined. When either building the V8
438
+ // static library or building a program which uses the V8 static library neither
439
+ // BUILDING_V8_SHARED nor USING_V8_SHARED should be defined.
440
+ #ifdef BUILDING_V8_SHARED
441
+ # define V8_EXPORT __declspec(dllexport)
442
+ #elif USING_V8_SHARED
443
+ # define V8_EXPORT __declspec(dllimport)
444
+ #else
445
+ # define V8_EXPORT
446
+ #endif // BUILDING_V8_SHARED
447
+
448
+ #else // V8_OS_WIN
449
+
450
+ // Setup for Linux shared library export.
451
+ #if V8_HAS_ATTRIBUTE_VISIBILITY
452
+ # ifdef BUILDING_V8_SHARED
453
+ # define V8_EXPORT __attribute__ ((visibility("default")))
454
+ # else
455
+ # define V8_EXPORT
456
+ # endif
457
+ #else
458
+ # define V8_EXPORT
459
+ #endif
460
+
461
+ #endif // V8_OS_WIN
462
+
463
+ // clang-format on
464
+
465
+ #endif // V8CONFIG_H_