libv8-node 16.10.0.0-arm64-darwin → 18.8.0.0-arm64-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/arm64-darwin/libv8/obj/libv8_monolith.a +0 -0
  5. data/vendor/v8/include/cppgc/allocation.h +100 -22
  6. data/vendor/v8/include/cppgc/cross-thread-persistent.h +114 -33
  7. data/vendor/v8/include/cppgc/default-platform.h +2 -10
  8. data/vendor/v8/include/cppgc/explicit-management.h +22 -4
  9. data/vendor/v8/include/cppgc/garbage-collected.h +15 -26
  10. data/vendor/v8/include/cppgc/heap-consistency.h +30 -0
  11. data/vendor/v8/include/cppgc/heap-state.h +12 -0
  12. data/vendor/v8/include/cppgc/heap.h +7 -2
  13. data/vendor/v8/include/cppgc/internal/api-constants.h +8 -0
  14. data/vendor/v8/include/cppgc/internal/caged-heap-local-data.h +25 -14
  15. data/vendor/v8/include/cppgc/internal/finalizer-trait.h +4 -1
  16. data/vendor/v8/include/cppgc/internal/gc-info.h +90 -10
  17. data/vendor/v8/include/cppgc/internal/logging.h +3 -3
  18. data/vendor/v8/include/cppgc/internal/name-trait.h +11 -0
  19. data/vendor/v8/include/cppgc/internal/persistent-node.h +73 -29
  20. data/vendor/v8/include/cppgc/internal/pointer-policies.h +26 -15
  21. data/vendor/v8/include/cppgc/internal/write-barrier.h +62 -23
  22. data/vendor/v8/include/cppgc/liveness-broker.h +4 -1
  23. data/vendor/v8/include/cppgc/member.h +7 -2
  24. data/vendor/v8/include/cppgc/persistent.h +38 -33
  25. data/vendor/v8/include/cppgc/platform.h +4 -1
  26. data/vendor/v8/include/cppgc/prefinalizer.h +35 -12
  27. data/vendor/v8/include/cppgc/testing.h +9 -2
  28. data/vendor/v8/include/cppgc/type-traits.h +6 -13
  29. data/vendor/v8/include/cppgc/visitor.h +9 -7
  30. data/vendor/v8/include/libplatform/libplatform.h +0 -11
  31. data/vendor/v8/include/libplatform/v8-tracing.h +0 -1
  32. data/vendor/v8/include/v8-array-buffer.h +445 -0
  33. data/vendor/v8/include/v8-callbacks.h +397 -0
  34. data/vendor/v8/include/v8-container.h +129 -0
  35. data/vendor/v8/include/v8-context.h +407 -0
  36. data/vendor/v8/include/v8-cppgc.h +21 -128
  37. data/vendor/v8/include/v8-data.h +80 -0
  38. data/vendor/v8/include/v8-date.h +43 -0
  39. data/vendor/v8/include/v8-debug.h +168 -0
  40. data/vendor/v8/include/v8-embedder-heap.h +218 -0
  41. data/vendor/v8/include/v8-embedder-state-scope.h +51 -0
  42. data/vendor/v8/include/v8-exception.h +217 -0
  43. data/vendor/v8/include/v8-extension.h +62 -0
  44. data/vendor/v8/include/v8-external.h +37 -0
  45. data/vendor/v8/include/v8-fast-api-calls.h +172 -24
  46. data/vendor/v8/include/v8-forward.h +81 -0
  47. data/vendor/v8/include/v8-function-callback.h +475 -0
  48. data/vendor/v8/include/v8-function.h +125 -0
  49. data/vendor/v8/include/v8-initialization.h +315 -0
  50. data/vendor/v8/include/v8-inspector.h +56 -28
  51. data/vendor/v8/include/v8-internal.h +217 -55
  52. data/vendor/v8/include/v8-isolate.h +1709 -0
  53. data/vendor/v8/include/v8-json.h +47 -0
  54. data/vendor/v8/include/v8-local-handle.h +455 -0
  55. data/vendor/v8/include/v8-locker.h +149 -0
  56. data/vendor/v8/include/v8-maybe.h +137 -0
  57. data/vendor/v8/include/v8-memory-span.h +43 -0
  58. data/vendor/v8/include/v8-message.h +216 -0
  59. data/vendor/v8/include/v8-metrics.h +69 -16
  60. data/vendor/v8/include/v8-microtask-queue.h +152 -0
  61. data/vendor/v8/include/v8-microtask.h +28 -0
  62. data/vendor/v8/include/v8-object.h +775 -0
  63. data/vendor/v8/include/v8-persistent-handle.h +590 -0
  64. data/vendor/v8/include/v8-platform.h +400 -17
  65. data/vendor/v8/include/v8-primitive-object.h +118 -0
  66. data/vendor/v8/include/v8-primitive.h +866 -0
  67. data/vendor/v8/include/v8-profiler.h +88 -13
  68. data/vendor/v8/include/v8-promise.h +174 -0
  69. data/vendor/v8/include/v8-proxy.h +50 -0
  70. data/vendor/v8/include/v8-regexp.h +105 -0
  71. data/vendor/v8/include/v8-script.h +747 -0
  72. data/vendor/v8/include/v8-snapshot.h +196 -0
  73. data/vendor/v8/include/v8-statistics.h +217 -0
  74. data/vendor/v8/include/v8-template.h +1079 -0
  75. data/vendor/v8/include/v8-traced-handle.h +420 -0
  76. data/vendor/v8/include/v8-typed-array.h +282 -0
  77. data/vendor/v8/include/v8-unwinder-state.h +4 -3
  78. data/vendor/v8/include/v8-unwinder.h +132 -0
  79. data/vendor/v8/include/v8-util.h +7 -1
  80. data/vendor/v8/include/v8-value-serializer-version.h +1 -1
  81. data/vendor/v8/include/v8-value-serializer.h +279 -0
  82. data/vendor/v8/include/v8-value.h +526 -0
  83. data/vendor/v8/include/v8-version.h +4 -4
  84. data/vendor/v8/include/v8-wasm.h +257 -0
  85. data/vendor/v8/include/v8-weak-callback-info.h +87 -0
  86. data/vendor/v8/include/v8.h +41 -12601
  87. data/vendor/v8/include/v8config.h +102 -12
  88. metadata +47 -5
  89. data/vendor/v8/include/cppgc/internal/prefinalizer-handler.h +0 -30
@@ -0,0 +1,420 @@
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_TRACED_HANDLE_H_
6
+ #define INCLUDE_V8_TRACED_HANDLE_H_
7
+
8
+ #include <stddef.h>
9
+ #include <stdint.h>
10
+ #include <stdio.h>
11
+
12
+ #include <atomic>
13
+ #include <memory>
14
+ #include <type_traits>
15
+ #include <utility>
16
+
17
+ #include "v8-internal.h" // NOLINT(build/include_directory)
18
+ #include "v8-local-handle.h" // NOLINT(build/include_directory)
19
+ #include "v8-weak-callback-info.h" // NOLINT(build/include_directory)
20
+ #include "v8config.h" // NOLINT(build/include_directory)
21
+
22
+ namespace v8 {
23
+
24
+ class Value;
25
+
26
+ namespace internal {
27
+
28
+ class BasicTracedReferenceExtractor;
29
+
30
+ enum class GlobalHandleStoreMode {
31
+ kInitializingStore,
32
+ kAssigningStore,
33
+ };
34
+
35
+ V8_EXPORT internal::Address* GlobalizeTracedReference(
36
+ internal::Isolate* isolate, internal::Address* handle,
37
+ internal::Address* slot, GlobalHandleStoreMode store_mode);
38
+ V8_EXPORT void MoveTracedReference(internal::Address** from,
39
+ internal::Address** to);
40
+ V8_EXPORT void CopyTracedReference(const internal::Address* const* from,
41
+ internal::Address** to);
42
+ V8_EXPORT void DisposeTracedReference(internal::Address* global_handle);
43
+
44
+ } // namespace internal
45
+
46
+ class TracedReferenceBase {
47
+ public:
48
+ /**
49
+ * Returns true if the reference is empty, i.e., has not been assigned
50
+ * object.
51
+ */
52
+ bool IsEmpty() const { return val_ == nullptr; }
53
+
54
+ /**
55
+ * If non-empty, destroy the underlying storage cell. |IsEmpty| will return
56
+ * true after this call.
57
+ */
58
+ V8_INLINE void Reset();
59
+
60
+ /**
61
+ * Construct a Local<Value> from this handle.
62
+ */
63
+ V8_INLINE v8::Local<v8::Value> Get(v8::Isolate* isolate) const {
64
+ if (IsEmpty()) return Local<Value>();
65
+ return Local<Value>::New(isolate, reinterpret_cast<Value*>(val_));
66
+ }
67
+
68
+ /**
69
+ * Returns true if this TracedReference is empty, i.e., has not been
70
+ * assigned an object. This version of IsEmpty is thread-safe.
71
+ */
72
+ bool IsEmptyThreadSafe() const {
73
+ return this->GetSlotThreadSafe() == nullptr;
74
+ }
75
+
76
+ /**
77
+ * Assigns a wrapper class ID to the handle.
78
+ */
79
+ V8_INLINE void SetWrapperClassId(uint16_t class_id);
80
+
81
+ /**
82
+ * Returns the class ID previously assigned to this handle or 0 if no class ID
83
+ * was previously assigned.
84
+ */
85
+ V8_INLINE uint16_t WrapperClassId() const;
86
+
87
+ protected:
88
+ /**
89
+ * Update this reference in a thread-safe way.
90
+ */
91
+ void SetSlotThreadSafe(void* new_val) {
92
+ reinterpret_cast<std::atomic<void*>*>(&val_)->store(
93
+ new_val, std::memory_order_relaxed);
94
+ }
95
+
96
+ /**
97
+ * Get this reference in a thread-safe way
98
+ */
99
+ const void* GetSlotThreadSafe() const {
100
+ return reinterpret_cast<std::atomic<const void*> const*>(&val_)->load(
101
+ std::memory_order_relaxed);
102
+ }
103
+
104
+ V8_EXPORT void CheckValue() const;
105
+
106
+ // val_ points to a GlobalHandles node.
107
+ internal::Address* val_ = nullptr;
108
+
109
+ friend class internal::BasicTracedReferenceExtractor;
110
+ template <typename F>
111
+ friend class Local;
112
+ template <typename U>
113
+ friend bool operator==(const TracedReferenceBase&, const Local<U>&);
114
+ friend bool operator==(const TracedReferenceBase&,
115
+ const TracedReferenceBase&);
116
+ };
117
+
118
+ /**
119
+ * A traced handle with copy and move semantics. The handle is to be used
120
+ * together with |v8::EmbedderHeapTracer| or as part of GarbageCollected objects
121
+ * (see v8-cppgc.h) and specifies edges from C++ objects to JavaScript.
122
+ *
123
+ * The exact semantics are:
124
+ * - Tracing garbage collections use |v8::EmbedderHeapTracer| or cppgc.
125
+ * - Non-tracing garbage collections refer to
126
+ * |v8::EmbedderRootsHandler::IsRoot()| whether the handle should
127
+ * be treated as root or not.
128
+ *
129
+ * Note that the base class cannot be instantiated itself, use |TracedReference|
130
+ * instead.
131
+ */
132
+ template <typename T>
133
+ class BasicTracedReference : public TracedReferenceBase {
134
+ public:
135
+ /**
136
+ * Construct a Local<T> from this handle.
137
+ */
138
+ Local<T> Get(Isolate* isolate) const { return Local<T>::New(isolate, *this); }
139
+
140
+ template <class S>
141
+ V8_INLINE BasicTracedReference<S>& As() const {
142
+ return reinterpret_cast<BasicTracedReference<S>&>(
143
+ const_cast<BasicTracedReference<T>&>(*this));
144
+ }
145
+
146
+ T* operator->() const {
147
+ #ifdef V8_ENABLE_CHECKS
148
+ CheckValue();
149
+ #endif // V8_ENABLE_CHECKS
150
+ return reinterpret_cast<T*>(val_);
151
+ }
152
+ T* operator*() const {
153
+ #ifdef V8_ENABLE_CHECKS
154
+ CheckValue();
155
+ #endif // V8_ENABLE_CHECKS
156
+ return reinterpret_cast<T*>(val_);
157
+ }
158
+
159
+ private:
160
+ /**
161
+ * An empty BasicTracedReference without storage cell.
162
+ */
163
+ BasicTracedReference() = default;
164
+
165
+ V8_INLINE static internal::Address* New(
166
+ Isolate* isolate, T* that, void* slot,
167
+ internal::GlobalHandleStoreMode store_mode);
168
+
169
+ friend class EmbedderHeapTracer;
170
+ template <typename F>
171
+ friend class Local;
172
+ friend class Object;
173
+ template <typename F>
174
+ friend class TracedReference;
175
+ template <typename F>
176
+ friend class BasicTracedReference;
177
+ template <typename F>
178
+ friend class ReturnValue;
179
+ };
180
+
181
+ /**
182
+ * A traced handle without destructor that clears the handle. The embedder needs
183
+ * to ensure that the handle is not accessed once the V8 object has been
184
+ * reclaimed. This can happen when the handle is not passed through the
185
+ * EmbedderHeapTracer. For more details see BasicTracedReference.
186
+ *
187
+ * The reference assumes the embedder has precise knowledge about references at
188
+ * all times. In case V8 needs to separately handle on-stack references, the
189
+ * embedder is required to set the stack start through
190
+ * |EmbedderHeapTracer::SetStackStart|.
191
+ */
192
+ template <typename T>
193
+ class TracedReference : public BasicTracedReference<T> {
194
+ public:
195
+ using BasicTracedReference<T>::Reset;
196
+
197
+ /**
198
+ * An empty TracedReference without storage cell.
199
+ */
200
+ TracedReference() : BasicTracedReference<T>() {}
201
+
202
+ /**
203
+ * Construct a TracedReference from a Local.
204
+ *
205
+ * When the Local is non-empty, a new storage cell is created
206
+ * pointing to the same object.
207
+ */
208
+ template <class S>
209
+ TracedReference(Isolate* isolate, Local<S> that) : BasicTracedReference<T>() {
210
+ this->val_ = this->New(isolate, that.val_, &this->val_,
211
+ internal::GlobalHandleStoreMode::kInitializingStore);
212
+ static_assert(std::is_base_of<T, S>::value, "type check");
213
+ }
214
+
215
+ /**
216
+ * Move constructor initializing TracedReference from an
217
+ * existing one.
218
+ */
219
+ V8_INLINE TracedReference(TracedReference&& other) noexcept {
220
+ // Forward to operator=.
221
+ *this = std::move(other);
222
+ }
223
+
224
+ /**
225
+ * Move constructor initializing TracedReference from an
226
+ * existing one.
227
+ */
228
+ template <typename S>
229
+ V8_INLINE TracedReference(TracedReference<S>&& other) noexcept {
230
+ // Forward to operator=.
231
+ *this = std::move(other);
232
+ }
233
+
234
+ /**
235
+ * Copy constructor initializing TracedReference from an
236
+ * existing one.
237
+ */
238
+ V8_INLINE TracedReference(const TracedReference& other) {
239
+ // Forward to operator=;
240
+ *this = other;
241
+ }
242
+
243
+ /**
244
+ * Copy constructor initializing TracedReference from an
245
+ * existing one.
246
+ */
247
+ template <typename S>
248
+ V8_INLINE TracedReference(const TracedReference<S>& other) {
249
+ // Forward to operator=;
250
+ *this = other;
251
+ }
252
+
253
+ /**
254
+ * Move assignment operator initializing TracedReference from an existing one.
255
+ */
256
+ V8_INLINE TracedReference& operator=(TracedReference&& rhs) noexcept;
257
+
258
+ /**
259
+ * Move assignment operator initializing TracedReference from an existing one.
260
+ */
261
+ template <class S>
262
+ V8_INLINE TracedReference& operator=(TracedReference<S>&& rhs) noexcept;
263
+
264
+ /**
265
+ * Copy assignment operator initializing TracedReference from an existing one.
266
+ */
267
+ V8_INLINE TracedReference& operator=(const TracedReference& rhs);
268
+
269
+ /**
270
+ * Copy assignment operator initializing TracedReference from an existing one.
271
+ */
272
+ template <class S>
273
+ V8_INLINE TracedReference& operator=(const TracedReference<S>& rhs);
274
+
275
+ /**
276
+ * If non-empty, destroy the underlying storage cell and create a new one with
277
+ * the contents of other if other is non empty
278
+ */
279
+ template <class S>
280
+ V8_INLINE void Reset(Isolate* isolate, const Local<S>& other);
281
+
282
+ template <class S>
283
+ V8_INLINE TracedReference<S>& As() const {
284
+ return reinterpret_cast<TracedReference<S>&>(
285
+ const_cast<TracedReference<T>&>(*this));
286
+ }
287
+ };
288
+
289
+ // --- Implementation ---
290
+ template <class T>
291
+ internal::Address* BasicTracedReference<T>::New(
292
+ Isolate* isolate, T* that, void* slot,
293
+ internal::GlobalHandleStoreMode store_mode) {
294
+ if (that == nullptr) return nullptr;
295
+ internal::Address* p = reinterpret_cast<internal::Address*>(that);
296
+ return internal::GlobalizeTracedReference(
297
+ reinterpret_cast<internal::Isolate*>(isolate), p,
298
+ reinterpret_cast<internal::Address*>(slot), store_mode);
299
+ }
300
+
301
+ void TracedReferenceBase::Reset() {
302
+ if (IsEmpty()) return;
303
+ internal::DisposeTracedReference(reinterpret_cast<internal::Address*>(val_));
304
+ SetSlotThreadSafe(nullptr);
305
+ }
306
+
307
+ V8_INLINE bool operator==(const TracedReferenceBase& lhs,
308
+ const TracedReferenceBase& rhs) {
309
+ v8::internal::Address* a = reinterpret_cast<v8::internal::Address*>(lhs.val_);
310
+ v8::internal::Address* b = reinterpret_cast<v8::internal::Address*>(rhs.val_);
311
+ if (a == nullptr) return b == nullptr;
312
+ if (b == nullptr) return false;
313
+ return *a == *b;
314
+ }
315
+
316
+ template <typename U>
317
+ V8_INLINE bool operator==(const TracedReferenceBase& lhs,
318
+ const v8::Local<U>& rhs) {
319
+ v8::internal::Address* a = reinterpret_cast<v8::internal::Address*>(lhs.val_);
320
+ v8::internal::Address* b = reinterpret_cast<v8::internal::Address*>(*rhs);
321
+ if (a == nullptr) return b == nullptr;
322
+ if (b == nullptr) return false;
323
+ return *a == *b;
324
+ }
325
+
326
+ template <typename U>
327
+ V8_INLINE bool operator==(const v8::Local<U>& lhs,
328
+ const TracedReferenceBase& rhs) {
329
+ return rhs == lhs;
330
+ }
331
+
332
+ V8_INLINE bool operator!=(const TracedReferenceBase& lhs,
333
+ const TracedReferenceBase& rhs) {
334
+ return !(lhs == rhs);
335
+ }
336
+
337
+ template <typename U>
338
+ V8_INLINE bool operator!=(const TracedReferenceBase& lhs,
339
+ const v8::Local<U>& rhs) {
340
+ return !(lhs == rhs);
341
+ }
342
+
343
+ template <typename U>
344
+ V8_INLINE bool operator!=(const v8::Local<U>& lhs,
345
+ const TracedReferenceBase& rhs) {
346
+ return !(rhs == lhs);
347
+ }
348
+
349
+ template <class T>
350
+ template <class S>
351
+ void TracedReference<T>::Reset(Isolate* isolate, const Local<S>& other) {
352
+ static_assert(std::is_base_of<T, S>::value, "type check");
353
+ this->Reset();
354
+ if (other.IsEmpty()) return;
355
+ this->SetSlotThreadSafe(
356
+ this->New(isolate, other.val_, &this->val_,
357
+ internal::GlobalHandleStoreMode::kAssigningStore));
358
+ }
359
+
360
+ template <class T>
361
+ template <class S>
362
+ TracedReference<T>& TracedReference<T>::operator=(
363
+ TracedReference<S>&& rhs) noexcept {
364
+ static_assert(std::is_base_of<T, S>::value, "type check");
365
+ *this = std::move(rhs.template As<T>());
366
+ return *this;
367
+ }
368
+
369
+ template <class T>
370
+ template <class S>
371
+ TracedReference<T>& TracedReference<T>::operator=(
372
+ const TracedReference<S>& rhs) {
373
+ static_assert(std::is_base_of<T, S>::value, "type check");
374
+ *this = rhs.template As<T>();
375
+ return *this;
376
+ }
377
+
378
+ template <class T>
379
+ TracedReference<T>& TracedReference<T>::operator=(
380
+ TracedReference&& rhs) noexcept {
381
+ if (this != &rhs) {
382
+ internal::MoveTracedReference(
383
+ reinterpret_cast<internal::Address**>(&rhs.val_),
384
+ reinterpret_cast<internal::Address**>(&this->val_));
385
+ }
386
+ return *this;
387
+ }
388
+
389
+ template <class T>
390
+ TracedReference<T>& TracedReference<T>::operator=(const TracedReference& rhs) {
391
+ if (this != &rhs) {
392
+ this->Reset();
393
+ if (rhs.val_ != nullptr) {
394
+ internal::CopyTracedReference(
395
+ reinterpret_cast<const internal::Address* const*>(&rhs.val_),
396
+ reinterpret_cast<internal::Address**>(&this->val_));
397
+ }
398
+ }
399
+ return *this;
400
+ }
401
+
402
+ void TracedReferenceBase::SetWrapperClassId(uint16_t class_id) {
403
+ using I = internal::Internals;
404
+ if (IsEmpty()) return;
405
+ internal::Address* obj = reinterpret_cast<internal::Address*>(val_);
406
+ uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + I::kNodeClassIdOffset;
407
+ *reinterpret_cast<uint16_t*>(addr) = class_id;
408
+ }
409
+
410
+ uint16_t TracedReferenceBase::WrapperClassId() const {
411
+ using I = internal::Internals;
412
+ if (IsEmpty()) return 0;
413
+ internal::Address* obj = reinterpret_cast<internal::Address*>(val_);
414
+ uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + I::kNodeClassIdOffset;
415
+ return *reinterpret_cast<uint16_t*>(addr);
416
+ }
417
+
418
+ } // namespace v8
419
+
420
+ #endif // INCLUDE_V8_TRACED_HANDLE_H_
@@ -0,0 +1,282 @@
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_TYPED_ARRAY_H_
6
+ #define INCLUDE_V8_TYPED_ARRAY_H_
7
+
8
+ #include "v8-array-buffer.h" // NOLINT(build/include_directory)
9
+ #include "v8-local-handle.h" // NOLINT(build/include_directory)
10
+ #include "v8config.h" // NOLINT(build/include_directory)
11
+
12
+ namespace v8 {
13
+
14
+ class SharedArrayBuffer;
15
+
16
+ /**
17
+ * A base class for an instance of TypedArray series of constructors
18
+ * (ES6 draft 15.13.6).
19
+ */
20
+ class V8_EXPORT TypedArray : public ArrayBufferView {
21
+ public:
22
+ /*
23
+ * The largest typed array size that can be constructed using New.
24
+ */
25
+ static constexpr size_t kMaxLength =
26
+ internal::kApiSystemPointerSize == 4
27
+ ? internal::kSmiMaxValue
28
+ : static_cast<size_t>(uint64_t{1} << 32);
29
+
30
+ /**
31
+ * Number of elements in this typed array
32
+ * (e.g. for Int16Array, |ByteLength|/2).
33
+ */
34
+ size_t Length();
35
+
36
+ V8_INLINE static TypedArray* Cast(Value* value) {
37
+ #ifdef V8_ENABLE_CHECKS
38
+ CheckCast(value);
39
+ #endif
40
+ return static_cast<TypedArray*>(value);
41
+ }
42
+
43
+ private:
44
+ TypedArray();
45
+ static void CheckCast(Value* obj);
46
+ };
47
+
48
+ /**
49
+ * An instance of Uint8Array constructor (ES6 draft 15.13.6).
50
+ */
51
+ class V8_EXPORT Uint8Array : public TypedArray {
52
+ public:
53
+ static Local<Uint8Array> New(Local<ArrayBuffer> array_buffer,
54
+ size_t byte_offset, size_t length);
55
+ static Local<Uint8Array> New(Local<SharedArrayBuffer> shared_array_buffer,
56
+ size_t byte_offset, size_t length);
57
+ V8_INLINE static Uint8Array* Cast(Value* value) {
58
+ #ifdef V8_ENABLE_CHECKS
59
+ CheckCast(value);
60
+ #endif
61
+ return static_cast<Uint8Array*>(value);
62
+ }
63
+
64
+ private:
65
+ Uint8Array();
66
+ static void CheckCast(Value* obj);
67
+ };
68
+
69
+ /**
70
+ * An instance of Uint8ClampedArray constructor (ES6 draft 15.13.6).
71
+ */
72
+ class V8_EXPORT Uint8ClampedArray : public TypedArray {
73
+ public:
74
+ static Local<Uint8ClampedArray> New(Local<ArrayBuffer> array_buffer,
75
+ size_t byte_offset, size_t length);
76
+ static Local<Uint8ClampedArray> New(
77
+ Local<SharedArrayBuffer> shared_array_buffer, size_t byte_offset,
78
+ size_t length);
79
+ V8_INLINE static Uint8ClampedArray* Cast(Value* value) {
80
+ #ifdef V8_ENABLE_CHECKS
81
+ CheckCast(value);
82
+ #endif
83
+ return static_cast<Uint8ClampedArray*>(value);
84
+ }
85
+
86
+ private:
87
+ Uint8ClampedArray();
88
+ static void CheckCast(Value* obj);
89
+ };
90
+
91
+ /**
92
+ * An instance of Int8Array constructor (ES6 draft 15.13.6).
93
+ */
94
+ class V8_EXPORT Int8Array : public TypedArray {
95
+ public:
96
+ static Local<Int8Array> New(Local<ArrayBuffer> array_buffer,
97
+ size_t byte_offset, size_t length);
98
+ static Local<Int8Array> New(Local<SharedArrayBuffer> shared_array_buffer,
99
+ size_t byte_offset, size_t length);
100
+ V8_INLINE static Int8Array* Cast(Value* value) {
101
+ #ifdef V8_ENABLE_CHECKS
102
+ CheckCast(value);
103
+ #endif
104
+ return static_cast<Int8Array*>(value);
105
+ }
106
+
107
+ private:
108
+ Int8Array();
109
+ static void CheckCast(Value* obj);
110
+ };
111
+
112
+ /**
113
+ * An instance of Uint16Array constructor (ES6 draft 15.13.6).
114
+ */
115
+ class V8_EXPORT Uint16Array : public TypedArray {
116
+ public:
117
+ static Local<Uint16Array> New(Local<ArrayBuffer> array_buffer,
118
+ size_t byte_offset, size_t length);
119
+ static Local<Uint16Array> New(Local<SharedArrayBuffer> shared_array_buffer,
120
+ size_t byte_offset, size_t length);
121
+ V8_INLINE static Uint16Array* Cast(Value* value) {
122
+ #ifdef V8_ENABLE_CHECKS
123
+ CheckCast(value);
124
+ #endif
125
+ return static_cast<Uint16Array*>(value);
126
+ }
127
+
128
+ private:
129
+ Uint16Array();
130
+ static void CheckCast(Value* obj);
131
+ };
132
+
133
+ /**
134
+ * An instance of Int16Array constructor (ES6 draft 15.13.6).
135
+ */
136
+ class V8_EXPORT Int16Array : public TypedArray {
137
+ public:
138
+ static Local<Int16Array> New(Local<ArrayBuffer> array_buffer,
139
+ size_t byte_offset, size_t length);
140
+ static Local<Int16Array> New(Local<SharedArrayBuffer> shared_array_buffer,
141
+ size_t byte_offset, size_t length);
142
+ V8_INLINE static Int16Array* Cast(Value* value) {
143
+ #ifdef V8_ENABLE_CHECKS
144
+ CheckCast(value);
145
+ #endif
146
+ return static_cast<Int16Array*>(value);
147
+ }
148
+
149
+ private:
150
+ Int16Array();
151
+ static void CheckCast(Value* obj);
152
+ };
153
+
154
+ /**
155
+ * An instance of Uint32Array constructor (ES6 draft 15.13.6).
156
+ */
157
+ class V8_EXPORT Uint32Array : public TypedArray {
158
+ public:
159
+ static Local<Uint32Array> New(Local<ArrayBuffer> array_buffer,
160
+ size_t byte_offset, size_t length);
161
+ static Local<Uint32Array> New(Local<SharedArrayBuffer> shared_array_buffer,
162
+ size_t byte_offset, size_t length);
163
+ V8_INLINE static Uint32Array* Cast(Value* value) {
164
+ #ifdef V8_ENABLE_CHECKS
165
+ CheckCast(value);
166
+ #endif
167
+ return static_cast<Uint32Array*>(value);
168
+ }
169
+
170
+ private:
171
+ Uint32Array();
172
+ static void CheckCast(Value* obj);
173
+ };
174
+
175
+ /**
176
+ * An instance of Int32Array constructor (ES6 draft 15.13.6).
177
+ */
178
+ class V8_EXPORT Int32Array : public TypedArray {
179
+ public:
180
+ static Local<Int32Array> New(Local<ArrayBuffer> array_buffer,
181
+ size_t byte_offset, size_t length);
182
+ static Local<Int32Array> New(Local<SharedArrayBuffer> shared_array_buffer,
183
+ size_t byte_offset, size_t length);
184
+ V8_INLINE static Int32Array* Cast(Value* value) {
185
+ #ifdef V8_ENABLE_CHECKS
186
+ CheckCast(value);
187
+ #endif
188
+ return static_cast<Int32Array*>(value);
189
+ }
190
+
191
+ private:
192
+ Int32Array();
193
+ static void CheckCast(Value* obj);
194
+ };
195
+
196
+ /**
197
+ * An instance of Float32Array constructor (ES6 draft 15.13.6).
198
+ */
199
+ class V8_EXPORT Float32Array : public TypedArray {
200
+ public:
201
+ static Local<Float32Array> New(Local<ArrayBuffer> array_buffer,
202
+ size_t byte_offset, size_t length);
203
+ static Local<Float32Array> New(Local<SharedArrayBuffer> shared_array_buffer,
204
+ size_t byte_offset, size_t length);
205
+ V8_INLINE static Float32Array* Cast(Value* value) {
206
+ #ifdef V8_ENABLE_CHECKS
207
+ CheckCast(value);
208
+ #endif
209
+ return static_cast<Float32Array*>(value);
210
+ }
211
+
212
+ private:
213
+ Float32Array();
214
+ static void CheckCast(Value* obj);
215
+ };
216
+
217
+ /**
218
+ * An instance of Float64Array constructor (ES6 draft 15.13.6).
219
+ */
220
+ class V8_EXPORT Float64Array : public TypedArray {
221
+ public:
222
+ static Local<Float64Array> New(Local<ArrayBuffer> array_buffer,
223
+ size_t byte_offset, size_t length);
224
+ static Local<Float64Array> New(Local<SharedArrayBuffer> shared_array_buffer,
225
+ size_t byte_offset, size_t length);
226
+ V8_INLINE static Float64Array* Cast(Value* value) {
227
+ #ifdef V8_ENABLE_CHECKS
228
+ CheckCast(value);
229
+ #endif
230
+ return static_cast<Float64Array*>(value);
231
+ }
232
+
233
+ private:
234
+ Float64Array();
235
+ static void CheckCast(Value* obj);
236
+ };
237
+
238
+ /**
239
+ * An instance of BigInt64Array constructor.
240
+ */
241
+ class V8_EXPORT BigInt64Array : public TypedArray {
242
+ public:
243
+ static Local<BigInt64Array> New(Local<ArrayBuffer> array_buffer,
244
+ size_t byte_offset, size_t length);
245
+ static Local<BigInt64Array> New(Local<SharedArrayBuffer> shared_array_buffer,
246
+ size_t byte_offset, size_t length);
247
+ V8_INLINE static BigInt64Array* Cast(Value* value) {
248
+ #ifdef V8_ENABLE_CHECKS
249
+ CheckCast(value);
250
+ #endif
251
+ return static_cast<BigInt64Array*>(value);
252
+ }
253
+
254
+ private:
255
+ BigInt64Array();
256
+ static void CheckCast(Value* obj);
257
+ };
258
+
259
+ /**
260
+ * An instance of BigUint64Array constructor.
261
+ */
262
+ class V8_EXPORT BigUint64Array : public TypedArray {
263
+ public:
264
+ static Local<BigUint64Array> New(Local<ArrayBuffer> array_buffer,
265
+ size_t byte_offset, size_t length);
266
+ static Local<BigUint64Array> New(Local<SharedArrayBuffer> shared_array_buffer,
267
+ size_t byte_offset, size_t length);
268
+ V8_INLINE static BigUint64Array* Cast(Value* value) {
269
+ #ifdef V8_ENABLE_CHECKS
270
+ CheckCast(value);
271
+ #endif
272
+ return static_cast<BigUint64Array*>(value);
273
+ }
274
+
275
+ private:
276
+ BigUint64Array();
277
+ static void CheckCast(Value* obj);
278
+ };
279
+
280
+ } // namespace v8
281
+
282
+ #endif // INCLUDE_V8_TYPED_ARRAY_H_
@@ -17,9 +17,10 @@ struct CalleeSavedRegisters {
17
17
  void* arm_r9;
18
18
  void* arm_r10;
19
19
  };
20
- #elif V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_ARM64 || \
21
- V8_TARGET_ARCH_MIPS || V8_TARGET_ARCH_MIPS64 || V8_TARGET_ARCH_PPC || \
22
- V8_TARGET_ARCH_PPC64 || V8_TARGET_ARCH_RISCV64 || V8_TARGET_ARCH_S390
20
+ #elif V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_ARM64 || \
21
+ V8_TARGET_ARCH_MIPS || V8_TARGET_ARCH_MIPS64 || V8_TARGET_ARCH_PPC || \
22
+ V8_TARGET_ARCH_PPC64 || V8_TARGET_ARCH_RISCV64 || V8_TARGET_ARCH_S390 || \
23
+ V8_TARGET_ARCH_LOONG64
23
24
  struct CalleeSavedRegisters {};
24
25
  #else
25
26
  #error Target architecture was not detected as supported by v8