libv8-node 21.7.2.0-x86_64-linux → 22.7.0.1-x86_64-linux
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 +7 -4
- data/vendor/v8/include/cppgc/internal/api-constants.h +1 -1
- data/vendor/v8/include/cppgc/type-traits.h +25 -4
- data/vendor/v8/include/v8-array-buffer.h +6 -0
- data/vendor/v8/include/v8-callbacks.h +6 -12
- data/vendor/v8/include/v8-container.h +54 -0
- data/vendor/v8/include/v8-context.h +51 -22
- data/vendor/v8/include/v8-embedder-heap.h +19 -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 +35 -26
- data/vendor/v8/include/v8-forward.h +1 -0
- data/vendor/v8/include/v8-function-callback.h +129 -20
- data/vendor/v8/include/v8-handle-base.h +32 -80
- data/vendor/v8/include/v8-inspector.h +16 -24
- data/vendor/v8/include/v8-internal.h +472 -65
- data/vendor/v8/include/v8-isolate.h +86 -51
- data/vendor/v8/include/v8-local-handle.h +258 -33
- 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 +29 -10
- data/vendor/v8/include/v8-persistent-handle.h +5 -3
- data/vendor/v8/include/v8-platform.h +81 -44
- data/vendor/v8/include/v8-script.h +61 -11
- data/vendor/v8/include/v8-snapshot.h +94 -23
- data/vendor/v8/include/v8-statistics.h +10 -24
- data/vendor/v8/include/v8-template.h +410 -131
- data/vendor/v8/include/v8-traced-handle.h +81 -46
- data/vendor/v8/include/v8-typed-array.h +115 -7
- data/vendor/v8/include/v8-util.h +13 -12
- data/vendor/v8/include/v8-value.h +92 -4
- data/vendor/v8/include/v8-version.h +4 -4
- data/vendor/v8/include/v8config.h +35 -10
- data/vendor/v8/x86_64-linux/libv8/obj/libv8_monolith.a +0 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1feadfe68c5561f3b6e3b0fb77ea54162c65f55f1ccbbdb5fb044508f8436473
|
4
|
+
data.tar.gz: 2249cabf77a66ef5628941772a6bc9e00f434267dc9a833fdc814cfcb32ed7da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 719e5e7f61b0a5f8b43e8c02547f8e2247b671cc7fc5d7bb8786d73ed035c4aae9395f451dbd57a2d108ee8bf0fa1c54eb242c108a00f02cc289c087a7c57ad8
|
7
|
+
data.tar.gz: 35746607d24b572eeedb205e5418e1545938ee4c5335a826a7a17d4e09f29771911abb0255a4134896cb8cafec45462cf4ab74fe73c8162701504c892efa3ad9
|
data/lib/libv8/node/version.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Libv8
|
4
|
+
end
|
2
5
|
|
3
6
|
module Libv8::Node
|
4
|
-
VERSION = '
|
5
|
-
NODE_VERSION = '
|
6
|
-
LIBV8_VERSION = '
|
7
|
+
VERSION = '22.7.0.1'
|
8
|
+
NODE_VERSION = '22.7.0'
|
9
|
+
LIBV8_VERSION = '12.4.254.21' # from src/node-.../deps/v8/include/v8-version.h
|
7
10
|
end
|
@@ -32,7 +32,7 @@ static constexpr uint16_t kFullyConstructedBitMask = uint16_t{1};
|
|
32
32
|
|
33
33
|
static constexpr size_t kPageSize = size_t{1} << 17;
|
34
34
|
|
35
|
-
#if defined(
|
35
|
+
#if defined(V8_HOST_ARCH_ARM64) && defined(V8_OS_DARWIN)
|
36
36
|
constexpr size_t kGuardPageSize = 0;
|
37
37
|
#else
|
38
38
|
constexpr size_t kGuardPageSize = 4096;
|
@@ -128,13 +128,13 @@ struct IsSubclassOfBasicMemberTemplate {
|
|
128
128
|
private:
|
129
129
|
template <typename T, typename CheckingPolicy, typename StorageType>
|
130
130
|
static std::true_type SubclassCheck(
|
131
|
-
BasicMember<T, WeaknessTag, WriteBarrierPolicy, CheckingPolicy,
|
132
|
-
|
131
|
+
const BasicMember<T, WeaknessTag, WriteBarrierPolicy, CheckingPolicy,
|
132
|
+
StorageType>*);
|
133
133
|
static std::false_type SubclassCheck(...);
|
134
134
|
|
135
135
|
public:
|
136
|
-
static constexpr bool value =
|
137
|
-
|
136
|
+
static constexpr bool value = decltype(SubclassCheck(
|
137
|
+
std::declval<std::decay_t<BasicMemberCandidate>*>()))::value;
|
138
138
|
};
|
139
139
|
|
140
140
|
template <typename T,
|
@@ -180,6 +180,14 @@ constexpr bool IsStrictlyBaseOfV =
|
|
180
180
|
std::is_base_of_v<std::decay_t<B>, std::decay_t<D>> &&
|
181
181
|
!IsDecayedSameV<B, D>;
|
182
182
|
|
183
|
+
template <typename T>
|
184
|
+
constexpr bool IsAnyMemberTypeV = false;
|
185
|
+
|
186
|
+
template <typename T, typename WeaknessTag, typename WriteBarrierPolicy,
|
187
|
+
typename CheckingPolicy, typename StorageType>
|
188
|
+
constexpr bool IsAnyMemberTypeV<internal::BasicMember<
|
189
|
+
T, WeaknessTag, WriteBarrierPolicy, CheckingPolicy, StorageType>> = true;
|
190
|
+
|
183
191
|
} // namespace internal
|
184
192
|
|
185
193
|
/**
|
@@ -245,6 +253,19 @@ constexpr bool IsWeakV = internal::IsWeak<T>::value;
|
|
245
253
|
template <typename T>
|
246
254
|
constexpr bool IsCompleteV = internal::IsComplete<T>::value;
|
247
255
|
|
256
|
+
/**
|
257
|
+
* Value is true for member types `Member<T>` and `WeakMember<T>`.
|
258
|
+
*/
|
259
|
+
template <typename T>
|
260
|
+
constexpr bool IsMemberOrWeakMemberTypeV =
|
261
|
+
IsMemberTypeV<T> || IsWeakMemberTypeV<T>;
|
262
|
+
|
263
|
+
/**
|
264
|
+
* Value is true for any member type.
|
265
|
+
*/
|
266
|
+
template <typename T>
|
267
|
+
constexpr bool IsAnyMemberTypeV = internal::IsAnyMemberTypeV<std::decay_t<T>>;
|
268
|
+
|
248
269
|
} // namespace cppgc
|
249
270
|
|
250
271
|
#endif // INCLUDE_CPPGC_TYPE_TRAITS_H_
|
@@ -318,6 +318,12 @@ class V8_EXPORT ArrayBuffer : public Object {
|
|
318
318
|
*/
|
319
319
|
std::shared_ptr<BackingStore> GetBackingStore();
|
320
320
|
|
321
|
+
/**
|
322
|
+
* More efficient shortcut for
|
323
|
+
* GetBackingStore()->IsResizableByUserJavaScript().
|
324
|
+
*/
|
325
|
+
bool IsResizableByUserJavaScript() const;
|
326
|
+
|
321
327
|
/**
|
322
328
|
* More efficient shortcut for GetBackingStore()->Data(). The returned pointer
|
323
329
|
* is valid as long as the ArrayBuffer is alive.
|
@@ -327,10 +327,6 @@ using WasmAsyncResolvePromiseCallback = void (*)(
|
|
327
327
|
using WasmLoadSourceMapCallback = Local<String> (*)(Isolate* isolate,
|
328
328
|
const char* name);
|
329
329
|
|
330
|
-
// --- Callback for checking if WebAssembly GC is enabled ---
|
331
|
-
// If the callback returns true, it will also enable Wasm stringrefs.
|
332
|
-
using WasmGCEnabledCallback = bool (*)(Local<Context> context);
|
333
|
-
|
334
330
|
// --- Callback for checking if WebAssembly imported strings are enabled ---
|
335
331
|
using WasmImportedStringsEnabledCallback = bool (*)(Local<Context> context);
|
336
332
|
|
@@ -342,6 +338,9 @@ using SharedArrayBufferConstructorEnabledCallback =
|
|
342
338
|
using JavaScriptCompileHintsMagicEnabledCallback =
|
343
339
|
bool (*)(Local<Context> context);
|
344
340
|
|
341
|
+
// --- Callback for checking if WebAssembly JSPI is enabled ---
|
342
|
+
using WasmJSPIEnabledCallback = bool (*)(Local<Context> context);
|
343
|
+
|
345
344
|
/**
|
346
345
|
* HostImportModuleDynamicallyCallback is called when we
|
347
346
|
* require the embedder to load a module. This is used as part of the dynamic
|
@@ -352,11 +351,11 @@ using JavaScriptCompileHintsMagicEnabledCallback =
|
|
352
351
|
*
|
353
352
|
* The specifier is the name of the module that should be imported.
|
354
353
|
*
|
355
|
-
* The
|
354
|
+
* The import_attributes are import attributes for this request in the form:
|
356
355
|
* [key1, value1, key2, value2, ...] where the keys and values are of type
|
357
356
|
* v8::String. Note, unlike the FixedArray passed to ResolveModuleCallback and
|
358
357
|
* returned from ModuleRequest::GetImportAssertions(), this array does not
|
359
|
-
* contain the source Locations of the
|
358
|
+
* contain the source Locations of the attributes.
|
360
359
|
*
|
361
360
|
* The embedder must compile, instantiate, evaluate the Module, and
|
362
361
|
* obtain its namespace object.
|
@@ -368,15 +367,10 @@ using JavaScriptCompileHintsMagicEnabledCallback =
|
|
368
367
|
* fails (e.g. due to stack overflow), the embedder must propagate
|
369
368
|
* that exception by returning an empty MaybeLocal.
|
370
369
|
*/
|
371
|
-
using HostImportModuleDynamicallyWithImportAssertionsCallback =
|
372
|
-
MaybeLocal<Promise> (*)(Local<Context> context,
|
373
|
-
Local<ScriptOrModule> referrer,
|
374
|
-
Local<String> specifier,
|
375
|
-
Local<FixedArray> import_assertions);
|
376
370
|
using HostImportModuleDynamicallyCallback = MaybeLocal<Promise> (*)(
|
377
371
|
Local<Context> context, Local<Data> host_defined_options,
|
378
372
|
Local<Value> resource_name, Local<String> specifier,
|
379
|
-
Local<FixedArray>
|
373
|
+
Local<FixedArray> import_attributes);
|
380
374
|
|
381
375
|
/**
|
382
376
|
* Callback for requesting a compile hint for a function from the embedder. The
|
@@ -8,6 +8,8 @@
|
|
8
8
|
#include <stddef.h>
|
9
9
|
#include <stdint.h>
|
10
10
|
|
11
|
+
#include <functional>
|
12
|
+
|
11
13
|
#include "v8-local-handle.h" // NOLINT(build/include_directory)
|
12
14
|
#include "v8-object.h" // NOLINT(build/include_directory)
|
13
15
|
#include "v8config.h" // NOLINT(build/include_directory)
|
@@ -43,6 +45,58 @@ class V8_EXPORT Array : public Object {
|
|
43
45
|
return static_cast<Array*>(value);
|
44
46
|
}
|
45
47
|
|
48
|
+
/**
|
49
|
+
* Creates a JavaScript array from a provided callback.
|
50
|
+
*
|
51
|
+
* \param context The v8::Context to create the array in.
|
52
|
+
* \param length The length of the array to be created.
|
53
|
+
* \param next_value_callback The callback that is invoked to retrieve
|
54
|
+
* elements for the array. The embedder can signal that the array
|
55
|
+
* initialization should be aborted by throwing an exception and returning
|
56
|
+
* an empty MaybeLocal.
|
57
|
+
* \returns The v8::Array if all elements were constructed successfully and an
|
58
|
+
* empty MaybeLocal otherwise.
|
59
|
+
*/
|
60
|
+
static MaybeLocal<Array> New(
|
61
|
+
Local<Context> context, size_t length,
|
62
|
+
std::function<MaybeLocal<v8::Value>()> next_value_callback);
|
63
|
+
|
64
|
+
enum class CallbackResult {
|
65
|
+
kException,
|
66
|
+
kBreak,
|
67
|
+
kContinue,
|
68
|
+
};
|
69
|
+
using IterationCallback = CallbackResult (*)(uint32_t index,
|
70
|
+
Local<Value> element,
|
71
|
+
void* data);
|
72
|
+
|
73
|
+
/**
|
74
|
+
* Calls {callback} for every element of this array, passing {callback_data}
|
75
|
+
* as its {data} parameter.
|
76
|
+
* This function will typically be faster than calling {Get()} repeatedly.
|
77
|
+
* As a consequence of being optimized for low overhead, the provided
|
78
|
+
* callback must adhere to the following restrictions:
|
79
|
+
* - It must not allocate any V8 objects and continue iterating; it may
|
80
|
+
* allocate (e.g. an error message/object) and then immediately terminate
|
81
|
+
* the iteration.
|
82
|
+
* - It must not modify the array being iterated.
|
83
|
+
* - It must not call back into V8 (unless it can guarantee that such a
|
84
|
+
* call does not violate the above restrictions, which is difficult).
|
85
|
+
* - The {Local<Value> element} must not "escape", i.e. must not be assigned
|
86
|
+
* to any other {Local}. Creating a {Global} from it, or updating a
|
87
|
+
* v8::TypecheckWitness with it, is safe.
|
88
|
+
* These restrictions may be lifted in the future if use cases arise that
|
89
|
+
* justify a slower but more robust implementation.
|
90
|
+
*
|
91
|
+
* Returns {Nothing} on exception; use a {TryCatch} to catch and handle this
|
92
|
+
* exception.
|
93
|
+
* When the {callback} returns {kException}, iteration is terminated
|
94
|
+
* immediately, returning {Nothing}. By returning {kBreak}, the callback
|
95
|
+
* can request non-exceptional early termination of the iteration.
|
96
|
+
*/
|
97
|
+
Maybe<void> Iterate(Local<Context> context, IterationCallback callback,
|
98
|
+
void* callback_data);
|
99
|
+
|
46
100
|
private:
|
47
101
|
Array();
|
48
102
|
static void CheckCast(Value* obj);
|
@@ -84,6 +84,29 @@ class V8_EXPORT Context : public Data {
|
|
84
84
|
* created by a previous call to Context::New with the same global
|
85
85
|
* template. The state of the global object will be completely reset
|
86
86
|
* and only object identify will remain.
|
87
|
+
*
|
88
|
+
* \param internal_fields_deserializer An optional callback used
|
89
|
+
* to deserialize fields set by
|
90
|
+
* v8::Object::SetAlignedPointerInInternalField() in wrapper objects
|
91
|
+
* from the default context snapshot. It should match the
|
92
|
+
* SerializeInternalFieldsCallback() used by
|
93
|
+
* v8::SnapshotCreator::SetDefaultContext() when the default context
|
94
|
+
* snapshot is created. It does not need to be configured if the default
|
95
|
+
* context snapshot contains no wrapper objects with pointer internal
|
96
|
+
* fields, or if no custom startup snapshot is configured
|
97
|
+
* in the v8::CreateParams used to create the isolate.
|
98
|
+
*
|
99
|
+
* \param microtask_queue An optional microtask queue used to manage
|
100
|
+
* the microtasks created in this context. If not set the per-isolate
|
101
|
+
* default microtask queue would be used.
|
102
|
+
*
|
103
|
+
* \param context_data_deserializer An optional callback used
|
104
|
+
* to deserialize embedder data set by
|
105
|
+
* v8::Context::SetAlignedPointerInEmbedderData() in the default
|
106
|
+
* context from the default context snapshot. It does not need to be
|
107
|
+
* configured if the default context snapshot contains no pointer embedder
|
108
|
+
* data, or if no custom startup snapshot is configured in the
|
109
|
+
* v8::CreateParams used to create the isolate.
|
87
110
|
*/
|
88
111
|
static Local<Context> New(
|
89
112
|
Isolate* isolate, ExtensionConfiguration* extensions = nullptr,
|
@@ -91,7 +114,9 @@ class V8_EXPORT Context : public Data {
|
|
91
114
|
MaybeLocal<Value> global_object = MaybeLocal<Value>(),
|
92
115
|
DeserializeInternalFieldsCallback internal_fields_deserializer =
|
93
116
|
DeserializeInternalFieldsCallback(),
|
94
|
-
MicrotaskQueue* microtask_queue = nullptr
|
117
|
+
MicrotaskQueue* microtask_queue = nullptr,
|
118
|
+
DeserializeContextDataCallback context_data_deserializer =
|
119
|
+
DeserializeContextDataCallback());
|
95
120
|
|
96
121
|
/**
|
97
122
|
* Create a new context from a (non-default) context snapshot. There
|
@@ -103,21 +128,37 @@ class V8_EXPORT Context : public Data {
|
|
103
128
|
* \param context_snapshot_index The index of the context snapshot to
|
104
129
|
* deserialize from. Use v8::Context::New for the default snapshot.
|
105
130
|
*
|
106
|
-
* \param
|
107
|
-
*
|
108
|
-
*
|
131
|
+
* \param internal_fields_deserializer An optional callback used
|
132
|
+
* to deserialize fields set by
|
133
|
+
* v8::Object::SetAlignedPointerInInternalField() in wrapper objects
|
134
|
+
* from the default context snapshot. It does not need to be
|
135
|
+
* configured if there are no wrapper objects with no internal
|
136
|
+
* pointer fields in the default context snapshot or if no startup
|
137
|
+
* snapshot is configured when the isolate is created.
|
109
138
|
*
|
110
139
|
* \param extensions See v8::Context::New.
|
111
140
|
*
|
112
141
|
* \param global_object See v8::Context::New.
|
142
|
+
*
|
143
|
+
* \param internal_fields_deserializer Similar to
|
144
|
+
* internal_fields_deserializer in v8::Context::New but applies to
|
145
|
+
* the context specified by the context_snapshot_index.
|
146
|
+
*
|
147
|
+
* \param microtask_queue See v8::Context::New.
|
148
|
+
*
|
149
|
+
* \param context_data_deserializer Similar to
|
150
|
+
* context_data_deserializer in v8::Context::New but applies to
|
151
|
+
* the context specified by the context_snapshot_index.
|
113
152
|
*/
|
114
153
|
static MaybeLocal<Context> FromSnapshot(
|
115
154
|
Isolate* isolate, size_t context_snapshot_index,
|
116
|
-
DeserializeInternalFieldsCallback
|
155
|
+
DeserializeInternalFieldsCallback internal_fields_deserializer =
|
117
156
|
DeserializeInternalFieldsCallback(),
|
118
157
|
ExtensionConfiguration* extensions = nullptr,
|
119
158
|
MaybeLocal<Value> global_object = MaybeLocal<Value>(),
|
120
|
-
MicrotaskQueue* microtask_queue = nullptr
|
159
|
+
MicrotaskQueue* microtask_queue = nullptr,
|
160
|
+
DeserializeContextDataCallback context_data_deserializer =
|
161
|
+
DeserializeContextDataCallback());
|
121
162
|
|
122
163
|
/**
|
123
164
|
* Returns an global object that isn't backed by an actual context.
|
@@ -182,7 +223,7 @@ class V8_EXPORT Context : public Data {
|
|
182
223
|
* parameter. Returns true if the operation completed successfully.
|
183
224
|
*/
|
184
225
|
virtual bool FreezeEmbedderObjectAndGetChildren(
|
185
|
-
Local<Object> obj,
|
226
|
+
Local<Object> obj, LocalVector<Object>& children_out) = 0;
|
186
227
|
};
|
187
228
|
|
188
229
|
/**
|
@@ -309,18 +350,6 @@ class V8_EXPORT Context : public Data {
|
|
309
350
|
Local<Context> context);
|
310
351
|
void SetAbortScriptExecution(AbortScriptExecutionCallback callback);
|
311
352
|
|
312
|
-
/**
|
313
|
-
* Returns the value that was set or restored by
|
314
|
-
* SetContinuationPreservedEmbedderData(), if any.
|
315
|
-
*/
|
316
|
-
Local<Value> GetContinuationPreservedEmbedderData() const;
|
317
|
-
|
318
|
-
/**
|
319
|
-
* Sets a value that will be stored on continuations and reset while the
|
320
|
-
* continuation runs.
|
321
|
-
*/
|
322
|
-
void SetContinuationPreservedEmbedderData(Local<Value> context);
|
323
|
-
|
324
353
|
/**
|
325
354
|
* Set or clear hooks to be invoked for promise lifecycle operations.
|
326
355
|
* To clear a hook, set it to an empty v8::Function. Each function will
|
@@ -436,12 +465,12 @@ void* Context::GetAlignedPointerFromEmbedderData(int index) {
|
|
436
465
|
|
437
466
|
template <class T>
|
438
467
|
MaybeLocal<T> Context::GetDataFromSnapshotOnce(size_t index) {
|
439
|
-
auto slot = GetDataFromSnapshotOnce(index);
|
440
|
-
if (slot) {
|
468
|
+
if (auto slot = GetDataFromSnapshotOnce(index); slot) {
|
441
469
|
internal::PerformCastCheck(
|
442
470
|
internal::ValueHelper::SlotAsValue<T, false>(slot));
|
471
|
+
return Local<T>::FromSlot(slot);
|
443
472
|
}
|
444
|
-
return
|
473
|
+
return {};
|
445
474
|
}
|
446
475
|
|
447
476
|
Context* Context::Cast(v8::Data* data) {
|
@@ -9,6 +9,9 @@
|
|
9
9
|
#include "v8config.h" // NOLINT(build/include_directory)
|
10
10
|
|
11
11
|
namespace v8 {
|
12
|
+
namespace internal {
|
13
|
+
class TracedHandles;
|
14
|
+
} // namespace internal
|
12
15
|
|
13
16
|
class Isolate;
|
14
17
|
class Value;
|
@@ -18,8 +21,17 @@ class Value;
|
|
18
21
|
*/
|
19
22
|
class V8_EXPORT EmbedderRootsHandler {
|
20
23
|
public:
|
24
|
+
enum class RootHandling {
|
25
|
+
kQueryEmbedderForNonDroppableReferences,
|
26
|
+
kDontQueryEmbedderForAnyReference,
|
27
|
+
};
|
28
|
+
|
21
29
|
virtual ~EmbedderRootsHandler() = default;
|
22
30
|
|
31
|
+
EmbedderRootsHandler() = default;
|
32
|
+
explicit EmbedderRootsHandler(RootHandling default_traced_reference_handling)
|
33
|
+
: default_traced_reference_handling_(default_traced_reference_handling) {}
|
34
|
+
|
23
35
|
/**
|
24
36
|
* Returns true if the |TracedReference| handle should be considered as root
|
25
37
|
* for the currently running non-tracing garbage collection and false
|
@@ -31,9 +43,7 @@ class V8_EXPORT EmbedderRootsHandler {
|
|
31
43
|
* |TracedReference|.
|
32
44
|
*
|
33
45
|
* Note that the `handle` is different from the handle that the embedder holds
|
34
|
-
* for retaining the object.
|
35
|
-
* distinguish cases where it wants handles to be treated as roots from not
|
36
|
-
* being treated as roots.
|
46
|
+
* for retaining the object.
|
37
47
|
*
|
38
48
|
* The concrete implementations must be thread-safe.
|
39
49
|
*/
|
@@ -59,6 +69,12 @@ class V8_EXPORT EmbedderRootsHandler {
|
|
59
69
|
ResetRoot(handle);
|
60
70
|
return true;
|
61
71
|
}
|
72
|
+
|
73
|
+
private:
|
74
|
+
const RootHandling default_traced_reference_handling_ =
|
75
|
+
RootHandling::kQueryEmbedderForNonDroppableReferences;
|
76
|
+
|
77
|
+
friend class internal::TracedHandles;
|
62
78
|
};
|
63
79
|
|
64
80
|
} // namespace v8
|
@@ -7,12 +7,13 @@
|
|
7
7
|
|
8
8
|
#include <memory>
|
9
9
|
|
10
|
-
#include "v8-context.h" // NOLINT(build/include_directory)
|
11
10
|
#include "v8-internal.h" // NOLINT(build/include_directory)
|
12
11
|
#include "v8-local-handle.h" // NOLINT(build/include_directory)
|
13
12
|
|
14
13
|
namespace v8 {
|
15
14
|
|
15
|
+
class Context;
|
16
|
+
|
16
17
|
namespace internal {
|
17
18
|
class EmbedderState;
|
18
19
|
} // namespace internal
|
@@ -30,14 +30,21 @@ class ThreadLocalTop;
|
|
30
30
|
*/
|
31
31
|
class V8_EXPORT Exception {
|
32
32
|
public:
|
33
|
-
static Local<Value> RangeError(Local<String> message
|
34
|
-
|
35
|
-
static Local<Value>
|
36
|
-
|
37
|
-
static Local<Value>
|
38
|
-
|
39
|
-
static Local<Value>
|
40
|
-
|
33
|
+
static Local<Value> RangeError(Local<String> message,
|
34
|
+
Local<Value> options = {});
|
35
|
+
static Local<Value> ReferenceError(Local<String> message,
|
36
|
+
Local<Value> options = {});
|
37
|
+
static Local<Value> SyntaxError(Local<String> message,
|
38
|
+
Local<Value> options = {});
|
39
|
+
static Local<Value> TypeError(Local<String> message,
|
40
|
+
Local<Value> options = {});
|
41
|
+
static Local<Value> WasmCompileError(Local<String> message,
|
42
|
+
Local<Value> options = {});
|
43
|
+
static Local<Value> WasmLinkError(Local<String> message,
|
44
|
+
Local<Value> options = {});
|
45
|
+
static Local<Value> WasmRuntimeError(Local<String> message,
|
46
|
+
Local<Value> options = {});
|
47
|
+
static Local<Value> Error(Local<String> message, Local<Value> options = {});
|
41
48
|
|
42
49
|
/**
|
43
50
|
* Creates an error message for the given exception.
|
@@ -206,7 +213,6 @@ class V8_EXPORT TryCatch {
|
|
206
213
|
bool can_continue_ : 1;
|
207
214
|
bool capture_message_ : 1;
|
208
215
|
bool rethrow_ : 1;
|
209
|
-
bool has_terminated_ : 1;
|
210
216
|
|
211
217
|
friend class internal::Isolate;
|
212
218
|
friend class internal::ThreadLocalTop;
|
@@ -254,8 +254,8 @@ class CTypeInfo {
|
|
254
254
|
// migrated from v8::ApiObject to v8::Local<v8::Value>.
|
255
255
|
kAny, // This is added to enable untyped representation of fast
|
256
256
|
// call arguments for test purposes. It can represent any of
|
257
|
-
// the other types stored in the same memory as a union
|
258
|
-
//
|
257
|
+
// the other types stored in the same memory as a union
|
258
|
+
// (see AnyCType declared below). This allows for
|
259
259
|
// uniform passing of arguments w.r.t. their location
|
260
260
|
// (in a register or on the stack), independent of their
|
261
261
|
// actual type. It's currently used by the arm64 simulator
|
@@ -344,7 +344,8 @@ struct FastApiTypedArray : public FastApiTypedArrayBase {
|
|
344
344
|
ValidateIndex(index);
|
345
345
|
#endif // DEBUG
|
346
346
|
T tmp;
|
347
|
-
memcpy(&tmp, reinterpret_cast<T*>(data_) + index,
|
347
|
+
memcpy(&tmp, static_cast<void*>(reinterpret_cast<T*>(data_) + index),
|
348
|
+
sizeof(T));
|
348
349
|
return tmp;
|
349
350
|
}
|
350
351
|
|
@@ -434,35 +435,43 @@ class V8_EXPORT CFunctionInfo {
|
|
434
435
|
struct FastApiCallbackOptions;
|
435
436
|
|
436
437
|
// Provided for testing.
|
437
|
-
|
438
|
+
union V8_TRIVIAL_ABI AnyCType {
|
438
439
|
AnyCType() : int64_value(0) {}
|
439
440
|
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
441
|
+
#if defined(V8_ENABLE_LOCAL_OFF_STACK_CHECK) && V8_HAS_ATTRIBUTE_TRIVIAL_ABI
|
442
|
+
// In this case, Local<T> is not trivially copyable and the implicit
|
443
|
+
// copy constructor and copy assignment for the union are deleted.
|
444
|
+
AnyCType(const AnyCType& other) : int64_value(other.int64_value) {}
|
445
|
+
AnyCType& operator=(const AnyCType& other) {
|
446
|
+
int64_value = other.int64_value;
|
447
|
+
return *this;
|
448
|
+
}
|
449
|
+
#endif
|
450
|
+
|
451
|
+
bool bool_value;
|
452
|
+
int32_t int32_value;
|
453
|
+
uint32_t uint32_value;
|
454
|
+
int64_t int64_value;
|
455
|
+
uint64_t uint64_value;
|
456
|
+
float float_value;
|
457
|
+
double double_value;
|
458
|
+
void* pointer_value;
|
459
|
+
Local<Object> object_value;
|
460
|
+
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
|
+
const FastOneByteString* string_value;
|
469
|
+
FastApiCallbackOptions* options_value;
|
461
470
|
};
|
462
471
|
|
463
472
|
static_assert(
|
464
473
|
sizeof(AnyCType) == 8,
|
465
|
-
"The AnyCType
|
474
|
+
"The union AnyCType should have size == 64 bits, as this is assumed "
|
466
475
|
"by EffectControlLinearizer.");
|
467
476
|
|
468
477
|
class V8_EXPORT CFunction {
|