libv8-node 16.10.0.0-x86_64-linux → 18.8.0.0-x86_64-linux

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/ext/libv8-node/paths.rb +5 -1
  3. data/lib/libv8/node/version.rb +3 -3
  4. data/vendor/v8/include/cppgc/allocation.h +100 -22
  5. data/vendor/v8/include/cppgc/cross-thread-persistent.h +114 -33
  6. data/vendor/v8/include/cppgc/default-platform.h +2 -10
  7. data/vendor/v8/include/cppgc/explicit-management.h +22 -4
  8. data/vendor/v8/include/cppgc/garbage-collected.h +15 -26
  9. data/vendor/v8/include/cppgc/heap-consistency.h +30 -0
  10. data/vendor/v8/include/cppgc/heap-state.h +12 -0
  11. data/vendor/v8/include/cppgc/heap.h +7 -2
  12. data/vendor/v8/include/cppgc/internal/api-constants.h +8 -0
  13. data/vendor/v8/include/cppgc/internal/caged-heap-local-data.h +25 -14
  14. data/vendor/v8/include/cppgc/internal/finalizer-trait.h +4 -1
  15. data/vendor/v8/include/cppgc/internal/gc-info.h +90 -10
  16. data/vendor/v8/include/cppgc/internal/logging.h +3 -3
  17. data/vendor/v8/include/cppgc/internal/name-trait.h +11 -0
  18. data/vendor/v8/include/cppgc/internal/persistent-node.h +73 -29
  19. data/vendor/v8/include/cppgc/internal/pointer-policies.h +26 -15
  20. data/vendor/v8/include/cppgc/internal/write-barrier.h +62 -23
  21. data/vendor/v8/include/cppgc/liveness-broker.h +4 -1
  22. data/vendor/v8/include/cppgc/member.h +7 -2
  23. data/vendor/v8/include/cppgc/persistent.h +38 -33
  24. data/vendor/v8/include/cppgc/platform.h +4 -1
  25. data/vendor/v8/include/cppgc/prefinalizer.h +35 -12
  26. data/vendor/v8/include/cppgc/testing.h +9 -2
  27. data/vendor/v8/include/cppgc/type-traits.h +6 -13
  28. data/vendor/v8/include/cppgc/visitor.h +9 -7
  29. data/vendor/v8/include/libplatform/libplatform.h +0 -11
  30. data/vendor/v8/include/libplatform/v8-tracing.h +0 -1
  31. data/vendor/v8/include/v8-array-buffer.h +445 -0
  32. data/vendor/v8/include/v8-callbacks.h +397 -0
  33. data/vendor/v8/include/v8-container.h +129 -0
  34. data/vendor/v8/include/v8-context.h +407 -0
  35. data/vendor/v8/include/v8-cppgc.h +21 -128
  36. data/vendor/v8/include/v8-data.h +80 -0
  37. data/vendor/v8/include/v8-date.h +43 -0
  38. data/vendor/v8/include/v8-debug.h +168 -0
  39. data/vendor/v8/include/v8-embedder-heap.h +218 -0
  40. data/vendor/v8/include/v8-embedder-state-scope.h +51 -0
  41. data/vendor/v8/include/v8-exception.h +217 -0
  42. data/vendor/v8/include/v8-extension.h +62 -0
  43. data/vendor/v8/include/v8-external.h +37 -0
  44. data/vendor/v8/include/v8-fast-api-calls.h +172 -24
  45. data/vendor/v8/include/v8-forward.h +81 -0
  46. data/vendor/v8/include/v8-function-callback.h +475 -0
  47. data/vendor/v8/include/v8-function.h +125 -0
  48. data/vendor/v8/include/v8-initialization.h +315 -0
  49. data/vendor/v8/include/v8-inspector.h +56 -28
  50. data/vendor/v8/include/v8-internal.h +217 -55
  51. data/vendor/v8/include/v8-isolate.h +1709 -0
  52. data/vendor/v8/include/v8-json.h +47 -0
  53. data/vendor/v8/include/v8-local-handle.h +455 -0
  54. data/vendor/v8/include/v8-locker.h +149 -0
  55. data/vendor/v8/include/v8-maybe.h +137 -0
  56. data/vendor/v8/include/v8-memory-span.h +43 -0
  57. data/vendor/v8/include/v8-message.h +216 -0
  58. data/vendor/v8/include/v8-metrics.h +69 -16
  59. data/vendor/v8/include/v8-microtask-queue.h +152 -0
  60. data/vendor/v8/include/v8-microtask.h +28 -0
  61. data/vendor/v8/include/v8-object.h +775 -0
  62. data/vendor/v8/include/v8-persistent-handle.h +590 -0
  63. data/vendor/v8/include/v8-platform.h +400 -17
  64. data/vendor/v8/include/v8-primitive-object.h +118 -0
  65. data/vendor/v8/include/v8-primitive.h +866 -0
  66. data/vendor/v8/include/v8-profiler.h +88 -13
  67. data/vendor/v8/include/v8-promise.h +174 -0
  68. data/vendor/v8/include/v8-proxy.h +50 -0
  69. data/vendor/v8/include/v8-regexp.h +105 -0
  70. data/vendor/v8/include/v8-script.h +747 -0
  71. data/vendor/v8/include/v8-snapshot.h +196 -0
  72. data/vendor/v8/include/v8-statistics.h +217 -0
  73. data/vendor/v8/include/v8-template.h +1079 -0
  74. data/vendor/v8/include/v8-traced-handle.h +420 -0
  75. data/vendor/v8/include/v8-typed-array.h +282 -0
  76. data/vendor/v8/include/v8-unwinder-state.h +4 -3
  77. data/vendor/v8/include/v8-unwinder.h +132 -0
  78. data/vendor/v8/include/v8-util.h +7 -1
  79. data/vendor/v8/include/v8-value-serializer-version.h +1 -1
  80. data/vendor/v8/include/v8-value-serializer.h +279 -0
  81. data/vendor/v8/include/v8-value.h +526 -0
  82. data/vendor/v8/include/v8-version.h +4 -4
  83. data/vendor/v8/include/v8-wasm.h +257 -0
  84. data/vendor/v8/include/v8-weak-callback-info.h +87 -0
  85. data/vendor/v8/include/v8.h +41 -12601
  86. data/vendor/v8/include/v8config.h +102 -12
  87. data/vendor/v8/x86_64-linux/libv8/obj/libv8_monolith.a +0 -0
  88. metadata +47 -5
  89. data/vendor/v8/include/cppgc/internal/prefinalizer-handler.h +0 -30
@@ -0,0 +1,62 @@
1
+ // Copyright 2021 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 INCLUDE_V8_EXTENSION_H_
6
+ #define INCLUDE_V8_EXTENSION_H_
7
+
8
+ #include <memory>
9
+
10
+ #include "v8-local-handle.h" // NOLINT(build/include_directory)
11
+ #include "v8-primitive.h" // NOLINT(build/include_directory)
12
+ #include "v8config.h" // NOLINT(build/include_directory)
13
+
14
+ namespace v8 {
15
+
16
+ class FunctionTemplate;
17
+
18
+ // --- Extensions ---
19
+
20
+ /**
21
+ * Ignore
22
+ */
23
+ class V8_EXPORT Extension {
24
+ public:
25
+ // Note that the strings passed into this constructor must live as long
26
+ // as the Extension itself.
27
+ Extension(const char* name, const char* source = nullptr, int dep_count = 0,
28
+ const char** deps = nullptr, int source_length = -1);
29
+ virtual ~Extension() { delete source_; }
30
+ virtual Local<FunctionTemplate> GetNativeFunctionTemplate(
31
+ Isolate* isolate, Local<String> name) {
32
+ return Local<FunctionTemplate>();
33
+ }
34
+
35
+ const char* name() const { return name_; }
36
+ size_t source_length() const { return source_length_; }
37
+ const String::ExternalOneByteStringResource* source() const {
38
+ return source_;
39
+ }
40
+ int dependency_count() const { return dep_count_; }
41
+ const char** dependencies() const { return deps_; }
42
+ void set_auto_enable(bool value) { auto_enable_ = value; }
43
+ bool auto_enable() { return auto_enable_; }
44
+
45
+ // Disallow copying and assigning.
46
+ Extension(const Extension&) = delete;
47
+ void operator=(const Extension&) = delete;
48
+
49
+ private:
50
+ const char* name_;
51
+ size_t source_length_; // expected to initialize before source_
52
+ String::ExternalOneByteStringResource* source_;
53
+ int dep_count_;
54
+ const char** deps_;
55
+ bool auto_enable_;
56
+ };
57
+
58
+ void V8_EXPORT RegisterExtension(std::unique_ptr<Extension>);
59
+
60
+ } // namespace v8
61
+
62
+ #endif // INCLUDE_V8_EXTENSION_H_
@@ -0,0 +1,37 @@
1
+ // Copyright 2021 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 INCLUDE_V8_EXTERNAL_H_
6
+ #define INCLUDE_V8_EXTERNAL_H_
7
+
8
+ #include "v8-value.h" // NOLINT(build/include_directory)
9
+ #include "v8config.h" // NOLINT(build/include_directory)
10
+
11
+ namespace v8 {
12
+
13
+ class Isolate;
14
+
15
+ /**
16
+ * A JavaScript value that wraps a C++ void*. This type of value is mainly used
17
+ * to associate C++ data structures with JavaScript objects.
18
+ */
19
+ class V8_EXPORT External : public Value {
20
+ public:
21
+ static Local<External> New(Isolate* isolate, void* value);
22
+ V8_INLINE static External* Cast(Value* value) {
23
+ #ifdef V8_ENABLE_CHECKS
24
+ CheckCast(value);
25
+ #endif
26
+ return static_cast<External*>(value);
27
+ }
28
+
29
+ void* Value() const;
30
+
31
+ private:
32
+ static void CheckCast(v8::Value* obj);
33
+ };
34
+
35
+ } // namespace v8
36
+
37
+ #endif // INCLUDE_V8_EXTERNAL_H_
@@ -225,8 +225,11 @@
225
225
  #include <tuple>
226
226
  #include <type_traits>
227
227
 
228
- #include "v8.h" // NOLINT(build/include_directory)
229
- #include "v8config.h" // NOLINT(build/include_directory)
228
+ #include "v8-internal.h" // NOLINT(build/include_directory)
229
+ #include "v8-local-handle.h" // NOLINT(build/include_directory)
230
+ #include "v8-typed-array.h" // NOLINT(build/include_directory)
231
+ #include "v8-value.h" // NOLINT(build/include_directory)
232
+ #include "v8config.h" // NOLINT(build/include_directory)
230
233
 
231
234
  namespace v8 {
232
235
 
@@ -246,6 +249,15 @@ class CTypeInfo {
246
249
  kV8Value,
247
250
  kApiObject, // This will be deprecated once all users have
248
251
  // migrated from v8::ApiObject to v8::Local<v8::Value>.
252
+ kAny, // This is added to enable untyped representation of fast
253
+ // call arguments for test purposes. It can represent any of
254
+ // the other types stored in the same memory as a union (see
255
+ // the AnyCType struct declared below). This allows for
256
+ // uniform passing of arguments w.r.t. their location
257
+ // (in a register or on the stack), independent of their
258
+ // actual type. It's currently used by the arm64 simulator
259
+ // and can be added to the other simulators as well when fast
260
+ // calls having both GP and FP params need to be supported.
249
261
  };
250
262
 
251
263
  // kCallbackOptionsType is not part of the Type enum
@@ -274,6 +286,17 @@ class CTypeInfo {
274
286
  Flags flags = Flags::kNone)
275
287
  : type_(type), sequence_type_(sequence_type), flags_(flags) {}
276
288
 
289
+ typedef uint32_t Identifier;
290
+ explicit constexpr CTypeInfo(Identifier identifier)
291
+ : CTypeInfo(static_cast<Type>(identifier >> 16),
292
+ static_cast<SequenceType>((identifier >> 8) & 255),
293
+ static_cast<Flags>(identifier & 255)) {}
294
+ constexpr Identifier GetId() const {
295
+ return static_cast<uint8_t>(type_) << 16 |
296
+ static_cast<uint8_t>(sequence_type_) << 8 |
297
+ static_cast<uint8_t>(flags_);
298
+ }
299
+
277
300
  constexpr Type GetType() const { return type_; }
278
301
  constexpr SequenceType GetSequenceType() const { return sequence_type_; }
279
302
  constexpr Flags GetFlags() const { return flags_; }
@@ -298,10 +321,44 @@ class CTypeInfo {
298
321
  Flags flags_;
299
322
  };
300
323
 
324
+ struct FastApiTypedArrayBase {
325
+ public:
326
+ // Returns the length in number of elements.
327
+ size_t V8_EXPORT length() const { return length_; }
328
+ // Checks whether the given index is within the bounds of the collection.
329
+ void V8_EXPORT ValidateIndex(size_t index) const;
330
+
331
+ protected:
332
+ size_t length_ = 0;
333
+ };
334
+
301
335
  template <typename T>
302
- struct FastApiTypedArray {
303
- T* data; // should include the typed array offset applied
304
- size_t length; // length in number of elements
336
+ struct FastApiTypedArray : public FastApiTypedArrayBase {
337
+ public:
338
+ V8_INLINE T get(size_t index) const {
339
+ #ifdef DEBUG
340
+ ValidateIndex(index);
341
+ #endif // DEBUG
342
+ T tmp;
343
+ memcpy(&tmp, reinterpret_cast<T*>(data_) + index, sizeof(T));
344
+ return tmp;
345
+ }
346
+
347
+ bool getStorageIfAligned(T** elements) const {
348
+ if (reinterpret_cast<uintptr_t>(data_) % alignof(T) != 0) {
349
+ return false;
350
+ }
351
+ *elements = reinterpret_cast<T*>(data_);
352
+ return true;
353
+ }
354
+
355
+ private:
356
+ // This pointer should include the typed array offset applied.
357
+ // It's not guaranteed that it's aligned to sizeof(T), it's only
358
+ // guaranteed that it's 4-byte aligned, so for 8-byte types we need to
359
+ // provide a special implementation for reading from it, which hides
360
+ // the possibly unaligned read in the `get` method.
361
+ void* data_;
305
362
  };
306
363
 
307
364
  // Any TypedArray. It uses kTypedArrayBit with base type void
@@ -356,6 +413,37 @@ class V8_EXPORT CFunctionInfo {
356
413
  const CTypeInfo* arg_info_;
357
414
  };
358
415
 
416
+ struct FastApiCallbackOptions;
417
+
418
+ // Provided for testing.
419
+ struct AnyCType {
420
+ AnyCType() : int64_value(0) {}
421
+
422
+ union {
423
+ bool bool_value;
424
+ int32_t int32_value;
425
+ uint32_t uint32_value;
426
+ int64_t int64_value;
427
+ uint64_t uint64_value;
428
+ float float_value;
429
+ double double_value;
430
+ Local<Object> object_value;
431
+ Local<Array> sequence_value;
432
+ const FastApiTypedArray<int32_t>* int32_ta_value;
433
+ const FastApiTypedArray<uint32_t>* uint32_ta_value;
434
+ const FastApiTypedArray<int64_t>* int64_ta_value;
435
+ const FastApiTypedArray<uint64_t>* uint64_ta_value;
436
+ const FastApiTypedArray<float>* float_ta_value;
437
+ const FastApiTypedArray<double>* double_ta_value;
438
+ FastApiCallbackOptions* options_value;
439
+ };
440
+ };
441
+
442
+ static_assert(
443
+ sizeof(AnyCType) == 8,
444
+ "The AnyCType struct should have size == 64 bits, as this is assumed "
445
+ "by EffectControlLinearizer.");
446
+
359
447
  class V8_EXPORT CFunction {
360
448
  public:
361
449
  constexpr CFunction() : address_(nullptr), type_info_(nullptr) {}
@@ -412,10 +500,17 @@ class V8_EXPORT CFunction {
412
500
  return ArgUnwrap<F*>::Make(func);
413
501
  }
414
502
 
415
- template <typename F>
416
- V8_DEPRECATED("Use CFunctionBuilder instead.")
417
- static CFunction MakeWithFallbackSupport(F* func) {
418
- return ArgUnwrap<F*>::Make(func);
503
+ // Provided for testing purposes.
504
+ template <typename R, typename... Args, typename R_Patch,
505
+ typename... Args_Patch>
506
+ static CFunction Make(R (*func)(Args...),
507
+ R_Patch (*patching_func)(Args_Patch...)) {
508
+ CFunction c_func = ArgUnwrap<R (*)(Args...)>::Make(func);
509
+ static_assert(
510
+ sizeof...(Args_Patch) == sizeof...(Args),
511
+ "The patching function must have the same number of arguments.");
512
+ c_func.address_ = reinterpret_cast<void*>(patching_func);
513
+ return c_func;
419
514
  }
420
515
 
421
516
  CFunction(const void* address, const CFunctionInfo* type_info);
@@ -437,10 +532,6 @@ class V8_EXPORT CFunction {
437
532
  };
438
533
  };
439
534
 
440
- struct ApiObject {
441
- uintptr_t address;
442
- };
443
-
444
535
  /**
445
536
  * A struct which may be passed to a fast call callback, like so:
446
537
  * \code
@@ -513,7 +604,8 @@ class CFunctionInfoImpl : public CFunctionInfo {
513
604
  kReturnType == CTypeInfo::Type::kInt32 ||
514
605
  kReturnType == CTypeInfo::Type::kUint32 ||
515
606
  kReturnType == CTypeInfo::Type::kFloat32 ||
516
- kReturnType == CTypeInfo::Type::kFloat64,
607
+ kReturnType == CTypeInfo::Type::kFloat64 ||
608
+ kReturnType == CTypeInfo::Type::kAny,
517
609
  "64-bit int and api object values are not currently "
518
610
  "supported return types.");
519
611
  }
@@ -564,7 +656,7 @@ struct CTypeInfoTraits {};
564
656
  V(void, kVoid) \
565
657
  V(v8::Local<v8::Value>, kV8Value) \
566
658
  V(v8::Local<v8::Object>, kV8Value) \
567
- V(ApiObject, kApiObject)
659
+ V(AnyCType, kAny)
568
660
 
569
661
  // ApiObject was a temporary solution to wrap the pointer to the v8::Value.
570
662
  // Please use v8::Local<v8::Value> in new code for the arguments and
@@ -578,7 +670,7 @@ PRIMITIVE_C_TYPES(DEFINE_TYPE_INFO_TRAITS)
578
670
 
579
671
  #define SPECIALIZE_GET_TYPE_INFO_HELPER_FOR_TA(T, Enum) \
580
672
  template <> \
581
- struct TypeInfoHelper<FastApiTypedArray<T>> { \
673
+ struct TypeInfoHelper<const FastApiTypedArray<T>&> { \
582
674
  static constexpr CTypeInfo::Flags Flags() { \
583
675
  return CTypeInfo::Flags::kNone; \
584
676
  } \
@@ -636,17 +728,19 @@ struct TypeInfoHelper<FastApiCallbackOptions&> {
636
728
  #define STATIC_ASSERT_IMPLIES(COND, ASSERTION, MSG) \
637
729
  static_assert(((COND) == 0) || (ASSERTION), MSG)
638
730
 
731
+ } // namespace internal
732
+
639
733
  template <typename T, CTypeInfo::Flags... Flags>
640
- class CTypeInfoBuilder {
734
+ class V8_EXPORT CTypeInfoBuilder {
641
735
  public:
642
736
  using BaseType = T;
643
737
 
644
738
  static constexpr CTypeInfo Build() {
645
739
  constexpr CTypeInfo::Flags kFlags =
646
- MergeFlags(TypeInfoHelper<T>::Flags(), Flags...);
647
- constexpr CTypeInfo::Type kType = TypeInfoHelper<T>::Type();
740
+ MergeFlags(internal::TypeInfoHelper<T>::Flags(), Flags...);
741
+ constexpr CTypeInfo::Type kType = internal::TypeInfoHelper<T>::Type();
648
742
  constexpr CTypeInfo::SequenceType kSequenceType =
649
- TypeInfoHelper<T>::SequenceType();
743
+ internal::TypeInfoHelper<T>::SequenceType();
650
744
 
651
745
  STATIC_ASSERT_IMPLIES(
652
746
  uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kAllowSharedBit),
@@ -674,8 +768,8 @@ class CTypeInfoBuilder {
674
768
  "TypedArrays are only supported from primitive types or void.");
675
769
 
676
770
  // Return the same type with the merged flags.
677
- return CTypeInfo(TypeInfoHelper<T>::Type(),
678
- TypeInfoHelper<T>::SequenceType(), kFlags);
771
+ return CTypeInfo(internal::TypeInfoHelper<T>::Type(),
772
+ internal::TypeInfoHelper<T>::SequenceType(), kFlags);
679
773
  }
680
774
 
681
775
  private:
@@ -687,6 +781,7 @@ class CTypeInfoBuilder {
687
781
  static constexpr CTypeInfo::Flags MergeFlags() { return CTypeInfo::Flags(0); }
688
782
  };
689
783
 
784
+ namespace internal {
690
785
  template <typename RetBuilder, typename... ArgBuilders>
691
786
  class CFunctionBuilderWithFunction {
692
787
  public:
@@ -770,6 +865,10 @@ CFunction CFunction::ArgUnwrap<R (*)(Args...)>::Make(R (*func)(Args...)) {
770
865
 
771
866
  using CFunctionBuilder = internal::CFunctionBuilder;
772
867
 
868
+ static constexpr CTypeInfo kTypeInfoInt32 = CTypeInfo(CTypeInfo::Type::kInt32);
869
+ static constexpr CTypeInfo kTypeInfoFloat64 =
870
+ CTypeInfo(CTypeInfo::Type::kFloat64);
871
+
773
872
  /**
774
873
  * Copies the contents of this JavaScript array to a C++ buffer with
775
874
  * a given max_length. A CTypeInfo is passed as an argument,
@@ -783,8 +882,57 @@ using CFunctionBuilder = internal::CFunctionBuilder;
783
882
  * returns true on success. `type_info` will be used for conversions.
784
883
  */
785
884
  template <const CTypeInfo* type_info, typename T>
786
- bool CopyAndConvertArrayToCppBuffer(Local<Array> src, T* dst,
787
- uint32_t max_length);
885
+ V8_DEPRECATED(
886
+ "Use TryToCopyAndConvertArrayToCppBuffer<CTypeInfo::Identifier, T>()")
887
+ bool V8_EXPORT V8_WARN_UNUSED_RESULT
888
+ TryCopyAndConvertArrayToCppBuffer(Local<Array> src, T* dst,
889
+ uint32_t max_length);
890
+
891
+ template <>
892
+ V8_DEPRECATED(
893
+ "Use TryToCopyAndConvertArrayToCppBuffer<CTypeInfo::Identifier, T>()")
894
+ inline bool V8_WARN_UNUSED_RESULT
895
+ TryCopyAndConvertArrayToCppBuffer<&kTypeInfoInt32, int32_t>(
896
+ Local<Array> src, int32_t* dst, uint32_t max_length) {
897
+ return false;
898
+ }
899
+
900
+ template <>
901
+ V8_DEPRECATED(
902
+ "Use TryToCopyAndConvertArrayToCppBuffer<CTypeInfo::Identifier, T>()")
903
+ inline bool V8_WARN_UNUSED_RESULT
904
+ TryCopyAndConvertArrayToCppBuffer<&kTypeInfoFloat64, double>(
905
+ Local<Array> src, double* dst, uint32_t max_length) {
906
+ return false;
907
+ }
908
+
909
+ template <CTypeInfo::Identifier type_info_id, typename T>
910
+ bool V8_EXPORT V8_WARN_UNUSED_RESULT TryToCopyAndConvertArrayToCppBuffer(
911
+ Local<Array> src, T* dst, uint32_t max_length);
912
+
913
+ template <>
914
+ bool V8_EXPORT V8_WARN_UNUSED_RESULT
915
+ TryToCopyAndConvertArrayToCppBuffer<CTypeInfoBuilder<int32_t>::Build().GetId(),
916
+ int32_t>(Local<Array> src, int32_t* dst,
917
+ uint32_t max_length);
918
+
919
+ template <>
920
+ bool V8_EXPORT V8_WARN_UNUSED_RESULT
921
+ TryToCopyAndConvertArrayToCppBuffer<CTypeInfoBuilder<uint32_t>::Build().GetId(),
922
+ uint32_t>(Local<Array> src, uint32_t* dst,
923
+ uint32_t max_length);
924
+
925
+ template <>
926
+ bool V8_EXPORT V8_WARN_UNUSED_RESULT
927
+ TryToCopyAndConvertArrayToCppBuffer<CTypeInfoBuilder<float>::Build().GetId(),
928
+ float>(Local<Array> src, float* dst,
929
+ uint32_t max_length);
930
+
931
+ template <>
932
+ bool V8_EXPORT V8_WARN_UNUSED_RESULT
933
+ TryToCopyAndConvertArrayToCppBuffer<CTypeInfoBuilder<double>::Build().GetId(),
934
+ double>(Local<Array> src, double* dst,
935
+ uint32_t max_length);
788
936
 
789
937
  } // namespace v8
790
938
 
@@ -0,0 +1,81 @@
1
+ // Copyright 2021 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 INCLUDE_V8_FORWARD_H_
6
+ #define INCLUDE_V8_FORWARD_H_
7
+
8
+ // This header is intended to be used by headers that pass around V8 types,
9
+ // either by pointer or using Local<Type>. The full definitions can be included
10
+ // either via v8.h or the more fine-grained headers.
11
+
12
+ #include "v8-local-handle.h" // NOLINT(build/include_directory)
13
+
14
+ namespace v8 {
15
+
16
+ class AccessorSignature;
17
+ class Array;
18
+ class ArrayBuffer;
19
+ class ArrayBufferView;
20
+ class BigInt;
21
+ class BigInt64Array;
22
+ class BigIntObject;
23
+ class BigUint64Array;
24
+ class Boolean;
25
+ class BooleanObject;
26
+ class Context;
27
+ class DataView;
28
+ class Data;
29
+ class Date;
30
+ class Extension;
31
+ class External;
32
+ class FixedArray;
33
+ class Float32Array;
34
+ class Float64Array;
35
+ class Function;
36
+ template <class F>
37
+ class FunctionCallbackInfo;
38
+ class FunctionTemplate;
39
+ class Int16Array;
40
+ class Int32;
41
+ class Int32Array;
42
+ class Int8Array;
43
+ class Integer;
44
+ class Isolate;
45
+ class Map;
46
+ class Module;
47
+ class Name;
48
+ class Number;
49
+ class NumberObject;
50
+ class Object;
51
+ class ObjectTemplate;
52
+ class Platform;
53
+ class Primitive;
54
+ class Private;
55
+ class Promise;
56
+ class Proxy;
57
+ class RegExp;
58
+ class Script;
59
+ class Set;
60
+ class SharedArrayBuffer;
61
+ class Signature;
62
+ class String;
63
+ class StringObject;
64
+ class Symbol;
65
+ class SymbolObject;
66
+ class Template;
67
+ class TryCatch;
68
+ class TypedArray;
69
+ class Uint16Array;
70
+ class Uint32;
71
+ class Uint32Array;
72
+ class Uint8Array;
73
+ class Uint8ClampedArray;
74
+ class UnboundModuleScript;
75
+ class Value;
76
+ class WasmMemoryObject;
77
+ class WasmModuleObject;
78
+
79
+ } // namespace v8
80
+
81
+ #endif // INCLUDE_V8_FORWARD_H_