libv8-node 18.19.1.0-aarch64-linux-musl → 19.9.0.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/common.h +0 -1
- data/vendor/v8/include/cppgc/cross-thread-persistent.h +7 -8
- data/vendor/v8/include/cppgc/heap-consistency.h +46 -3
- data/vendor/v8/include/cppgc/heap-handle.h +43 -0
- data/vendor/v8/include/cppgc/heap-statistics.h +2 -2
- data/vendor/v8/include/cppgc/heap.h +3 -7
- data/vendor/v8/include/cppgc/internal/api-constants.h +11 -1
- data/vendor/v8/include/cppgc/internal/base-page-handle.h +45 -0
- data/vendor/v8/include/cppgc/internal/caged-heap-local-data.h +40 -8
- data/vendor/v8/include/cppgc/internal/caged-heap.h +61 -0
- data/vendor/v8/include/cppgc/internal/gc-info.h +0 -1
- data/vendor/v8/include/cppgc/internal/member-storage.h +236 -0
- data/vendor/v8/include/cppgc/internal/name-trait.h +21 -6
- data/vendor/v8/include/cppgc/internal/persistent-node.h +11 -13
- data/vendor/v8/include/cppgc/internal/pointer-policies.h +28 -7
- data/vendor/v8/include/cppgc/internal/write-barrier.h +143 -101
- data/vendor/v8/include/cppgc/liveness-broker.h +8 -7
- data/vendor/v8/include/cppgc/member.h +364 -89
- data/vendor/v8/include/cppgc/name-provider.h +4 -4
- data/vendor/v8/include/cppgc/persistent.h +5 -9
- data/vendor/v8/include/cppgc/platform.h +2 -2
- data/vendor/v8/include/cppgc/sentinel-pointer.h +1 -1
- data/vendor/v8/include/cppgc/trace-trait.h +4 -0
- data/vendor/v8/include/cppgc/type-traits.h +9 -0
- data/vendor/v8/include/cppgc/visitor.h +89 -57
- data/vendor/v8/include/v8-callbacks.h +19 -5
- data/vendor/v8/include/v8-context.h +13 -8
- data/vendor/v8/include/v8-cppgc.h +12 -0
- data/vendor/v8/include/v8-date.h +5 -0
- data/vendor/v8/include/v8-embedder-heap.h +8 -3
- data/vendor/v8/include/v8-exception.h +1 -1
- data/vendor/v8/include/v8-fast-api-calls.h +46 -32
- data/vendor/v8/include/v8-function.h +8 -0
- data/vendor/v8/include/v8-initialization.h +23 -49
- data/vendor/v8/include/v8-inspector.h +13 -7
- data/vendor/v8/include/v8-internal.h +328 -123
- data/vendor/v8/include/v8-isolate.h +27 -42
- data/vendor/v8/include/v8-local-handle.h +5 -5
- data/vendor/v8/include/v8-locker.h +0 -11
- data/vendor/v8/include/v8-maybe.h +24 -1
- data/vendor/v8/include/v8-message.h +2 -4
- data/vendor/v8/include/v8-metrics.h +20 -38
- data/vendor/v8/include/v8-microtask-queue.h +1 -1
- data/vendor/v8/include/v8-object.h +8 -15
- data/vendor/v8/include/v8-persistent-handle.h +0 -2
- data/vendor/v8/include/v8-platform.h +54 -25
- data/vendor/v8/include/v8-primitive.h +8 -8
- data/vendor/v8/include/v8-profiler.h +84 -22
- data/vendor/v8/include/v8-regexp.h +2 -1
- data/vendor/v8/include/v8-script.h +62 -6
- data/vendor/v8/include/v8-template.h +13 -76
- data/vendor/v8/include/v8-unwinder-state.h +4 -4
- data/vendor/v8/include/v8-util.h +2 -4
- data/vendor/v8/include/v8-value-serializer.h +46 -23
- data/vendor/v8/include/v8-version.h +3 -3
- data/vendor/v8/include/v8-wasm.h +5 -62
- data/vendor/v8/include/v8-weak-callback-info.h +0 -7
- data/vendor/v8/include/v8config.h +280 -13
- metadata +6 -2
@@ -20,6 +20,7 @@ class String;
|
|
20
20
|
namespace internal {
|
21
21
|
class ExternalString;
|
22
22
|
class ScopedExternalStringLock;
|
23
|
+
class StringForwardingTable;
|
23
24
|
} // namespace internal
|
24
25
|
|
25
26
|
/**
|
@@ -269,6 +270,7 @@ class V8_EXPORT String : public Name {
|
|
269
270
|
private:
|
270
271
|
friend class internal::ExternalString;
|
271
272
|
friend class v8::String;
|
273
|
+
friend class internal::StringForwardingTable;
|
272
274
|
friend class internal::ScopedExternalStringLock;
|
273
275
|
};
|
274
276
|
|
@@ -785,10 +787,9 @@ String::ExternalStringResource* String::GetExternalStringResource() const {
|
|
785
787
|
|
786
788
|
ExternalStringResource* result;
|
787
789
|
if (I::IsExternalTwoByteString(I::GetInstanceType(obj))) {
|
788
|
-
|
789
|
-
A value =
|
790
|
-
|
791
|
-
internal::kExternalStringResourceTag);
|
790
|
+
Isolate* isolate = I::GetIsolateForSandbox(obj);
|
791
|
+
A value = I::ReadExternalPointerField<internal::kExternalStringResourceTag>(
|
792
|
+
isolate, obj, I::kStringResourceOffset);
|
792
793
|
result = reinterpret_cast<String::ExternalStringResource*>(value);
|
793
794
|
} else {
|
794
795
|
result = GetExternalStringResourceSlow();
|
@@ -809,10 +810,9 @@ String::ExternalStringResourceBase* String::GetExternalStringResourceBase(
|
|
809
810
|
ExternalStringResourceBase* resource;
|
810
811
|
if (type == I::kExternalOneByteRepresentationTag ||
|
811
812
|
type == I::kExternalTwoByteRepresentationTag) {
|
812
|
-
|
813
|
-
A value =
|
814
|
-
|
815
|
-
internal::kExternalStringResourceTag);
|
813
|
+
Isolate* isolate = I::GetIsolateForSandbox(obj);
|
814
|
+
A value = I::ReadExternalPointerField<internal::kExternalStringResourceTag>(
|
815
|
+
isolate, obj, I::kStringResourceOffset);
|
816
816
|
resource = reinterpret_cast<ExternalStringResourceBase*>(value);
|
817
817
|
} else {
|
818
818
|
resource = GetExternalStringResourceBaseSlow(encoding_out);
|
@@ -331,6 +331,9 @@ class V8_EXPORT CpuProfilingOptions {
|
|
331
331
|
unsigned max_samples = kNoSampleLimit, int sampling_interval_us = 0,
|
332
332
|
MaybeLocal<Context> filter_context = MaybeLocal<Context>());
|
333
333
|
|
334
|
+
CpuProfilingOptions(CpuProfilingOptions&&) = default;
|
335
|
+
CpuProfilingOptions& operator=(CpuProfilingOptions&&) = default;
|
336
|
+
|
334
337
|
CpuProfilingMode mode() const { return mode_; }
|
335
338
|
unsigned max_samples() const { return max_samples_; }
|
336
339
|
int sampling_interval_us() const { return sampling_interval_us_; }
|
@@ -344,7 +347,7 @@ class V8_EXPORT CpuProfilingOptions {
|
|
344
347
|
CpuProfilingMode mode_;
|
345
348
|
unsigned max_samples_;
|
346
349
|
int sampling_interval_us_;
|
347
|
-
|
350
|
+
Global<Context> filter_context_;
|
348
351
|
};
|
349
352
|
|
350
353
|
/**
|
@@ -542,7 +545,9 @@ class V8_EXPORT HeapGraphNode {
|
|
542
545
|
kConsString = 10, // Concatenated string. A pair of pointers to strings.
|
543
546
|
kSlicedString = 11, // Sliced string. A fragment of another string.
|
544
547
|
kSymbol = 12, // A Symbol (ES6).
|
545
|
-
kBigInt = 13
|
548
|
+
kBigInt = 13, // BigInt.
|
549
|
+
kObjectShape = 14, // Internal data used for tracking the shapes (or
|
550
|
+
// "hidden classes") of JS objects.
|
546
551
|
};
|
547
552
|
|
548
553
|
/** Returns node type (see HeapGraphNode::Type). */
|
@@ -898,6 +903,8 @@ class V8_EXPORT HeapProfiler {
|
|
898
903
|
enum SamplingFlags {
|
899
904
|
kSamplingNoFlags = 0,
|
900
905
|
kSamplingForceGC = 1 << 0,
|
906
|
+
kSamplingIncludeObjectsCollectedByMajorGC = 1 << 1,
|
907
|
+
kSamplingIncludeObjectsCollectedByMinorGC = 1 << 2,
|
901
908
|
};
|
902
909
|
|
903
910
|
/**
|
@@ -975,14 +982,71 @@ class V8_EXPORT HeapProfiler {
|
|
975
982
|
virtual ~ObjectNameResolver() = default;
|
976
983
|
};
|
977
984
|
|
985
|
+
enum class HeapSnapshotMode {
|
986
|
+
/**
|
987
|
+
* Heap snapshot for regular developers.
|
988
|
+
*/
|
989
|
+
kRegular,
|
990
|
+
/**
|
991
|
+
* Heap snapshot is exposing internals that may be useful for experts.
|
992
|
+
*/
|
993
|
+
kExposeInternals,
|
994
|
+
};
|
995
|
+
|
996
|
+
enum class NumericsMode {
|
997
|
+
/**
|
998
|
+
* Numeric values are hidden as they are values of the corresponding
|
999
|
+
* objects.
|
1000
|
+
*/
|
1001
|
+
kHideNumericValues,
|
1002
|
+
/**
|
1003
|
+
* Numeric values are exposed in artificial fields.
|
1004
|
+
*/
|
1005
|
+
kExposeNumericValues
|
1006
|
+
};
|
1007
|
+
|
1008
|
+
struct HeapSnapshotOptions final {
|
1009
|
+
// Manually define default constructor here to be able to use it in
|
1010
|
+
// `TakeSnapshot()` below.
|
1011
|
+
// NOLINTNEXTLINE
|
1012
|
+
HeapSnapshotOptions() {}
|
1013
|
+
|
1014
|
+
/**
|
1015
|
+
* The control used to report intermediate progress to.
|
1016
|
+
*/
|
1017
|
+
ActivityControl* control = nullptr;
|
1018
|
+
/**
|
1019
|
+
* The resolver used by the snapshot generator to get names for V8 objects.
|
1020
|
+
*/
|
1021
|
+
ObjectNameResolver* global_object_name_resolver = nullptr;
|
1022
|
+
/**
|
1023
|
+
* Mode for taking the snapshot, see `HeapSnapshotMode`.
|
1024
|
+
*/
|
1025
|
+
HeapSnapshotMode snapshot_mode = HeapSnapshotMode::kRegular;
|
1026
|
+
/**
|
1027
|
+
* Mode for dealing with numeric values, see `NumericsMode`.
|
1028
|
+
*/
|
1029
|
+
NumericsMode numerics_mode = NumericsMode::kHideNumericValues;
|
1030
|
+
};
|
1031
|
+
|
978
1032
|
/**
|
979
|
-
* Takes a heap snapshot
|
1033
|
+
* Takes a heap snapshot.
|
1034
|
+
*
|
1035
|
+
* \returns the snapshot.
|
1036
|
+
*/
|
1037
|
+
const HeapSnapshot* TakeHeapSnapshot(
|
1038
|
+
const HeapSnapshotOptions& options = HeapSnapshotOptions());
|
1039
|
+
|
1040
|
+
/**
|
1041
|
+
* Takes a heap snapshot. See `HeapSnapshotOptions` for details on the
|
1042
|
+
* parameters.
|
1043
|
+
*
|
1044
|
+
* \returns the snapshot.
|
980
1045
|
*/
|
981
1046
|
const HeapSnapshot* TakeHeapSnapshot(
|
982
|
-
ActivityControl* control
|
1047
|
+
ActivityControl* control,
|
983
1048
|
ObjectNameResolver* global_object_name_resolver = nullptr,
|
984
|
-
bool
|
985
|
-
bool capture_numeric_value = false);
|
1049
|
+
bool hide_internals = true, bool capture_numeric_value = false);
|
986
1050
|
|
987
1051
|
/**
|
988
1052
|
* Starts tracking of heap objects population statistics. After calling
|
@@ -1035,10 +1099,8 @@ class V8_EXPORT HeapProfiler {
|
|
1035
1099
|
* |stack_depth| parameter controls the maximum number of stack frames to be
|
1036
1100
|
* captured on each allocation.
|
1037
1101
|
*
|
1038
|
-
* NOTE:
|
1039
|
-
*
|
1040
|
-
* objects, large objects, code objects, etc.) and native allocations
|
1041
|
-
* doesn't exist yet, but is anticipated in the future.
|
1102
|
+
* NOTE: Support for native allocations doesn't exist yet, but is anticipated
|
1103
|
+
* in the future.
|
1042
1104
|
*
|
1043
1105
|
* Objects allocated before the sampling is started will not be included in
|
1044
1106
|
* the profile.
|
@@ -1101,18 +1163,18 @@ struct HeapStatsUpdate {
|
|
1101
1163
|
uint32_t size; // New value of size field for the interval with this index.
|
1102
1164
|
};
|
1103
1165
|
|
1104
|
-
#define CODE_EVENTS_LIST(V)
|
1105
|
-
V(Builtin)
|
1106
|
-
V(Callback)
|
1107
|
-
V(Eval)
|
1108
|
-
V(Function)
|
1109
|
-
V(InterpretedFunction)
|
1110
|
-
V(Handler)
|
1111
|
-
V(BytecodeHandler)
|
1112
|
-
V(LazyCompile)
|
1113
|
-
V(RegExp)
|
1114
|
-
V(Script)
|
1115
|
-
V(Stub)
|
1166
|
+
#define CODE_EVENTS_LIST(V) \
|
1167
|
+
V(Builtin) \
|
1168
|
+
V(Callback) \
|
1169
|
+
V(Eval) \
|
1170
|
+
V(Function) \
|
1171
|
+
V(InterpretedFunction) \
|
1172
|
+
V(Handler) \
|
1173
|
+
V(BytecodeHandler) \
|
1174
|
+
V(LazyCompile) /* Unused, use kFunction instead */ \
|
1175
|
+
V(RegExp) \
|
1176
|
+
V(Script) \
|
1177
|
+
V(Stub) \
|
1116
1178
|
V(Relocation)
|
1117
1179
|
|
1118
1180
|
/**
|
@@ -37,9 +37,10 @@ class V8_EXPORT RegExp : public Object {
|
|
37
37
|
kDotAll = 1 << 5,
|
38
38
|
kLinear = 1 << 6,
|
39
39
|
kHasIndices = 1 << 7,
|
40
|
+
kUnicodeSets = 1 << 8,
|
40
41
|
};
|
41
42
|
|
42
|
-
static constexpr int kFlagCount =
|
43
|
+
static constexpr int kFlagCount = 9;
|
43
44
|
|
44
45
|
/**
|
45
46
|
* Creates a regular expression from the given pattern string and
|
@@ -20,6 +20,7 @@
|
|
20
20
|
namespace v8 {
|
21
21
|
|
22
22
|
class Function;
|
23
|
+
class Message;
|
23
24
|
class Object;
|
24
25
|
class PrimitiveArray;
|
25
26
|
class Script;
|
@@ -47,8 +48,6 @@ class V8_EXPORT ScriptOrModule {
|
|
47
48
|
* The options that were passed by the embedder as HostDefinedOptions to
|
48
49
|
* the ScriptOrigin.
|
49
50
|
*/
|
50
|
-
V8_DEPRECATED("Use HostDefinedOptions")
|
51
|
-
Local<PrimitiveArray> GetHostDefinedOptions();
|
52
51
|
Local<Data> HostDefinedOptions();
|
53
52
|
};
|
54
53
|
|
@@ -78,7 +77,13 @@ class V8_EXPORT UnboundScript {
|
|
78
77
|
* Returns zero based line number of the code_pos location in the script.
|
79
78
|
* -1 will be returned if no information available.
|
80
79
|
*/
|
81
|
-
int GetLineNumber(int code_pos);
|
80
|
+
int GetLineNumber(int code_pos = 0);
|
81
|
+
|
82
|
+
/**
|
83
|
+
* Returns zero based column number of the code_pos location in the script.
|
84
|
+
* -1 will be returned if no information available.
|
85
|
+
*/
|
86
|
+
int GetColumnNumber(int code_pos = 0);
|
82
87
|
|
83
88
|
static const int kNoScriptId = 0;
|
84
89
|
};
|
@@ -87,7 +92,15 @@ class V8_EXPORT UnboundScript {
|
|
87
92
|
* A compiled JavaScript module, not yet tied to a Context.
|
88
93
|
*/
|
89
94
|
class V8_EXPORT UnboundModuleScript : public Data {
|
90
|
-
|
95
|
+
public:
|
96
|
+
/**
|
97
|
+
* Data read from magic sourceURL comments.
|
98
|
+
*/
|
99
|
+
Local<Value> GetSourceURL();
|
100
|
+
/**
|
101
|
+
* Data read from magic sourceMappingURL comments.
|
102
|
+
*/
|
103
|
+
Local<Value> GetSourceMappingURL();
|
91
104
|
};
|
92
105
|
|
93
106
|
/**
|
@@ -286,6 +299,16 @@ class V8_EXPORT Module : public Data {
|
|
286
299
|
V8_WARN_UNUSED_RESULT Maybe<bool> SetSyntheticModuleExport(
|
287
300
|
Isolate* isolate, Local<String> export_name, Local<Value> export_value);
|
288
301
|
|
302
|
+
/**
|
303
|
+
* Search the modules requested directly or indirectly by the module for
|
304
|
+
* any top-level await that has not yet resolved. If there is any, the
|
305
|
+
* returned vector contains a tuple of the unresolved module and a message
|
306
|
+
* with the pending top-level await.
|
307
|
+
* An embedder may call this before exiting to improve error messages.
|
308
|
+
*/
|
309
|
+
std::vector<std::tuple<Local<Module>, Local<Message>>>
|
310
|
+
GetStalledTopLevelAwaitMessage(Isolate* isolate);
|
311
|
+
|
289
312
|
V8_INLINE static Module* Cast(Data* data);
|
290
313
|
|
291
314
|
private:
|
@@ -489,7 +512,7 @@ class V8_EXPORT ScriptCompiler {
|
|
489
512
|
/**
|
490
513
|
* A task which the embedder must run on a background thread to
|
491
514
|
* consume a V8 code cache. Returned by
|
492
|
-
* ScriptCompiler::
|
515
|
+
* ScriptCompiler::StartConsumingCodeCache.
|
493
516
|
*/
|
494
517
|
class V8_EXPORT ConsumeCodeCacheTask final {
|
495
518
|
public:
|
@@ -497,6 +520,36 @@ class V8_EXPORT ScriptCompiler {
|
|
497
520
|
|
498
521
|
void Run();
|
499
522
|
|
523
|
+
/**
|
524
|
+
* Provides the source text string and origin information to the consumption
|
525
|
+
* task. May be called before, during, or after Run(). This step checks
|
526
|
+
* whether the script matches an existing script in the Isolate's
|
527
|
+
* compilation cache. To check whether such a script was found, call
|
528
|
+
* ShouldMergeWithExistingScript.
|
529
|
+
*
|
530
|
+
* The Isolate provided must be the same one used during
|
531
|
+
* StartConsumingCodeCache and must be currently entered on the thread that
|
532
|
+
* calls this function. The source text and origin provided in this step
|
533
|
+
* must precisely match those used later in the ScriptCompiler::Source that
|
534
|
+
* will contain this ConsumeCodeCacheTask.
|
535
|
+
*/
|
536
|
+
void SourceTextAvailable(Isolate* isolate, Local<String> source_text,
|
537
|
+
const ScriptOrigin& origin);
|
538
|
+
|
539
|
+
/**
|
540
|
+
* Returns whether the embedder should call MergeWithExistingScript. This
|
541
|
+
* function may be called from any thread, any number of times, but its
|
542
|
+
* return value is only meaningful after SourceTextAvailable has completed.
|
543
|
+
*/
|
544
|
+
bool ShouldMergeWithExistingScript() const;
|
545
|
+
|
546
|
+
/**
|
547
|
+
* Merges newly deserialized data into an existing script which was found
|
548
|
+
* during SourceTextAvailable. May be called only after Run() has completed.
|
549
|
+
* Can execute on any thread, like Run().
|
550
|
+
*/
|
551
|
+
void MergeWithExistingScript();
|
552
|
+
|
500
553
|
private:
|
501
554
|
friend class ScriptCompiler;
|
502
555
|
|
@@ -581,7 +634,8 @@ class V8_EXPORT ScriptCompiler {
|
|
581
634
|
*/
|
582
635
|
static ScriptStreamingTask* StartStreaming(
|
583
636
|
Isolate* isolate, StreamedSource* source,
|
584
|
-
ScriptType type = ScriptType::kClassic
|
637
|
+
ScriptType type = ScriptType::kClassic,
|
638
|
+
CompileOptions options = kNoCompileOptions);
|
585
639
|
|
586
640
|
static ConsumeCodeCacheTask* StartConsumingCodeCache(
|
587
641
|
Isolate* isolate, std::unique_ptr<CachedData> source);
|
@@ -650,6 +704,7 @@ class V8_EXPORT ScriptCompiler {
|
|
650
704
|
* It is possible to specify multiple context extensions (obj in the above
|
651
705
|
* example).
|
652
706
|
*/
|
707
|
+
V8_DEPRECATED("Use CompileFunction")
|
653
708
|
static V8_WARN_UNUSED_RESULT MaybeLocal<Function> CompileFunctionInContext(
|
654
709
|
Local<Context> context, Source* source, size_t arguments_count,
|
655
710
|
Local<String> arguments[], size_t context_extension_count,
|
@@ -657,6 +712,7 @@ class V8_EXPORT ScriptCompiler {
|
|
657
712
|
CompileOptions options = kNoCompileOptions,
|
658
713
|
NoCacheReason no_cache_reason = kNoCacheNoReason,
|
659
714
|
Local<ScriptOrModule>* script_or_module_out = nullptr);
|
715
|
+
|
660
716
|
static V8_WARN_UNUSED_RESULT MaybeLocal<Function> CompileFunction(
|
661
717
|
Local<Context> context, Source* source, size_t arguments_count = 0,
|
662
718
|
Local<String> arguments[] = nullptr, size_t context_extension_count = 0,
|
@@ -14,7 +14,6 @@
|
|
14
14
|
|
15
15
|
namespace v8 {
|
16
16
|
|
17
|
-
class AccessorSignature;
|
18
17
|
class CFunction;
|
19
18
|
class FunctionTemplate;
|
20
19
|
class ObjectTemplate;
|
@@ -83,28 +82,7 @@ class V8_EXPORT Template : public Data {
|
|
83
82
|
* cross-context access.
|
84
83
|
* \param attribute The attributes of the property for which an accessor
|
85
84
|
* is added.
|
86
|
-
* \param signature The signature describes valid receivers for the accessor
|
87
|
-
* and is used to perform implicit instance checks against them. If the
|
88
|
-
* receiver is incompatible (i.e. is not an instance of the constructor as
|
89
|
-
* defined by FunctionTemplate::HasInstance()), an implicit TypeError is
|
90
|
-
* thrown and no callback is invoked.
|
91
85
|
*/
|
92
|
-
V8_DEPRECATED("Do signature check in accessor")
|
93
|
-
void SetNativeDataProperty(
|
94
|
-
Local<String> name, AccessorGetterCallback getter,
|
95
|
-
AccessorSetterCallback setter, Local<Value> data,
|
96
|
-
PropertyAttribute attribute, Local<AccessorSignature> signature,
|
97
|
-
AccessControl settings = DEFAULT,
|
98
|
-
SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect,
|
99
|
-
SideEffectType setter_side_effect_type = SideEffectType::kHasSideEffect);
|
100
|
-
V8_DEPRECATED("Do signature check in accessor")
|
101
|
-
void SetNativeDataProperty(
|
102
|
-
Local<Name> name, AccessorNameGetterCallback getter,
|
103
|
-
AccessorNameSetterCallback setter, Local<Value> data,
|
104
|
-
PropertyAttribute attribute, Local<AccessorSignature> signature,
|
105
|
-
AccessControl settings = DEFAULT,
|
106
|
-
SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect,
|
107
|
-
SideEffectType setter_side_effect_type = SideEffectType::kHasSideEffect);
|
108
86
|
void SetNativeDataProperty(
|
109
87
|
Local<String> name, AccessorGetterCallback getter,
|
110
88
|
AccessorSetterCallback setter = nullptr,
|
@@ -151,7 +129,8 @@ class V8_EXPORT Template : public Data {
|
|
151
129
|
* Interceptor for get requests on an object.
|
152
130
|
*
|
153
131
|
* Use `info.GetReturnValue().Set()` to set the return value of the
|
154
|
-
* intercepted get request.
|
132
|
+
* intercepted get request. If the property does not exist the callback should
|
133
|
+
* not set the result and must not produce side effects.
|
155
134
|
*
|
156
135
|
* \param property The name of the property for which the request was
|
157
136
|
* intercepted.
|
@@ -192,9 +171,9 @@ using GenericNamedPropertyGetterCallback =
|
|
192
171
|
* Use `info.GetReturnValue()` to indicate whether the request was intercepted
|
193
172
|
* or not. If the setter successfully intercepts the request, i.e., if the
|
194
173
|
* request should not be further executed, call
|
195
|
-
* `info.GetReturnValue().Set(value)`. If the setter
|
196
|
-
*
|
197
|
-
*
|
174
|
+
* `info.GetReturnValue().Set(value)`. If the setter did not intercept the
|
175
|
+
* request, i.e., if the request should be handled as if no interceptor is
|
176
|
+
* present, do not not call `Set()` and do not produce side effects.
|
198
177
|
*
|
199
178
|
* \param property The name of the property for which the request was
|
200
179
|
* intercepted.
|
@@ -217,7 +196,9 @@ using GenericNamedPropertySetterCallback =
|
|
217
196
|
* defineProperty().
|
218
197
|
*
|
219
198
|
* Use `info.GetReturnValue().Set(value)` to set the property attributes. The
|
220
|
-
* value is an integer encoding a `v8::PropertyAttribute`.
|
199
|
+
* value is an integer encoding a `v8::PropertyAttribute`. If the property does
|
200
|
+
* not exist the callback should not set the result and must not produce side
|
201
|
+
* effects.
|
221
202
|
*
|
222
203
|
* \param property The name of the property for which the request was
|
223
204
|
* intercepted.
|
@@ -242,7 +223,8 @@ using GenericNamedPropertyQueryCallback =
|
|
242
223
|
* or not. If the deleter successfully intercepts the request, i.e., if the
|
243
224
|
* request should not be further executed, call
|
244
225
|
* `info.GetReturnValue().Set(value)` with a boolean `value`. The `value` is
|
245
|
-
* used as the return value of `delete`.
|
226
|
+
* used as the return value of `delete`. If the deleter does not intercept the
|
227
|
+
* request then it should not set the result and must not produce side effects.
|
246
228
|
*
|
247
229
|
* \param property The name of the property for which the request was
|
248
230
|
* intercepted.
|
@@ -274,9 +256,9 @@ using GenericNamedPropertyEnumeratorCallback =
|
|
274
256
|
* Use `info.GetReturnValue()` to indicate whether the request was intercepted
|
275
257
|
* or not. If the definer successfully intercepts the request, i.e., if the
|
276
258
|
* request should not be further executed, call
|
277
|
-
* `info.GetReturnValue().Set(value)`. If the definer
|
278
|
-
*
|
279
|
-
*
|
259
|
+
* `info.GetReturnValue().Set(value)`. If the definer did not intercept the
|
260
|
+
* request, i.e., if the request should be handled as if no interceptor is
|
261
|
+
* present, do not not call `Set()` and do not produce side effects.
|
280
262
|
*
|
281
263
|
* \param property The name of the property for which the request was
|
282
264
|
* intercepted.
|
@@ -821,27 +803,7 @@ class V8_EXPORT ObjectTemplate : public Template {
|
|
821
803
|
* cross-context access.
|
822
804
|
* \param attribute The attributes of the property for which an accessor
|
823
805
|
* is added.
|
824
|
-
* \param signature The signature describes valid receivers for the accessor
|
825
|
-
* and is used to perform implicit instance checks against them. If the
|
826
|
-
* receiver is incompatible (i.e. is not an instance of the constructor as
|
827
|
-
* defined by FunctionTemplate::HasInstance()), an implicit TypeError is
|
828
|
-
* thrown and no callback is invoked.
|
829
806
|
*/
|
830
|
-
V8_DEPRECATED("Do signature check in accessor")
|
831
|
-
void SetAccessor(
|
832
|
-
Local<String> name, AccessorGetterCallback getter,
|
833
|
-
AccessorSetterCallback setter, Local<Value> data, AccessControl settings,
|
834
|
-
PropertyAttribute attribute, Local<AccessorSignature> signature,
|
835
|
-
SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect,
|
836
|
-
SideEffectType setter_side_effect_type = SideEffectType::kHasSideEffect);
|
837
|
-
V8_DEPRECATED("Do signature check in accessor")
|
838
|
-
void SetAccessor(
|
839
|
-
Local<Name> name, AccessorNameGetterCallback getter,
|
840
|
-
AccessorNameSetterCallback setter, Local<Value> data,
|
841
|
-
AccessControl settings, PropertyAttribute attribute,
|
842
|
-
Local<AccessorSignature> signature,
|
843
|
-
SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect,
|
844
|
-
SideEffectType setter_side_effect_type = SideEffectType::kHasSideEffect);
|
845
807
|
void SetAccessor(
|
846
808
|
Local<String> name, AccessorGetterCallback getter,
|
847
809
|
AccessorSetterCallback setter = nullptr,
|
@@ -1019,24 +981,6 @@ class V8_EXPORT Signature : public Data {
|
|
1019
981
|
static void CheckCast(Data* that);
|
1020
982
|
};
|
1021
983
|
|
1022
|
-
/**
|
1023
|
-
* An AccessorSignature specifies which receivers are valid parameters
|
1024
|
-
* to an accessor callback.
|
1025
|
-
*/
|
1026
|
-
class V8_EXPORT AccessorSignature : public Data {
|
1027
|
-
public:
|
1028
|
-
static Local<AccessorSignature> New(
|
1029
|
-
Isolate* isolate,
|
1030
|
-
Local<FunctionTemplate> receiver = Local<FunctionTemplate>());
|
1031
|
-
|
1032
|
-
V8_INLINE static AccessorSignature* Cast(Data* data);
|
1033
|
-
|
1034
|
-
private:
|
1035
|
-
AccessorSignature();
|
1036
|
-
|
1037
|
-
static void CheckCast(Data* that);
|
1038
|
-
};
|
1039
|
-
|
1040
984
|
// --- Implementation ---
|
1041
985
|
|
1042
986
|
void Template::Set(Isolate* isolate, const char* name, Local<Data> value,
|
@@ -1067,13 +1011,6 @@ Signature* Signature::Cast(Data* data) {
|
|
1067
1011
|
return reinterpret_cast<Signature*>(data);
|
1068
1012
|
}
|
1069
1013
|
|
1070
|
-
AccessorSignature* AccessorSignature::Cast(Data* data) {
|
1071
|
-
#ifdef V8_ENABLE_CHECKS
|
1072
|
-
CheckCast(data);
|
1073
|
-
#endif
|
1074
|
-
return reinterpret_cast<AccessorSignature*>(data);
|
1075
|
-
}
|
1076
|
-
|
1077
1014
|
} // namespace v8
|
1078
1015
|
|
1079
1016
|
#endif // INCLUDE_V8_TEMPLATE_H_
|
@@ -17,10 +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
|
-
|
22
|
-
|
23
|
-
|
20
|
+
#elif V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_ARM64 || \
|
21
|
+
V8_TARGET_ARCH_MIPS64 || V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64 || \
|
22
|
+
V8_TARGET_ARCH_RISCV64 || V8_TARGET_ARCH_S390 || V8_TARGET_ARCH_LOONG64 || \
|
23
|
+
V8_TARGET_ARCH_RISCV32
|
24
24
|
struct CalleeSavedRegisters {};
|
25
25
|
#else
|
26
26
|
#error Target architecture was not detected as supported by v8
|
data/vendor/v8/include/v8-util.h
CHANGED
@@ -537,7 +537,6 @@ class StdGlobalValueMap : public GlobalValueMap<K, V, Traits> {
|
|
537
537
|
: GlobalValueMap<K, V, Traits>(isolate) {}
|
538
538
|
};
|
539
539
|
|
540
|
-
|
541
540
|
class DefaultPersistentValueVectorTraits {
|
542
541
|
public:
|
543
542
|
typedef std::vector<PersistentContainerValue> Impl;
|
@@ -562,7 +561,6 @@ class DefaultPersistentValueVectorTraits {
|
|
562
561
|
}
|
563
562
|
};
|
564
563
|
|
565
|
-
|
566
564
|
/**
|
567
565
|
* A vector wrapper that safely stores Global values.
|
568
566
|
* C++11 embedders don't need this class, as they can use Global
|
@@ -573,8 +571,8 @@ class DefaultPersistentValueVectorTraits {
|
|
573
571
|
* PersistentContainerValue, with all conversion into and out of V8
|
574
572
|
* handles being transparently handled by this class.
|
575
573
|
*/
|
576
|
-
template<typename V, typename Traits = DefaultPersistentValueVectorTraits>
|
577
|
-
class PersistentValueVector {
|
574
|
+
template <typename V, typename Traits = DefaultPersistentValueVectorTraits>
|
575
|
+
class V8_DEPRECATE_SOON("Use std::vector<Global<V>>.") PersistentValueVector {
|
578
576
|
public:
|
579
577
|
explicit PersistentValueVector(Isolate* isolate) : isolate_(isolate) { }
|
580
578
|
|
@@ -8,6 +8,7 @@
|
|
8
8
|
#include <stddef.h>
|
9
9
|
#include <stdint.h>
|
10
10
|
|
11
|
+
#include <memory>
|
11
12
|
#include <utility>
|
12
13
|
|
13
14
|
#include "v8-local-handle.h" // NOLINT(build/include_directory)
|
@@ -26,8 +27,37 @@ class Value;
|
|
26
27
|
|
27
28
|
namespace internal {
|
28
29
|
struct ScriptStreamingData;
|
30
|
+
class SharedObjectConveyorHandles;
|
31
|
+
class ValueDeserializer;
|
32
|
+
class ValueSerializer;
|
29
33
|
} // namespace internal
|
30
34
|
|
35
|
+
/**
|
36
|
+
* A move-only class for managing the lifetime of shared value conveyors used
|
37
|
+
* by V8 to keep JS shared values alive in transit when serialized.
|
38
|
+
*
|
39
|
+
* This class is not directly constructible and is always passed to a
|
40
|
+
* ValueSerializer::Delegate via ValueSerializer::SetSharedValueConveyor.
|
41
|
+
*
|
42
|
+
* The embedder must not destruct the SharedValueConveyor until the associated
|
43
|
+
* serialized data will no longer be deserialized.
|
44
|
+
*/
|
45
|
+
class V8_EXPORT SharedValueConveyor final {
|
46
|
+
public:
|
47
|
+
SharedValueConveyor(SharedValueConveyor&&) noexcept;
|
48
|
+
~SharedValueConveyor();
|
49
|
+
|
50
|
+
SharedValueConveyor& operator=(SharedValueConveyor&&) noexcept;
|
51
|
+
|
52
|
+
private:
|
53
|
+
friend class internal::ValueSerializer;
|
54
|
+
friend class internal::ValueDeserializer;
|
55
|
+
|
56
|
+
explicit SharedValueConveyor(Isolate* isolate);
|
57
|
+
|
58
|
+
std::unique_ptr<internal::SharedObjectConveyorHandles> private_;
|
59
|
+
};
|
60
|
+
|
31
61
|
/**
|
32
62
|
* Value serialization compatible with the HTML structured clone algorithm.
|
33
63
|
* The format is backward-compatible (i.e. safe to store to disk).
|
@@ -69,20 +99,20 @@ class V8_EXPORT ValueSerializer {
|
|
69
99
|
Isolate* isolate, Local<WasmModuleObject> module);
|
70
100
|
|
71
101
|
/**
|
72
|
-
*
|
73
|
-
*
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
*
|
79
|
-
*
|
80
|
-
*
|
81
|
-
*
|
82
|
-
*
|
102
|
+
* Called when the first shared value is serialized. All subsequent shared
|
103
|
+
* values will use the same conveyor.
|
104
|
+
*
|
105
|
+
* The embedder must ensure the lifetime of the conveyor matches the
|
106
|
+
* lifetime of the serialized data.
|
107
|
+
*
|
108
|
+
* If the embedder supports serializing shared values, this method should
|
109
|
+
* return true. Otherwise the embedder should throw an exception and return
|
110
|
+
* false.
|
111
|
+
*
|
112
|
+
* This method is called at most once per serializer.
|
83
113
|
*/
|
84
|
-
virtual
|
85
|
-
|
114
|
+
virtual bool AdoptSharedValueConveyor(Isolate* isolate,
|
115
|
+
SharedValueConveyor&& conveyor);
|
86
116
|
|
87
117
|
/**
|
88
118
|
* Allocates memory for the buffer of at least the size provided. The actual
|
@@ -196,17 +226,10 @@ class V8_EXPORT ValueDeserializer {
|
|
196
226
|
Isolate* isolate, uint32_t clone_id);
|
197
227
|
|
198
228
|
/**
|
199
|
-
*
|
200
|
-
*
|
201
|
-
*/
|
202
|
-
virtual bool SupportsSharedValues() const;
|
203
|
-
|
204
|
-
/**
|
205
|
-
* Get a value shared across Isolates given a shared_value_id provided by
|
206
|
-
* ValueSerializer::Delegate::GetSharedValueId.
|
229
|
+
* Get the SharedValueConveyor previously provided by
|
230
|
+
* ValueSerializer::Delegate::AdoptSharedValueConveyor.
|
207
231
|
*/
|
208
|
-
virtual
|
209
|
-
uint32_t shared_value_id);
|
232
|
+
virtual const SharedValueConveyor* GetSharedValueConveyor(Isolate* isolate);
|
210
233
|
};
|
211
234
|
|
212
235
|
ValueDeserializer(Isolate* isolate, const uint8_t* data, size_t size);
|
@@ -9,9 +9,9 @@
|
|
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
11
|
#define V8_MAJOR_VERSION 10
|
12
|
-
#define V8_MINOR_VERSION
|
13
|
-
#define V8_BUILD_NUMBER
|
14
|
-
#define V8_PATCH_LEVEL
|
12
|
+
#define V8_MINOR_VERSION 8
|
13
|
+
#define V8_BUILD_NUMBER 168
|
14
|
+
#define V8_PATCH_LEVEL 25
|
15
15
|
|
16
16
|
// Use 1 for candidates and 0 otherwise.
|
17
17
|
// (Boolean macro values are not supported by all preprocessors.)
|