libv8-node 19.9.0.0-arm64-darwin → 20.12.1.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.
- checksums.yaml +4 -4
- data/lib/libv8/node/version.rb +3 -3
- data/vendor/v8/arm64-darwin/libv8/obj/libv8_monolith.a +0 -0
- data/vendor/v8/include/cppgc/cross-thread-persistent.h +4 -2
- data/vendor/v8/include/cppgc/heap-consistency.h +2 -2
- data/vendor/v8/include/cppgc/heap-handle.h +5 -0
- data/vendor/v8/include/cppgc/internal/api-constants.h +4 -1
- data/vendor/v8/include/cppgc/internal/gc-info.h +35 -33
- data/vendor/v8/include/cppgc/internal/member-storage.h +19 -7
- data/vendor/v8/include/cppgc/internal/pointer-policies.h +38 -2
- data/vendor/v8/include/cppgc/internal/write-barrier.h +15 -5
- data/vendor/v8/include/cppgc/macros.h +10 -1
- data/vendor/v8/include/cppgc/member.h +167 -129
- data/vendor/v8/include/cppgc/persistent.h +22 -15
- data/vendor/v8/include/cppgc/platform.h +6 -4
- data/vendor/v8/include/cppgc/type-traits.h +4 -3
- data/vendor/v8/include/cppgc/visitor.h +16 -1
- data/vendor/v8/include/libplatform/v8-tracing.h +2 -2
- data/vendor/v8/include/v8-array-buffer.h +59 -0
- data/vendor/v8/include/v8-callbacks.h +14 -1
- data/vendor/v8/include/v8-context.h +50 -3
- data/vendor/v8/include/v8-cppgc.h +15 -0
- data/vendor/v8/include/v8-data.h +1 -1
- data/vendor/v8/include/v8-embedder-heap.h +0 -169
- data/vendor/v8/include/v8-fast-api-calls.h +7 -3
- data/vendor/v8/include/v8-function-callback.h +69 -42
- data/vendor/v8/include/v8-function.h +1 -0
- data/vendor/v8/include/v8-inspector.h +20 -5
- data/vendor/v8/include/v8-internal.h +242 -150
- data/vendor/v8/include/v8-isolate.h +30 -40
- data/vendor/v8/include/v8-local-handle.h +81 -48
- data/vendor/v8/include/v8-metrics.h +28 -2
- data/vendor/v8/include/v8-microtask-queue.h +5 -0
- data/vendor/v8/include/v8-object.h +38 -3
- data/vendor/v8/include/v8-persistent-handle.h +25 -16
- data/vendor/v8/include/v8-platform.h +79 -10
- data/vendor/v8/include/v8-primitive.h +19 -12
- data/vendor/v8/include/v8-profiler.h +59 -31
- data/vendor/v8/include/v8-script.h +32 -5
- data/vendor/v8/include/v8-snapshot.h +4 -8
- data/vendor/v8/include/v8-template.h +3 -1
- data/vendor/v8/include/v8-traced-handle.h +22 -28
- data/vendor/v8/include/v8-util.h +9 -3
- data/vendor/v8/include/v8-value.h +31 -4
- data/vendor/v8/include/v8-version.h +4 -4
- data/vendor/v8/include/v8-wasm.h +2 -1
- data/vendor/v8/include/v8config.h +73 -2
- metadata +3 -3
@@ -62,7 +62,8 @@ class TracedReferenceBase {
|
|
62
62
|
*/
|
63
63
|
V8_INLINE v8::Local<v8::Value> Get(v8::Isolate* isolate) const {
|
64
64
|
if (IsEmpty()) return Local<Value>();
|
65
|
-
return Local<Value>::New(isolate,
|
65
|
+
return Local<Value>::New(isolate,
|
66
|
+
internal::ValueHelper::SlotAsValue<Value>(val_));
|
66
67
|
}
|
67
68
|
|
68
69
|
/**
|
@@ -103,10 +104,13 @@ class TracedReferenceBase {
|
|
103
104
|
|
104
105
|
V8_EXPORT void CheckValue() const;
|
105
106
|
|
107
|
+
V8_INLINE internal::Address address() const { return *val_; }
|
108
|
+
|
106
109
|
// val_ points to a GlobalHandles node.
|
107
110
|
internal::Address* val_ = nullptr;
|
108
111
|
|
109
112
|
friend class internal::BasicTracedReferenceExtractor;
|
113
|
+
friend class internal::HandleHelper;
|
110
114
|
template <typename F>
|
111
115
|
friend class Local;
|
112
116
|
template <typename U>
|
@@ -117,11 +121,11 @@ class TracedReferenceBase {
|
|
117
121
|
|
118
122
|
/**
|
119
123
|
* A traced handle with copy and move semantics. The handle is to be used
|
120
|
-
* together
|
121
|
-
*
|
124
|
+
* together as part of GarbageCollected objects (see v8-cppgc.h) or from stack
|
125
|
+
* and specifies edges from C++ objects to JavaScript.
|
122
126
|
*
|
123
127
|
* The exact semantics are:
|
124
|
-
* - Tracing garbage collections
|
128
|
+
* - Tracing garbage collections using CppHeap.
|
125
129
|
* - Non-tracing garbage collections refer to
|
126
130
|
* |v8::EmbedderRootsHandler::IsRoot()| whether the handle should
|
127
131
|
* be treated as root or not.
|
@@ -135,7 +139,12 @@ class BasicTracedReference : public TracedReferenceBase {
|
|
135
139
|
/**
|
136
140
|
* Construct a Local<T> from this handle.
|
137
141
|
*/
|
138
|
-
Local<T> Get(Isolate* isolate) const {
|
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
|
+
}
|
139
148
|
|
140
149
|
template <class S>
|
141
150
|
V8_INLINE BasicTracedReference<S>& As() const {
|
@@ -166,7 +175,6 @@ class BasicTracedReference : public TracedReferenceBase {
|
|
166
175
|
Isolate* isolate, T* that, void* slot,
|
167
176
|
internal::GlobalHandleStoreMode store_mode);
|
168
177
|
|
169
|
-
friend class EmbedderHeapTracer;
|
170
178
|
template <typename F>
|
171
179
|
friend class Local;
|
172
180
|
friend class Object;
|
@@ -181,13 +189,7 @@ class BasicTracedReference : public TracedReferenceBase {
|
|
181
189
|
/**
|
182
190
|
* A traced handle without destructor that clears the handle. The embedder needs
|
183
191
|
* to ensure that the handle is not accessed once the V8 object has been
|
184
|
-
* reclaimed.
|
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|.
|
192
|
+
* reclaimed. For more details see BasicTracedReference.
|
191
193
|
*/
|
192
194
|
template <typename T>
|
193
195
|
class TracedReference : public BasicTracedReference<T> {
|
@@ -207,7 +209,7 @@ class TracedReference : public BasicTracedReference<T> {
|
|
207
209
|
*/
|
208
210
|
template <class S>
|
209
211
|
TracedReference(Isolate* isolate, Local<S> that) : BasicTracedReference<T>() {
|
210
|
-
this->val_ = this->New(isolate, that
|
212
|
+
this->val_ = this->New(isolate, *that, &this->val_,
|
211
213
|
internal::GlobalHandleStoreMode::kInitializingStore);
|
212
214
|
static_assert(std::is_base_of<T, S>::value, "type check");
|
213
215
|
}
|
@@ -291,7 +293,7 @@ template <class T>
|
|
291
293
|
internal::Address* BasicTracedReference<T>::New(
|
292
294
|
Isolate* isolate, T* that, void* slot,
|
293
295
|
internal::GlobalHandleStoreMode store_mode) {
|
294
|
-
if (that ==
|
296
|
+
if (that == internal::ValueHelper::EmptyValue<T>()) return nullptr;
|
295
297
|
internal::Address* p = reinterpret_cast<internal::Address*>(that);
|
296
298
|
return internal::GlobalizeTracedReference(
|
297
299
|
reinterpret_cast<internal::Isolate*>(isolate), p,
|
@@ -306,21 +308,13 @@ void TracedReferenceBase::Reset() {
|
|
306
308
|
|
307
309
|
V8_INLINE bool operator==(const TracedReferenceBase& lhs,
|
308
310
|
const TracedReferenceBase& rhs) {
|
309
|
-
|
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;
|
311
|
+
return internal::HandleHelper::EqualHandles(lhs, rhs);
|
314
312
|
}
|
315
313
|
|
316
314
|
template <typename U>
|
317
315
|
V8_INLINE bool operator==(const TracedReferenceBase& lhs,
|
318
316
|
const v8::Local<U>& rhs) {
|
319
|
-
|
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;
|
317
|
+
return internal::HandleHelper::EqualHandles(lhs, rhs);
|
324
318
|
}
|
325
319
|
|
326
320
|
template <typename U>
|
@@ -353,7 +347,7 @@ void TracedReference<T>::Reset(Isolate* isolate, const Local<S>& other) {
|
|
353
347
|
this->Reset();
|
354
348
|
if (other.IsEmpty()) return;
|
355
349
|
this->SetSlotThreadSafe(
|
356
|
-
this->New(isolate, other
|
350
|
+
this->New(isolate, *other, &this->val_,
|
357
351
|
internal::GlobalHandleStoreMode::kAssigningStore));
|
358
352
|
}
|
359
353
|
|
@@ -403,7 +397,7 @@ void TracedReferenceBase::SetWrapperClassId(uint16_t class_id) {
|
|
403
397
|
using I = internal::Internals;
|
404
398
|
if (IsEmpty()) return;
|
405
399
|
internal::Address* obj = reinterpret_cast<internal::Address*>(val_);
|
406
|
-
uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + I::
|
400
|
+
uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + I::kTracedNodeClassIdOffset;
|
407
401
|
*reinterpret_cast<uint16_t*>(addr) = class_id;
|
408
402
|
}
|
409
403
|
|
@@ -411,7 +405,7 @@ uint16_t TracedReferenceBase::WrapperClassId() const {
|
|
411
405
|
using I = internal::Internals;
|
412
406
|
if (IsEmpty()) return 0;
|
413
407
|
internal::Address* obj = reinterpret_cast<internal::Address*>(val_);
|
414
|
-
uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + I::
|
408
|
+
uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + I::kTracedNodeClassIdOffset;
|
415
409
|
return *reinterpret_cast<uint16_t*>(addr);
|
416
410
|
}
|
417
411
|
|
data/vendor/v8/include/v8-util.h
CHANGED
@@ -181,7 +181,11 @@ class PersistentValueMapBase {
|
|
181
181
|
* Get value stored in map.
|
182
182
|
*/
|
183
183
|
Local<V> Get(const K& key) {
|
184
|
-
|
184
|
+
V* p = FromVal(Traits::Get(&impl_, key));
|
185
|
+
#ifdef V8_ENABLE_CONSERVATIVE_STACK_SCANNING
|
186
|
+
if (p == nullptr) return Local<V>();
|
187
|
+
#endif
|
188
|
+
return Local<V>::New(isolate_, p);
|
185
189
|
}
|
186
190
|
|
187
191
|
/**
|
@@ -236,7 +240,8 @@ class PersistentValueMapBase {
|
|
236
240
|
: value_(other.value_) { }
|
237
241
|
|
238
242
|
Local<V> NewLocal(Isolate* isolate) const {
|
239
|
-
return Local<V>::New(
|
243
|
+
return Local<V>::New(
|
244
|
+
isolate, internal::ValueHelper::SlotAsValue<V>(FromVal(value_)));
|
240
245
|
}
|
241
246
|
bool IsEmpty() const {
|
242
247
|
return value_ == kPersistentContainerNotFound;
|
@@ -613,7 +618,8 @@ class V8_DEPRECATE_SOON("Use std::vector<Global<V>>.") PersistentValueVector {
|
|
613
618
|
* Retrieve the i-th value in the vector.
|
614
619
|
*/
|
615
620
|
Local<V> Get(size_t index) const {
|
616
|
-
return Local<V>::New(isolate_,
|
621
|
+
return Local<V>::New(isolate_, internal::ValueHelper::SlotAsValue<V>(
|
622
|
+
FromVal(Traits::Get(&impl_, index))));
|
617
623
|
}
|
618
624
|
|
619
625
|
/**
|
@@ -244,6 +244,11 @@ class V8_EXPORT Value : public Data {
|
|
244
244
|
*/
|
245
245
|
bool IsWeakSet() const;
|
246
246
|
|
247
|
+
/**
|
248
|
+
* Returns true if this value is a WeakRef.
|
249
|
+
*/
|
250
|
+
bool IsWeakRef() const;
|
251
|
+
|
247
252
|
/**
|
248
253
|
* Returns true if this value is an ArrayBuffer.
|
249
254
|
*/
|
@@ -339,6 +344,11 @@ class V8_EXPORT Value : public Data {
|
|
339
344
|
*/
|
340
345
|
bool IsWasmModuleObject() const;
|
341
346
|
|
347
|
+
/**
|
348
|
+
* Returns true if this value is the WasmNull object.
|
349
|
+
*/
|
350
|
+
bool IsWasmNull() const;
|
351
|
+
|
342
352
|
/**
|
343
353
|
* Returns true if the value is a Module Namespace Object.
|
344
354
|
*/
|
@@ -464,10 +474,14 @@ bool Value::IsUndefined() const {
|
|
464
474
|
bool Value::QuickIsUndefined() const {
|
465
475
|
using A = internal::Address;
|
466
476
|
using I = internal::Internals;
|
467
|
-
A obj =
|
477
|
+
A obj = internal::ValueHelper::ValueAsAddress(this);
|
478
|
+
#if V8_STATIC_ROOTS_BOOL
|
479
|
+
return I::is_identical(obj, I::StaticReadOnlyRoot::kUndefinedValue);
|
480
|
+
#else
|
468
481
|
if (!I::HasHeapObjectTag(obj)) return false;
|
469
482
|
if (I::GetInstanceType(obj) != I::kOddballType) return false;
|
470
483
|
return (I::GetOddballKind(obj) == I::kUndefinedOddballKind);
|
484
|
+
#endif // V8_STATIC_ROOTS_BOOL
|
471
485
|
}
|
472
486
|
|
473
487
|
bool Value::IsNull() const {
|
@@ -481,10 +495,14 @@ bool Value::IsNull() const {
|
|
481
495
|
bool Value::QuickIsNull() const {
|
482
496
|
using A = internal::Address;
|
483
497
|
using I = internal::Internals;
|
484
|
-
A obj =
|
498
|
+
A obj = internal::ValueHelper::ValueAsAddress(this);
|
499
|
+
#if V8_STATIC_ROOTS_BOOL
|
500
|
+
return I::is_identical(obj, I::StaticReadOnlyRoot::kNullValue);
|
501
|
+
#else
|
485
502
|
if (!I::HasHeapObjectTag(obj)) return false;
|
486
503
|
if (I::GetInstanceType(obj) != I::kOddballType) return false;
|
487
504
|
return (I::GetOddballKind(obj) == I::kNullOddballKind);
|
505
|
+
#endif // V8_STATIC_ROOTS_BOOL
|
488
506
|
}
|
489
507
|
|
490
508
|
bool Value::IsNullOrUndefined() const {
|
@@ -496,13 +514,17 @@ bool Value::IsNullOrUndefined() const {
|
|
496
514
|
}
|
497
515
|
|
498
516
|
bool Value::QuickIsNullOrUndefined() const {
|
517
|
+
#if V8_STATIC_ROOTS_BOOL
|
518
|
+
return QuickIsNull() || QuickIsUndefined();
|
519
|
+
#else
|
499
520
|
using A = internal::Address;
|
500
521
|
using I = internal::Internals;
|
501
|
-
A obj =
|
522
|
+
A obj = internal::ValueHelper::ValueAsAddress(this);
|
502
523
|
if (!I::HasHeapObjectTag(obj)) return false;
|
503
524
|
if (I::GetInstanceType(obj) != I::kOddballType) return false;
|
504
525
|
int kind = I::GetOddballKind(obj);
|
505
526
|
return kind == I::kNullOddballKind || kind == I::kUndefinedOddballKind;
|
527
|
+
#endif // V8_STATIC_ROOTS_BOOL
|
506
528
|
}
|
507
529
|
|
508
530
|
bool Value::IsString() const {
|
@@ -516,9 +538,14 @@ bool Value::IsString() const {
|
|
516
538
|
bool Value::QuickIsString() const {
|
517
539
|
using A = internal::Address;
|
518
540
|
using I = internal::Internals;
|
519
|
-
A obj =
|
541
|
+
A obj = internal::ValueHelper::ValueAsAddress(this);
|
520
542
|
if (!I::HasHeapObjectTag(obj)) return false;
|
543
|
+
#if V8_STATIC_ROOTS_BOOL && !V8_MAP_PACKING
|
544
|
+
return I::CheckInstanceMapRange(obj, I::StaticReadOnlyRoot::kFirstStringMap,
|
545
|
+
I::StaticReadOnlyRoot::kLastStringMap);
|
546
|
+
#else
|
521
547
|
return (I::GetInstanceType(obj) < I::kFirstNonstringType);
|
548
|
+
#endif // V8_STATIC_ROOTS_BOOL
|
522
549
|
}
|
523
550
|
|
524
551
|
} // namespace v8
|
@@ -8,10 +8,10 @@
|
|
8
8
|
// These macros define the version number for the current version.
|
9
9
|
// NOTE these macros are used by some of the tool scripts and the build
|
10
10
|
// system so their names cannot be changed without changing the scripts.
|
11
|
-
#define V8_MAJOR_VERSION
|
12
|
-
#define V8_MINOR_VERSION
|
13
|
-
#define V8_BUILD_NUMBER
|
14
|
-
#define V8_PATCH_LEVEL
|
11
|
+
#define V8_MAJOR_VERSION 11
|
12
|
+
#define V8_MINOR_VERSION 3
|
13
|
+
#define V8_BUILD_NUMBER 244
|
14
|
+
#define V8_PATCH_LEVEL 8
|
15
15
|
|
16
16
|
// Use 1 for candidates and 0 otherwise.
|
17
17
|
// (Boolean macro values are not supported by all preprocessors.)
|
data/vendor/v8/include/v8-wasm.h
CHANGED
@@ -144,7 +144,7 @@ class V8_EXPORT WasmStreaming final {
|
|
144
144
|
/**
|
145
145
|
* {Finish} should be called after all received bytes where passed to
|
146
146
|
* {OnBytesReceived} to tell V8 that there will be no more bytes. {Finish}
|
147
|
-
*
|
147
|
+
* must not be called after {Abort} has been called already.
|
148
148
|
* If {can_use_compiled_module} is true and {SetCompiledModuleBytes} was
|
149
149
|
* previously called, the compiled module bytes can be used.
|
150
150
|
* If {can_use_compiled_module} is false, the compiled module bytes previously
|
@@ -156,6 +156,7 @@ class V8_EXPORT WasmStreaming final {
|
|
156
156
|
* Abort streaming compilation. If {exception} has a value, then the promise
|
157
157
|
* associated with streaming compilation is rejected with that value. If
|
158
158
|
* {exception} does not have value, the promise does not get rejected.
|
159
|
+
* {Abort} must not be called repeatedly, or after {Finish}.
|
159
160
|
*/
|
160
161
|
void Abort(MaybeLocal<Value> exception);
|
161
162
|
|
@@ -173,6 +173,7 @@ path. Add it with -I<path> to the command line
|
|
173
173
|
// V8_TARGET_OS_LINUX
|
174
174
|
// V8_TARGET_OS_MACOS
|
175
175
|
// V8_TARGET_OS_WIN
|
176
|
+
// V8_TARGET_OS_CHROMEOS
|
176
177
|
//
|
177
178
|
// If not set explicitly, these fall back to corresponding V8_OS_ values.
|
178
179
|
|
@@ -184,7 +185,8 @@ path. Add it with -I<path> to the command line
|
|
184
185
|
&& !defined(V8_TARGET_OS_IOS) \
|
185
186
|
&& !defined(V8_TARGET_OS_LINUX) \
|
186
187
|
&& !defined(V8_TARGET_OS_MACOS) \
|
187
|
-
&& !defined(V8_TARGET_OS_WIN)
|
188
|
+
&& !defined(V8_TARGET_OS_WIN) \
|
189
|
+
&& !defined(V8_TARGET_OS_CHROMEOS)
|
188
190
|
# error No known target OS defined.
|
189
191
|
# endif
|
190
192
|
|
@@ -195,7 +197,8 @@ path. Add it with -I<path> to the command line
|
|
195
197
|
|| defined(V8_TARGET_OS_IOS) \
|
196
198
|
|| defined(V8_TARGET_OS_LINUX) \
|
197
199
|
|| defined(V8_TARGET_OS_MACOS) \
|
198
|
-
|| defined(V8_TARGET_OS_WIN)
|
200
|
+
|| defined(V8_TARGET_OS_WIN) \
|
201
|
+
|| defined(V8_TARGET_OS_CHROMEOS)
|
199
202
|
# error A target OS is defined but V8_HAVE_TARGET_OS is unset.
|
200
203
|
# endif
|
201
204
|
|
@@ -288,6 +291,9 @@ path. Add it with -I<path> to the command line
|
|
288
291
|
//
|
289
292
|
// V8_HAS_ATTRIBUTE_ALWAYS_INLINE - __attribute__((always_inline))
|
290
293
|
// supported
|
294
|
+
// V8_HAS_ATTRIBUTE_CONSTINIT - __attribute__((require_constant_
|
295
|
+
// initialization))
|
296
|
+
// supported
|
291
297
|
// V8_HAS_ATTRIBUTE_NONNULL - __attribute__((nonnull)) supported
|
292
298
|
// V8_HAS_ATTRIBUTE_NOINLINE - __attribute__((noinline)) supported
|
293
299
|
// V8_HAS_ATTRIBUTE_UNUSED - __attribute__((unused)) supported
|
@@ -305,6 +311,9 @@ path. Add it with -I<path> to the command line
|
|
305
311
|
// V8_HAS_BUILTIN_EXPECT - __builtin_expect() supported
|
306
312
|
// V8_HAS_BUILTIN_FRAME_ADDRESS - __builtin_frame_address() supported
|
307
313
|
// V8_HAS_BUILTIN_POPCOUNT - __builtin_popcount() supported
|
314
|
+
// V8_HAS_BUILTIN_ADD_OVERFLOW - __builtin_add_overflow() supported
|
315
|
+
// V8_HAS_BUILTIN_SUB_OVERFLOW - __builtin_sub_overflow() supported
|
316
|
+
// V8_HAS_BUILTIN_MUL_OVERFLOW - __builtin_mul_overflow() supported
|
308
317
|
// V8_HAS_BUILTIN_SADD_OVERFLOW - __builtin_sadd_overflow() supported
|
309
318
|
// V8_HAS_BUILTIN_SSUB_OVERFLOW - __builtin_ssub_overflow() supported
|
310
319
|
// V8_HAS_BUILTIN_UADD_OVERFLOW - __builtin_uadd_overflow() supported
|
@@ -334,9 +343,27 @@ path. Add it with -I<path> to the command line
|
|
334
343
|
#endif
|
335
344
|
|
336
345
|
# define V8_HAS_ATTRIBUTE_ALWAYS_INLINE (__has_attribute(always_inline))
|
346
|
+
# define V8_HAS_ATTRIBUTE_CONSTINIT \
|
347
|
+
(__has_attribute(require_constant_initialization))
|
348
|
+
# define V8_HAS_ATTRIBUTE_CONST (__has_attribute(const))
|
337
349
|
# define V8_HAS_ATTRIBUTE_NONNULL (__has_attribute(nonnull))
|
338
350
|
# define V8_HAS_ATTRIBUTE_NOINLINE (__has_attribute(noinline))
|
339
351
|
# define V8_HAS_ATTRIBUTE_UNUSED (__has_attribute(unused))
|
352
|
+
// Support for the "preserve_most" attribute is limited:
|
353
|
+
// - 32-bit platforms do not implement it,
|
354
|
+
// - component builds fail because _dl_runtime_resolve clobbers registers,
|
355
|
+
// - we see crashes on arm64 on Windows (https://crbug.com/1409934), which can
|
356
|
+
// hopefully be fixed in the future.
|
357
|
+
// Additionally, the initial implementation in clang <= 16 overwrote the return
|
358
|
+
// register(s) in the epilogue of a preserve_most function, so we only use
|
359
|
+
// preserve_most in clang >= 17 (see https://reviews.llvm.org/D143425).
|
360
|
+
#if (defined(_M_X64) || defined(__x86_64__) /* x64 (everywhere) */ \
|
361
|
+
|| ((defined(__AARCH64EL__) || defined(_M_ARM64)) /* arm64, but ... */ \
|
362
|
+
&& !defined(_WIN32))) /* not on windows */ \
|
363
|
+
&& !defined(COMPONENT_BUILD) /* no component build */\
|
364
|
+
&& __clang_major__ >= 17 /* clang >= 17 */
|
365
|
+
# define V8_HAS_ATTRIBUTE_PRESERVE_MOST (__has_attribute(preserve_most))
|
366
|
+
#endif
|
340
367
|
# define V8_HAS_ATTRIBUTE_VISIBILITY (__has_attribute(visibility))
|
341
368
|
# define V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT \
|
342
369
|
(__has_attribute(warn_unused_result))
|
@@ -355,6 +382,9 @@ path. Add it with -I<path> to the command line
|
|
355
382
|
# define V8_HAS_BUILTIN_EXPECT (__has_builtin(__builtin_expect))
|
356
383
|
# define V8_HAS_BUILTIN_FRAME_ADDRESS (__has_builtin(__builtin_frame_address))
|
357
384
|
# define V8_HAS_BUILTIN_POPCOUNT (__has_builtin(__builtin_popcount))
|
385
|
+
# define V8_HAS_BUILTIN_ADD_OVERFLOW (__has_builtin(__builtin_add_overflow))
|
386
|
+
# define V8_HAS_BUILTIN_SUB_OVERFLOW (__has_builtin(__builtin_sub_overflow))
|
387
|
+
# define V8_HAS_BUILTIN_MUL_OVERFLOW (__has_builtin(__builtin_mul_overflow))
|
358
388
|
# define V8_HAS_BUILTIN_SADD_OVERFLOW (__has_builtin(__builtin_sadd_overflow))
|
359
389
|
# define V8_HAS_BUILTIN_SSUB_OVERFLOW (__has_builtin(__builtin_ssub_overflow))
|
360
390
|
# define V8_HAS_BUILTIN_UADD_OVERFLOW (__has_builtin(__builtin_uadd_overflow))
|
@@ -450,6 +480,26 @@ path. Add it with -I<path> to the command line
|
|
450
480
|
#endif
|
451
481
|
|
452
482
|
|
483
|
+
// A macro to mark functions whose values don't change (e.g. across calls)
|
484
|
+
// and thereby compiler is free to hoist and fold multiple calls together.
|
485
|
+
// Use like:
|
486
|
+
// V8_CONST int foo() { ... }
|
487
|
+
#if V8_HAS_ATTRIBUTE_CONST
|
488
|
+
# define V8_CONST __attribute__((const))
|
489
|
+
#else
|
490
|
+
# define V8_CONST
|
491
|
+
#endif
|
492
|
+
|
493
|
+
// A macro to mark a declaration as requiring constant initialization.
|
494
|
+
// Use like:
|
495
|
+
// int* foo V8_CONSTINIT;
|
496
|
+
#if V8_HAS_ATTRIBUTE_CONSTINIT
|
497
|
+
# define V8_CONSTINIT __attribute__((require_constant_initialization))
|
498
|
+
#else
|
499
|
+
# define V8_CONSTINIT
|
500
|
+
#endif
|
501
|
+
|
502
|
+
|
453
503
|
// A macro to mark specific arguments as non-null.
|
454
504
|
// Use like:
|
455
505
|
// int add(int* x, int y, int* z) V8_NONNULL(1, 3) { return *x + y + *z; }
|
@@ -472,6 +522,21 @@ path. Add it with -I<path> to the command line
|
|
472
522
|
#endif
|
473
523
|
|
474
524
|
|
525
|
+
// A macro used to change the calling conventions to preserve all registers (no
|
526
|
+
// caller-saved registers). Use this for cold functions called from hot
|
527
|
+
// functions.
|
528
|
+
// Note: The attribute is considered experimental, so apply with care. Also,
|
529
|
+
// "preserve_most" is currently not handling the return value correctly, so only
|
530
|
+
// use it for functions returning void (see https://reviews.llvm.org/D141020).
|
531
|
+
// Use like:
|
532
|
+
// V8_NOINLINE V8_PRESERVE_MOST void UnlikelyMethod();
|
533
|
+
#if V8_HAS_ATTRIBUTE_PRESERVE_MOST
|
534
|
+
# define V8_PRESERVE_MOST __attribute__((preserve_most))
|
535
|
+
#else
|
536
|
+
# define V8_PRESERVE_MOST /* NOT SUPPORTED */
|
537
|
+
#endif
|
538
|
+
|
539
|
+
|
475
540
|
// A macro (V8_DEPRECATED) to mark classes or functions as deprecated.
|
476
541
|
#if defined(V8_DEPRECATION_WARNINGS)
|
477
542
|
# define V8_DEPRECATED(message) [[deprecated(message)]]
|
@@ -869,4 +934,10 @@ V8 shared library set USING_V8_SHARED.
|
|
869
934
|
|
870
935
|
#undef V8_HAS_CPP_ATTRIBUTE
|
871
936
|
|
937
|
+
#if !defined(V8_STATIC_ROOTS)
|
938
|
+
#define V8_STATIC_ROOTS_BOOL false
|
939
|
+
#else
|
940
|
+
#define V8_STATIC_ROOTS_BOOL true
|
941
|
+
#endif
|
942
|
+
|
872
943
|
#endif // V8CONFIG_H_
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libv8-node
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 20.12.1.0
|
5
5
|
platform: arm64-darwin
|
6
6
|
authors:
|
7
7
|
- ''
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-04-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -177,7 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
177
177
|
- !ruby/object:Gem::Version
|
178
178
|
version: '0'
|
179
179
|
requirements: []
|
180
|
-
rubygems_version: 3.
|
180
|
+
rubygems_version: 3.4.22
|
181
181
|
signing_key:
|
182
182
|
specification_version: 4
|
183
183
|
summary: Node.JS's V8 JavaScript engine
|