libv8-node 20.12.1.0-aarch64-linux-musl → 22.5.1.0-aarch64-linux-musl
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.
- checksums.yaml +4 -4
- data/lib/libv8/node/version.rb +3 -3
- data/vendor/v8/aarch64-linux-musl/libv8/obj/libv8_monolith.a +0 -0
- data/vendor/v8/include/cppgc/internal/api-constants.h +24 -5
- data/vendor/v8/include/cppgc/internal/caged-heap-local-data.h +16 -6
- data/vendor/v8/include/cppgc/internal/caged-heap.h +12 -5
- data/vendor/v8/include/cppgc/internal/gc-info.h +82 -91
- data/vendor/v8/include/cppgc/internal/member-storage.h +16 -8
- data/vendor/v8/include/cppgc/member.h +25 -0
- data/vendor/v8/include/cppgc/persistent.h +4 -0
- data/vendor/v8/include/cppgc/platform.h +6 -1
- data/vendor/v8/include/cppgc/sentinel-pointer.h +7 -0
- data/vendor/v8/include/cppgc/source-location.h +2 -78
- data/vendor/v8/include/cppgc/trace-trait.h +8 -0
- data/vendor/v8/include/cppgc/type-traits.h +25 -4
- data/vendor/v8/include/cppgc/visitor.h +82 -4
- data/vendor/v8/include/libplatform/libplatform.h +7 -1
- data/vendor/v8/include/v8-array-buffer.h +6 -0
- data/vendor/v8/include/v8-callbacks.h +57 -19
- data/vendor/v8/include/v8-container.h +54 -0
- data/vendor/v8/include/v8-context.h +58 -32
- data/vendor/v8/include/v8-embedder-heap.h +31 -3
- data/vendor/v8/include/v8-embedder-state-scope.h +2 -1
- data/vendor/v8/include/v8-exception.h +15 -9
- data/vendor/v8/include/v8-fast-api-calls.h +58 -31
- data/vendor/v8/include/v8-forward.h +1 -0
- data/vendor/v8/include/v8-function-callback.h +135 -30
- data/vendor/v8/include/v8-function.h +6 -0
- data/vendor/v8/include/v8-handle-base.h +137 -0
- data/vendor/v8/include/v8-inspector.h +35 -13
- data/vendor/v8/include/v8-internal.h +510 -71
- data/vendor/v8/include/v8-isolate.h +176 -100
- data/vendor/v8/include/v8-local-handle.h +383 -112
- data/vendor/v8/include/v8-memory-span.h +157 -2
- data/vendor/v8/include/v8-message.h +22 -3
- data/vendor/v8/include/v8-metrics.h +1 -0
- data/vendor/v8/include/v8-object.h +98 -77
- data/vendor/v8/include/v8-persistent-handle.h +68 -90
- data/vendor/v8/include/v8-platform.h +191 -23
- data/vendor/v8/include/v8-primitive.h +12 -8
- data/vendor/v8/include/v8-profiler.h +16 -2
- data/vendor/v8/include/v8-script.h +88 -14
- data/vendor/v8/include/v8-snapshot.h +96 -22
- data/vendor/v8/include/v8-source-location.h +92 -0
- data/vendor/v8/include/v8-statistics.h +31 -10
- data/vendor/v8/include/v8-template.h +410 -131
- data/vendor/v8/include/v8-traced-handle.h +108 -90
- data/vendor/v8/include/v8-typed-array.h +115 -7
- data/vendor/v8/include/v8-unwinder.h +1 -1
- data/vendor/v8/include/v8-util.h +23 -20
- data/vendor/v8/include/v8-value-serializer.h +14 -0
- data/vendor/v8/include/v8-value.h +105 -3
- data/vendor/v8/include/v8-version.h +4 -4
- data/vendor/v8/include/v8config.h +54 -20
- metadata +4 -2
@@ -27,14 +27,20 @@ namespace internal {
|
|
27
27
|
|
28
28
|
class BasicTracedReferenceExtractor;
|
29
29
|
|
30
|
-
enum class
|
30
|
+
enum class TracedReferenceStoreMode {
|
31
31
|
kInitializingStore,
|
32
32
|
kAssigningStore,
|
33
33
|
};
|
34
34
|
|
35
|
+
enum class TracedReferenceHandling {
|
36
|
+
kDefault, // See EmbedderRootsHandler::IsRoot().
|
37
|
+
kDroppable
|
38
|
+
};
|
39
|
+
|
35
40
|
V8_EXPORT internal::Address* GlobalizeTracedReference(
|
36
|
-
internal::Isolate* isolate, internal::Address
|
37
|
-
internal::Address* slot,
|
41
|
+
internal::Isolate* isolate, internal::Address value,
|
42
|
+
internal::Address* slot, TracedReferenceStoreMode store_mode,
|
43
|
+
internal::TracedReferenceHandling reference_handling);
|
38
44
|
V8_EXPORT void MoveTracedReference(internal::Address** from,
|
39
45
|
internal::Address** to);
|
40
46
|
V8_EXPORT void CopyTracedReference(const internal::Address* const* from,
|
@@ -43,14 +49,12 @@ V8_EXPORT void DisposeTracedReference(internal::Address* global_handle);
|
|
43
49
|
|
44
50
|
} // namespace internal
|
45
51
|
|
46
|
-
|
52
|
+
/**
|
53
|
+
* An indirect handle, where the indirect pointer points to a GlobalHandles
|
54
|
+
* node.
|
55
|
+
*/
|
56
|
+
class TracedReferenceBase : public api_internal::IndirectHandleBase {
|
47
57
|
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
58
|
/**
|
55
59
|
* If non-empty, destroy the underlying storage cell. |IsEmpty| will return
|
56
60
|
* true after this call.
|
@@ -60,10 +64,9 @@ class TracedReferenceBase {
|
|
60
64
|
/**
|
61
65
|
* Construct a Local<Value> from this handle.
|
62
66
|
*/
|
63
|
-
V8_INLINE
|
67
|
+
V8_INLINE Local<Value> Get(Isolate* isolate) const {
|
64
68
|
if (IsEmpty()) return Local<Value>();
|
65
|
-
return Local<Value>::New(isolate,
|
66
|
-
internal::ValueHelper::SlotAsValue<Value>(val_));
|
69
|
+
return Local<Value>::New(isolate, this->value<Value>());
|
67
70
|
}
|
68
71
|
|
69
72
|
/**
|
@@ -74,23 +77,14 @@ class TracedReferenceBase {
|
|
74
77
|
return this->GetSlotThreadSafe() == nullptr;
|
75
78
|
}
|
76
79
|
|
77
|
-
/**
|
78
|
-
* Assigns a wrapper class ID to the handle.
|
79
|
-
*/
|
80
|
-
V8_INLINE void SetWrapperClassId(uint16_t class_id);
|
81
|
-
|
82
|
-
/**
|
83
|
-
* Returns the class ID previously assigned to this handle or 0 if no class ID
|
84
|
-
* was previously assigned.
|
85
|
-
*/
|
86
|
-
V8_INLINE uint16_t WrapperClassId() const;
|
87
|
-
|
88
80
|
protected:
|
81
|
+
V8_INLINE TracedReferenceBase() = default;
|
82
|
+
|
89
83
|
/**
|
90
84
|
* Update this reference in a thread-safe way.
|
91
85
|
*/
|
92
86
|
void SetSlotThreadSafe(void* new_val) {
|
93
|
-
reinterpret_cast<std::atomic<void*>*>(&
|
87
|
+
reinterpret_cast<std::atomic<void*>*>(&slot())->store(
|
94
88
|
new_val, std::memory_order_relaxed);
|
95
89
|
}
|
96
90
|
|
@@ -98,19 +92,13 @@ class TracedReferenceBase {
|
|
98
92
|
* Get this reference in a thread-safe way
|
99
93
|
*/
|
100
94
|
const void* GetSlotThreadSafe() const {
|
101
|
-
return reinterpret_cast<std::atomic<const void*> const*>(&
|
95
|
+
return reinterpret_cast<std::atomic<const void*> const*>(&slot())->load(
|
102
96
|
std::memory_order_relaxed);
|
103
97
|
}
|
104
98
|
|
105
99
|
V8_EXPORT void CheckValue() const;
|
106
100
|
|
107
|
-
V8_INLINE internal::Address address() const { return *val_; }
|
108
|
-
|
109
|
-
// val_ points to a GlobalHandles node.
|
110
|
-
internal::Address* val_ = nullptr;
|
111
|
-
|
112
101
|
friend class internal::BasicTracedReferenceExtractor;
|
113
|
-
friend class internal::HandleHelper;
|
114
102
|
template <typename F>
|
115
103
|
friend class Local;
|
116
104
|
template <typename U>
|
@@ -139,12 +127,7 @@ class BasicTracedReference : public TracedReferenceBase {
|
|
139
127
|
/**
|
140
128
|
* Construct a Local<T> from this handle.
|
141
129
|
*/
|
142
|
-
Local<T> Get(Isolate* isolate) const {
|
143
|
-
#ifdef V8_ENABLE_CONSERVATIVE_STACK_SCANNING
|
144
|
-
if (val_ == nullptr) return Local<T>();
|
145
|
-
#endif
|
146
|
-
return Local<T>::New(isolate, *this);
|
147
|
-
}
|
130
|
+
Local<T> Get(Isolate* isolate) const { return Local<T>::New(isolate, *this); }
|
148
131
|
|
149
132
|
template <class S>
|
150
133
|
V8_INLINE BasicTracedReference<S>& As() const {
|
@@ -152,28 +135,27 @@ class BasicTracedReference : public TracedReferenceBase {
|
|
152
135
|
const_cast<BasicTracedReference<T>&>(*this));
|
153
136
|
}
|
154
137
|
|
155
|
-
|
138
|
+
V8_DEPRECATE_SOON("Use Get to convert to Local instead")
|
139
|
+
V8_INLINE T* operator->() const {
|
156
140
|
#ifdef V8_ENABLE_CHECKS
|
157
141
|
CheckValue();
|
158
142
|
#endif // V8_ENABLE_CHECKS
|
159
|
-
return
|
160
|
-
}
|
161
|
-
T* operator*() const {
|
162
|
-
#ifdef V8_ENABLE_CHECKS
|
163
|
-
CheckValue();
|
164
|
-
#endif // V8_ENABLE_CHECKS
|
165
|
-
return reinterpret_cast<T*>(val_);
|
143
|
+
return this->template value<T>();
|
166
144
|
}
|
167
145
|
|
146
|
+
V8_DEPRECATE_SOON("Use Get to convert to Local instead")
|
147
|
+
V8_INLINE T* operator*() const { return this->operator->(); }
|
148
|
+
|
168
149
|
private:
|
169
150
|
/**
|
170
151
|
* An empty BasicTracedReference without storage cell.
|
171
152
|
*/
|
172
153
|
BasicTracedReference() = default;
|
173
154
|
|
174
|
-
V8_INLINE static internal::Address*
|
175
|
-
Isolate* isolate, T* that,
|
176
|
-
internal::
|
155
|
+
V8_INLINE static internal::Address* NewFromNonEmptyValue(
|
156
|
+
Isolate* isolate, T* that, internal::Address** slot,
|
157
|
+
internal::TracedReferenceStoreMode store_mode,
|
158
|
+
internal::TracedReferenceHandling reference_handling);
|
177
159
|
|
178
160
|
template <typename F>
|
179
161
|
friend class Local;
|
@@ -194,12 +176,14 @@ class BasicTracedReference : public TracedReferenceBase {
|
|
194
176
|
template <typename T>
|
195
177
|
class TracedReference : public BasicTracedReference<T> {
|
196
178
|
public:
|
179
|
+
struct IsDroppable {};
|
180
|
+
|
197
181
|
using BasicTracedReference<T>::Reset;
|
198
182
|
|
199
183
|
/**
|
200
184
|
* An empty TracedReference without storage cell.
|
201
185
|
*/
|
202
|
-
TracedReference()
|
186
|
+
V8_INLINE TracedReference() = default;
|
203
187
|
|
204
188
|
/**
|
205
189
|
* Construct a TracedReference from a Local.
|
@@ -209,9 +193,35 @@ class TracedReference : public BasicTracedReference<T> {
|
|
209
193
|
*/
|
210
194
|
template <class S>
|
211
195
|
TracedReference(Isolate* isolate, Local<S> that) : BasicTracedReference<T>() {
|
212
|
-
this->val_ = this->New(isolate, *that, &this->val_,
|
213
|
-
internal::GlobalHandleStoreMode::kInitializingStore);
|
214
196
|
static_assert(std::is_base_of<T, S>::value, "type check");
|
197
|
+
if (V8_UNLIKELY(that.IsEmpty())) {
|
198
|
+
return;
|
199
|
+
}
|
200
|
+
this->slot() = this->NewFromNonEmptyValue(
|
201
|
+
isolate, *that, &this->slot(),
|
202
|
+
internal::TracedReferenceStoreMode::kInitializingStore,
|
203
|
+
internal::TracedReferenceHandling::kDefault);
|
204
|
+
}
|
205
|
+
|
206
|
+
/**
|
207
|
+
* Construct a droppable TracedReference from a Local. Droppable means that V8
|
208
|
+
* is free to reclaim the pointee if it is unmodified and otherwise
|
209
|
+
* unreachable
|
210
|
+
*
|
211
|
+
* When the Local is non-empty, a new storage cell is created
|
212
|
+
* pointing to the same object.
|
213
|
+
*/
|
214
|
+
template <class S>
|
215
|
+
TracedReference(Isolate* isolate, Local<S> that, IsDroppable)
|
216
|
+
: BasicTracedReference<T>() {
|
217
|
+
static_assert(std::is_base_of<T, S>::value, "type check");
|
218
|
+
if (V8_UNLIKELY(that.IsEmpty())) {
|
219
|
+
return;
|
220
|
+
}
|
221
|
+
this->slot() = this->NewFromNonEmptyValue(
|
222
|
+
isolate, *that, &this->slot(),
|
223
|
+
internal::TracedReferenceStoreMode::kInitializingStore,
|
224
|
+
internal::TracedReferenceHandling::kDroppable);
|
215
225
|
}
|
216
226
|
|
217
227
|
/**
|
@@ -275,12 +285,19 @@ class TracedReference : public BasicTracedReference<T> {
|
|
275
285
|
V8_INLINE TracedReference& operator=(const TracedReference<S>& rhs);
|
276
286
|
|
277
287
|
/**
|
278
|
-
*
|
279
|
-
*
|
288
|
+
* Always resets the reference. Creates a new reference from `other` if it is
|
289
|
+
* non-empty.
|
280
290
|
*/
|
281
291
|
template <class S>
|
282
292
|
V8_INLINE void Reset(Isolate* isolate, const Local<S>& other);
|
283
293
|
|
294
|
+
/**
|
295
|
+
* Always resets the reference. Creates a new reference from `other` if it is
|
296
|
+
* non-empty. The new reference is droppable, see constructor.
|
297
|
+
*/
|
298
|
+
template <class S>
|
299
|
+
V8_INLINE void Reset(Isolate* isolate, const Local<S>& other, IsDroppable);
|
300
|
+
|
284
301
|
template <class S>
|
285
302
|
V8_INLINE TracedReference<S>& As() const {
|
286
303
|
return reinterpret_cast<TracedReference<S>&>(
|
@@ -290,19 +307,22 @@ class TracedReference : public BasicTracedReference<T> {
|
|
290
307
|
|
291
308
|
// --- Implementation ---
|
292
309
|
template <class T>
|
293
|
-
internal::Address* BasicTracedReference<T>::
|
294
|
-
Isolate* isolate, T* that,
|
295
|
-
internal::
|
296
|
-
|
297
|
-
internal::Address* p = reinterpret_cast<internal::Address*>(that);
|
310
|
+
internal::Address* BasicTracedReference<T>::NewFromNonEmptyValue(
|
311
|
+
Isolate* isolate, T* that, internal::Address** slot,
|
312
|
+
internal::TracedReferenceStoreMode store_mode,
|
313
|
+
internal::TracedReferenceHandling reference_handling) {
|
298
314
|
return internal::GlobalizeTracedReference(
|
299
|
-
reinterpret_cast<internal::Isolate*>(isolate),
|
300
|
-
|
315
|
+
reinterpret_cast<internal::Isolate*>(isolate),
|
316
|
+
internal::ValueHelper::ValueAsAddress(that),
|
317
|
+
reinterpret_cast<internal::Address*>(slot), store_mode,
|
318
|
+
reference_handling);
|
301
319
|
}
|
302
320
|
|
303
321
|
void TracedReferenceBase::Reset() {
|
304
|
-
if (IsEmpty())
|
305
|
-
|
322
|
+
if (V8_UNLIKELY(IsEmpty())) {
|
323
|
+
return;
|
324
|
+
}
|
325
|
+
internal::DisposeTracedReference(slot());
|
306
326
|
SetSlotThreadSafe(nullptr);
|
307
327
|
}
|
308
328
|
|
@@ -345,10 +365,28 @@ template <class S>
|
|
345
365
|
void TracedReference<T>::Reset(Isolate* isolate, const Local<S>& other) {
|
346
366
|
static_assert(std::is_base_of<T, S>::value, "type check");
|
347
367
|
this->Reset();
|
348
|
-
if (other.IsEmpty())
|
349
|
-
|
350
|
-
|
351
|
-
|
368
|
+
if (V8_UNLIKELY(other.IsEmpty())) {
|
369
|
+
return;
|
370
|
+
}
|
371
|
+
this->SetSlotThreadSafe(this->NewFromNonEmptyValue(
|
372
|
+
isolate, *other, &this->slot(),
|
373
|
+
internal::TracedReferenceStoreMode::kAssigningStore,
|
374
|
+
internal::TracedReferenceHandling::kDefault));
|
375
|
+
}
|
376
|
+
|
377
|
+
template <class T>
|
378
|
+
template <class S>
|
379
|
+
void TracedReference<T>::Reset(Isolate* isolate, const Local<S>& other,
|
380
|
+
IsDroppable) {
|
381
|
+
static_assert(std::is_base_of<T, S>::value, "type check");
|
382
|
+
this->Reset();
|
383
|
+
if (V8_UNLIKELY(other.IsEmpty())) {
|
384
|
+
return;
|
385
|
+
}
|
386
|
+
this->SetSlotThreadSafe(this->NewFromNonEmptyValue(
|
387
|
+
isolate, *other, &this->slot(),
|
388
|
+
internal::TracedReferenceStoreMode::kAssigningStore,
|
389
|
+
internal::TracedReferenceHandling::kDroppable));
|
352
390
|
}
|
353
391
|
|
354
392
|
template <class T>
|
@@ -373,9 +411,7 @@ template <class T>
|
|
373
411
|
TracedReference<T>& TracedReference<T>::operator=(
|
374
412
|
TracedReference&& rhs) noexcept {
|
375
413
|
if (this != &rhs) {
|
376
|
-
internal::MoveTracedReference(
|
377
|
-
reinterpret_cast<internal::Address**>(&rhs.val_),
|
378
|
-
reinterpret_cast<internal::Address**>(&this->val_));
|
414
|
+
internal::MoveTracedReference(&rhs.slot(), &this->slot());
|
379
415
|
}
|
380
416
|
return *this;
|
381
417
|
}
|
@@ -384,31 +420,13 @@ template <class T>
|
|
384
420
|
TracedReference<T>& TracedReference<T>::operator=(const TracedReference& rhs) {
|
385
421
|
if (this != &rhs) {
|
386
422
|
this->Reset();
|
387
|
-
if (rhs.
|
388
|
-
internal::CopyTracedReference(
|
389
|
-
reinterpret_cast<const internal::Address* const*>(&rhs.val_),
|
390
|
-
reinterpret_cast<internal::Address**>(&this->val_));
|
423
|
+
if (!rhs.IsEmpty()) {
|
424
|
+
internal::CopyTracedReference(&rhs.slot(), &this->slot());
|
391
425
|
}
|
392
426
|
}
|
393
427
|
return *this;
|
394
428
|
}
|
395
429
|
|
396
|
-
void TracedReferenceBase::SetWrapperClassId(uint16_t class_id) {
|
397
|
-
using I = internal::Internals;
|
398
|
-
if (IsEmpty()) return;
|
399
|
-
internal::Address* obj = reinterpret_cast<internal::Address*>(val_);
|
400
|
-
uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + I::kTracedNodeClassIdOffset;
|
401
|
-
*reinterpret_cast<uint16_t*>(addr) = class_id;
|
402
|
-
}
|
403
|
-
|
404
|
-
uint16_t TracedReferenceBase::WrapperClassId() const {
|
405
|
-
using I = internal::Internals;
|
406
|
-
if (IsEmpty()) return 0;
|
407
|
-
internal::Address* obj = reinterpret_cast<internal::Address*>(val_);
|
408
|
-
uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + I::kTracedNodeClassIdOffset;
|
409
|
-
return *reinterpret_cast<uint16_t*>(addr);
|
410
|
-
}
|
411
|
-
|
412
430
|
} // namespace v8
|
413
431
|
|
414
432
|
#endif // INCLUDE_V8_TRACED_HANDLE_H_
|
@@ -5,14 +5,14 @@
|
|
5
5
|
#ifndef INCLUDE_V8_TYPED_ARRAY_H_
|
6
6
|
#define INCLUDE_V8_TYPED_ARRAY_H_
|
7
7
|
|
8
|
+
#include <limits>
|
9
|
+
|
8
10
|
#include "v8-array-buffer.h" // NOLINT(build/include_directory)
|
9
11
|
#include "v8-local-handle.h" // NOLINT(build/include_directory)
|
10
12
|
#include "v8config.h" // NOLINT(build/include_directory)
|
11
13
|
|
12
14
|
namespace v8 {
|
13
15
|
|
14
|
-
class SharedArrayBuffer;
|
15
|
-
|
16
16
|
/**
|
17
17
|
* A base class for an instance of TypedArray series of constructors
|
18
18
|
* (ES6 draft 15.13.6).
|
@@ -20,12 +20,19 @@ class SharedArrayBuffer;
|
|
20
20
|
class V8_EXPORT TypedArray : public ArrayBufferView {
|
21
21
|
public:
|
22
22
|
/*
|
23
|
-
* The largest typed array size
|
23
|
+
* The largest supported typed array byte size. Each subclass defines a
|
24
|
+
* type-specific kMaxLength for the maximum length that can be passed to New.
|
24
25
|
*/
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
#if V8_ENABLE_SANDBOX
|
27
|
+
static constexpr size_t kMaxByteLength =
|
28
|
+
internal::kMaxSafeBufferSizeForSandbox;
|
29
|
+
#elif V8_HOST_ARCH_32_BIT
|
30
|
+
static constexpr size_t kMaxByteLength = std::numeric_limits<int>::max();
|
31
|
+
#else
|
32
|
+
// The maximum safe integer (2^53 - 1).
|
33
|
+
static constexpr size_t kMaxByteLength =
|
34
|
+
static_cast<size_t>((uint64_t{1} << 53) - 1);
|
35
|
+
#endif
|
29
36
|
|
30
37
|
/**
|
31
38
|
* Number of elements in this typed array
|
@@ -50,6 +57,13 @@ class V8_EXPORT TypedArray : public ArrayBufferView {
|
|
50
57
|
*/
|
51
58
|
class V8_EXPORT Uint8Array : public TypedArray {
|
52
59
|
public:
|
60
|
+
/*
|
61
|
+
* The largest Uint8Array size that can be constructed using New.
|
62
|
+
*/
|
63
|
+
static constexpr size_t kMaxLength =
|
64
|
+
TypedArray::kMaxByteLength / sizeof(uint8_t);
|
65
|
+
static_assert(sizeof(uint8_t) == 1);
|
66
|
+
|
53
67
|
static Local<Uint8Array> New(Local<ArrayBuffer> array_buffer,
|
54
68
|
size_t byte_offset, size_t length);
|
55
69
|
static Local<Uint8Array> New(Local<SharedArrayBuffer> shared_array_buffer,
|
@@ -71,6 +85,13 @@ class V8_EXPORT Uint8Array : public TypedArray {
|
|
71
85
|
*/
|
72
86
|
class V8_EXPORT Uint8ClampedArray : public TypedArray {
|
73
87
|
public:
|
88
|
+
/*
|
89
|
+
* The largest Uint8ClampedArray size that can be constructed using New.
|
90
|
+
*/
|
91
|
+
static constexpr size_t kMaxLength =
|
92
|
+
TypedArray::kMaxByteLength / sizeof(uint8_t);
|
93
|
+
static_assert(sizeof(uint8_t) == 1);
|
94
|
+
|
74
95
|
static Local<Uint8ClampedArray> New(Local<ArrayBuffer> array_buffer,
|
75
96
|
size_t byte_offset, size_t length);
|
76
97
|
static Local<Uint8ClampedArray> New(
|
@@ -93,6 +114,13 @@ class V8_EXPORT Uint8ClampedArray : public TypedArray {
|
|
93
114
|
*/
|
94
115
|
class V8_EXPORT Int8Array : public TypedArray {
|
95
116
|
public:
|
117
|
+
/*
|
118
|
+
* The largest Int8Array size that can be constructed using New.
|
119
|
+
*/
|
120
|
+
static constexpr size_t kMaxLength =
|
121
|
+
TypedArray::kMaxByteLength / sizeof(int8_t);
|
122
|
+
static_assert(sizeof(int8_t) == 1);
|
123
|
+
|
96
124
|
static Local<Int8Array> New(Local<ArrayBuffer> array_buffer,
|
97
125
|
size_t byte_offset, size_t length);
|
98
126
|
static Local<Int8Array> New(Local<SharedArrayBuffer> shared_array_buffer,
|
@@ -114,6 +142,13 @@ class V8_EXPORT Int8Array : public TypedArray {
|
|
114
142
|
*/
|
115
143
|
class V8_EXPORT Uint16Array : public TypedArray {
|
116
144
|
public:
|
145
|
+
/*
|
146
|
+
* The largest Uint16Array size that can be constructed using New.
|
147
|
+
*/
|
148
|
+
static constexpr size_t kMaxLength =
|
149
|
+
TypedArray::kMaxByteLength / sizeof(uint16_t);
|
150
|
+
static_assert(sizeof(uint16_t) == 2);
|
151
|
+
|
117
152
|
static Local<Uint16Array> New(Local<ArrayBuffer> array_buffer,
|
118
153
|
size_t byte_offset, size_t length);
|
119
154
|
static Local<Uint16Array> New(Local<SharedArrayBuffer> shared_array_buffer,
|
@@ -135,6 +170,13 @@ class V8_EXPORT Uint16Array : public TypedArray {
|
|
135
170
|
*/
|
136
171
|
class V8_EXPORT Int16Array : public TypedArray {
|
137
172
|
public:
|
173
|
+
/*
|
174
|
+
* The largest Int16Array size that can be constructed using New.
|
175
|
+
*/
|
176
|
+
static constexpr size_t kMaxLength =
|
177
|
+
TypedArray::kMaxByteLength / sizeof(int16_t);
|
178
|
+
static_assert(sizeof(int16_t) == 2);
|
179
|
+
|
138
180
|
static Local<Int16Array> New(Local<ArrayBuffer> array_buffer,
|
139
181
|
size_t byte_offset, size_t length);
|
140
182
|
static Local<Int16Array> New(Local<SharedArrayBuffer> shared_array_buffer,
|
@@ -156,6 +198,13 @@ class V8_EXPORT Int16Array : public TypedArray {
|
|
156
198
|
*/
|
157
199
|
class V8_EXPORT Uint32Array : public TypedArray {
|
158
200
|
public:
|
201
|
+
/*
|
202
|
+
* The largest Uint32Array size that can be constructed using New.
|
203
|
+
*/
|
204
|
+
static constexpr size_t kMaxLength =
|
205
|
+
TypedArray::kMaxByteLength / sizeof(uint32_t);
|
206
|
+
static_assert(sizeof(uint32_t) == 4);
|
207
|
+
|
159
208
|
static Local<Uint32Array> New(Local<ArrayBuffer> array_buffer,
|
160
209
|
size_t byte_offset, size_t length);
|
161
210
|
static Local<Uint32Array> New(Local<SharedArrayBuffer> shared_array_buffer,
|
@@ -177,6 +226,13 @@ class V8_EXPORT Uint32Array : public TypedArray {
|
|
177
226
|
*/
|
178
227
|
class V8_EXPORT Int32Array : public TypedArray {
|
179
228
|
public:
|
229
|
+
/*
|
230
|
+
* The largest Int32Array size that can be constructed using New.
|
231
|
+
*/
|
232
|
+
static constexpr size_t kMaxLength =
|
233
|
+
TypedArray::kMaxByteLength / sizeof(int32_t);
|
234
|
+
static_assert(sizeof(int32_t) == 4);
|
235
|
+
|
180
236
|
static Local<Int32Array> New(Local<ArrayBuffer> array_buffer,
|
181
237
|
size_t byte_offset, size_t length);
|
182
238
|
static Local<Int32Array> New(Local<SharedArrayBuffer> shared_array_buffer,
|
@@ -193,11 +249,42 @@ class V8_EXPORT Int32Array : public TypedArray {
|
|
193
249
|
static void CheckCast(Value* obj);
|
194
250
|
};
|
195
251
|
|
252
|
+
/**
|
253
|
+
* An instance of Float16Array constructor.
|
254
|
+
*/
|
255
|
+
class V8_EXPORT Float16Array : public TypedArray {
|
256
|
+
static constexpr size_t kMaxLength =
|
257
|
+
TypedArray::kMaxByteLength / sizeof(uint16_t);
|
258
|
+
|
259
|
+
public:
|
260
|
+
static Local<Float16Array> New(Local<ArrayBuffer> array_buffer,
|
261
|
+
size_t byte_offset, size_t length);
|
262
|
+
static Local<Float16Array> New(Local<SharedArrayBuffer> shared_array_buffer,
|
263
|
+
size_t byte_offset, size_t length);
|
264
|
+
V8_INLINE static Float16Array* Cast(Value* value) {
|
265
|
+
#ifdef V8_ENABLE_CHECKS
|
266
|
+
CheckCast(value);
|
267
|
+
#endif
|
268
|
+
return static_cast<Float16Array*>(value);
|
269
|
+
}
|
270
|
+
|
271
|
+
private:
|
272
|
+
Float16Array();
|
273
|
+
static void CheckCast(Value* obj);
|
274
|
+
};
|
275
|
+
|
196
276
|
/**
|
197
277
|
* An instance of Float32Array constructor (ES6 draft 15.13.6).
|
198
278
|
*/
|
199
279
|
class V8_EXPORT Float32Array : public TypedArray {
|
200
280
|
public:
|
281
|
+
/*
|
282
|
+
* The largest Float32Array size that can be constructed using New.
|
283
|
+
*/
|
284
|
+
static constexpr size_t kMaxLength =
|
285
|
+
TypedArray::kMaxByteLength / sizeof(float);
|
286
|
+
static_assert(sizeof(float) == 4);
|
287
|
+
|
201
288
|
static Local<Float32Array> New(Local<ArrayBuffer> array_buffer,
|
202
289
|
size_t byte_offset, size_t length);
|
203
290
|
static Local<Float32Array> New(Local<SharedArrayBuffer> shared_array_buffer,
|
@@ -219,6 +306,13 @@ class V8_EXPORT Float32Array : public TypedArray {
|
|
219
306
|
*/
|
220
307
|
class V8_EXPORT Float64Array : public TypedArray {
|
221
308
|
public:
|
309
|
+
/*
|
310
|
+
* The largest Float64Array size that can be constructed using New.
|
311
|
+
*/
|
312
|
+
static constexpr size_t kMaxLength =
|
313
|
+
TypedArray::kMaxByteLength / sizeof(double);
|
314
|
+
static_assert(sizeof(double) == 8);
|
315
|
+
|
222
316
|
static Local<Float64Array> New(Local<ArrayBuffer> array_buffer,
|
223
317
|
size_t byte_offset, size_t length);
|
224
318
|
static Local<Float64Array> New(Local<SharedArrayBuffer> shared_array_buffer,
|
@@ -240,6 +334,13 @@ class V8_EXPORT Float64Array : public TypedArray {
|
|
240
334
|
*/
|
241
335
|
class V8_EXPORT BigInt64Array : public TypedArray {
|
242
336
|
public:
|
337
|
+
/*
|
338
|
+
* The largest BigInt64Array size that can be constructed using New.
|
339
|
+
*/
|
340
|
+
static constexpr size_t kMaxLength =
|
341
|
+
TypedArray::kMaxByteLength / sizeof(int64_t);
|
342
|
+
static_assert(sizeof(int64_t) == 8);
|
343
|
+
|
243
344
|
static Local<BigInt64Array> New(Local<ArrayBuffer> array_buffer,
|
244
345
|
size_t byte_offset, size_t length);
|
245
346
|
static Local<BigInt64Array> New(Local<SharedArrayBuffer> shared_array_buffer,
|
@@ -261,6 +362,13 @@ class V8_EXPORT BigInt64Array : public TypedArray {
|
|
261
362
|
*/
|
262
363
|
class V8_EXPORT BigUint64Array : public TypedArray {
|
263
364
|
public:
|
365
|
+
/*
|
366
|
+
* The largest BigUint64Array size that can be constructed using New.
|
367
|
+
*/
|
368
|
+
static constexpr size_t kMaxLength =
|
369
|
+
TypedArray::kMaxByteLength / sizeof(uint64_t);
|
370
|
+
static_assert(sizeof(uint64_t) == 8);
|
371
|
+
|
264
372
|
static Local<BigUint64Array> New(Local<ArrayBuffer> array_buffer,
|
265
373
|
size_t byte_offset, size_t length);
|
266
374
|
static Local<BigUint64Array> New(Local<SharedArrayBuffer> shared_array_buffer,
|