libv8-node 16.10.0.0-x86_64-darwin → 18.8.0.0-x86_64-darwin

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 (89) hide show
  1. checksums.yaml +4 -4
  2. data/ext/libv8-node/paths.rb +1 -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-darwin/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_