libv8-node 22.7.0.2-x86_64-darwin → 23.6.1.0-x86_64-darwin
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/libv8/node/version.rb +3 -3
- data/vendor/v8/include/cppgc/allocation.h +10 -11
- data/vendor/v8/include/cppgc/garbage-collected.h +8 -0
- data/vendor/v8/include/cppgc/heap-statistics.h +2 -0
- data/vendor/v8/include/cppgc/internal/api-constants.h +6 -1
- data/vendor/v8/include/cppgc/internal/compiler-specific.h +9 -1
- data/vendor/v8/include/cppgc/internal/gc-info.h +12 -10
- data/vendor/v8/include/cppgc/internal/member-storage.h +6 -0
- data/vendor/v8/include/cppgc/internal/name-trait.h +5 -1
- data/vendor/v8/include/cppgc/name-provider.h +7 -0
- data/vendor/v8/include/v8-array-buffer.h +44 -24
- data/vendor/v8/include/v8-callbacks.h +10 -5
- data/vendor/v8/include/v8-context.h +41 -9
- data/vendor/v8/include/v8-cppgc.h +3 -55
- data/vendor/v8/include/v8-date.h +9 -0
- data/vendor/v8/include/v8-embedder-heap.h +4 -1
- data/vendor/v8/include/v8-exception.h +70 -0
- data/vendor/v8/include/v8-fast-api-calls.h +31 -38
- data/vendor/v8/include/v8-function-callback.h +203 -62
- data/vendor/v8/include/v8-function.h +4 -3
- data/vendor/v8/include/v8-handle-base.h +2 -2
- data/vendor/v8/include/v8-initialization.h +18 -1
- data/vendor/v8/include/v8-inspector.h +6 -3
- data/vendor/v8/include/v8-internal.h +303 -58
- data/vendor/v8/include/v8-isolate.h +58 -39
- data/vendor/v8/include/v8-local-handle.h +18 -19
- data/vendor/v8/include/v8-message.h +0 -21
- data/vendor/v8/include/v8-metrics.h +4 -0
- data/vendor/v8/include/v8-microtask-queue.h +0 -5
- data/vendor/v8/include/v8-object.h +284 -35
- data/vendor/v8/include/v8-persistent-handle.h +0 -19
- data/vendor/v8/include/v8-platform.h +21 -35
- data/vendor/v8/include/v8-primitive.h +92 -1
- data/vendor/v8/include/v8-profiler.h +38 -1
- data/vendor/v8/include/v8-promise.h +2 -2
- data/vendor/v8/include/v8-sandbox.h +173 -0
- data/vendor/v8/include/v8-script.h +44 -14
- data/vendor/v8/include/v8-snapshot.h +38 -2
- data/vendor/v8/include/v8-template.h +105 -263
- data/vendor/v8/include/v8-traced-handle.h +4 -15
- data/vendor/v8/include/v8-unwinder.h +2 -1
- data/vendor/v8/include/v8-util.h +1 -117
- data/vendor/v8/include/v8-value.h +3 -2
- data/vendor/v8/include/v8-version.h +3 -3
- data/vendor/v8/include/v8-wasm.h +3 -0
- data/vendor/v8/include/v8config.h +51 -7
- data/vendor/v8/x86_64-darwin/libv8/obj/libv8_monolith.a +0 -0
- metadata +4 -3
@@ -8,6 +8,7 @@
|
|
8
8
|
#include <stddef.h>
|
9
9
|
|
10
10
|
#include "v8-local-handle.h" // NOLINT(build/include_directory)
|
11
|
+
#include "v8-object.h" // NOLINT(build/include_directory)
|
11
12
|
#include "v8config.h" // NOLINT(build/include_directory)
|
12
13
|
|
13
14
|
namespace v8 {
|
@@ -58,8 +59,77 @@ class V8_EXPORT Exception {
|
|
58
59
|
* of a given exception, or an empty handle if not available.
|
59
60
|
*/
|
60
61
|
static Local<StackTrace> GetStackTrace(Local<Value> exception);
|
62
|
+
|
63
|
+
/**
|
64
|
+
* Captures the current stack trace and attaches it to the given object in the
|
65
|
+
* form of `stack` property.
|
66
|
+
*/
|
67
|
+
static Maybe<bool> CaptureStackTrace(Local<Context> context,
|
68
|
+
Local<Object> object);
|
61
69
|
};
|
62
70
|
|
71
|
+
/**
|
72
|
+
* This is a part of experimental Api and might be changed without further
|
73
|
+
* notice.
|
74
|
+
* Do not use it.
|
75
|
+
*/
|
76
|
+
enum class ExceptionContext : uint32_t {
|
77
|
+
kUnknown,
|
78
|
+
kConstructor,
|
79
|
+
kOperation,
|
80
|
+
kAttributeGet,
|
81
|
+
kAttributeSet,
|
82
|
+
kIndexedQuery,
|
83
|
+
kIndexedGetter,
|
84
|
+
kIndexedDescriptor,
|
85
|
+
kIndexedSetter,
|
86
|
+
kIndexedDefiner,
|
87
|
+
kIndexedDeleter,
|
88
|
+
kNamedQuery,
|
89
|
+
kNamedGetter,
|
90
|
+
kNamedDescriptor,
|
91
|
+
kNamedSetter,
|
92
|
+
kNamedDefiner,
|
93
|
+
kNamedDeleter,
|
94
|
+
kNamedEnumerator
|
95
|
+
};
|
96
|
+
|
97
|
+
/**
|
98
|
+
* This is a part of experimental Api and might be changed without further
|
99
|
+
* notice.
|
100
|
+
* Do not use it.
|
101
|
+
*/
|
102
|
+
class ExceptionPropagationMessage {
|
103
|
+
public:
|
104
|
+
ExceptionPropagationMessage(v8::Isolate* isolate, Local<Object> exception,
|
105
|
+
Local<String> interface_name,
|
106
|
+
Local<String> property_name,
|
107
|
+
ExceptionContext exception_context)
|
108
|
+
: isolate_(isolate),
|
109
|
+
exception_(exception),
|
110
|
+
interface_name_(interface_name),
|
111
|
+
property_name_(property_name),
|
112
|
+
exception_context_(exception_context) {}
|
113
|
+
|
114
|
+
V8_INLINE Isolate* GetIsolate() const { return isolate_; }
|
115
|
+
V8_INLINE Local<Object> GetException() const { return exception_; }
|
116
|
+
V8_INLINE Local<String> GetInterfaceName() const { return interface_name_; }
|
117
|
+
V8_INLINE Local<String> GetPropertyName() const { return property_name_; }
|
118
|
+
V8_INLINE ExceptionContext GetExceptionContext() const {
|
119
|
+
return exception_context_;
|
120
|
+
}
|
121
|
+
|
122
|
+
private:
|
123
|
+
Isolate* isolate_;
|
124
|
+
Local<Object> exception_;
|
125
|
+
Local<String> interface_name_;
|
126
|
+
Local<String> property_name_;
|
127
|
+
ExceptionContext exception_context_;
|
128
|
+
};
|
129
|
+
|
130
|
+
using ExceptionPropagationCallback =
|
131
|
+
void (*)(ExceptionPropagationMessage message);
|
132
|
+
|
63
133
|
/**
|
64
134
|
* An external exception handler.
|
65
135
|
*/
|
@@ -337,7 +337,13 @@ struct FastApiTypedArrayBase {
|
|
337
337
|
};
|
338
338
|
|
339
339
|
template <typename T>
|
340
|
-
struct
|
340
|
+
struct V8_DEPRECATE_SOON(
|
341
|
+
"When an API function expects a TypedArray as a parameter, the type in the "
|
342
|
+
"signature should be `v8::Local<v8::Value>` instead of "
|
343
|
+
"FastApiTypedArray<>. The API function then has to type-check the "
|
344
|
+
"parameter and convert it to a `v8::Local<v8::TypedArray` to access the "
|
345
|
+
"data. In essence, the parameter should be handled the same as for a "
|
346
|
+
"regular API call.") FastApiTypedArray : public FastApiTypedArrayBase {
|
341
347
|
public:
|
342
348
|
V8_INLINE T get(size_t index) const {
|
343
349
|
#ifdef DEBUG
|
@@ -458,13 +464,6 @@ union V8_TRIVIAL_ABI AnyCType {
|
|
458
464
|
void* pointer_value;
|
459
465
|
Local<Object> object_value;
|
460
466
|
Local<Array> sequence_value;
|
461
|
-
const FastApiTypedArray<uint8_t>* uint8_ta_value;
|
462
|
-
const FastApiTypedArray<int32_t>* int32_ta_value;
|
463
|
-
const FastApiTypedArray<uint32_t>* uint32_ta_value;
|
464
|
-
const FastApiTypedArray<int64_t>* int64_ta_value;
|
465
|
-
const FastApiTypedArray<uint64_t>* uint64_ta_value;
|
466
|
-
const FastApiTypedArray<float>* float_ta_value;
|
467
|
-
const FastApiTypedArray<double>* double_ta_value;
|
468
467
|
const FastOneByteString* string_value;
|
469
468
|
FastApiCallbackOptions* options_value;
|
470
469
|
};
|
@@ -529,16 +528,22 @@ class V8_EXPORT CFunction {
|
|
529
528
|
}
|
530
529
|
|
531
530
|
template <typename F>
|
532
|
-
static CFunction Make(F* func
|
533
|
-
|
531
|
+
static CFunction Make(F* func,
|
532
|
+
CFunctionInfo::Int64Representation int64_rep =
|
533
|
+
CFunctionInfo::Int64Representation::kNumber) {
|
534
|
+
CFunction result = ArgUnwrap<F*>::Make(func, int64_rep);
|
535
|
+
result.GetInt64Representation();
|
536
|
+
return result;
|
534
537
|
}
|
535
538
|
|
536
539
|
// Provided for testing purposes.
|
537
540
|
template <typename R, typename... Args, typename R_Patch,
|
538
541
|
typename... Args_Patch>
|
539
542
|
static CFunction Make(R (*func)(Args...),
|
540
|
-
R_Patch (*patching_func)(Args_Patch...)
|
541
|
-
|
543
|
+
R_Patch (*patching_func)(Args_Patch...),
|
544
|
+
CFunctionInfo::Int64Representation int64_rep =
|
545
|
+
CFunctionInfo::Int64Representation::kNumber) {
|
546
|
+
CFunction c_func = ArgUnwrap<R (*)(Args...)>::Make(func, int64_rep);
|
542
547
|
static_assert(
|
543
548
|
sizeof...(Args_Patch) == sizeof...(Args),
|
544
549
|
"The patching function must have the same number of arguments.");
|
@@ -561,7 +566,9 @@ class V8_EXPORT CFunction {
|
|
561
566
|
template <typename R, typename... Args>
|
562
567
|
class ArgUnwrap<R (*)(Args...)> {
|
563
568
|
public:
|
564
|
-
static CFunction Make(R (*func)(Args...)
|
569
|
+
static CFunction Make(R (*func)(Args...),
|
570
|
+
CFunctionInfo::Int64Representation int64_rep =
|
571
|
+
CFunctionInfo::Int64Representation::kNumber);
|
565
572
|
};
|
566
573
|
};
|
567
574
|
|
@@ -577,35 +584,15 @@ struct FastApiCallbackOptions {
|
|
577
584
|
* returned instance may be filled with mock data.
|
578
585
|
*/
|
579
586
|
static FastApiCallbackOptions CreateForTesting(Isolate* isolate) {
|
580
|
-
return {
|
587
|
+
return {};
|
581
588
|
}
|
582
589
|
|
583
|
-
|
584
|
-
* If the callback wants to signal an error condition or to perform an
|
585
|
-
* allocation, it must set options.fallback to true and do an early return
|
586
|
-
* from the fast method. Then V8 checks the value of options.fallback and if
|
587
|
-
* it's true, falls back to executing the SlowCallback, which is capable of
|
588
|
-
* reporting the error (either by throwing a JS exception or logging to the
|
589
|
-
* console) or doing the allocation. It's the embedder's responsibility to
|
590
|
-
* ensure that the fast callback is idempotent up to the point where error and
|
591
|
-
* fallback conditions are checked, because otherwise executing the slow
|
592
|
-
* callback might produce visible side-effects twice.
|
593
|
-
*/
|
594
|
-
bool fallback;
|
590
|
+
v8::Isolate* isolate = nullptr;
|
595
591
|
|
596
592
|
/**
|
597
593
|
* The `data` passed to the FunctionTemplate constructor, or `undefined`.
|
598
|
-
* `data_ptr` allows for default constructing FastApiCallbackOptions.
|
599
594
|
*/
|
600
|
-
|
601
|
-
uintptr_t data_ptr;
|
602
|
-
v8::Local<v8::Value> data;
|
603
|
-
};
|
604
|
-
|
605
|
-
/**
|
606
|
-
* When called from WebAssembly, a view of the calling module's memory.
|
607
|
-
*/
|
608
|
-
FastApiTypedArray<uint8_t>* const wasm_memory;
|
595
|
+
v8::Local<v8::Value> data;
|
609
596
|
};
|
610
597
|
|
611
598
|
namespace internal {
|
@@ -929,8 +916,14 @@ class CFunctionBuilder {
|
|
929
916
|
|
930
917
|
// static
|
931
918
|
template <typename R, typename... Args>
|
932
|
-
CFunction CFunction::ArgUnwrap<R (*)(Args...)>::Make(
|
933
|
-
|
919
|
+
CFunction CFunction::ArgUnwrap<R (*)(Args...)>::Make(
|
920
|
+
R (*func)(Args...), CFunctionInfo::Int64Representation int64_rep) {
|
921
|
+
if (int64_rep == CFunctionInfo::Int64Representation::kNumber) {
|
922
|
+
return internal::CFunctionBuilder().Fn(func).Build();
|
923
|
+
}
|
924
|
+
return internal::CFunctionBuilder()
|
925
|
+
.Fn(func)
|
926
|
+
.template Build<CFunctionInfo::Int64Representation::kBigInt>();
|
934
927
|
}
|
935
928
|
|
936
929
|
using CFunctionBuilder = internal::CFunctionBuilder;
|