libv8-node 20.12.1.0-arm64-darwin → 22.5.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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/lib/libv8/node/version.rb +3 -3
  3. data/vendor/v8/arm64-darwin/libv8/obj/libv8_monolith.a +0 -0
  4. data/vendor/v8/include/cppgc/internal/api-constants.h +24 -5
  5. data/vendor/v8/include/cppgc/internal/caged-heap-local-data.h +16 -6
  6. data/vendor/v8/include/cppgc/internal/caged-heap.h +12 -5
  7. data/vendor/v8/include/cppgc/internal/gc-info.h +82 -91
  8. data/vendor/v8/include/cppgc/internal/member-storage.h +16 -8
  9. data/vendor/v8/include/cppgc/member.h +25 -0
  10. data/vendor/v8/include/cppgc/persistent.h +4 -0
  11. data/vendor/v8/include/cppgc/platform.h +6 -1
  12. data/vendor/v8/include/cppgc/sentinel-pointer.h +7 -0
  13. data/vendor/v8/include/cppgc/source-location.h +2 -78
  14. data/vendor/v8/include/cppgc/trace-trait.h +8 -0
  15. data/vendor/v8/include/cppgc/type-traits.h +25 -4
  16. data/vendor/v8/include/cppgc/visitor.h +82 -4
  17. data/vendor/v8/include/libplatform/libplatform.h +7 -1
  18. data/vendor/v8/include/v8-array-buffer.h +6 -0
  19. data/vendor/v8/include/v8-callbacks.h +57 -19
  20. data/vendor/v8/include/v8-container.h +54 -0
  21. data/vendor/v8/include/v8-context.h +58 -32
  22. data/vendor/v8/include/v8-embedder-heap.h +31 -3
  23. data/vendor/v8/include/v8-embedder-state-scope.h +2 -1
  24. data/vendor/v8/include/v8-exception.h +15 -9
  25. data/vendor/v8/include/v8-fast-api-calls.h +58 -31
  26. data/vendor/v8/include/v8-forward.h +1 -0
  27. data/vendor/v8/include/v8-function-callback.h +135 -30
  28. data/vendor/v8/include/v8-function.h +6 -0
  29. data/vendor/v8/include/v8-handle-base.h +137 -0
  30. data/vendor/v8/include/v8-inspector.h +35 -13
  31. data/vendor/v8/include/v8-internal.h +510 -71
  32. data/vendor/v8/include/v8-isolate.h +176 -100
  33. data/vendor/v8/include/v8-local-handle.h +383 -112
  34. data/vendor/v8/include/v8-memory-span.h +157 -2
  35. data/vendor/v8/include/v8-message.h +22 -3
  36. data/vendor/v8/include/v8-metrics.h +1 -0
  37. data/vendor/v8/include/v8-object.h +98 -77
  38. data/vendor/v8/include/v8-persistent-handle.h +68 -90
  39. data/vendor/v8/include/v8-platform.h +191 -23
  40. data/vendor/v8/include/v8-primitive.h +12 -8
  41. data/vendor/v8/include/v8-profiler.h +16 -2
  42. data/vendor/v8/include/v8-script.h +88 -14
  43. data/vendor/v8/include/v8-snapshot.h +96 -22
  44. data/vendor/v8/include/v8-source-location.h +92 -0
  45. data/vendor/v8/include/v8-statistics.h +31 -10
  46. data/vendor/v8/include/v8-template.h +410 -131
  47. data/vendor/v8/include/v8-traced-handle.h +108 -90
  48. data/vendor/v8/include/v8-typed-array.h +115 -7
  49. data/vendor/v8/include/v8-unwinder.h +1 -1
  50. data/vendor/v8/include/v8-util.h +23 -20
  51. data/vendor/v8/include/v8-value-serializer.h +14 -0
  52. data/vendor/v8/include/v8-value.h +105 -3
  53. data/vendor/v8/include/v8-version.h +4 -4
  54. data/vendor/v8/include/v8config.h +54 -20
  55. metadata +5 -3
@@ -294,6 +294,12 @@ class V8_EXPORT Isolate {
294
294
  */
295
295
  FatalErrorCallback fatal_error_callback = nullptr;
296
296
  OOMErrorCallback oom_error_callback = nullptr;
297
+
298
+ /**
299
+ * A CppHeap used to construct the Isolate. V8 takes ownership of the
300
+ * CppHeap passed this way.
301
+ */
302
+ CppHeap* cpp_heap = nullptr;
297
303
  };
298
304
 
299
305
  /**
@@ -389,16 +395,13 @@ class V8_EXPORT Isolate {
389
395
  */
390
396
  class V8_EXPORT V8_NODISCARD SafeForTerminationScope {
391
397
  public:
392
- explicit SafeForTerminationScope(v8::Isolate* v8_isolate);
393
- ~SafeForTerminationScope();
398
+ V8_DEPRECATE_SOON("All code should be safe for termination")
399
+ explicit SafeForTerminationScope(v8::Isolate* v8_isolate) {}
400
+ ~SafeForTerminationScope() {}
394
401
 
395
402
  // Prevent copying of Scope objects.
396
403
  SafeForTerminationScope(const SafeForTerminationScope&) = delete;
397
404
  SafeForTerminationScope& operator=(const SafeForTerminationScope&) = delete;
398
-
399
- private:
400
- internal::Isolate* i_isolate_;
401
- bool prev_value_;
402
405
  };
403
406
 
404
407
  /**
@@ -414,40 +417,43 @@ class V8_EXPORT Isolate {
414
417
  * Features reported via the SetUseCounterCallback callback. Do not change
415
418
  * assigned numbers of existing items; add new features to the end of this
416
419
  * list.
420
+ * Dead features can be marked `V8_DEPRECATE_SOON`, then `V8_DEPRECATED`, and
421
+ * then finally be renamed to `kOBSOLETE_...` to stop embedders from using
422
+ * them.
417
423
  */
418
424
  enum UseCounterFeature {
419
425
  kUseAsm = 0,
420
426
  kBreakIterator = 1,
421
- kLegacyConst = 2,
422
- kMarkDequeOverflow = 3,
423
- kStoreBufferOverflow = 4,
424
- kSlotsBufferOverflow = 5,
425
- kObjectObserve = 6,
427
+ kOBSOLETE_LegacyConst = 2,
428
+ kOBSOLETE_MarkDequeOverflow = 3,
429
+ kOBSOLETE_StoreBufferOverflow = 4,
430
+ kOBSOLETE_SlotsBufferOverflow = 5,
431
+ kOBSOLETE_ObjectObserve = 6,
426
432
  kForcedGC = 7,
427
433
  kSloppyMode = 8,
428
434
  kStrictMode = 9,
429
- kStrongMode = 10,
435
+ kOBSOLETE_StrongMode = 10,
430
436
  kRegExpPrototypeStickyGetter = 11,
431
437
  kRegExpPrototypeToString = 12,
432
438
  kRegExpPrototypeUnicodeGetter = 13,
433
- kIntlV8Parse = 14,
434
- kIntlPattern = 15,
435
- kIntlResolved = 16,
436
- kPromiseChain = 17,
437
- kPromiseAccept = 18,
438
- kPromiseDefer = 19,
439
+ kOBSOLETE_IntlV8Parse = 14,
440
+ kOBSOLETE_IntlPattern = 15,
441
+ kOBSOLETE_IntlResolved = 16,
442
+ kOBSOLETE_PromiseChain = 17,
443
+ kOBSOLETE_PromiseAccept = 18,
444
+ kOBSOLETE_PromiseDefer = 19,
439
445
  kHtmlCommentInExternalScript = 20,
440
446
  kHtmlComment = 21,
441
447
  kSloppyModeBlockScopedFunctionRedefinition = 22,
442
448
  kForInInitializer = 23,
443
- kArrayProtectorDirtied = 24,
449
+ kOBSOLETE_ArrayProtectorDirtied = 24,
444
450
  kArraySpeciesModified = 25,
445
451
  kArrayPrototypeConstructorModified = 26,
446
- kArrayInstanceProtoModified = 27,
452
+ kOBSOLETE_ArrayInstanceProtoModified = 27,
447
453
  kArrayInstanceConstructorModified = 28,
448
- kLegacyFunctionDeclaration = 29,
449
- kRegExpPrototypeSourceGetter = 30, // Unused.
450
- kRegExpPrototypeOldFlagGetter = 31, // Unused.
454
+ kOBSOLETE_LegacyFunctionDeclaration = 29,
455
+ kOBSOLETE_RegExpPrototypeSourceGetter = 30,
456
+ kOBSOLETE_RegExpPrototypeOldFlagGetter = 31,
451
457
  kDecimalWithLeadingZeroInStrictMode = 32,
452
458
  kLegacyDateParser = 33,
453
459
  kDefineGetterOrSetterWouldThrow = 34,
@@ -455,21 +461,21 @@ class V8_EXPORT Isolate {
455
461
  kAssigmentExpressionLHSIsCallInSloppy = 36,
456
462
  kAssigmentExpressionLHSIsCallInStrict = 37,
457
463
  kPromiseConstructorReturnedUndefined = 38,
458
- kConstructorNonUndefinedPrimitiveReturn = 39,
459
- kLabeledExpressionStatement = 40,
460
- kLineOrParagraphSeparatorAsLineTerminator = 41,
464
+ kOBSOLETE_ConstructorNonUndefinedPrimitiveReturn = 39,
465
+ kOBSOLETE_LabeledExpressionStatement = 40,
466
+ kOBSOLETE_LineOrParagraphSeparatorAsLineTerminator = 41,
461
467
  kIndexAccessor = 42,
462
468
  kErrorCaptureStackTrace = 43,
463
469
  kErrorPrepareStackTrace = 44,
464
470
  kErrorStackTraceLimit = 45,
465
471
  kWebAssemblyInstantiation = 46,
466
472
  kDeoptimizerDisableSpeculation = 47,
467
- kArrayPrototypeSortJSArrayModifiedPrototype = 48,
473
+ kOBSOLETE_ArrayPrototypeSortJSArrayModifiedPrototype = 48,
468
474
  kFunctionTokenOffsetTooLongForToString = 49,
469
475
  kWasmSharedMemory = 50,
470
476
  kWasmThreadOpcodes = 51,
471
- kAtomicsNotify = 52, // Unused.
472
- kAtomicsWake = 53, // Unused.
477
+ kOBSOLETE_AtomicsNotify = 52,
478
+ kOBSOLETE_AtomicsWake = 53,
473
479
  kCollator = 54,
474
480
  kNumberFormat = 55,
475
481
  kDateTimeFormat = 56,
@@ -479,7 +485,7 @@ class V8_EXPORT Isolate {
479
485
  kListFormat = 60,
480
486
  kSegmenter = 61,
481
487
  kStringLocaleCompare = 62,
482
- kStringToLocaleUpperCase = 63,
488
+ kOBSOLETE_StringToLocaleUpperCase = 63,
483
489
  kStringToLocaleLowerCase = 64,
484
490
  kNumberToLocaleString = 65,
485
491
  kDateToLocaleString = 66,
@@ -487,14 +493,14 @@ class V8_EXPORT Isolate {
487
493
  kDateToLocaleTimeString = 68,
488
494
  kAttemptOverrideReadOnlyOnPrototypeSloppy = 69,
489
495
  kAttemptOverrideReadOnlyOnPrototypeStrict = 70,
490
- kOptimizedFunctionWithOneShotBytecode = 71, // Unused.
496
+ kOBSOLETE_OptimizedFunctionWithOneShotBytecode = 71,
491
497
  kRegExpMatchIsTrueishOnNonJSRegExp = 72,
492
498
  kRegExpMatchIsFalseishOnJSRegExp = 73,
493
- kDateGetTimezoneOffset = 74, // Unused.
499
+ kOBSOLETE_DateGetTimezoneOffset = 74,
494
500
  kStringNormalize = 75,
495
501
  kCallSiteAPIGetFunctionSloppyCall = 76,
496
502
  kCallSiteAPIGetThisSloppyCall = 77,
497
- kRegExpMatchAllWithNonGlobalRegExp = 78,
503
+ kOBSOLETE_RegExpMatchAllWithNonGlobalRegExp = 78,
498
504
  kRegExpExecCalledOnSlowRegExp = 79,
499
505
  kRegExpReplaceCalledOnSlowRegExp = 80,
500
506
  kDisplayNames = 81,
@@ -525,8 +531,8 @@ class V8_EXPORT Isolate {
525
531
  kWasmSimdOpcodes = 106,
526
532
  kVarRedeclaredCatchBinding = 107,
527
533
  kWasmRefTypes = 108,
528
- kWasmBulkMemory = 109, // Unused.
529
- kWasmMultiValue = 110,
534
+ kOBSOLETE_WasmBulkMemory = 109,
535
+ kOBSOLETE_WasmMultiValue = 110,
530
536
  kWasmExceptionHandling = 111,
531
537
  kInvalidatedMegaDOMProtector = 112,
532
538
  kFunctionPrototypeArguments = 113,
@@ -534,8 +540,29 @@ class V8_EXPORT Isolate {
534
540
  kTurboFanOsrCompileStarted = 115,
535
541
  kAsyncStackTaggingCreateTaskCall = 116,
536
542
  kDurationFormat = 117,
537
- kInvalidatedNumberStringPrototypeNoReplaceProtector = 118,
538
- kRegExpUnicodeSetIncompatibilitiesWithUnicodeMode = 119, // Unused.
543
+ kInvalidatedNumberStringNotRegexpLikeProtector = 118,
544
+ kOBSOLETE_RegExpUnicodeSetIncompatibilitiesWithUnicodeMode = 119,
545
+ kImportAssertionDeprecatedSyntax = 120,
546
+ kLocaleInfoObsoletedGetters = 121,
547
+ kLocaleInfoFunctions = 122,
548
+ kCompileHintsMagicAll = 123,
549
+ kInvalidatedNoProfilingProtector = 124,
550
+ kWasmMemory64 = 125,
551
+ kWasmMultiMemory = 126,
552
+ kWasmGC = 127,
553
+ kWasmImportedStrings = 128,
554
+ kSourceMappingUrlMagicCommentAtSign = 129,
555
+ kTemporalObject = 130,
556
+ kWasmModuleCompilation = 131,
557
+ kInvalidatedNoUndetectableObjectsProtector = 132,
558
+ kWasmJavaScriptPromiseIntegration = 133,
559
+ kWasmReturnCall = 134,
560
+ kWasmExtendedConst = 135,
561
+ kWasmRelaxedSimd = 136,
562
+ kWasmTypeReflection = 137,
563
+ kWasmExnRef = 138,
564
+ kWasmTypedFuncRef = 139,
565
+ kInvalidatedStringWrapperToPrimitiveProtector = 140,
539
566
 
540
567
  // If you add new values here, you'll also need to update Chromium's:
541
568
  // web_feature.mojom, use_counter_callback.cc, and enums.xml. V8 changes to
@@ -563,7 +590,7 @@ class V8_EXPORT Isolate {
563
590
  * Only Isolate::GetData() and Isolate::SetData(), which access the
564
591
  * embedder-controlled parts of the isolate, are allowed to be called on the
565
592
  * uninitialized isolate. To initialize the isolate, call
566
- * Isolate::Initialize().
593
+ * `Isolate::Initialize()` or initialize a `SnapshotCreator`.
567
594
  *
568
595
  * When an isolate is no longer used its resources should be freed
569
596
  * by calling Dispose(). Using the delete operator is not allowed.
@@ -664,6 +691,13 @@ class V8_EXPORT Isolate {
664
691
  */
665
692
  void SetPrepareStackTraceCallback(PrepareStackTraceCallback callback);
666
693
 
694
+ #if defined(V8_OS_WIN)
695
+ /**
696
+ * This specifies the callback called when an ETW tracing session starts.
697
+ */
698
+ void SetFilterETWSessionByURLCallback(FilterETWSessionByURLCallback callback);
699
+ #endif // V8_OS_WIN
700
+
667
701
  /**
668
702
  * Optional notification that the system is running low on memory.
669
703
  * V8 uses these notifications to guide heuristics.
@@ -672,6 +706,14 @@ class V8_EXPORT Isolate {
672
706
  */
673
707
  void MemoryPressureNotification(MemoryPressureLevel level);
674
708
 
709
+ /**
710
+ * Optional request from the embedder to tune v8 towards energy efficiency
711
+ * rather than speed if `battery_saver_mode_enabled` is true, because the
712
+ * embedder is in battery saver mode. If false, the correct tuning is left
713
+ * to v8 to decide.
714
+ */
715
+ void SetBatterySaverMode(bool battery_saver_mode_enabled);
716
+
675
717
  /**
676
718
  * Drop non-essential caches. Should only be called from testing code.
677
719
  * The method can potentially block for a long time and does not necessarily
@@ -747,6 +789,18 @@ class V8_EXPORT Isolate {
747
789
  template <class T>
748
790
  V8_INLINE MaybeLocal<T> GetDataFromSnapshotOnce(size_t index);
749
791
 
792
+ /**
793
+ * Returns the value that was set or restored by
794
+ * SetContinuationPreservedEmbedderData(), if any.
795
+ */
796
+ Local<Value> GetContinuationPreservedEmbedderData();
797
+
798
+ /**
799
+ * Sets a value that will be stored on continuations and reset while the
800
+ * continuation runs.
801
+ */
802
+ void SetContinuationPreservedEmbedderData(Local<Value> data);
803
+
750
804
  /**
751
805
  * Get statistics about the heap memory usage.
752
806
  */
@@ -904,25 +958,73 @@ class V8_EXPORT Isolate {
904
958
 
905
959
  /**
906
960
  * Enables the host application to receive a notification before a
907
- * garbage collection. Allocations are allowed in the callback function,
908
- * but the callback is not re-entrant: if the allocation inside it will
909
- * trigger the garbage collection, the callback won't be called again.
910
- * It is possible to specify the GCType filter for your callback. But it is
911
- * not possible to register the same callback function two times with
912
- * different GCType filters.
961
+ * garbage collection.
962
+ *
963
+ * \param callback The callback to be invoked. The callback is allowed to
964
+ * allocate but invocation is not re-entrant: a callback triggering
965
+ * garbage collection will not be called again. JS execution is prohibited
966
+ * from these callbacks. A single callback may only be registered once.
967
+ * \param gc_type_filter A filter in case it should be applied.
913
968
  */
914
- void AddGCPrologueCallback(GCCallbackWithData callback, void* data = nullptr,
915
- GCType gc_type_filter = kGCTypeAll);
916
969
  void AddGCPrologueCallback(GCCallback callback,
917
970
  GCType gc_type_filter = kGCTypeAll);
918
971
 
919
972
  /**
920
- * This function removes callback which was installed by
921
- * AddGCPrologueCallback function.
973
+ * \copydoc AddGCPrologueCallback(GCCallback, GCType)
974
+ *
975
+ * \param data Additional data that should be passed to the callback.
976
+ */
977
+ void AddGCPrologueCallback(GCCallbackWithData callback, void* data = nullptr,
978
+ GCType gc_type_filter = kGCTypeAll);
979
+
980
+ /**
981
+ * This function removes a callback which was added by
982
+ * `AddGCPrologueCallback`.
983
+ *
984
+ * \param callback the callback to remove.
922
985
  */
923
- void RemoveGCPrologueCallback(GCCallbackWithData, void* data = nullptr);
924
986
  void RemoveGCPrologueCallback(GCCallback callback);
925
987
 
988
+ /**
989
+ * \copydoc AddGCPrologueCallback(GCCallback)
990
+ *
991
+ * \param data Additional data that was used to install the callback.
992
+ */
993
+ void RemoveGCPrologueCallback(GCCallbackWithData, void* data = nullptr);
994
+
995
+ /**
996
+ * Enables the host application to receive a notification after a
997
+ * garbage collection.
998
+ *
999
+ * \copydetails AddGCPrologueCallback(GCCallback, GCType)
1000
+ */
1001
+ void AddGCEpilogueCallback(GCCallback callback,
1002
+ GCType gc_type_filter = kGCTypeAll);
1003
+
1004
+ /**
1005
+ * \copydoc AddGCEpilogueCallback(GCCallback, GCType)
1006
+ *
1007
+ * \param data Additional data that should be passed to the callback.
1008
+ */
1009
+ void AddGCEpilogueCallback(GCCallbackWithData callback, void* data = nullptr,
1010
+ GCType gc_type_filter = kGCTypeAll);
1011
+
1012
+ /**
1013
+ * This function removes a callback which was added by
1014
+ * `AddGCEpilogueCallback`.
1015
+ *
1016
+ * \param callback the callback to remove.
1017
+ */
1018
+ void RemoveGCEpilogueCallback(GCCallback callback);
1019
+
1020
+ /**
1021
+ * \copydoc RemoveGCEpilogueCallback(GCCallback)
1022
+ *
1023
+ * \param data Additional data that was used to install the callback.
1024
+ */
1025
+ void RemoveGCEpilogueCallback(GCCallbackWithData callback,
1026
+ void* data = nullptr);
1027
+
926
1028
  /**
927
1029
  * Sets an embedder roots handle that V8 should consider when performing
928
1030
  * non-unified heap garbage collections. The intended use case is for setting
@@ -939,12 +1041,20 @@ class V8_EXPORT Isolate {
939
1041
  *
940
1042
  * Multi-threaded use requires the use of v8::Locker/v8::Unlocker, see
941
1043
  * CppHeap.
1044
+ *
1045
+ * If a CppHeap is set via CreateParams, then this call is a noop.
942
1046
  */
1047
+ V8_DEPRECATE_SOON(
1048
+ "Set the heap on Isolate creation using CreateParams instead.")
943
1049
  void AttachCppHeap(CppHeap*);
944
1050
 
945
1051
  /**
946
1052
  * Detaches a managed C++ heap if one was attached using `AttachCppHeap()`.
1053
+ *
1054
+ * If a CppHeap is set via CreateParams, then this call is a noop.
947
1055
  */
1056
+ V8_DEPRECATE_SOON(
1057
+ "Set the heap on Isolate creation using CreateParams instead.")
948
1058
  void DetachCppHeap();
949
1059
 
950
1060
  /**
@@ -1032,28 +1142,6 @@ class V8_EXPORT Isolate {
1032
1142
  */
1033
1143
  void SetAtomicsWaitCallback(AtomicsWaitCallback callback, void* data);
1034
1144
 
1035
- /**
1036
- * Enables the host application to receive a notification after a
1037
- * garbage collection. Allocations are allowed in the callback function,
1038
- * but the callback is not re-entrant: if the allocation inside it will
1039
- * trigger the garbage collection, the callback won't be called again.
1040
- * It is possible to specify the GCType filter for your callback. But it is
1041
- * not possible to register the same callback function two times with
1042
- * different GCType filters.
1043
- */
1044
- void AddGCEpilogueCallback(GCCallbackWithData callback, void* data = nullptr,
1045
- GCType gc_type_filter = kGCTypeAll);
1046
- void AddGCEpilogueCallback(GCCallback callback,
1047
- GCType gc_type_filter = kGCTypeAll);
1048
-
1049
- /**
1050
- * This function removes callback which was installed by
1051
- * AddGCEpilogueCallback function.
1052
- */
1053
- void RemoveGCEpilogueCallback(GCCallbackWithData callback,
1054
- void* data = nullptr);
1055
- void RemoveGCEpilogueCallback(GCCallback callback);
1056
-
1057
1145
  using GetExternallyAllocatedMemoryInBytesCallback = size_t (*)();
1058
1146
 
1059
1147
  /**
@@ -1321,20 +1409,6 @@ class V8_EXPORT Isolate {
1321
1409
  */
1322
1410
  void IsolateInBackgroundNotification();
1323
1411
 
1324
- /**
1325
- * Optional notification which will enable the memory savings mode.
1326
- * V8 uses this notification to guide heuristics which may result in a
1327
- * smaller memory footprint at the cost of reduced runtime performance.
1328
- */
1329
- V8_DEPRECATED("Use IsolateInBackgroundNotification() instead")
1330
- void EnableMemorySavingsMode();
1331
-
1332
- /**
1333
- * Optional notification which will disable the memory savings mode.
1334
- */
1335
- V8_DEPRECATED("Use IsolateInBackgroundNotification() instead")
1336
- void DisableMemorySavingsMode();
1337
-
1338
1412
  /**
1339
1413
  * Optional notification to tell V8 the current performance requirements
1340
1414
  * of the embedder based on RAIL.
@@ -1506,21 +1580,20 @@ class V8_EXPORT Isolate {
1506
1580
 
1507
1581
  void SetWasmLoadSourceMapCallback(WasmLoadSourceMapCallback callback);
1508
1582
 
1509
- V8_DEPRECATED("Wasm SIMD is always enabled")
1510
- void SetWasmSimdEnabledCallback(WasmSimdEnabledCallback callback);
1583
+ void SetWasmImportedStringsEnabledCallback(
1584
+ WasmImportedStringsEnabledCallback callback);
1511
1585
 
1512
- V8_DEPRECATED("Wasm exceptions are always enabled")
1513
- void SetWasmExceptionsEnabledCallback(WasmExceptionsEnabledCallback callback);
1586
+ void SetSharedArrayBufferConstructorEnabledCallback(
1587
+ SharedArrayBufferConstructorEnabledCallback callback);
1588
+
1589
+ void SetWasmJSPIEnabledCallback(WasmJSPIEnabledCallback callback);
1514
1590
 
1515
1591
  /**
1516
- * Register callback to control whehter Wasm GC is enabled.
1517
- * The callback overwrites the value of the flag.
1518
- * If the callback returns true, it will also enable Wasm stringrefs.
1592
+ * Register callback to control whether compile hints magic comments are
1593
+ * enabled.
1519
1594
  */
1520
- void SetWasmGCEnabledCallback(WasmGCEnabledCallback callback);
1521
-
1522
- void SetSharedArrayBufferConstructorEnabledCallback(
1523
- SharedArrayBufferConstructorEnabledCallback callback);
1595
+ void SetJavaScriptCompileHintsMagicEnabledCallback(
1596
+ JavaScriptCompileHintsMagicEnabledCallback callback);
1524
1597
 
1525
1598
  /**
1526
1599
  * This function can be called by the embedder to signal V8 that the dynamic
@@ -1583,6 +1656,7 @@ class V8_EXPORT Isolate {
1583
1656
  * heap. GC is not invoked prior to iterating, therefore there is no
1584
1657
  * guarantee that visited objects are still alive.
1585
1658
  */
1659
+ V8_DEPRECATE_SOON("Will be removed without replacement. crbug.com/v8/14172")
1586
1660
  void VisitExternalResources(ExternalResourceVisitor* visitor);
1587
1661
 
1588
1662
  /**
@@ -1673,10 +1747,12 @@ uint32_t Isolate::GetNumberOfDataSlots() {
1673
1747
 
1674
1748
  template <class T>
1675
1749
  MaybeLocal<T> Isolate::GetDataFromSnapshotOnce(size_t index) {
1676
- T* data =
1677
- internal::ValueHelper::SlotAsValue<T>(GetDataFromSnapshotOnce(index));
1678
- if (data) internal::PerformCastCheck(data);
1679
- return Local<T>(data);
1750
+ if (auto slot = GetDataFromSnapshotOnce(index); slot) {
1751
+ internal::PerformCastCheck(
1752
+ internal::ValueHelper::SlotAsValue<T, false>(slot));
1753
+ return Local<T>::FromSlot(slot);
1754
+ }
1755
+ return {};
1680
1756
  }
1681
1757
 
1682
1758
  } // namespace v8