libv8-node 15.5.1.0.beta1-aarch64-linux-musl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +7 -0
  2. data/ext/libv8-node/.location.yml +1 -0
  3. data/ext/libv8-node/location.rb +76 -0
  4. data/ext/libv8-node/paths.rb +30 -0
  5. data/lib/libv8-node.rb +1 -0
  6. data/lib/libv8/node.rb +11 -0
  7. data/lib/libv8/node/version.rb +7 -0
  8. data/vendor/v8/include/cppgc/allocation.h +173 -0
  9. data/vendor/v8/include/cppgc/common.h +26 -0
  10. data/vendor/v8/include/cppgc/custom-space.h +62 -0
  11. data/vendor/v8/include/cppgc/default-platform.h +76 -0
  12. data/vendor/v8/include/cppgc/garbage-collected.h +116 -0
  13. data/vendor/v8/include/cppgc/heap.h +139 -0
  14. data/vendor/v8/include/cppgc/internal/api-constants.h +47 -0
  15. data/vendor/v8/include/cppgc/internal/atomic-entry-flag.h +48 -0
  16. data/vendor/v8/include/cppgc/internal/caged-heap-local-data.h +67 -0
  17. data/vendor/v8/include/cppgc/internal/compiler-specific.h +38 -0
  18. data/vendor/v8/include/cppgc/internal/finalizer-trait.h +90 -0
  19. data/vendor/v8/include/cppgc/internal/gc-info.h +45 -0
  20. data/vendor/v8/include/cppgc/internal/logging.h +50 -0
  21. data/vendor/v8/include/cppgc/internal/persistent-node.h +116 -0
  22. data/vendor/v8/include/cppgc/internal/pointer-policies.h +134 -0
  23. data/vendor/v8/include/cppgc/internal/prefinalizer-handler.h +30 -0
  24. data/vendor/v8/include/cppgc/internal/process-heap.h +34 -0
  25. data/vendor/v8/include/cppgc/internal/write-barrier.h +78 -0
  26. data/vendor/v8/include/cppgc/liveness-broker.h +68 -0
  27. data/vendor/v8/include/cppgc/macros.h +24 -0
  28. data/vendor/v8/include/cppgc/member.h +226 -0
  29. data/vendor/v8/include/cppgc/persistent.h +341 -0
  30. data/vendor/v8/include/cppgc/platform.h +130 -0
  31. data/vendor/v8/include/cppgc/prefinalizer.h +52 -0
  32. data/vendor/v8/include/cppgc/source-location.h +91 -0
  33. data/vendor/v8/include/cppgc/trace-trait.h +111 -0
  34. data/vendor/v8/include/cppgc/type-traits.h +109 -0
  35. data/vendor/v8/include/cppgc/visitor.h +213 -0
  36. data/vendor/v8/include/libplatform/libplatform-export.h +29 -0
  37. data/vendor/v8/include/libplatform/libplatform.h +106 -0
  38. data/vendor/v8/include/libplatform/v8-tracing.h +332 -0
  39. data/vendor/v8/include/v8-cppgc.h +226 -0
  40. data/vendor/v8/include/v8-fast-api-calls.h +388 -0
  41. data/vendor/v8/include/v8-inspector-protocol.h +13 -0
  42. data/vendor/v8/include/v8-inspector.h +327 -0
  43. data/vendor/v8/include/v8-internal.h +427 -0
  44. data/vendor/v8/include/v8-metrics.h +133 -0
  45. data/vendor/v8/include/v8-platform.h +684 -0
  46. data/vendor/v8/include/v8-profiler.h +1059 -0
  47. data/vendor/v8/include/v8-util.h +652 -0
  48. data/vendor/v8/include/v8-value-serializer-version.h +24 -0
  49. data/vendor/v8/include/v8-version-string.h +38 -0
  50. data/vendor/v8/include/v8-version.h +20 -0
  51. data/vendor/v8/include/v8-wasm-trap-handler-posix.h +31 -0
  52. data/vendor/v8/include/v8-wasm-trap-handler-win.h +28 -0
  53. data/vendor/v8/include/v8.h +12098 -0
  54. data/vendor/v8/include/v8config.h +484 -0
  55. data/vendor/v8/out.gn/libv8/obj/libv8_monolith.a +0 -0
  56. metadata +126 -0
@@ -0,0 +1,484 @@
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
+ #if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ < 6)
409
+ # define V8_ENUM_DEPRECATED(message)
410
+ # define V8_ENUM_DEPRECATE_SOON(message)
411
+ #else
412
+ # define V8_ENUM_DEPRECATED(message) V8_DEPRECATED(message)
413
+ # define V8_ENUM_DEPRECATE_SOON(message) V8_DEPRECATE_SOON(message)
414
+ #endif
415
+
416
+
417
+ // A macro to provide the compiler with branch prediction information.
418
+ #if V8_HAS_BUILTIN_EXPECT
419
+ # define V8_UNLIKELY(condition) (__builtin_expect(!!(condition), 0))
420
+ # define V8_LIKELY(condition) (__builtin_expect(!!(condition), 1))
421
+ #else
422
+ # define V8_UNLIKELY(condition) (condition)
423
+ # define V8_LIKELY(condition) (condition)
424
+ #endif
425
+
426
+
427
+ // Annotate a function indicating the caller must examine the return value.
428
+ // Use like:
429
+ // int foo() V8_WARN_UNUSED_RESULT;
430
+ #if V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT
431
+ #define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
432
+ #else
433
+ #define V8_WARN_UNUSED_RESULT /* NOT SUPPORTED */
434
+ #endif
435
+
436
+ // Helper macro to define no_sanitize attributes only with clang.
437
+ #if defined(__clang__) && defined(__has_attribute)
438
+ #if __has_attribute(no_sanitize)
439
+ #define V8_CLANG_NO_SANITIZE(what) __attribute__((no_sanitize(what)))
440
+ #endif
441
+ #endif
442
+ #if !defined(V8_CLANG_NO_SANITIZE)
443
+ #define V8_CLANG_NO_SANITIZE(what)
444
+ #endif
445
+
446
+ #if defined(BUILDING_V8_SHARED) && defined(USING_V8_SHARED)
447
+ #error Inconsistent build configuration: To build the V8 shared library \
448
+ set BUILDING_V8_SHARED, to include its headers for linking against the \
449
+ V8 shared library set USING_V8_SHARED.
450
+ #endif
451
+
452
+ #ifdef V8_OS_WIN
453
+
454
+ // Setup for Windows DLL export/import. When building the V8 DLL the
455
+ // BUILDING_V8_SHARED needs to be defined. When building a program which uses
456
+ // the V8 DLL USING_V8_SHARED needs to be defined. When either building the V8
457
+ // static library or building a program which uses the V8 static library neither
458
+ // BUILDING_V8_SHARED nor USING_V8_SHARED should be defined.
459
+ #ifdef BUILDING_V8_SHARED
460
+ # define V8_EXPORT __declspec(dllexport)
461
+ #elif USING_V8_SHARED
462
+ # define V8_EXPORT __declspec(dllimport)
463
+ #else
464
+ # define V8_EXPORT
465
+ #endif // BUILDING_V8_SHARED
466
+
467
+ #else // V8_OS_WIN
468
+
469
+ // Setup for Linux shared library export.
470
+ #if V8_HAS_ATTRIBUTE_VISIBILITY
471
+ # ifdef BUILDING_V8_SHARED
472
+ # define V8_EXPORT __attribute__ ((visibility("default")))
473
+ # else
474
+ # define V8_EXPORT
475
+ # endif
476
+ #else
477
+ # define V8_EXPORT
478
+ #endif
479
+
480
+ #endif // V8_OS_WIN
481
+
482
+ // clang-format on
483
+
484
+ #endif // V8CONFIG_H_