aha-libv8-node 16.0.0.0-linux

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