libv8 6.3.292.48.1-universal-darwin-17 → 6.7.288.46.1beta0-universal-darwin-17
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 +5 -5
- data/ext/libv8/paths.rb +5 -18
- data/lib/libv8/version.rb +1 -1
- data/vendor/v8/include/libplatform/libplatform.h +25 -12
- data/vendor/v8/include/libplatform/v8-tracing.h +13 -2
- data/vendor/v8/include/v8-inspector.h +22 -2
- data/vendor/v8/include/v8-platform.h +247 -12
- data/vendor/v8/include/v8-profiler.h +93 -7
- data/vendor/v8/include/v8-util.h +6 -11
- data/vendor/v8/include/v8-version-string.h +4 -3
- data/vendor/v8/include/v8-version.h +3 -3
- data/vendor/v8/include/v8.h +663 -692
- data/vendor/v8/include/v8config.h +7 -1
- data/vendor/v8/out.gn/libv8/obj/libv8_libbase.a +0 -0
- data/vendor/v8/out.gn/libv8/obj/libv8_libplatform.a +0 -0
- data/vendor/v8/{out/x64.release/libv8_base.a → out.gn/libv8/obj/libv8_monolith.a} +0 -0
- metadata +8 -15
- data/ext/libv8/arch.rb +0 -20
- data/vendor/v8/include/v8-debug.h +0 -255
- data/vendor/v8/out/x64.release/libv8_init.a +0 -0
- data/vendor/v8/out/x64.release/libv8_initializers.a +0 -0
- data/vendor/v8/out/x64.release/libv8_libbase.a +0 -0
- data/vendor/v8/out/x64.release/libv8_libplatform.a +0 -0
- data/vendor/v8/out/x64.release/libv8_libsampler.a +0 -0
- data/vendor/v8/out/x64.release/libv8_nosnapshot.a +0 -0
- data/vendor/v8/out/x64.release/libv8_snapshot.a +0 -0
| @@ -286,6 +286,13 @@ class V8_EXPORT CpuProfiler { | |
| 286 286 | 
             
               */
         | 
| 287 287 | 
             
              static CpuProfiler* New(Isolate* isolate);
         | 
| 288 288 |  | 
| 289 | 
            +
              /**
         | 
| 290 | 
            +
               * Synchronously collect current stack sample in all profilers attached to
         | 
| 291 | 
            +
               * the |isolate|. The call does not affect number of ticks recorded for
         | 
| 292 | 
            +
               * the current top node.
         | 
| 293 | 
            +
               */
         | 
| 294 | 
            +
              static void CollectSample(Isolate* isolate);
         | 
| 295 | 
            +
             | 
| 289 296 | 
             
              /**
         | 
| 290 297 | 
             
               * Disposes the CPU profiler object.
         | 
| 291 298 | 
             
               */
         | 
| @@ -322,12 +329,14 @@ class V8_EXPORT CpuProfiler { | |
| 322 329 | 
             
               * Recording the forced sample does not contribute to the aggregated
         | 
| 323 330 | 
             
               * profile statistics.
         | 
| 324 331 | 
             
               */
         | 
| 325 | 
            -
               | 
| 332 | 
            +
              V8_DEPRECATED("Use static CollectSample(Isolate*) instead.",
         | 
| 333 | 
            +
                            void CollectSample());
         | 
| 326 334 |  | 
| 327 335 | 
             
              /**
         | 
| 328 336 | 
             
               * Tells the profiler whether the embedder is idle.
         | 
| 329 337 | 
             
               */
         | 
| 330 | 
            -
               | 
| 338 | 
            +
              V8_DEPRECATED("Use Isolate::SetIdle(bool) instead.",
         | 
| 339 | 
            +
                            void SetIdle(bool is_idle));
         | 
| 331 340 |  | 
| 332 341 | 
             
             private:
         | 
| 333 342 | 
             
              CpuProfiler();
         | 
| @@ -393,7 +402,8 @@ class V8_EXPORT HeapGraphNode { | |
| 393 402 | 
             
                                     // snapshot items together.
         | 
| 394 403 | 
             
                kConsString = 10,    // Concatenated string. A pair of pointers to strings.
         | 
| 395 404 | 
             
                kSlicedString = 11,  // Sliced string. A fragment of another string.
         | 
| 396 | 
            -
                kSymbol = 12 | 
| 405 | 
            +
                kSymbol = 12,        // A Symbol (ES6).
         | 
| 406 | 
            +
                kBigInt = 13         // BigInt.
         | 
| 397 407 | 
             
              };
         | 
| 398 408 |  | 
| 399 409 | 
             
              /** Returns node type (see HeapGraphNode::Type). */
         | 
| @@ -618,6 +628,68 @@ class V8_EXPORT AllocationProfile { | |
| 618 628 | 
             
              static const int kNoColumnNumberInfo = Message::kNoColumnInfo;
         | 
| 619 629 | 
             
            };
         | 
| 620 630 |  | 
| 631 | 
            +
            /**
         | 
| 632 | 
            +
             * An object graph consisting of embedder objects and V8 objects.
         | 
| 633 | 
            +
             * Edges of the graph are strong references between the objects.
         | 
| 634 | 
            +
             * The embedder can build this graph during heap snapshot generation
         | 
| 635 | 
            +
             * to include the embedder objects in the heap snapshot.
         | 
| 636 | 
            +
             * Usage:
         | 
| 637 | 
            +
             * 1) Define derived class of EmbedderGraph::Node for embedder objects.
         | 
| 638 | 
            +
             * 2) Set the build embedder graph callback on the heap profiler using
         | 
| 639 | 
            +
             *    HeapProfiler::SetBuildEmbedderGraphCallback.
         | 
| 640 | 
            +
             * 3) In the callback use graph->AddEdge(node1, node2) to add an edge from
         | 
| 641 | 
            +
             *    node1 to node2.
         | 
| 642 | 
            +
             * 4) To represent references from/to V8 object, construct V8 nodes using
         | 
| 643 | 
            +
             *    graph->V8Node(value).
         | 
| 644 | 
            +
             */
         | 
| 645 | 
            +
            class V8_EXPORT EmbedderGraph {
         | 
| 646 | 
            +
             public:
         | 
| 647 | 
            +
              class Node {
         | 
| 648 | 
            +
               public:
         | 
| 649 | 
            +
                Node() = default;
         | 
| 650 | 
            +
                virtual ~Node() = default;
         | 
| 651 | 
            +
                virtual const char* Name() = 0;
         | 
| 652 | 
            +
                virtual size_t SizeInBytes() = 0;
         | 
| 653 | 
            +
                /**
         | 
| 654 | 
            +
                 * The corresponding V8 wrapper node if not null.
         | 
| 655 | 
            +
                 * During heap snapshot generation the embedder node and the V8 wrapper
         | 
| 656 | 
            +
                 * node will be merged into one node to simplify retaining paths.
         | 
| 657 | 
            +
                 */
         | 
| 658 | 
            +
                virtual Node* WrapperNode() { return nullptr; }
         | 
| 659 | 
            +
                virtual bool IsRootNode() { return false; }
         | 
| 660 | 
            +
                /** Must return true for non-V8 nodes. */
         | 
| 661 | 
            +
                virtual bool IsEmbedderNode() { return true; }
         | 
| 662 | 
            +
                /**
         | 
| 663 | 
            +
                 * Optional name prefix. It is used in Chrome for tagging detached nodes.
         | 
| 664 | 
            +
                 */
         | 
| 665 | 
            +
                virtual const char* NamePrefix() { return nullptr; }
         | 
| 666 | 
            +
             | 
| 667 | 
            +
               private:
         | 
| 668 | 
            +
                Node(const Node&) = delete;
         | 
| 669 | 
            +
                Node& operator=(const Node&) = delete;
         | 
| 670 | 
            +
              };
         | 
| 671 | 
            +
             | 
| 672 | 
            +
              /**
         | 
| 673 | 
            +
               * Returns a node corresponding to the given V8 value. Ownership is not
         | 
| 674 | 
            +
               * transferred. The result pointer is valid while the graph is alive.
         | 
| 675 | 
            +
               */
         | 
| 676 | 
            +
              virtual Node* V8Node(const v8::Local<v8::Value>& value) = 0;
         | 
| 677 | 
            +
             | 
| 678 | 
            +
              /**
         | 
| 679 | 
            +
               * Adds the given node to the graph and takes ownership of the node.
         | 
| 680 | 
            +
               * Returns a raw pointer to the node that is valid while the graph is alive.
         | 
| 681 | 
            +
               */
         | 
| 682 | 
            +
              virtual Node* AddNode(std::unique_ptr<Node> node) = 0;
         | 
| 683 | 
            +
             | 
| 684 | 
            +
              /**
         | 
| 685 | 
            +
               * Adds an edge that represents a strong reference from the given node
         | 
| 686 | 
            +
               * |from| to the given node |to|. The nodes must be added to the graph
         | 
| 687 | 
            +
               * before calling this function.
         | 
| 688 | 
            +
               */
         | 
| 689 | 
            +
              virtual void AddEdge(Node* from, Node* to) = 0;
         | 
| 690 | 
            +
             | 
| 691 | 
            +
              virtual ~EmbedderGraph() = default;
         | 
| 692 | 
            +
            };
         | 
| 621 693 |  | 
| 622 694 | 
             
            /**
         | 
| 623 695 | 
             
             * Interface for controlling heap profiling. Instance of the
         | 
| @@ -657,6 +729,15 @@ class V8_EXPORT HeapProfiler { | |
| 657 729 | 
             
              typedef RetainedObjectInfo* (*WrapperInfoCallback)(uint16_t class_id,
         | 
| 658 730 | 
             
                                                                 Local<Value> wrapper);
         | 
| 659 731 |  | 
| 732 | 
            +
              /**
         | 
| 733 | 
            +
               * Callback function invoked during heap snapshot generation to retrieve
         | 
| 734 | 
            +
               * the embedder object graph. The callback should use graph->AddEdge(..) to
         | 
| 735 | 
            +
               * add references between the objects.
         | 
| 736 | 
            +
               * The callback must not trigger garbage collection in V8.
         | 
| 737 | 
            +
               */
         | 
| 738 | 
            +
              typedef void (*BuildEmbedderGraphCallback)(v8::Isolate* isolate,
         | 
| 739 | 
            +
                                                         v8::EmbedderGraph* graph);
         | 
| 740 | 
            +
             | 
| 660 741 | 
             
              /** Returns the number of snapshots taken. */
         | 
| 661 742 | 
             
              int GetSnapshotCount();
         | 
| 662 743 |  | 
| @@ -796,11 +877,16 @@ class V8_EXPORT HeapProfiler { | |
| 796 877 | 
             
              void DeleteAllHeapSnapshots();
         | 
| 797 878 |  | 
| 798 879 | 
             
              /** Binds a callback to embedder's class ID. */
         | 
| 799 | 
            -
               | 
| 800 | 
            -
                   | 
| 801 | 
            -
                   | 
| 880 | 
            +
              V8_DEPRECATED(
         | 
| 881 | 
            +
                  "Use SetBuildEmbedderGraphCallback to provide info about embedder nodes",
         | 
| 882 | 
            +
                  void SetWrapperClassInfoProvider(uint16_t class_id,
         | 
| 883 | 
            +
                                                   WrapperInfoCallback callback));
         | 
| 884 | 
            +
             | 
| 885 | 
            +
              V8_DEPRECATED(
         | 
| 886 | 
            +
                  "Use SetBuildEmbedderGraphCallback to provide info about embedder nodes",
         | 
| 887 | 
            +
                  void SetGetRetainerInfosCallback(GetRetainerInfosCallback callback));
         | 
| 802 888 |  | 
| 803 | 
            -
              void  | 
| 889 | 
            +
              void SetBuildEmbedderGraphCallback(BuildEmbedderGraphCallback callback);
         | 
| 804 890 |  | 
| 805 891 | 
             
              /**
         | 
| 806 892 | 
             
               * Default value of persistent handle class ID. Must not be used to
         | 
    
        data/vendor/v8/include/v8-util.h
    CHANGED
    
    | @@ -196,16 +196,6 @@ class PersistentValueMapBase { | |
| 196 196 | 
             
                return SetReturnValueFromVal(&returnValue, Traits::Get(&impl_, key));
         | 
| 197 197 | 
             
              }
         | 
| 198 198 |  | 
| 199 | 
            -
              /**
         | 
| 200 | 
            -
               * Call Isolate::SetReference with the given parent and the map value.
         | 
| 201 | 
            -
               */
         | 
| 202 | 
            -
              void SetReference(const K& key,
         | 
| 203 | 
            -
                  const Persistent<Object>& parent) {
         | 
| 204 | 
            -
                GetIsolate()->SetReference(
         | 
| 205 | 
            -
                  reinterpret_cast<internal::Object**>(parent.val_),
         | 
| 206 | 
            -
                  reinterpret_cast<internal::Object**>(FromVal(Traits::Get(&impl_, key))));
         | 
| 207 | 
            -
              }
         | 
| 208 | 
            -
             | 
| 209 199 | 
             
              /**
         | 
| 210 200 | 
             
               * Call V8::RegisterExternallyReferencedObject with the map value for given
         | 
| 211 201 | 
             
               * key.
         | 
| @@ -393,9 +383,14 @@ class PersistentValueMap : public PersistentValueMapBase<K, V, Traits> { | |
| 393 383 | 
             
               */
         | 
| 394 384 | 
             
              Global<V> SetUnique(const K& key, Global<V>* persistent) {
         | 
| 395 385 | 
             
                if (Traits::kCallbackType != kNotWeak) {
         | 
| 386 | 
            +
                  WeakCallbackType callback_type =
         | 
| 387 | 
            +
                      Traits::kCallbackType == kWeakWithInternalFields
         | 
| 388 | 
            +
                          ? WeakCallbackType::kInternalFields
         | 
| 389 | 
            +
                          : WeakCallbackType::kParameter;
         | 
| 396 390 | 
             
                  Local<V> value(Local<V>::New(this->isolate(), *persistent));
         | 
| 397 391 | 
             
                  persistent->template SetWeak<typename Traits::WeakCallbackDataType>(
         | 
| 398 | 
            -
             | 
| 392 | 
            +
                      Traits::WeakCallbackParameter(this, key, value), WeakCallback,
         | 
| 393 | 
            +
                      callback_type);
         | 
| 399 394 | 
             
                }
         | 
| 400 395 | 
             
                PersistentContainerValue old_value =
         | 
| 401 396 | 
             
                    Traits::Set(this->impl(), key, this->ClearAndLeak(persistent));
         | 
| @@ -29,9 +29,10 @@ | |
| 29 29 | 
             
              "." V8_S(V8_MINOR_VERSION) "." V8_S(V8_BUILD_NUMBER) "." V8_S( \
         | 
| 30 30 | 
             
                  V8_PATCH_LEVEL) V8_EMBEDDER_STRING V8_CANDIDATE_STRING
         | 
| 31 31 | 
             
            #else
         | 
| 32 | 
            -
            #define V8_VERSION_STRING | 
| 33 | 
            -
              V8_S(V8_MAJOR_VERSION) | 
| 34 | 
            -
              "." V8_S(V8_MINOR_VERSION) "." V8_S(V8_BUILD_NUMBER)  | 
| 32 | 
            +
            #define V8_VERSION_STRING                              \
         | 
| 33 | 
            +
              V8_S(V8_MAJOR_VERSION)                               \
         | 
| 34 | 
            +
              "." V8_S(V8_MINOR_VERSION) "." V8_S(V8_BUILD_NUMBER) \
         | 
| 35 | 
            +
                  V8_EMBEDDER_STRING V8_CANDIDATE_STRING
         | 
| 35 36 | 
             
            #endif
         | 
| 36 37 |  | 
| 37 38 | 
             
            #endif  // V8_VERSION_STRING_H_
         | 
| @@ -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 6
         | 
| 12 | 
            -
            #define V8_MINOR_VERSION  | 
| 13 | 
            -
            #define V8_BUILD_NUMBER  | 
| 14 | 
            -
            #define V8_PATCH_LEVEL  | 
| 12 | 
            +
            #define V8_MINOR_VERSION 7
         | 
| 13 | 
            +
            #define V8_BUILD_NUMBER 288
         | 
| 14 | 
            +
            #define V8_PATCH_LEVEL 46
         | 
| 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.h
    CHANGED
    
    | @@ -66,6 +66,8 @@ namespace v8 { | |
| 66 66 | 
             
            class AccessorSignature;
         | 
| 67 67 | 
             
            class Array;
         | 
| 68 68 | 
             
            class ArrayBuffer;
         | 
| 69 | 
            +
            class BigInt;
         | 
| 70 | 
            +
            class BigIntObject;
         | 
| 69 71 | 
             
            class Boolean;
         | 
| 70 72 | 
             
            class BooleanObject;
         | 
| 71 73 | 
             
            class Context;
         | 
| @@ -145,7 +147,7 @@ class Heap; | |
| 145 147 | 
             
            class HeapObject;
         | 
| 146 148 | 
             
            class Isolate;
         | 
| 147 149 | 
             
            class Object;
         | 
| 148 | 
            -
            struct  | 
| 150 | 
            +
            struct ScriptStreamingData;
         | 
| 149 151 | 
             
            template<typename T> class CustomArguments;
         | 
| 150 152 | 
             
            class PropertyCallbackArguments;
         | 
| 151 153 | 
             
            class FunctionCallbackArguments;
         | 
| @@ -313,6 +315,7 @@ class Local { | |
| 313 315 | 
             
              friend class String;
         | 
| 314 316 | 
             
              friend class Object;
         | 
| 315 317 | 
             
              friend class Context;
         | 
| 318 | 
            +
              friend class Isolate;
         | 
| 316 319 | 
             
              friend class Private;
         | 
| 317 320 | 
             
              template<class F> friend class internal::CustomArguments;
         | 
| 318 321 | 
             
              friend Local<Primitive> Undefined(Isolate* isolate);
         | 
| @@ -433,20 +436,6 @@ class WeakCallbackInfo { | |
| 433 436 | 
             
              V8_INLINE T* GetParameter() const { return parameter_; }
         | 
| 434 437 | 
             
              V8_INLINE void* GetInternalField(int index) const;
         | 
| 435 438 |  | 
| 436 | 
            -
              V8_INLINE V8_DEPRECATED("use indexed version",
         | 
| 437 | 
            -
                                      void* GetInternalField1() const) {
         | 
| 438 | 
            -
                return embedder_fields_[0];
         | 
| 439 | 
            -
              }
         | 
| 440 | 
            -
              V8_INLINE V8_DEPRECATED("use indexed version",
         | 
| 441 | 
            -
                                      void* GetInternalField2() const) {
         | 
| 442 | 
            -
                return embedder_fields_[1];
         | 
| 443 | 
            -
              }
         | 
| 444 | 
            -
             | 
| 445 | 
            -
              V8_DEPRECATED("Not realiable once SetSecondPassCallback() was used.",
         | 
| 446 | 
            -
                            bool IsFirstPass() const) {
         | 
| 447 | 
            -
                return callback_ != nullptr;
         | 
| 448 | 
            -
              }
         | 
| 449 | 
            -
             | 
| 450 439 | 
             
              // When first called, the embedder MUST Reset() the Global which triggered the
         | 
| 451 440 | 
             
              // callback. The Global itself is unusable for anything else. No v8 other api
         | 
| 452 441 | 
             
              // calls may be called in the first callback. Should additional work be
         | 
| @@ -566,6 +555,14 @@ template <class T> class PersistentBase { | |
| 566 555 | 
             
              // TODO(dcarney): remove this.
         | 
| 567 556 | 
             
              V8_INLINE void ClearWeak() { ClearWeak<void>(); }
         | 
| 568 557 |  | 
| 558 | 
            +
              /**
         | 
| 559 | 
            +
               * Annotates the strong handle with the given label, which is then used by the
         | 
| 560 | 
            +
               * heap snapshot generator as a name of the edge from the root to the handle.
         | 
| 561 | 
            +
               * The function does not take ownership of the label and assumes that the
         | 
| 562 | 
            +
               * label is valid as long as the handle is valid.
         | 
| 563 | 
            +
               */
         | 
| 564 | 
            +
              V8_INLINE void AnnotateStrongRetainer(const char* label);
         | 
| 565 | 
            +
             | 
| 569 566 | 
             
              /**
         | 
| 570 567 | 
             
               * Allows the embedder to tell the v8 garbage collector that a certain object
         | 
| 571 568 | 
             
               * is alive. Only allowed when the embedder is asked to trace its heap by
         | 
| @@ -579,16 +576,22 @@ template <class T> class PersistentBase { | |
| 579 576 | 
             
               * independent handle should not assume that it will be preceded by a global
         | 
| 580 577 | 
             
               * GC prologue callback or followed by a global GC epilogue callback.
         | 
| 581 578 | 
             
               */
         | 
| 582 | 
            -
               | 
| 579 | 
            +
              V8_DEPRECATE_SOON(
         | 
| 580 | 
            +
                  "Objects are always considered independent. "
         | 
| 581 | 
            +
                  "Use MarkActive to avoid collecting otherwise dead weak handles.",
         | 
| 582 | 
            +
                  V8_INLINE void MarkIndependent());
         | 
| 583 583 |  | 
| 584 584 | 
             
              /**
         | 
| 585 585 | 
             
               * Marks the reference to this object as active. The scavenge garbage
         | 
| 586 | 
            -
               * collection should not reclaim the objects marked as active | 
| 586 | 
            +
               * collection should not reclaim the objects marked as active, even if the
         | 
| 587 | 
            +
               * object held by the handle is otherwise unreachable.
         | 
| 588 | 
            +
               *
         | 
| 587 589 | 
             
               * This bit is cleared after the each garbage collection pass.
         | 
| 588 590 | 
             
               */
         | 
| 589 591 | 
             
              V8_INLINE void MarkActive();
         | 
| 590 592 |  | 
| 591 | 
            -
               | 
| 593 | 
            +
              V8_DEPRECATE_SOON("See MarkIndependent.",
         | 
| 594 | 
            +
                                V8_INLINE bool IsIndependent() const);
         | 
| 592 595 |  | 
| 593 596 | 
             
              /** Checks if the handle holds the only reference to an object. */
         | 
| 594 597 | 
             
              V8_INLINE bool IsNearDeath() const;
         | 
| @@ -952,7 +955,7 @@ class V8_EXPORT EscapableHandleScope : public HandleScope { | |
| 952 955 | 
             
             */
         | 
| 953 956 | 
             
            class V8_EXPORT SealHandleScope {
         | 
| 954 957 | 
             
             public:
         | 
| 955 | 
            -
              SealHandleScope(Isolate* isolate);
         | 
| 958 | 
            +
              explicit SealHandleScope(Isolate* isolate);
         | 
| 956 959 | 
             
              ~SealHandleScope();
         | 
| 957 960 |  | 
| 958 961 | 
             
              SealHandleScope(const SealHandleScope&) = delete;
         | 
| @@ -984,9 +987,6 @@ class V8_EXPORT Data { | |
| 984 987 | 
             
            };
         | 
| 985 988 |  | 
| 986 989 | 
             
            /**
         | 
| 987 | 
            -
             * This is an unfinished experimental feature, and is only exposed
         | 
| 988 | 
            -
             * here for internal testing purposes. DO NOT USE.
         | 
| 989 | 
            -
             *
         | 
| 990 990 | 
             
             * A container type that holds relevant metadata for module loading.
         | 
| 991 991 | 
             
             *
         | 
| 992 992 | 
             
             * This is passed back to the embedder as part of
         | 
| @@ -1008,9 +1008,6 @@ class V8_EXPORT ScriptOrModule { | |
| 1008 1008 | 
             
            };
         | 
| 1009 1009 |  | 
| 1010 1010 | 
             
            /**
         | 
| 1011 | 
            -
             * This is an unfinished experimental feature, and is only exposed
         | 
| 1012 | 
            -
             * here for internal testing purposes. DO NOT USE.
         | 
| 1013 | 
            -
             *
         | 
| 1014 1011 | 
             
             * An array to hold Primitive values. This is used by the embedder to
         | 
| 1015 1012 | 
             
             * pass host defined options to the ScriptOptions during compilation.
         | 
| 1016 1013 | 
             
             *
         | 
| @@ -1143,15 +1140,16 @@ class V8_EXPORT Location { | |
| 1143 1140 | 
             
            };
         | 
| 1144 1141 |  | 
| 1145 1142 | 
             
            /**
         | 
| 1146 | 
            -
             * This is an unfinished experimental feature, and is only exposed
         | 
| 1147 | 
            -
             * here for internal testing purposes. DO NOT USE.
         | 
| 1148 | 
            -
             *
         | 
| 1149 1143 | 
             
             * A compiled JavaScript module.
         | 
| 1150 1144 | 
             
             */
         | 
| 1151 1145 | 
             
            class V8_EXPORT Module {
         | 
| 1152 1146 | 
             
             public:
         | 
| 1153 1147 | 
             
              /**
         | 
| 1154 1148 | 
             
               * The different states a module can be in.
         | 
| 1149 | 
            +
               *
         | 
| 1150 | 
            +
               * This corresponds to the states used in ECMAScript except that "evaluated"
         | 
| 1151 | 
            +
               * is split into kEvaluated and kErrored, indicating success and failure,
         | 
| 1152 | 
            +
               * respectively.
         | 
| 1155 1153 | 
             
               */
         | 
| 1156 1154 | 
             
              enum Status {
         | 
| 1157 1155 | 
             
                kUninstantiated,
         | 
| @@ -1199,29 +1197,29 @@ class V8_EXPORT Module { | |
| 1199 1197 | 
             
                                                            Local<Module> referrer);
         | 
| 1200 1198 |  | 
| 1201 1199 | 
             
              /**
         | 
| 1202 | 
            -
               *  | 
| 1200 | 
            +
               * Instantiates the module and its dependencies.
         | 
| 1203 1201 | 
             
               *
         | 
| 1204 1202 | 
             
               * Returns an empty Maybe<bool> if an exception occurred during
         | 
| 1205 1203 | 
             
               * instantiation. (In the case where the callback throws an exception, that
         | 
| 1206 1204 | 
             
               * exception is propagated.)
         | 
| 1207 1205 | 
             
               */
         | 
| 1208 | 
            -
              V8_DEPRECATED("Use Maybe<bool> version",
         | 
| 1209 | 
            -
                            bool Instantiate(Local<Context> context,
         | 
| 1210 | 
            -
                                             ResolveCallback callback));
         | 
| 1211 1206 | 
             
              V8_WARN_UNUSED_RESULT Maybe<bool> InstantiateModule(Local<Context> context,
         | 
| 1212 1207 | 
             
                                                                  ResolveCallback callback);
         | 
| 1213 1208 |  | 
| 1214 1209 | 
             
              /**
         | 
| 1215 | 
            -
               *  | 
| 1210 | 
            +
               * Evaluates the module and its dependencies.
         | 
| 1216 1211 | 
             
               *
         | 
| 1217 | 
            -
               *  | 
| 1218 | 
            -
               *  | 
| 1212 | 
            +
               * If status is kInstantiated, run the module's code. On success, set status
         | 
| 1213 | 
            +
               * to kEvaluated and return the completion value; on failure, set status to
         | 
| 1214 | 
            +
               * kErrored and propagate the thrown exception (which is then also available
         | 
| 1215 | 
            +
               * via |GetException|).
         | 
| 1219 1216 | 
             
               */
         | 
| 1220 1217 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Value> Evaluate(Local<Context> context);
         | 
| 1221 1218 |  | 
| 1222 1219 | 
             
              /**
         | 
| 1223 1220 | 
             
               * Returns the namespace object of this module.
         | 
| 1224 | 
            -
               * | 
| 1221 | 
            +
               *
         | 
| 1222 | 
            +
               * The module's status must be at least kInstantiated.
         | 
| 1225 1223 | 
             
               */
         | 
| 1226 1224 | 
             
              Local<Value> GetModuleNamespace();
         | 
| 1227 1225 | 
             
            };
         | 
| @@ -1235,24 +1233,23 @@ class V8_EXPORT Script { | |
| 1235 1233 | 
             
              /**
         | 
| 1236 1234 | 
             
               * A shorthand for ScriptCompiler::Compile().
         | 
| 1237 1235 | 
             
               */
         | 
| 1238 | 
            -
              static  | 
| 1239 | 
            -
             | 
| 1240 | 
            -
             | 
| 1241 | 
            -
                                        ScriptOrigin* origin = nullptr));
         | 
| 1236 | 
            +
              static V8_DEPRECATED("Use maybe version",
         | 
| 1237 | 
            +
                                   Local<Script> Compile(Local<String> source,
         | 
| 1238 | 
            +
                                                         ScriptOrigin* origin = nullptr));
         | 
| 1242 1239 | 
             
              static V8_WARN_UNUSED_RESULT MaybeLocal<Script> Compile(
         | 
| 1243 1240 | 
             
                  Local<Context> context, Local<String> source,
         | 
| 1244 1241 | 
             
                  ScriptOrigin* origin = nullptr);
         | 
| 1245 1242 |  | 
| 1246 | 
            -
              static Local<Script>  | 
| 1247 | 
            -
             | 
| 1248 | 
            -
             | 
| 1243 | 
            +
              static Local<Script> V8_DEPRECATED("Use maybe version",
         | 
| 1244 | 
            +
                                                 Compile(Local<String> source,
         | 
| 1245 | 
            +
                                                         Local<String> file_name));
         | 
| 1249 1246 |  | 
| 1250 1247 | 
             
              /**
         | 
| 1251 1248 | 
             
               * Runs the script returning the resulting value. It will be run in the
         | 
| 1252 1249 | 
             
               * context in which it was created (ScriptCompiler::CompileBound or
         | 
| 1253 1250 | 
             
               * UnboundScript::BindToCurrentContext()).
         | 
| 1254 1251 | 
             
               */
         | 
| 1255 | 
            -
               | 
| 1252 | 
            +
              V8_DEPRECATED("Use maybe version", Local<Value> Run());
         | 
| 1256 1253 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Value> Run(Local<Context> context);
         | 
| 1257 1254 |  | 
| 1258 1255 | 
             
              /**
         | 
| @@ -1411,14 +1408,14 @@ class V8_EXPORT ScriptCompiler { | |
| 1411 1408 | 
             
                // object is alive.
         | 
| 1412 1409 | 
             
                const CachedData* GetCachedData() const;
         | 
| 1413 1410 |  | 
| 1414 | 
            -
                internal:: | 
| 1411 | 
            +
                internal::ScriptStreamingData* impl() const { return impl_; }
         | 
| 1415 1412 |  | 
| 1416 1413 | 
             
                // Prevent copying.
         | 
| 1417 1414 | 
             
                StreamedSource(const StreamedSource&) = delete;
         | 
| 1418 1415 | 
             
                StreamedSource& operator=(const StreamedSource&) = delete;
         | 
| 1419 1416 |  | 
| 1420 1417 | 
             
               private:
         | 
| 1421 | 
            -
                internal:: | 
| 1418 | 
            +
                internal::ScriptStreamingData* impl_;
         | 
| 1422 1419 | 
             
              };
         | 
| 1423 1420 |  | 
| 1424 1421 | 
             
              /**
         | 
| @@ -1437,7 +1434,29 @@ class V8_EXPORT ScriptCompiler { | |
| 1437 1434 | 
             
                kConsumeParserCache,
         | 
| 1438 1435 | 
             
                kProduceCodeCache,
         | 
| 1439 1436 | 
             
                kProduceFullCodeCache,
         | 
| 1440 | 
            -
                kConsumeCodeCache
         | 
| 1437 | 
            +
                kConsumeCodeCache,
         | 
| 1438 | 
            +
                kEagerCompile
         | 
| 1439 | 
            +
              };
         | 
| 1440 | 
            +
             | 
| 1441 | 
            +
              /**
         | 
| 1442 | 
            +
               * The reason for which we are not requesting or providing a code cache.
         | 
| 1443 | 
            +
               */
         | 
| 1444 | 
            +
              enum NoCacheReason {
         | 
| 1445 | 
            +
                kNoCacheNoReason = 0,
         | 
| 1446 | 
            +
                kNoCacheBecauseCachingDisabled,
         | 
| 1447 | 
            +
                kNoCacheBecauseNoResource,
         | 
| 1448 | 
            +
                kNoCacheBecauseInlineScript,
         | 
| 1449 | 
            +
                kNoCacheBecauseModule,
         | 
| 1450 | 
            +
                kNoCacheBecauseStreamingSource,
         | 
| 1451 | 
            +
                kNoCacheBecauseInspector,
         | 
| 1452 | 
            +
                kNoCacheBecauseScriptTooSmall,
         | 
| 1453 | 
            +
                kNoCacheBecauseCacheTooCold,
         | 
| 1454 | 
            +
                kNoCacheBecauseV8Extension,
         | 
| 1455 | 
            +
                kNoCacheBecauseExtensionModule,
         | 
| 1456 | 
            +
                kNoCacheBecausePacScript,
         | 
| 1457 | 
            +
                kNoCacheBecauseInDocumentWrite,
         | 
| 1458 | 
            +
                kNoCacheBecauseResourceWithNoCacheHandler,
         | 
| 1459 | 
            +
                kNoCacheBecauseDeferredProduceCodeCache
         | 
| 1441 1460 | 
             
              };
         | 
| 1442 1461 |  | 
| 1443 1462 | 
             
              /**
         | 
| @@ -1453,13 +1472,10 @@ class V8_EXPORT ScriptCompiler { | |
| 1453 1472 | 
             
               * \return Compiled script object (context independent; for running it must be
         | 
| 1454 1473 | 
             
               *   bound to a context).
         | 
| 1455 1474 | 
             
               */
         | 
| 1456 | 
            -
              static V8_DEPRECATED("Use maybe version",
         | 
| 1457 | 
            -
                                   Local<UnboundScript> CompileUnbound(
         | 
| 1458 | 
            -
                                       Isolate* isolate, Source* source,
         | 
| 1459 | 
            -
                                       CompileOptions options = kNoCompileOptions));
         | 
| 1460 1475 | 
             
              static V8_WARN_UNUSED_RESULT MaybeLocal<UnboundScript> CompileUnboundScript(
         | 
| 1461 1476 | 
             
                  Isolate* isolate, Source* source,
         | 
| 1462 | 
            -
                  CompileOptions options = kNoCompileOptions | 
| 1477 | 
            +
                  CompileOptions options = kNoCompileOptions,
         | 
| 1478 | 
            +
                  NoCacheReason no_cache_reason = kNoCacheNoReason);
         | 
| 1463 1479 |  | 
| 1464 1480 | 
             
              /**
         | 
| 1465 1481 | 
             
               * Compiles the specified script (bound to current context).
         | 
| @@ -1472,13 +1488,10 @@ class V8_EXPORT ScriptCompiler { | |
| 1472 1488 | 
             
               *   when this function was called. When run it will always use this
         | 
| 1473 1489 | 
             
               *   context.
         | 
| 1474 1490 | 
             
               */
         | 
| 1475 | 
            -
              static V8_DEPRECATED(
         | 
| 1476 | 
            -
                  "Use maybe version",
         | 
| 1477 | 
            -
                  Local<Script> Compile(Isolate* isolate, Source* source,
         | 
| 1478 | 
            -
                                        CompileOptions options = kNoCompileOptions));
         | 
| 1479 1491 | 
             
              static V8_WARN_UNUSED_RESULT MaybeLocal<Script> Compile(
         | 
| 1480 1492 | 
             
                  Local<Context> context, Source* source,
         | 
| 1481 | 
            -
                  CompileOptions options = kNoCompileOptions | 
| 1493 | 
            +
                  CompileOptions options = kNoCompileOptions,
         | 
| 1494 | 
            +
                  NoCacheReason no_cache_reason = kNoCacheNoReason);
         | 
| 1482 1495 |  | 
| 1483 1496 | 
             
              /**
         | 
| 1484 1497 | 
             
               * Returns a task which streams script data into V8, or NULL if the script
         | 
| @@ -1502,11 +1515,6 @@ class V8_EXPORT ScriptCompiler { | |
| 1502 1515 | 
             
               * (ScriptStreamingTask has been run). V8 doesn't construct the source string
         | 
| 1503 1516 | 
             
               * during streaming, so the embedder needs to pass the full source here.
         | 
| 1504 1517 | 
             
               */
         | 
| 1505 | 
            -
              static V8_DEPRECATED("Use maybe version",
         | 
| 1506 | 
            -
                                   Local<Script> Compile(Isolate* isolate,
         | 
| 1507 | 
            -
                                                         StreamedSource* source,
         | 
| 1508 | 
            -
                                                         Local<String> full_source_string,
         | 
| 1509 | 
            -
                                                         const ScriptOrigin& origin));
         | 
| 1510 1518 | 
             
              static V8_WARN_UNUSED_RESULT MaybeLocal<Script> Compile(
         | 
| 1511 1519 | 
             
                  Local<Context> context, StreamedSource* source,
         | 
| 1512 1520 | 
             
                  Local<String> full_source_string, const ScriptOrigin& origin);
         | 
| @@ -1532,9 +1540,6 @@ class V8_EXPORT ScriptCompiler { | |
| 1532 1540 | 
             
              static uint32_t CachedDataVersionTag();
         | 
| 1533 1541 |  | 
| 1534 1542 | 
             
              /**
         | 
| 1535 | 
            -
               * This is an unfinished experimental feature, and is only exposed
         | 
| 1536 | 
            -
               * here for internal testing purposes. DO NOT USE.
         | 
| 1537 | 
            -
               *
         | 
| 1538 1543 | 
             
               * Compile an ES module, returning a Module that encapsulates
         | 
| 1539 1544 | 
             
               * the compiled code.
         | 
| 1540 1545 | 
             
               *
         | 
| @@ -1554,21 +1559,41 @@ class V8_EXPORT ScriptCompiler { | |
| 1554 1559 | 
             
               * It is possible to specify multiple context extensions (obj in the above
         | 
| 1555 1560 | 
             
               * example).
         | 
| 1556 1561 | 
             
               */
         | 
| 1557 | 
            -
              static  | 
| 1558 | 
            -
             | 
| 1559 | 
            -
             | 
| 1560 | 
            -
             | 
| 1561 | 
            -
             | 
| 1562 | 
            -
             | 
| 1563 | 
            -
             | 
| 1562 | 
            +
              static V8_DEPRECATED("Use maybe version",
         | 
| 1563 | 
            +
                                   Local<Function> CompileFunctionInContext(
         | 
| 1564 | 
            +
                                       Isolate* isolate, Source* source,
         | 
| 1565 | 
            +
                                       Local<Context> context, size_t arguments_count,
         | 
| 1566 | 
            +
                                       Local<String> arguments[],
         | 
| 1567 | 
            +
                                       size_t context_extension_count,
         | 
| 1568 | 
            +
                                       Local<Object> context_extensions[]));
         | 
| 1564 1569 | 
             
              static V8_WARN_UNUSED_RESULT MaybeLocal<Function> CompileFunctionInContext(
         | 
| 1565 1570 | 
             
                  Local<Context> context, Source* source, size_t arguments_count,
         | 
| 1566 1571 | 
             
                  Local<String> arguments[], size_t context_extension_count,
         | 
| 1567 | 
            -
                  Local<Object> context_extensions[] | 
| 1572 | 
            +
                  Local<Object> context_extensions[],
         | 
| 1573 | 
            +
                  CompileOptions options = kNoCompileOptions,
         | 
| 1574 | 
            +
                  NoCacheReason no_cache_reason = kNoCacheNoReason);
         | 
| 1575 | 
            +
             | 
| 1576 | 
            +
              /**
         | 
| 1577 | 
            +
               * Creates and returns code cache for the specified unbound_script.
         | 
| 1578 | 
            +
               * This will return nullptr if the script cannot be serialized. The
         | 
| 1579 | 
            +
               * CachedData returned by this function should be owned by the caller.
         | 
| 1580 | 
            +
               */
         | 
| 1581 | 
            +
              static CachedData* CreateCodeCache(Local<UnboundScript> unbound_script,
         | 
| 1582 | 
            +
                                                 Local<String> source);
         | 
| 1583 | 
            +
             | 
| 1584 | 
            +
              /**
         | 
| 1585 | 
            +
               * Creates and returns code cache for the specified function that was
         | 
| 1586 | 
            +
               * previously produced by CompileFunctionInContext.
         | 
| 1587 | 
            +
               * This will return nullptr if the script cannot be serialized. The
         | 
| 1588 | 
            +
               * CachedData returned by this function should be owned by the caller.
         | 
| 1589 | 
            +
               */
         | 
| 1590 | 
            +
              static CachedData* CreateCodeCacheForFunction(Local<Function> function,
         | 
| 1591 | 
            +
                                                            Local<String> source);
         | 
| 1568 1592 |  | 
| 1569 1593 | 
             
             private:
         | 
| 1570 1594 | 
             
              static V8_WARN_UNUSED_RESULT MaybeLocal<UnboundScript> CompileUnboundInternal(
         | 
| 1571 | 
            -
                  Isolate* isolate, Source* source, CompileOptions options | 
| 1595 | 
            +
                  Isolate* isolate, Source* source, CompileOptions options,
         | 
| 1596 | 
            +
                  NoCacheReason no_cache_reason);
         | 
| 1572 1597 | 
             
            };
         | 
| 1573 1598 |  | 
| 1574 1599 |  | 
| @@ -1579,7 +1604,7 @@ class V8_EXPORT Message { | |
| 1579 1604 | 
             
             public:
         | 
| 1580 1605 | 
             
              Local<String> Get() const;
         | 
| 1581 1606 |  | 
| 1582 | 
            -
               | 
| 1607 | 
            +
              V8_DEPRECATED("Use maybe version", Local<String> GetSourceLine() const);
         | 
| 1583 1608 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<String> GetSourceLine(
         | 
| 1584 1609 | 
             
                  Local<Context> context) const;
         | 
| 1585 1610 |  | 
| @@ -1605,7 +1630,7 @@ class V8_EXPORT Message { | |
| 1605 1630 | 
             
              /**
         | 
| 1606 1631 | 
             
               * Returns the number, 1-based, of the line where the error occurred.
         | 
| 1607 1632 | 
             
               */
         | 
| 1608 | 
            -
               | 
| 1633 | 
            +
              V8_DEPRECATED("Use maybe version", int GetLineNumber() const);
         | 
| 1609 1634 | 
             
              V8_WARN_UNUSED_RESULT Maybe<int> GetLineNumber(Local<Context> context) const;
         | 
| 1610 1635 |  | 
| 1611 1636 | 
             
              /**
         | 
| @@ -1629,14 +1654,14 @@ class V8_EXPORT Message { | |
| 1629 1654 | 
             
               * Returns the index within the line of the first character where
         | 
| 1630 1655 | 
             
               * the error occurred.
         | 
| 1631 1656 | 
             
               */
         | 
| 1632 | 
            -
               | 
| 1657 | 
            +
              int GetStartColumn() const;
         | 
| 1633 1658 | 
             
              V8_WARN_UNUSED_RESULT Maybe<int> GetStartColumn(Local<Context> context) const;
         | 
| 1634 1659 |  | 
| 1635 1660 | 
             
              /**
         | 
| 1636 1661 | 
             
               * Returns the index within the line of the last character where
         | 
| 1637 1662 | 
             
               * the error occurred.
         | 
| 1638 1663 | 
             
               */
         | 
| 1639 | 
            -
               | 
| 1664 | 
            +
              int GetEndColumn() const;
         | 
| 1640 1665 | 
             
              V8_WARN_UNUSED_RESULT Maybe<int> GetEndColumn(Local<Context> context) const;
         | 
| 1641 1666 |  | 
| 1642 1667 | 
             
              /**
         | 
| @@ -1692,11 +1717,6 @@ class V8_EXPORT StackTrace { | |
| 1692 1717 | 
             
               */
         | 
| 1693 1718 | 
             
              int GetFrameCount() const;
         | 
| 1694 1719 |  | 
| 1695 | 
            -
              /**
         | 
| 1696 | 
            -
               * Returns StackTrace as a v8::Array that contains StackFrame objects.
         | 
| 1697 | 
            -
               */
         | 
| 1698 | 
            -
              V8_DEPRECATED("Use native API instead", Local<Array> AsArray());
         | 
| 1699 | 
            -
             | 
| 1700 1720 | 
             
              /**
         | 
| 1701 1721 | 
             
               * Grab a snapshot of the current JavaScript execution stack.
         | 
| 1702 1722 | 
             
               *
         | 
| @@ -1818,8 +1838,6 @@ class V8_EXPORT JSON { | |
| 1818 1838 | 
             
               * \param json_string The string to parse.
         | 
| 1819 1839 | 
             
               * \return The corresponding value if successfully parsed.
         | 
| 1820 1840 | 
             
               */
         | 
| 1821 | 
            -
              static V8_DEPRECATED("Use the maybe version taking context",
         | 
| 1822 | 
            -
                                   Local<Value> Parse(Local<String> json_string));
         | 
| 1823 1841 | 
             
              static V8_DEPRECATE_SOON("Use the maybe version taking context",
         | 
| 1824 1842 | 
             
                                       MaybeLocal<Value> Parse(Isolate* isolate,
         | 
| 1825 1843 | 
             
                                                               Local<String> json_string));
         | 
| @@ -1871,7 +1889,7 @@ class V8_EXPORT ValueSerializer { | |
| 1871 1889 | 
             
                 * SharedArrayBuffer object. The embedder must return an ID for the
         | 
| 1872 1890 | 
             
                 * object, using the same ID if this SharedArrayBuffer has already been
         | 
| 1873 1891 | 
             
                 * serialized in this buffer. When deserializing, this ID will be passed to
         | 
| 1874 | 
            -
                 * ValueDeserializer:: | 
| 1892 | 
            +
                 * ValueDeserializer::GetSharedArrayBufferFromId as |clone_id|.
         | 
| 1875 1893 | 
             
                 *
         | 
| 1876 1894 | 
             
                 * If the object cannot be serialized, an
         | 
| 1877 1895 | 
             
                 * exception should be thrown and Nothing<uint32_t>() returned.
         | 
| @@ -1998,6 +2016,13 @@ class V8_EXPORT ValueDeserializer { | |
| 1998 2016 | 
             
                 */
         | 
| 1999 2017 | 
             
                virtual MaybeLocal<WasmCompiledModule> GetWasmModuleFromId(
         | 
| 2000 2018 | 
             
                    Isolate* isolate, uint32_t transfer_id);
         | 
| 2019 | 
            +
             | 
| 2020 | 
            +
                /**
         | 
| 2021 | 
            +
                 * Get a SharedArrayBuffer given a clone_id previously provided
         | 
| 2022 | 
            +
                 * by ValueSerializer::GetSharedArrayBufferId
         | 
| 2023 | 
            +
                 */
         | 
| 2024 | 
            +
                virtual MaybeLocal<SharedArrayBuffer> GetSharedArrayBufferFromId(
         | 
| 2025 | 
            +
                    Isolate* isolate, uint32_t clone_id);
         | 
| 2001 2026 | 
             
              };
         | 
| 2002 2027 |  | 
| 2003 2028 | 
             
              ValueDeserializer(Isolate* isolate, const uint8_t* data, size_t size);
         | 
| @@ -2070,20 +2095,6 @@ class V8_EXPORT ValueDeserializer { | |
| 2070 2095 | 
             
              PrivateData* private_;
         | 
| 2071 2096 | 
             
            };
         | 
| 2072 2097 |  | 
| 2073 | 
            -
            /**
         | 
| 2074 | 
            -
             * A map whose keys are referenced weakly. It is similar to JavaScript WeakMap
         | 
| 2075 | 
            -
             * but can be created without entering a v8::Context and hence shouldn't
         | 
| 2076 | 
            -
             * escape to JavaScript.
         | 
| 2077 | 
            -
             */
         | 
| 2078 | 
            -
            class V8_EXPORT NativeWeakMap : public Data {
         | 
| 2079 | 
            -
             public:
         | 
| 2080 | 
            -
              static Local<NativeWeakMap> New(Isolate* isolate);
         | 
| 2081 | 
            -
              void Set(Local<Value> key, Local<Value> value);
         | 
| 2082 | 
            -
              Local<Value> Get(Local<Value> key) const;
         | 
| 2083 | 
            -
              bool Has(Local<Value> key);
         | 
| 2084 | 
            -
              bool Delete(Local<Value> key);
         | 
| 2085 | 
            -
            };
         | 
| 2086 | 
            -
             | 
| 2087 2098 |  | 
| 2088 2099 | 
             
            // --- Value ---
         | 
| 2089 2100 |  | 
| @@ -2154,6 +2165,11 @@ class V8_EXPORT Value : public Data { | |
| 2154 2165 | 
             
               */
         | 
| 2155 2166 | 
             
              bool IsObject() const;
         | 
| 2156 2167 |  | 
| 2168 | 
            +
              /**
         | 
| 2169 | 
            +
               * Returns true if this value is a bigint.
         | 
| 2170 | 
            +
               */
         | 
| 2171 | 
            +
              bool IsBigInt() const;
         | 
| 2172 | 
            +
             | 
| 2157 2173 | 
             
              /**
         | 
| 2158 2174 | 
             
               * Returns true if this value is boolean.
         | 
| 2159 2175 | 
             
               */
         | 
| @@ -2189,6 +2205,11 @@ class V8_EXPORT Value : public Data { | |
| 2189 2205 | 
             
               */
         | 
| 2190 2206 | 
             
              bool IsArgumentsObject() const;
         | 
| 2191 2207 |  | 
| 2208 | 
            +
              /**
         | 
| 2209 | 
            +
               * Returns true if this value is a BigInt object.
         | 
| 2210 | 
            +
               */
         | 
| 2211 | 
            +
              bool IsBigIntObject() const;
         | 
| 2212 | 
            +
             | 
| 2192 2213 | 
             
              /**
         | 
| 2193 2214 | 
             
               * Returns true if this value is a Boolean object.
         | 
| 2194 2215 | 
             
               */
         | 
| @@ -2329,6 +2350,16 @@ class V8_EXPORT Value : public Data { | |
| 2329 2350 | 
             
               */
         | 
| 2330 2351 | 
             
              bool IsFloat64Array() const;
         | 
| 2331 2352 |  | 
| 2353 | 
            +
              /**
         | 
| 2354 | 
            +
               * Returns true if this value is a BigInt64Array.
         | 
| 2355 | 
            +
               */
         | 
| 2356 | 
            +
              bool IsBigInt64Array() const;
         | 
| 2357 | 
            +
             | 
| 2358 | 
            +
              /**
         | 
| 2359 | 
            +
               * Returns true if this value is a BigUint64Array.
         | 
| 2360 | 
            +
               */
         | 
| 2361 | 
            +
              bool IsBigUint64Array() const;
         | 
| 2362 | 
            +
             | 
| 2332 2363 | 
             
              /**
         | 
| 2333 2364 | 
             
               * Returns true if this value is a DataView.
         | 
| 2334 2365 | 
             
               */
         | 
| @@ -2347,6 +2378,8 @@ class V8_EXPORT Value : public Data { | |
| 2347 2378 |  | 
| 2348 2379 | 
             
              bool IsWebAssemblyCompiledModule() const;
         | 
| 2349 2380 |  | 
| 2381 | 
            +
              V8_WARN_UNUSED_RESULT MaybeLocal<BigInt> ToBigInt(
         | 
| 2382 | 
            +
                  Local<Context> context) const;
         | 
| 2350 2383 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Boolean> ToBoolean(
         | 
| 2351 2384 | 
             
                  Local<Context> context) const;
         | 
| 2352 2385 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Number> ToNumber(
         | 
| @@ -2369,34 +2402,24 @@ class V8_EXPORT Value : public Data { | |
| 2369 2402 | 
             
                                Local<Number> ToNumber(Isolate* isolate) const);
         | 
| 2370 2403 | 
             
              V8_DEPRECATE_SOON("Use maybe version",
         | 
| 2371 2404 | 
             
                                Local<String> ToString(Isolate* isolate) const);
         | 
| 2372 | 
            -
              V8_DEPRECATED("Use maybe version",
         | 
| 2373 | 
            -
                            Local<String> ToDetailString(Isolate* isolate) const);
         | 
| 2374 2405 | 
             
              V8_DEPRECATE_SOON("Use maybe version",
         | 
| 2375 2406 | 
             
                                Local<Object> ToObject(Isolate* isolate) const);
         | 
| 2376 2407 | 
             
              V8_DEPRECATE_SOON("Use maybe version",
         | 
| 2377 2408 | 
             
                                Local<Integer> ToInteger(Isolate* isolate) const);
         | 
| 2378 | 
            -
              V8_DEPRECATED("Use maybe version",
         | 
| 2379 | 
            -
                            Local<Uint32> ToUint32(Isolate* isolate) const);
         | 
| 2380 2409 | 
             
              V8_DEPRECATE_SOON("Use maybe version",
         | 
| 2381 2410 | 
             
                                Local<Int32> ToInt32(Isolate* isolate) const);
         | 
| 2382 2411 |  | 
| 2383 2412 | 
             
              inline V8_DEPRECATE_SOON("Use maybe version",
         | 
| 2384 2413 | 
             
                                       Local<Boolean> ToBoolean() const);
         | 
| 2385 | 
            -
              inline V8_DEPRECATED("Use maybe version", Local<Number> ToNumber() const);
         | 
| 2386 2414 | 
             
              inline V8_DEPRECATE_SOON("Use maybe version", Local<String> ToString() const);
         | 
| 2387 | 
            -
              inline V8_DEPRECATED("Use maybe version",
         | 
| 2388 | 
            -
                                   Local<String> ToDetailString() const);
         | 
| 2389 2415 | 
             
              inline V8_DEPRECATE_SOON("Use maybe version", Local<Object> ToObject() const);
         | 
| 2390 2416 | 
             
              inline V8_DEPRECATE_SOON("Use maybe version",
         | 
| 2391 2417 | 
             
                                       Local<Integer> ToInteger() const);
         | 
| 2392 | 
            -
              inline V8_DEPRECATED("Use maybe version", Local<Uint32> ToUint32() const);
         | 
| 2393 | 
            -
              inline V8_DEPRECATED("Use maybe version", Local<Int32> ToInt32() const);
         | 
| 2394 2418 |  | 
| 2395 2419 | 
             
              /**
         | 
| 2396 2420 | 
             
               * Attempts to convert a string to an array index.
         | 
| 2397 2421 | 
             
               * Returns an empty handle if the conversion fails.
         | 
| 2398 2422 | 
             
               */
         | 
| 2399 | 
            -
              V8_DEPRECATED("Use maybe version", Local<Uint32> ToArrayIndex() const);
         | 
| 2400 2423 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Uint32> ToArrayIndex(
         | 
| 2401 2424 | 
             
                  Local<Context> context) const;
         | 
| 2402 2425 |  | 
| @@ -2727,13 +2750,6 @@ class V8_EXPORT String : public Name { | |
| 2727 2750 | 
             
                  Isolate* isolate, const char* data, v8::NewStringType type,
         | 
| 2728 2751 | 
             
                  int length = -1);
         | 
| 2729 2752 |  | 
| 2730 | 
            -
              /** Allocates a new string from Latin-1 data.*/
         | 
| 2731 | 
            -
              static V8_DEPRECATED(
         | 
| 2732 | 
            -
                  "Use maybe version",
         | 
| 2733 | 
            -
                  Local<String> NewFromOneByte(Isolate* isolate, const uint8_t* data,
         | 
| 2734 | 
            -
                                               NewStringType type = kNormalString,
         | 
| 2735 | 
            -
                                               int length = -1));
         | 
| 2736 | 
            -
             | 
| 2737 2753 | 
             
              /** Allocates a new string from Latin-1 data.  Only returns an empty value
         | 
| 2738 2754 | 
             
               * when length > kMaxLength. **/
         | 
| 2739 2755 | 
             
              static V8_WARN_UNUSED_RESULT MaybeLocal<String> NewFromOneByte(
         | 
| @@ -2767,9 +2783,6 @@ class V8_EXPORT String : public Name { | |
| 2767 2783 | 
             
               * should the underlying buffer be deallocated or modified except through the
         | 
| 2768 2784 | 
             
               * destructor of the external string resource.
         | 
| 2769 2785 | 
             
               */
         | 
| 2770 | 
            -
              static V8_DEPRECATED("Use maybe version",
         | 
| 2771 | 
            -
                                   Local<String> NewExternal(
         | 
| 2772 | 
            -
                                       Isolate* isolate, ExternalStringResource* resource));
         | 
| 2773 2786 | 
             
              static V8_WARN_UNUSED_RESULT MaybeLocal<String> NewExternalTwoByte(
         | 
| 2774 2787 | 
             
                  Isolate* isolate, ExternalStringResource* resource);
         | 
| 2775 2788 |  | 
| @@ -2824,8 +2837,8 @@ class V8_EXPORT String : public Name { | |
| 2824 2837 | 
             
               */
         | 
| 2825 2838 | 
             
              class V8_EXPORT Utf8Value {
         | 
| 2826 2839 | 
             
               public:
         | 
| 2827 | 
            -
                 | 
| 2828 | 
            -
             | 
| 2840 | 
            +
                V8_DEPRECATED("Use Isolate version",
         | 
| 2841 | 
            +
                              explicit Utf8Value(Local<v8::Value> obj));
         | 
| 2829 2842 | 
             
                Utf8Value(Isolate* isolate, Local<v8::Value> obj);
         | 
| 2830 2843 | 
             
                ~Utf8Value();
         | 
| 2831 2844 | 
             
                char* operator*() { return str_; }
         | 
| @@ -2849,8 +2862,7 @@ class V8_EXPORT String : public Name { | |
| 2849 2862 | 
             
               */
         | 
| 2850 2863 | 
             
              class V8_EXPORT Value {
         | 
| 2851 2864 | 
             
               public:
         | 
| 2852 | 
            -
                 | 
| 2853 | 
            -
                                  explicit Value(Local<v8::Value> obj));
         | 
| 2865 | 
            +
                V8_DEPRECATED("Use Isolate version", explicit Value(Local<v8::Value> obj));
         | 
| 2854 2866 | 
             
                Value(Isolate* isolate, Local<v8::Value> obj);
         | 
| 2855 2867 | 
             
                ~Value();
         | 
| 2856 2868 | 
             
                uint16_t* operator*() { return str_; }
         | 
| @@ -2954,8 +2966,12 @@ class V8_EXPORT Private : public Data { | |
| 2954 2966 | 
             
               */
         | 
| 2955 2967 | 
             
              static Local<Private> ForApi(Isolate* isolate, Local<String> name);
         | 
| 2956 2968 |  | 
| 2969 | 
            +
              V8_INLINE static Private* Cast(Data* data);
         | 
| 2970 | 
            +
             | 
| 2957 2971 | 
             
             private:
         | 
| 2958 2972 | 
             
              Private();
         | 
| 2973 | 
            +
             | 
| 2974 | 
            +
              static void CheckCast(Data* that);
         | 
| 2959 2975 | 
             
            };
         | 
| 2960 2976 |  | 
| 2961 2977 |  | 
| @@ -3015,6 +3031,19 @@ class V8_EXPORT Uint32 : public Integer { | |
| 3015 3031 | 
             
              static void CheckCast(v8::Value* obj);
         | 
| 3016 3032 | 
             
            };
         | 
| 3017 3033 |  | 
| 3034 | 
            +
            /**
         | 
| 3035 | 
            +
             * A JavaScript BigInt value (https://tc39.github.io/proposal-bigint)
         | 
| 3036 | 
            +
             */
         | 
| 3037 | 
            +
            class V8_EXPORT BigInt : public Primitive {
         | 
| 3038 | 
            +
             public:
         | 
| 3039 | 
            +
              static Local<BigInt> New(Isolate* isolate, int64_t value);
         | 
| 3040 | 
            +
              V8_INLINE static BigInt* Cast(v8::Value* obj);
         | 
| 3041 | 
            +
             | 
| 3042 | 
            +
             private:
         | 
| 3043 | 
            +
              BigInt();
         | 
| 3044 | 
            +
              static void CheckCast(v8::Value* obj);
         | 
| 3045 | 
            +
            };
         | 
| 3046 | 
            +
             | 
| 3018 3047 | 
             
            /**
         | 
| 3019 3048 | 
             
             * PropertyAttribute.
         | 
| 3020 3049 | 
             
             */
         | 
| @@ -3080,6 +3109,15 @@ enum PropertyFilter { | |
| 3080 3109 | 
             
              SKIP_SYMBOLS = 16
         | 
| 3081 3110 | 
             
            };
         | 
| 3082 3111 |  | 
| 3112 | 
            +
            /**
         | 
| 3113 | 
            +
             * Options for marking whether callbacks may trigger JS-observable side effects.
         | 
| 3114 | 
            +
             * Side-effect-free callbacks are whitelisted during debug evaluation with
         | 
| 3115 | 
            +
             * throwOnSideEffect. It applies when calling a Function, FunctionTemplate,
         | 
| 3116 | 
            +
             * or an Accessor's getter callback. For Interceptors, please see
         | 
| 3117 | 
            +
             * PropertyHandlerFlags's kHasNoSideEffect.
         | 
| 3118 | 
            +
             */
         | 
| 3119 | 
            +
            enum class SideEffectType { kHasSideEffect, kHasNoSideEffect };
         | 
| 3120 | 
            +
             | 
| 3083 3121 | 
             
            /**
         | 
| 3084 3122 | 
             
             * Keys/Properties filter enums:
         | 
| 3085 3123 | 
             
             *
         | 
| @@ -3091,10 +3129,16 @@ enum class KeyCollectionMode { kOwnOnly, kIncludePrototypes }; | |
| 3091 3129 |  | 
| 3092 3130 | 
             
            /**
         | 
| 3093 3131 | 
             
             * kIncludesIndices allows for integer indices to be collected, while
         | 
| 3094 | 
            -
             * kSkipIndices will exclude integer  | 
| 3132 | 
            +
             * kSkipIndices will exclude integer indices from being collected.
         | 
| 3095 3133 | 
             
             */
         | 
| 3096 3134 | 
             
            enum class IndexFilter { kIncludeIndices, kSkipIndices };
         | 
| 3097 3135 |  | 
| 3136 | 
            +
            /**
         | 
| 3137 | 
            +
             * kConvertToString will convert integer indices to strings.
         | 
| 3138 | 
            +
             * kKeepNumbers will return numbers for integer indices.
         | 
| 3139 | 
            +
             */
         | 
| 3140 | 
            +
            enum class KeyConversionMode { kConvertToString, kKeepNumbers };
         | 
| 3141 | 
            +
             | 
| 3098 3142 | 
             
            /**
         | 
| 3099 3143 | 
             
             * Integrity level for objects.
         | 
| 3100 3144 | 
             
             */
         | 
| @@ -3155,19 +3199,6 @@ class V8_EXPORT Object : public Value { | |
| 3155 3199 | 
             
              V8_WARN_UNUSED_RESULT Maybe<bool> DefineProperty(
         | 
| 3156 3200 | 
             
                  Local<Context> context, Local<Name> key, PropertyDescriptor& descriptor);
         | 
| 3157 3201 |  | 
| 3158 | 
            -
              // Sets an own property on this object bypassing interceptors and
         | 
| 3159 | 
            -
              // overriding accessors or read-only properties.
         | 
| 3160 | 
            -
              //
         | 
| 3161 | 
            -
              // Note that if the object has an interceptor the property will be set
         | 
| 3162 | 
            -
              // locally, but since the interceptor takes precedence the local property
         | 
| 3163 | 
            -
              // will only be returned if the interceptor doesn't return a value.
         | 
| 3164 | 
            -
              //
         | 
| 3165 | 
            -
              // Note also that this only works for named properties.
         | 
| 3166 | 
            -
              V8_DEPRECATED("Use CreateDataProperty / DefineOwnProperty",
         | 
| 3167 | 
            -
                            Maybe<bool> ForceSet(Local<Context> context, Local<Value> key,
         | 
| 3168 | 
            -
                                                 Local<Value> value,
         | 
| 3169 | 
            -
                                                 PropertyAttribute attribs = None));
         | 
| 3170 | 
            -
             | 
| 3171 3202 | 
             
              V8_DEPRECATE_SOON("Use maybe version", Local<Value> Get(Local<Value> key));
         | 
| 3172 3203 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
         | 
| 3173 3204 | 
             
                                                          Local<Value> key);
         | 
| @@ -3181,16 +3212,12 @@ class V8_EXPORT Object : public Value { | |
| 3181 3212 | 
             
               * any combination of ReadOnly, DontEnum and DontDelete. Returns
         | 
| 3182 3213 | 
             
               * None when the property doesn't exist.
         | 
| 3183 3214 | 
             
               */
         | 
| 3184 | 
            -
              V8_DEPRECATED("Use maybe version",
         | 
| 3185 | 
            -
                            PropertyAttribute GetPropertyAttributes(Local<Value> key));
         | 
| 3186 3215 | 
             
              V8_WARN_UNUSED_RESULT Maybe<PropertyAttribute> GetPropertyAttributes(
         | 
| 3187 3216 | 
             
                  Local<Context> context, Local<Value> key);
         | 
| 3188 3217 |  | 
| 3189 3218 | 
             
              /**
         | 
| 3190 3219 | 
             
               * Returns Object.getOwnPropertyDescriptor as per ES2016 section 19.1.2.6.
         | 
| 3191 3220 | 
             
               */
         | 
| 3192 | 
            -
              V8_DEPRECATED("Use maybe version",
         | 
| 3193 | 
            -
                            Local<Value> GetOwnPropertyDescriptor(Local<Name> key));
         | 
| 3194 3221 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Value> GetOwnPropertyDescriptor(
         | 
| 3195 3222 | 
             
                  Local<Context> context, Local<Name> key);
         | 
| 3196 3223 |  | 
| @@ -3217,35 +3244,20 @@ class V8_EXPORT Object : public Value { | |
| 3217 3244 | 
             
              V8_WARN_UNUSED_RESULT Maybe<bool> Delete(Local<Context> context,
         | 
| 3218 3245 | 
             
                                                       Local<Value> key);
         | 
| 3219 3246 |  | 
| 3220 | 
            -
               | 
| 3221 | 
            -
              V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
         | 
| 3222 | 
            -
                                                    uint32_t index);
         | 
| 3247 | 
            +
              V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context, uint32_t index);
         | 
| 3223 3248 |  | 
| 3224 | 
            -
              V8_DEPRECATED("Use maybe version", bool Delete(uint32_t index));
         | 
| 3225 3249 | 
             
              V8_WARN_UNUSED_RESULT Maybe<bool> Delete(Local<Context> context,
         | 
| 3226 3250 | 
             
                                                       uint32_t index);
         | 
| 3227 3251 |  | 
| 3228 | 
            -
               | 
| 3229 | 
            -
             | 
| 3230 | 
            -
             | 
| 3231 | 
            -
             | 
| 3232 | 
            -
             | 
| 3233 | 
            -
             | 
| 3234 | 
            -
             | 
| 3235 | 
            -
             | 
| 3236 | 
            -
             | 
| 3237 | 
            -
                                             AccessorNameGetterCallback getter,
         | 
| 3238 | 
            -
                                             AccessorNameSetterCallback setter = 0,
         | 
| 3239 | 
            -
                                             Local<Value> data = Local<Value>(),
         | 
| 3240 | 
            -
                                             AccessControl settings = DEFAULT,
         | 
| 3241 | 
            -
                                             PropertyAttribute attribute = None));
         | 
| 3242 | 
            -
              V8_WARN_UNUSED_RESULT Maybe<bool> SetAccessor(Local<Context> context,
         | 
| 3243 | 
            -
                                      Local<Name> name,
         | 
| 3244 | 
            -
                                      AccessorNameGetterCallback getter,
         | 
| 3245 | 
            -
                                      AccessorNameSetterCallback setter = 0,
         | 
| 3246 | 
            -
                                      MaybeLocal<Value> data = MaybeLocal<Value>(),
         | 
| 3247 | 
            -
                                      AccessControl settings = DEFAULT,
         | 
| 3248 | 
            -
                                      PropertyAttribute attribute = None);
         | 
| 3252 | 
            +
              /**
         | 
| 3253 | 
            +
               * Note: SideEffectType affects the getter only, not the setter.
         | 
| 3254 | 
            +
               */
         | 
| 3255 | 
            +
              V8_WARN_UNUSED_RESULT Maybe<bool> SetAccessor(
         | 
| 3256 | 
            +
                  Local<Context> context, Local<Name> name,
         | 
| 3257 | 
            +
                  AccessorNameGetterCallback getter, AccessorNameSetterCallback setter = 0,
         | 
| 3258 | 
            +
                  MaybeLocal<Value> data = MaybeLocal<Value>(),
         | 
| 3259 | 
            +
                  AccessControl settings = DEFAULT, PropertyAttribute attribute = None,
         | 
| 3260 | 
            +
                  SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect);
         | 
| 3249 3261 |  | 
| 3250 3262 | 
             
              void SetAccessorProperty(Local<Name> name, Local<Function> getter,
         | 
| 3251 3263 | 
             
                                       Local<Function> setter = Local<Function>(),
         | 
| @@ -3260,7 +3272,22 @@ class V8_EXPORT Object : public Value { | |
| 3260 3272 | 
             
                  Local<Context> context, Local<Name> name,
         | 
| 3261 3273 | 
             
                  AccessorNameGetterCallback getter,
         | 
| 3262 3274 | 
             
                  AccessorNameSetterCallback setter = nullptr,
         | 
| 3263 | 
            -
                  Local<Value> data = Local<Value>(), PropertyAttribute attributes = None | 
| 3275 | 
            +
                  Local<Value> data = Local<Value>(), PropertyAttribute attributes = None,
         | 
| 3276 | 
            +
                  SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect);
         | 
| 3277 | 
            +
             | 
| 3278 | 
            +
              /**
         | 
| 3279 | 
            +
               * Attempts to create a property with the given name which behaves like a data
         | 
| 3280 | 
            +
               * property, except that the provided getter is invoked (and provided with the
         | 
| 3281 | 
            +
               * data value) to supply its value the first time it is read. After the
         | 
| 3282 | 
            +
               * property is accessed once, it is replaced with an ordinary data property.
         | 
| 3283 | 
            +
               *
         | 
| 3284 | 
            +
               * Analogous to Template::SetLazyDataProperty.
         | 
| 3285 | 
            +
               */
         | 
| 3286 | 
            +
              V8_WARN_UNUSED_RESULT Maybe<bool> SetLazyDataProperty(
         | 
| 3287 | 
            +
                  Local<Context> context, Local<Name> name,
         | 
| 3288 | 
            +
                  AccessorNameGetterCallback getter, Local<Value> data = Local<Value>(),
         | 
| 3289 | 
            +
                  PropertyAttribute attributes = None,
         | 
| 3290 | 
            +
                  SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect);
         | 
| 3264 3291 |  | 
| 3265 3292 | 
             
              /**
         | 
| 3266 3293 | 
             
               * Functionality for private properties.
         | 
| @@ -3285,7 +3312,8 @@ class V8_EXPORT Object : public Value { | |
| 3285 3312 | 
             
                  Local<Context> context);
         | 
| 3286 3313 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Array> GetPropertyNames(
         | 
| 3287 3314 | 
             
                  Local<Context> context, KeyCollectionMode mode,
         | 
| 3288 | 
            -
                  PropertyFilter property_filter, IndexFilter index_filter | 
| 3315 | 
            +
                  PropertyFilter property_filter, IndexFilter index_filter,
         | 
| 3316 | 
            +
                  KeyConversionMode key_conversion = KeyConversionMode::kKeepNumbers);
         | 
| 3289 3317 |  | 
| 3290 3318 | 
             
              /**
         | 
| 3291 3319 | 
             
               * This function has the same functionality as GetPropertyNames but
         | 
| @@ -3303,7 +3331,8 @@ class V8_EXPORT Object : public Value { | |
| 3303 3331 | 
             
               * be enumerated by a for-in statement over this object.
         | 
| 3304 3332 | 
             
               */
         | 
| 3305 3333 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Array> GetOwnPropertyNames(
         | 
| 3306 | 
            -
                  Local<Context> context, PropertyFilter filter | 
| 3334 | 
            +
                  Local<Context> context, PropertyFilter filter,
         | 
| 3335 | 
            +
                  KeyConversionMode key_conversion = KeyConversionMode::kKeepNumbers);
         | 
| 3307 3336 |  | 
| 3308 3337 | 
             
              /**
         | 
| 3309 3338 | 
             
               * Get the prototype object.  This does not skip objects marked to
         | 
| @@ -3317,7 +3346,6 @@ class V8_EXPORT Object : public Value { | |
| 3317 3346 | 
             
               * be skipped by __proto__ and it does not consult the security
         | 
| 3318 3347 | 
             
               * handler.
         | 
| 3319 3348 | 
             
               */
         | 
| 3320 | 
            -
              V8_DEPRECATED("Use maybe version", bool SetPrototype(Local<Value> prototype));
         | 
| 3321 3349 | 
             
              V8_WARN_UNUSED_RESULT Maybe<bool> SetPrototype(Local<Context> context,
         | 
| 3322 3350 | 
             
                                                             Local<Value> prototype);
         | 
| 3323 3351 |  | 
| @@ -3332,7 +3360,6 @@ class V8_EXPORT Object : public Value { | |
| 3332 3360 | 
             
               * This is different from Value::ToString() that may call
         | 
| 3333 3361 | 
             
               * user-defined toString function. This one does not.
         | 
| 3334 3362 | 
             
               */
         | 
| 3335 | 
            -
              V8_DEPRECATED("Use maybe version", Local<String> ObjectProtoToString());
         | 
| 3336 3363 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<String> ObjectProtoToString(
         | 
| 3337 3364 | 
             
                  Local<Context> context);
         | 
| 3338 3365 |  | 
| @@ -3383,9 +3410,6 @@ class V8_EXPORT Object : public Value { | |
| 3383 3410 | 
             
              void SetAlignedPointerInInternalFields(int argc, int indices[],
         | 
| 3384 3411 | 
             
                                                     void* values[]);
         | 
| 3385 3412 |  | 
| 3386 | 
            -
              // Testers for local properties.
         | 
| 3387 | 
            -
              V8_DEPRECATED("Use maybe version", bool HasOwnProperty(Local<String> key));
         | 
| 3388 | 
            -
             | 
| 3389 3413 | 
             
              /**
         | 
| 3390 3414 | 
             
               * HasOwnProperty() is like JavaScript's Object.prototype.hasOwnProperty().
         | 
| 3391 3415 | 
             
               *
         | 
| @@ -3425,9 +3449,6 @@ class V8_EXPORT Object : public Value { | |
| 3425 3449 | 
             
               * If result.IsEmpty() no real property was located in the prototype chain.
         | 
| 3426 3450 | 
             
               * This means interceptors in the prototype chain are not called.
         | 
| 3427 3451 | 
             
               */
         | 
| 3428 | 
            -
              V8_DEPRECATED(
         | 
| 3429 | 
            -
                  "Use maybe version",
         | 
| 3430 | 
            -
                  Local<Value> GetRealNamedPropertyInPrototypeChain(Local<String> key));
         | 
| 3431 3452 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Value> GetRealNamedPropertyInPrototypeChain(
         | 
| 3432 3453 | 
             
                  Local<Context> context, Local<Name> key);
         | 
| 3433 3454 |  | 
| @@ -3436,10 +3457,6 @@ class V8_EXPORT Object : public Value { | |
| 3436 3457 | 
             
               * which can be None or any combination of ReadOnly, DontEnum and DontDelete.
         | 
| 3437 3458 | 
             
               * Interceptors in the prototype chain are not called.
         | 
| 3438 3459 | 
             
               */
         | 
| 3439 | 
            -
              V8_DEPRECATED(
         | 
| 3440 | 
            -
                  "Use maybe version",
         | 
| 3441 | 
            -
                  Maybe<PropertyAttribute> GetRealNamedPropertyAttributesInPrototypeChain(
         | 
| 3442 | 
            -
                      Local<String> key));
         | 
| 3443 3460 | 
             
              V8_WARN_UNUSED_RESULT Maybe<PropertyAttribute>
         | 
| 3444 3461 | 
             
              GetRealNamedPropertyAttributesInPrototypeChain(Local<Context> context,
         | 
| 3445 3462 | 
             
                                                             Local<Name> key);
         | 
| @@ -3449,8 +3466,6 @@ class V8_EXPORT Object : public Value { | |
| 3449 3466 | 
             
               * in the prototype chain.
         | 
| 3450 3467 | 
             
               * This means interceptors in the prototype chain are not called.
         | 
| 3451 3468 | 
             
               */
         | 
| 3452 | 
            -
              V8_DEPRECATED("Use maybe version",
         | 
| 3453 | 
            -
                            Local<Value> GetRealNamedProperty(Local<String> key));
         | 
| 3454 3469 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Value> GetRealNamedProperty(
         | 
| 3455 3470 | 
             
                  Local<Context> context, Local<Name> key);
         | 
| 3456 3471 |  | 
| @@ -3459,9 +3474,6 @@ class V8_EXPORT Object : public Value { | |
| 3459 3474 | 
             
               * None or any combination of ReadOnly, DontEnum and DontDelete.
         | 
| 3460 3475 | 
             
               * Interceptors in the prototype chain are not called.
         | 
| 3461 3476 | 
             
               */
         | 
| 3462 | 
            -
              V8_DEPRECATED("Use maybe version",
         | 
| 3463 | 
            -
                            Maybe<PropertyAttribute> GetRealNamedPropertyAttributes(
         | 
| 3464 | 
            -
                                Local<String> key));
         | 
| 3465 3477 | 
             
              V8_WARN_UNUSED_RESULT Maybe<PropertyAttribute> GetRealNamedPropertyAttributes(
         | 
| 3466 3478 | 
             
                  Local<Context> context, Local<Name> key);
         | 
| 3467 3479 |  | 
| @@ -3514,9 +3526,6 @@ class V8_EXPORT Object : public Value { | |
| 3514 3526 | 
             
               * Call an Object as a function if a callback is set by the
         | 
| 3515 3527 | 
             
               * ObjectTemplate::SetCallAsFunctionHandler method.
         | 
| 3516 3528 | 
             
               */
         | 
| 3517 | 
            -
              V8_DEPRECATED("Use maybe version",
         | 
| 3518 | 
            -
                            Local<Value> CallAsFunction(Local<Value> recv, int argc,
         | 
| 3519 | 
            -
                                                        Local<Value> argv[]));
         | 
| 3520 3529 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Value> CallAsFunction(Local<Context> context,
         | 
| 3521 3530 | 
             
                                                                     Local<Value> recv,
         | 
| 3522 3531 | 
             
                                                                     int argc,
         | 
| @@ -3527,15 +3536,13 @@ class V8_EXPORT Object : public Value { | |
| 3527 3536 | 
             
               * ObjectTemplate::SetCallAsFunctionHandler method.
         | 
| 3528 3537 | 
             
               * Note: This method behaves like the Function::NewInstance method.
         | 
| 3529 3538 | 
             
               */
         | 
| 3530 | 
            -
              V8_DEPRECATED("Use maybe version",
         | 
| 3531 | 
            -
                            Local<Value> CallAsConstructor(int argc, Local<Value> argv[]));
         | 
| 3532 3539 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Value> CallAsConstructor(
         | 
| 3533 3540 | 
             
                  Local<Context> context, int argc, Local<Value> argv[]);
         | 
| 3534 3541 |  | 
| 3535 3542 | 
             
              /**
         | 
| 3536 3543 | 
             
               * Return the isolate to which the Object belongs to.
         | 
| 3537 3544 | 
             
               */
         | 
| 3538 | 
            -
               | 
| 3545 | 
            +
              Isolate* GetIsolate();
         | 
| 3539 3546 |  | 
| 3540 3547 | 
             
              static Local<Object> New(Isolate* isolate);
         | 
| 3541 3548 |  | 
| @@ -3556,16 +3563,6 @@ class V8_EXPORT Array : public Object { | |
| 3556 3563 | 
             
             public:
         | 
| 3557 3564 | 
             
              uint32_t Length() const;
         | 
| 3558 3565 |  | 
| 3559 | 
            -
              /**
         | 
| 3560 | 
            -
               * Clones an element at index |index|.  Returns an empty
         | 
| 3561 | 
            -
               * handle if cloning fails (for any reason).
         | 
| 3562 | 
            -
               */
         | 
| 3563 | 
            -
              V8_DEPRECATED("Cloning is not supported.",
         | 
| 3564 | 
            -
                            Local<Object> CloneElementAt(uint32_t index));
         | 
| 3565 | 
            -
              V8_DEPRECATED("Cloning is not supported.",
         | 
| 3566 | 
            -
                            MaybeLocal<Object> CloneElementAt(Local<Context> context,
         | 
| 3567 | 
            -
                                                              uint32_t index));
         | 
| 3568 | 
            -
             | 
| 3569 3566 | 
             
              /**
         | 
| 3570 3567 | 
             
               * Creates a JavaScript array with the given length. If the length
         | 
| 3571 3568 | 
             
               * is negative the returned array will have length 0.
         | 
| @@ -3709,8 +3706,6 @@ class FunctionCallbackInfo { | |
| 3709 3706 | 
             
              V8_INLINE int Length() const;
         | 
| 3710 3707 | 
             
              /** Accessor for the available arguments. */
         | 
| 3711 3708 | 
             
              V8_INLINE Local<Value> operator[](int i) const;
         | 
| 3712 | 
            -
              V8_INLINE V8_DEPRECATED("Use Data() to explicitly pass Callee instead",
         | 
| 3713 | 
            -
                                      Local<Function> Callee() const);
         | 
| 3714 3709 | 
             
              /** Returns the receiver. This corresponds to the "this" value. */
         | 
| 3715 3710 | 
             
              V8_INLINE Local<Object> This() const;
         | 
| 3716 3711 | 
             
              /**
         | 
| @@ -3735,7 +3730,7 @@ class FunctionCallbackInfo { | |
| 3735 3730 | 
             
              /** The ReturnValue for the call. */
         | 
| 3736 3731 | 
             
              V8_INLINE ReturnValue<T> GetReturnValue() const;
         | 
| 3737 3732 | 
             
              // This shouldn't be public, but the arm compiler needs it.
         | 
| 3738 | 
            -
              static const int kArgsLength =  | 
| 3733 | 
            +
              static const int kArgsLength = 6;
         | 
| 3739 3734 |  | 
| 3740 3735 | 
             
             protected:
         | 
| 3741 3736 | 
             
              friend class internal::FunctionCallbackArguments;
         | 
| @@ -3746,9 +3741,7 @@ class FunctionCallbackInfo { | |
| 3746 3741 | 
             
              static const int kReturnValueDefaultValueIndex = 2;
         | 
| 3747 3742 | 
             
              static const int kReturnValueIndex = 3;
         | 
| 3748 3743 | 
             
              static const int kDataIndex = 4;
         | 
| 3749 | 
            -
              static const int  | 
| 3750 | 
            -
              static const int kContextSaveIndex = 6;
         | 
| 3751 | 
            -
              static const int kNewTargetIndex = 7;
         | 
| 3744 | 
            +
              static const int kNewTargetIndex = 5;
         | 
| 3752 3745 |  | 
| 3753 3746 | 
             
              V8_INLINE FunctionCallbackInfo(internal::Object** implicit_args,
         | 
| 3754 3747 | 
             
                                             internal::Object** values, int length);
         | 
| @@ -3886,18 +3879,16 @@ class V8_EXPORT Function : public Object { | |
| 3886 3879 | 
             
              static MaybeLocal<Function> New(
         | 
| 3887 3880 | 
             
                  Local<Context> context, FunctionCallback callback,
         | 
| 3888 3881 | 
             
                  Local<Value> data = Local<Value>(), int length = 0,
         | 
| 3889 | 
            -
                  ConstructorBehavior behavior = ConstructorBehavior::kAllow | 
| 3882 | 
            +
                  ConstructorBehavior behavior = ConstructorBehavior::kAllow,
         | 
| 3883 | 
            +
                  SideEffectType side_effect_type = SideEffectType::kHasSideEffect);
         | 
| 3890 3884 | 
             
              static V8_DEPRECATE_SOON(
         | 
| 3891 3885 | 
             
                  "Use maybe version",
         | 
| 3892 3886 | 
             
                  Local<Function> New(Isolate* isolate, FunctionCallback callback,
         | 
| 3893 3887 | 
             
                                      Local<Value> data = Local<Value>(), int length = 0));
         | 
| 3894 3888 |  | 
| 3895 | 
            -
              V8_DEPRECATED("Use maybe version",
         | 
| 3896 | 
            -
                            Local<Object> NewInstance(int argc, Local<Value> argv[]) const);
         | 
| 3897 3889 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Object> NewInstance(
         | 
| 3898 3890 | 
             
                  Local<Context> context, int argc, Local<Value> argv[]) const;
         | 
| 3899 3891 |  | 
| 3900 | 
            -
              V8_DEPRECATED("Use maybe version", Local<Object> NewInstance() const);
         | 
| 3901 3892 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Object> NewInstance(
         | 
| 3902 3893 | 
             
                  Local<Context> context) const {
         | 
| 3903 3894 | 
             
                return NewInstance(context, 0, nullptr);
         | 
| @@ -3944,11 +3935,6 @@ class V8_EXPORT Function : public Object { | |
| 3944 3935 | 
             
               */
         | 
| 3945 3936 | 
             
              int GetScriptColumnNumber() const;
         | 
| 3946 3937 |  | 
| 3947 | 
            -
              /**
         | 
| 3948 | 
            -
               * Tells whether this function is builtin.
         | 
| 3949 | 
            -
               */
         | 
| 3950 | 
            -
              V8_DEPRECATED("this should no longer be used.", bool IsBuiltin() const);
         | 
| 3951 | 
            -
             | 
| 3952 3938 | 
             
              /**
         | 
| 3953 3939 | 
             
               * Returns scriptId.
         | 
| 3954 3940 | 
             
               */
         | 
| @@ -3990,8 +3976,8 @@ class V8_EXPORT Promise : public Object { | |
| 3990 3976 | 
             
                /**
         | 
| 3991 3977 | 
             
                 * Create a new resolver, along with an associated promise in pending state.
         | 
| 3992 3978 | 
             
                 */
         | 
| 3993 | 
            -
                static  | 
| 3994 | 
            -
             | 
| 3979 | 
            +
                static V8_DEPRECATED("Use maybe version",
         | 
| 3980 | 
            +
                                     Local<Resolver> New(Isolate* isolate));
         | 
| 3995 3981 | 
             
                static V8_WARN_UNUSED_RESULT MaybeLocal<Resolver> New(
         | 
| 3996 3982 | 
             
                    Local<Context> context);
         | 
| 3997 3983 |  | 
| @@ -4004,11 +3990,11 @@ class V8_EXPORT Promise : public Object { | |
| 4004 3990 | 
             
                 * Resolve/reject the associated promise with a given value.
         | 
| 4005 3991 | 
             
                 * Ignored if the promise is no longer pending.
         | 
| 4006 3992 | 
             
                 */
         | 
| 4007 | 
            -
                 | 
| 3993 | 
            +
                V8_DEPRECATED("Use maybe version", void Resolve(Local<Value> value));
         | 
| 4008 3994 | 
             
                V8_WARN_UNUSED_RESULT Maybe<bool> Resolve(Local<Context> context,
         | 
| 4009 3995 | 
             
                                                          Local<Value> value);
         | 
| 4010 3996 |  | 
| 4011 | 
            -
                 | 
| 3997 | 
            +
                V8_DEPRECATED("Use maybe version", void Reject(Local<Value> value));
         | 
| 4012 3998 | 
             
                V8_WARN_UNUSED_RESULT Maybe<bool> Reject(Local<Context> context,
         | 
| 4013 3999 | 
             
                                                         Local<Value> value);
         | 
| 4014 4000 |  | 
| @@ -4025,13 +4011,9 @@ class V8_EXPORT Promise : public Object { | |
| 4025 4011 | 
             
               * an argument. If the promise is already resolved/rejected, the handler is
         | 
| 4026 4012 | 
             
               * invoked at the end of turn.
         | 
| 4027 4013 | 
             
               */
         | 
| 4028 | 
            -
              V8_DEPRECATED("Use maybe version",
         | 
| 4029 | 
            -
                            Local<Promise> Catch(Local<Function> handler));
         | 
| 4030 4014 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Promise> Catch(Local<Context> context,
         | 
| 4031 4015 | 
             
                                                              Local<Function> handler);
         | 
| 4032 4016 |  | 
| 4033 | 
            -
              V8_DEPRECATED("Use maybe version",
         | 
| 4034 | 
            -
                            Local<Promise> Then(Local<Function> handler));
         | 
| 4035 4017 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Promise> Then(Local<Context> context,
         | 
| 4036 4018 | 
             
                                                             Local<Function> handler);
         | 
| 4037 4019 |  | 
| @@ -4140,7 +4122,7 @@ class V8_EXPORT PropertyDescriptor { | |
| 4140 4122 | 
             
             */
         | 
| 4141 4123 | 
             
            class V8_EXPORT Proxy : public Object {
         | 
| 4142 4124 | 
             
             public:
         | 
| 4143 | 
            -
              Local< | 
| 4125 | 
            +
              Local<Value> GetTarget();
         | 
| 4144 4126 | 
             
              Local<Value> GetHandler();
         | 
| 4145 4127 | 
             
              bool IsRevoked();
         | 
| 4146 4128 | 
             
              void Revoke();
         | 
| @@ -4164,11 +4146,15 @@ class V8_EXPORT Proxy : public Object { | |
| 4164 4146 | 
             
            class V8_EXPORT WasmCompiledModule : public Object {
         | 
| 4165 4147 | 
             
             public:
         | 
| 4166 4148 | 
             
              typedef std::pair<std::unique_ptr<const uint8_t[]>, size_t> SerializedModule;
         | 
| 4167 | 
            -
               | 
| 4149 | 
            +
              /**
         | 
| 4150 | 
            +
               * A buffer that is owned by the caller.
         | 
| 4151 | 
            +
               */
         | 
| 4168 4152 | 
             
              typedef std::pair<const uint8_t*, size_t> CallerOwnedBuffer;
         | 
| 4169 4153 |  | 
| 4170 | 
            -
               | 
| 4171 | 
            -
             | 
| 4154 | 
            +
              /**
         | 
| 4155 | 
            +
               * An opaque, native heap object for transferring wasm modules. It
         | 
| 4156 | 
            +
               * supports move semantics, and does not support copy semantics.
         | 
| 4157 | 
            +
               */
         | 
| 4172 4158 | 
             
              class TransferrableModule final {
         | 
| 4173 4159 | 
             
               public:
         | 
| 4174 4160 | 
             
                TransferrableModule(TransferrableModule&& src) = default;
         | 
| @@ -4187,35 +4173,41 @@ class V8_EXPORT WasmCompiledModule : public Object { | |
| 4187 4173 | 
             
                OwnedBuffer wire_bytes = {nullptr, 0};
         | 
| 4188 4174 | 
             
              };
         | 
| 4189 4175 |  | 
| 4190 | 
            -
               | 
| 4191 | 
            -
             | 
| 4192 | 
            -
             | 
| 4176 | 
            +
              /**
         | 
| 4177 | 
            +
               * Get an in-memory, non-persistable, and context-independent (meaning,
         | 
| 4178 | 
            +
               * suitable for transfer to another Isolate and Context) representation
         | 
| 4179 | 
            +
               * of this wasm compiled module.
         | 
| 4180 | 
            +
               */
         | 
| 4193 4181 | 
             
              TransferrableModule GetTransferrableModule();
         | 
| 4194 4182 |  | 
| 4195 | 
            -
               | 
| 4196 | 
            -
             | 
| 4183 | 
            +
              /**
         | 
| 4184 | 
            +
               * Efficiently re-create a WasmCompiledModule, without recompiling, from
         | 
| 4185 | 
            +
               * a TransferrableModule.
         | 
| 4186 | 
            +
               */
         | 
| 4197 4187 | 
             
              static MaybeLocal<WasmCompiledModule> FromTransferrableModule(
         | 
| 4198 4188 | 
             
                  Isolate* isolate, const TransferrableModule&);
         | 
| 4199 4189 |  | 
| 4200 | 
            -
               | 
| 4190 | 
            +
              /**
         | 
| 4191 | 
            +
               * Get the wasm-encoded bytes that were used to compile this module.
         | 
| 4192 | 
            +
               */
         | 
| 4201 4193 | 
             
              Local<String> GetWasmWireBytes();
         | 
| 4202 4194 |  | 
| 4203 | 
            -
               | 
| 4204 | 
            -
             | 
| 4195 | 
            +
              /**
         | 
| 4196 | 
            +
               * Serialize the compiled module. The serialized data does not include the
         | 
| 4197 | 
            +
               * uncompiled bytes.
         | 
| 4198 | 
            +
               */
         | 
| 4205 4199 | 
             
              SerializedModule Serialize();
         | 
| 4206 4200 |  | 
| 4207 | 
            -
               | 
| 4208 | 
            -
             | 
| 4201 | 
            +
              /**
         | 
| 4202 | 
            +
               * If possible, deserialize the module, otherwise compile it from the provided
         | 
| 4203 | 
            +
               * uncompiled bytes.
         | 
| 4204 | 
            +
               */
         | 
| 4209 4205 | 
             
              static MaybeLocal<WasmCompiledModule> DeserializeOrCompile(
         | 
| 4210 4206 | 
             
                  Isolate* isolate, const CallerOwnedBuffer& serialized_module,
         | 
| 4211 4207 | 
             
                  const CallerOwnedBuffer& wire_bytes);
         | 
| 4212 4208 | 
             
              V8_INLINE static WasmCompiledModule* Cast(Value* obj);
         | 
| 4213 4209 |  | 
| 4214 4210 | 
             
             private:
         | 
| 4215 | 
            -
              // TODO(ahaas): please remove the friend once streamed compilation is
         | 
| 4216 | 
            -
              // implemented
         | 
| 4217 | 
            -
              friend class WasmModuleObjectBuilder;
         | 
| 4218 | 
            -
             | 
| 4219 4211 | 
             
              static MaybeLocal<WasmCompiledModule> Deserialize(
         | 
| 4220 4212 | 
             
                  Isolate* isolate, const CallerOwnedBuffer& serialized_module,
         | 
| 4221 4213 | 
             
                  const CallerOwnedBuffer& wire_bytes);
         | 
| @@ -4235,11 +4227,18 @@ class V8_EXPORT WasmCompiledModule : public Object { | |
| 4235 4227 | 
             
            // to simply WasmModuleObjectBuilder
         | 
| 4236 4228 | 
             
            class V8_EXPORT WasmModuleObjectBuilderStreaming final {
         | 
| 4237 4229 | 
             
             public:
         | 
| 4238 | 
            -
              WasmModuleObjectBuilderStreaming(Isolate* isolate);
         | 
| 4239 | 
            -
               | 
| 4230 | 
            +
              explicit WasmModuleObjectBuilderStreaming(Isolate* isolate);
         | 
| 4231 | 
            +
              /**
         | 
| 4232 | 
            +
               * The buffer passed into OnBytesReceived is owned by the caller.
         | 
| 4233 | 
            +
               */
         | 
| 4240 4234 | 
             
              void OnBytesReceived(const uint8_t*, size_t size);
         | 
| 4241 4235 | 
             
              void Finish();
         | 
| 4242 | 
            -
               | 
| 4236 | 
            +
              /**
         | 
| 4237 | 
            +
               * Abort streaming compilation. If {exception} has a value, then the promise
         | 
| 4238 | 
            +
               * associated with streaming compilation is rejected with that value. If
         | 
| 4239 | 
            +
               * {exception} does not have value, the promise does not get rejected.
         | 
| 4240 | 
            +
               */
         | 
| 4241 | 
            +
              void Abort(MaybeLocal<Value> exception);
         | 
| 4243 4242 | 
             
              Local<Promise> GetPromise();
         | 
| 4244 4243 |  | 
| 4245 4244 | 
             
              ~WasmModuleObjectBuilderStreaming();
         | 
| @@ -4258,11 +4257,13 @@ class V8_EXPORT WasmModuleObjectBuilderStreaming final { | |
| 4258 4257 | 
             
              Isolate* isolate_ = nullptr;
         | 
| 4259 4258 |  | 
| 4260 4259 | 
             
            #if V8_CC_MSVC
         | 
| 4261 | 
            -
               | 
| 4262 | 
            -
             | 
| 4263 | 
            -
             | 
| 4264 | 
            -
             | 
| 4265 | 
            -
             | 
| 4260 | 
            +
              /**
         | 
| 4261 | 
            +
               * We don't need the static Copy API, so the default
         | 
| 4262 | 
            +
               * NonCopyablePersistentTraits would be sufficient, however,
         | 
| 4263 | 
            +
               * MSVC eagerly instantiates the Copy.
         | 
| 4264 | 
            +
               * We ensure we don't use Copy, however, by compiling with the
         | 
| 4265 | 
            +
               * defaults everywhere else.
         | 
| 4266 | 
            +
               */
         | 
| 4266 4267 | 
             
              Persistent<Promise, CopyablePersistentTraits<Promise>> promise_;
         | 
| 4267 4268 | 
             
            #else
         | 
| 4268 4269 | 
             
              Persistent<Promise> promise_;
         | 
| @@ -4272,30 +4273,6 @@ class V8_EXPORT WasmModuleObjectBuilderStreaming final { | |
| 4272 4273 | 
             
              std::shared_ptr<internal::wasm::StreamingDecoder> streaming_decoder_;
         | 
| 4273 4274 | 
             
            };
         | 
| 4274 4275 |  | 
| 4275 | 
            -
            class V8_EXPORT WasmModuleObjectBuilder final {
         | 
| 4276 | 
            -
             public:
         | 
| 4277 | 
            -
              WasmModuleObjectBuilder(Isolate* isolate) : isolate_(isolate) {}
         | 
| 4278 | 
            -
              // The buffer passed into OnBytesReceived is owned by the caller.
         | 
| 4279 | 
            -
              void OnBytesReceived(const uint8_t*, size_t size);
         | 
| 4280 | 
            -
              MaybeLocal<WasmCompiledModule> Finish();
         | 
| 4281 | 
            -
             | 
| 4282 | 
            -
             private:
         | 
| 4283 | 
            -
              Isolate* isolate_ = nullptr;
         | 
| 4284 | 
            -
              // TODO(ahaas): We probably need none of this below here once streamed
         | 
| 4285 | 
            -
              // compilation is implemented.
         | 
| 4286 | 
            -
              typedef std::pair<std::unique_ptr<const uint8_t[]>, size_t> Buffer;
         | 
| 4287 | 
            -
             | 
| 4288 | 
            -
              // Disable copy semantics *in this implementation*. We can choose to
         | 
| 4289 | 
            -
              // relax this, albeit it's not clear why.
         | 
| 4290 | 
            -
              WasmModuleObjectBuilder(const WasmModuleObjectBuilder&) = delete;
         | 
| 4291 | 
            -
              WasmModuleObjectBuilder(WasmModuleObjectBuilder&&) = default;
         | 
| 4292 | 
            -
              WasmModuleObjectBuilder& operator=(const WasmModuleObjectBuilder&) = delete;
         | 
| 4293 | 
            -
              WasmModuleObjectBuilder& operator=(WasmModuleObjectBuilder&&) = default;
         | 
| 4294 | 
            -
             | 
| 4295 | 
            -
              std::vector<Buffer> received_buffers_;
         | 
| 4296 | 
            -
              size_t total_size_ = 0;
         | 
| 4297 | 
            -
            };
         | 
| 4298 | 
            -
             | 
| 4299 4276 | 
             
            #ifndef V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT
         | 
| 4300 4277 | 
             
            // The number of required internal fields can be defined by embedder.
         | 
| 4301 4278 | 
             
            #define V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT 2
         | 
| @@ -4341,41 +4318,18 @@ class V8_EXPORT ArrayBuffer : public Object { | |
| 4341 4318 | 
             
                 */
         | 
| 4342 4319 | 
             
                virtual void* AllocateUninitialized(size_t length) = 0;
         | 
| 4343 4320 |  | 
| 4344 | 
            -
                /**
         | 
| 4345 | 
            -
                 * Reserved |length| bytes, but do not commit the memory. Must call
         | 
| 4346 | 
            -
                 * |SetProtection| to make memory accessible.
         | 
| 4347 | 
            -
                 */
         | 
| 4348 | 
            -
                // TODO(eholk): make this pure virtual once blink implements this.
         | 
| 4349 | 
            -
                virtual void* Reserve(size_t length);
         | 
| 4350 | 
            -
             | 
| 4351 4321 | 
             
                /**
         | 
| 4352 4322 | 
             
                 * Free the memory block of size |length|, pointed to by |data|.
         | 
| 4353 4323 | 
             
                 * That memory is guaranteed to be previously allocated by |Allocate|.
         | 
| 4354 4324 | 
             
                 */
         | 
| 4355 4325 | 
             
                virtual void Free(void* data, size_t length) = 0;
         | 
| 4356 4326 |  | 
| 4357 | 
            -
                enum class AllocationMode { kNormal, kReservation };
         | 
| 4358 | 
            -
             | 
| 4359 4327 | 
             
                /**
         | 
| 4360 | 
            -
                 *  | 
| 4361 | 
            -
                 *  | 
| 4362 | 
            -
                 *  | 
| 4328 | 
            +
                 * ArrayBuffer allocation mode. kNormal is a malloc/free style allocation,
         | 
| 4329 | 
            +
                 * while kReservation is for larger allocations with the ability to set
         | 
| 4330 | 
            +
                 * access permissions.
         | 
| 4363 4331 | 
             
                 */
         | 
| 4364 | 
            -
                 | 
| 4365 | 
            -
                virtual void Free(void* data, size_t length, AllocationMode mode);
         | 
| 4366 | 
            -
             | 
| 4367 | 
            -
                enum class Protection { kNoAccess, kReadWrite };
         | 
| 4368 | 
            -
             | 
| 4369 | 
            -
                /**
         | 
| 4370 | 
            -
                 * Change the protection on a region of memory.
         | 
| 4371 | 
            -
                 *
         | 
| 4372 | 
            -
                 * On platforms that make a distinction between reserving and committing
         | 
| 4373 | 
            -
                 * memory, changing the protection to kReadWrite must also ensure the memory
         | 
| 4374 | 
            -
                 * is committed.
         | 
| 4375 | 
            -
                 */
         | 
| 4376 | 
            -
                // TODO(eholk): make this pure virtual once blink implements this.
         | 
| 4377 | 
            -
                virtual void SetProtection(void* data, size_t length,
         | 
| 4378 | 
            -
                                           Protection protection);
         | 
| 4332 | 
            +
                enum class AllocationMode { kNormal, kReservation };
         | 
| 4379 4333 |  | 
| 4380 4334 | 
             
                /**
         | 
| 4381 4335 | 
             
                 * malloc/free based convenience allocator.
         | 
| @@ -4735,6 +4689,37 @@ class V8_EXPORT Float64Array : public TypedArray { | |
| 4735 4689 | 
             
              static void CheckCast(Value* obj);
         | 
| 4736 4690 | 
             
            };
         | 
| 4737 4691 |  | 
| 4692 | 
            +
            /**
         | 
| 4693 | 
            +
             * An instance of BigInt64Array constructor.
         | 
| 4694 | 
            +
             */
         | 
| 4695 | 
            +
            class V8_EXPORT BigInt64Array : public TypedArray {
         | 
| 4696 | 
            +
             public:
         | 
| 4697 | 
            +
              static Local<BigInt64Array> New(Local<ArrayBuffer> array_buffer,
         | 
| 4698 | 
            +
                                              size_t byte_offset, size_t length);
         | 
| 4699 | 
            +
              static Local<BigInt64Array> New(Local<SharedArrayBuffer> shared_array_buffer,
         | 
| 4700 | 
            +
                                              size_t byte_offset, size_t length);
         | 
| 4701 | 
            +
              V8_INLINE static BigInt64Array* Cast(Value* obj);
         | 
| 4702 | 
            +
             | 
| 4703 | 
            +
             private:
         | 
| 4704 | 
            +
              BigInt64Array();
         | 
| 4705 | 
            +
              static void CheckCast(Value* obj);
         | 
| 4706 | 
            +
            };
         | 
| 4707 | 
            +
             | 
| 4708 | 
            +
            /**
         | 
| 4709 | 
            +
             * An instance of BigUint64Array constructor.
         | 
| 4710 | 
            +
             */
         | 
| 4711 | 
            +
            class V8_EXPORT BigUint64Array : public TypedArray {
         | 
| 4712 | 
            +
             public:
         | 
| 4713 | 
            +
              static Local<BigUint64Array> New(Local<ArrayBuffer> array_buffer,
         | 
| 4714 | 
            +
                                               size_t byte_offset, size_t length);
         | 
| 4715 | 
            +
              static Local<BigUint64Array> New(Local<SharedArrayBuffer> shared_array_buffer,
         | 
| 4716 | 
            +
                                               size_t byte_offset, size_t length);
         | 
| 4717 | 
            +
              V8_INLINE static BigUint64Array* Cast(Value* obj);
         | 
| 4718 | 
            +
             | 
| 4719 | 
            +
             private:
         | 
| 4720 | 
            +
              BigUint64Array();
         | 
| 4721 | 
            +
              static void CheckCast(Value* obj);
         | 
| 4722 | 
            +
            };
         | 
| 4738 4723 |  | 
| 4739 4724 | 
             
            /**
         | 
| 4740 4725 | 
             
             * An instance of DataView constructor (ES6 draft 15.13.7).
         | 
| @@ -4918,6 +4903,20 @@ class V8_EXPORT NumberObject : public Object { | |
| 4918 4903 | 
             
              static void CheckCast(Value* obj);
         | 
| 4919 4904 | 
             
            };
         | 
| 4920 4905 |  | 
| 4906 | 
            +
            /**
         | 
| 4907 | 
            +
             * A BigInt object (https://tc39.github.io/proposal-bigint)
         | 
| 4908 | 
            +
             */
         | 
| 4909 | 
            +
            class V8_EXPORT BigIntObject : public Object {
         | 
| 4910 | 
            +
             public:
         | 
| 4911 | 
            +
              static Local<Value> New(Isolate* isolate, int64_t value);
         | 
| 4912 | 
            +
             | 
| 4913 | 
            +
              Local<BigInt> ValueOf() const;
         | 
| 4914 | 
            +
             | 
| 4915 | 
            +
              V8_INLINE static BigIntObject* Cast(Value* obj);
         | 
| 4916 | 
            +
             | 
| 4917 | 
            +
             private:
         | 
| 4918 | 
            +
              static void CheckCast(Value* obj);
         | 
| 4919 | 
            +
            };
         | 
| 4921 4920 |  | 
| 4922 4921 | 
             
            /**
         | 
| 4923 4922 | 
             
             * A Boolean object (ECMA-262, 4.3.15).
         | 
| @@ -4925,7 +4924,6 @@ class V8_EXPORT NumberObject : public Object { | |
| 4925 4924 | 
             
            class V8_EXPORT BooleanObject : public Object {
         | 
| 4926 4925 | 
             
             public:
         | 
| 4927 4926 | 
             
              static Local<Value> New(Isolate* isolate, bool value);
         | 
| 4928 | 
            -
              V8_DEPRECATED("Pass an isolate", static Local<Value> New(bool value));
         | 
| 4929 4927 |  | 
| 4930 4928 | 
             
              bool ValueOf() const;
         | 
| 4931 4929 |  | 
| @@ -4997,9 +4995,8 @@ class V8_EXPORT RegExp : public Object { | |
| 4997 4995 | 
             
               *               static_cast<RegExp::Flags>(kGlobal | kMultiline))
         | 
| 4998 4996 | 
             
               * is equivalent to evaluating "/foo/gm".
         | 
| 4999 4997 | 
             
               */
         | 
| 5000 | 
            -
              static  | 
| 5001 | 
            -
             | 
| 5002 | 
            -
                                                         Flags flags));
         | 
| 4998 | 
            +
              static V8_DEPRECATED("Use maybe version",
         | 
| 4999 | 
            +
                                   Local<RegExp> New(Local<String> pattern, Flags flags));
         | 
| 5003 5000 | 
             
              static V8_WARN_UNUSED_RESULT MaybeLocal<RegExp> New(Local<Context> context,
         | 
| 5004 5001 | 
             
                                                                  Local<String> pattern,
         | 
| 5005 5002 | 
             
                                                                  Flags flags);
         | 
| @@ -5262,7 +5259,7 @@ typedef void (*GenericNamedPropertySetterCallback)( | |
| 5262 5259 | 
             
             * defineProperty().
         | 
| 5263 5260 | 
             
             *
         | 
| 5264 5261 | 
             
             * Use `info.GetReturnValue().Set(value)` to set the property attributes. The
         | 
| 5265 | 
            -
             * value is an  | 
| 5262 | 
            +
             * value is an integer encoding a `v8::PropertyAttribute`.
         | 
| 5266 5263 | 
             
             *
         | 
| 5267 5264 | 
             
             * \param property The name of the property for which the request was
         | 
| 5268 5265 | 
             
             * intercepted.
         | 
| @@ -5467,7 +5464,8 @@ typedef bool (*AccessCheckCallback)(Local<Context> accessing_context, | |
| 5467 5464 | 
             
             *    v8::Local<v8::ObjectTemplate> instance_t = t->InstanceTemplate();
         | 
| 5468 5465 | 
             
             *    instance_t->SetAccessor(String::NewFromUtf8(isolate, "instance_accessor"),
         | 
| 5469 5466 | 
             
             *                            InstanceAccessorCallback);
         | 
| 5470 | 
            -
             *    instance_t-> | 
| 5467 | 
            +
             *    instance_t->SetHandler(
         | 
| 5468 | 
            +
             *        NamedPropertyHandlerConfiguration(PropertyHandlerCallback));
         | 
| 5471 5469 | 
             
             *    instance_t->Set(String::NewFromUtf8(isolate, "instance_property"),
         | 
| 5472 5470 | 
             
             *                    Number::New(isolate, 3));
         | 
| 5473 5471 | 
             
             *
         | 
| @@ -5536,7 +5534,8 @@ class V8_EXPORT FunctionTemplate : public Template { | |
| 5536 5534 | 
             
                  Isolate* isolate, FunctionCallback callback = 0,
         | 
| 5537 5535 | 
             
                  Local<Value> data = Local<Value>(),
         | 
| 5538 5536 | 
             
                  Local<Signature> signature = Local<Signature>(), int length = 0,
         | 
| 5539 | 
            -
                  ConstructorBehavior behavior = ConstructorBehavior::kAllow | 
| 5537 | 
            +
                  ConstructorBehavior behavior = ConstructorBehavior::kAllow,
         | 
| 5538 | 
            +
                  SideEffectType side_effect_type = SideEffectType::kHasSideEffect);
         | 
| 5540 5539 |  | 
| 5541 5540 | 
             
              /** Get a template included in the snapshot by index. */
         | 
| 5542 5541 | 
             
              static MaybeLocal<FunctionTemplate> FromSnapshot(Isolate* isolate,
         | 
| @@ -5548,7 +5547,8 @@ class V8_EXPORT FunctionTemplate : public Template { | |
| 5548 5547 | 
             
              static Local<FunctionTemplate> NewWithCache(
         | 
| 5549 5548 | 
             
                  Isolate* isolate, FunctionCallback callback,
         | 
| 5550 5549 | 
             
                  Local<Private> cache_property, Local<Value> data = Local<Value>(),
         | 
| 5551 | 
            -
                  Local<Signature> signature = Local<Signature>(), int length = 0 | 
| 5550 | 
            +
                  Local<Signature> signature = Local<Signature>(), int length = 0,
         | 
| 5551 | 
            +
                  SideEffectType side_effect_type = SideEffectType::kHasSideEffect);
         | 
| 5552 5552 |  | 
| 5553 5553 | 
             
              /** Returns the unique function instance in the current execution context.*/
         | 
| 5554 5554 | 
             
              V8_DEPRECATE_SOON("Use maybe version", Local<Function> GetFunction());
         | 
| @@ -5569,8 +5569,9 @@ class V8_EXPORT FunctionTemplate : public Template { | |
| 5569 5569 | 
             
               * callback is called whenever the function created from this
         | 
| 5570 5570 | 
             
               * FunctionTemplate is called.
         | 
| 5571 5571 | 
             
               */
         | 
| 5572 | 
            -
              void SetCallHandler( | 
| 5573 | 
            -
             | 
| 5572 | 
            +
              void SetCallHandler(
         | 
| 5573 | 
            +
                  FunctionCallback callback, Local<Value> data = Local<Value>(),
         | 
| 5574 | 
            +
                  SideEffectType side_effect_type = SideEffectType::kHasSideEffect);
         | 
| 5574 5575 |  | 
| 5575 5576 | 
             
              /** Set the predefined length property for the FunctionTemplate. */
         | 
| 5576 5577 | 
             
              void SetLength(int length);
         | 
| @@ -5580,7 +5581,7 @@ class V8_EXPORT FunctionTemplate : public Template { | |
| 5580 5581 |  | 
| 5581 5582 | 
             
              /**
         | 
| 5582 5583 | 
             
               * Causes the function template to inherit from a parent function template.
         | 
| 5583 | 
            -
               * This means the  | 
| 5584 | 
            +
               * This means the function's prototype.__proto__ is set to the parent
         | 
| 5584 5585 | 
             
               * function's prototype.
         | 
| 5585 5586 | 
             
               **/
         | 
| 5586 5587 | 
             
              void Inherit(Local<FunctionTemplate> parent);
         | 
| @@ -5645,8 +5646,12 @@ class V8_EXPORT FunctionTemplate : public Template { | |
| 5645 5646 | 
             
               */
         | 
| 5646 5647 | 
             
              bool HasInstance(Local<Value> object);
         | 
| 5647 5648 |  | 
| 5649 | 
            +
              V8_INLINE static FunctionTemplate* Cast(Data* data);
         | 
| 5650 | 
            +
             | 
| 5648 5651 | 
             
             private:
         | 
| 5649 5652 | 
             
              FunctionTemplate();
         | 
| 5653 | 
            +
             | 
| 5654 | 
            +
              static void CheckCast(Data* that);
         | 
| 5650 5655 | 
             
              friend class Context;
         | 
| 5651 5656 | 
             
              friend class ObjectTemplate;
         | 
| 5652 5657 | 
             
            };
         | 
| @@ -5677,6 +5682,11 @@ enum class PropertyHandlerFlags { | |
| 5677 5682 | 
             
               * named interceptors.
         | 
| 5678 5683 | 
             
               */
         | 
| 5679 5684 | 
             
              kOnlyInterceptStrings = 1 << 2,
         | 
| 5685 | 
            +
             | 
| 5686 | 
            +
              /**
         | 
| 5687 | 
            +
               * The getter, query, enumerator callbacks do not produce side effects.
         | 
| 5688 | 
            +
               */
         | 
| 5689 | 
            +
              kHasNoSideEffect = 1 << 3,
         | 
| 5680 5690 | 
             
            };
         | 
| 5681 5691 |  | 
| 5682 5692 | 
             
            struct NamedPropertyHandlerConfiguration {
         | 
| @@ -5793,7 +5803,6 @@ class V8_EXPORT ObjectTemplate : public Template { | |
| 5793 5803 | 
             
              static Local<ObjectTemplate> New(
         | 
| 5794 5804 | 
             
                  Isolate* isolate,
         | 
| 5795 5805 | 
             
                  Local<FunctionTemplate> constructor = Local<FunctionTemplate>());
         | 
| 5796 | 
            -
              static V8_DEPRECATED("Use isolate version", Local<ObjectTemplate> New());
         | 
| 5797 5806 |  | 
| 5798 5807 | 
             
              /** Get a template included in the snapshot by index. */
         | 
| 5799 5808 | 
             
              static MaybeLocal<ObjectTemplate> FromSnapshot(Isolate* isolate,
         | 
| @@ -5865,13 +5874,16 @@ class V8_EXPORT ObjectTemplate : public Template { | |
| 5865 5874 | 
             
               * \param data A piece of data that will be passed to the callbacks
         | 
| 5866 5875 | 
             
               *   whenever they are invoked.
         | 
| 5867 5876 | 
             
               */
         | 
| 5868 | 
            -
               | 
| 5869 | 
            -
             | 
| 5870 | 
            -
             | 
| 5871 | 
            -
             | 
| 5872 | 
            -
             | 
| 5873 | 
            -
             | 
| 5874 | 
            -
             | 
| 5877 | 
            +
              V8_DEPRECATED(
         | 
| 5878 | 
            +
                  "Use SetHandler(const NamedPropertyHandlerConfiguration) "
         | 
| 5879 | 
            +
                  "with the kOnlyInterceptStrings flag set.",
         | 
| 5880 | 
            +
                  void SetNamedPropertyHandler(
         | 
| 5881 | 
            +
                      NamedPropertyGetterCallback getter,
         | 
| 5882 | 
            +
                      NamedPropertySetterCallback setter = 0,
         | 
| 5883 | 
            +
                      NamedPropertyQueryCallback query = 0,
         | 
| 5884 | 
            +
                      NamedPropertyDeleterCallback deleter = 0,
         | 
| 5885 | 
            +
                      NamedPropertyEnumeratorCallback enumerator = 0,
         | 
| 5886 | 
            +
                      Local<Value> data = Local<Value>()));
         | 
| 5875 5887 |  | 
| 5876 5888 | 
             
              /**
         | 
| 5877 5889 | 
             
               * Sets a named property handler on the object template.
         | 
| @@ -5986,15 +5998,18 @@ class V8_EXPORT ObjectTemplate : public Template { | |
| 5986 5998 | 
             
              bool IsImmutableProto();
         | 
| 5987 5999 |  | 
| 5988 6000 | 
             
              /**
         | 
| 5989 | 
            -
               * Makes the  | 
| 6001 | 
            +
               * Makes the ObjectTemplate for an immutable prototype exotic object, with an
         | 
| 5990 6002 | 
             
               * immutable __proto__.
         | 
| 5991 6003 | 
             
               */
         | 
| 5992 6004 | 
             
              void SetImmutableProto();
         | 
| 5993 6005 |  | 
| 6006 | 
            +
              V8_INLINE static ObjectTemplate* Cast(Data* data);
         | 
| 6007 | 
            +
             | 
| 5994 6008 | 
             
             private:
         | 
| 5995 6009 | 
             
              ObjectTemplate();
         | 
| 5996 6010 | 
             
              static Local<ObjectTemplate> New(internal::Isolate* isolate,
         | 
| 5997 6011 | 
             
                                               Local<FunctionTemplate> constructor);
         | 
| 6012 | 
            +
              static void CheckCast(Data* that);
         | 
| 5998 6013 | 
             
              friend class FunctionTemplate;
         | 
| 5999 6014 | 
             
            };
         | 
| 6000 6015 |  | 
| @@ -6012,8 +6027,12 @@ class V8_EXPORT Signature : public Data { | |
| 6012 6027 | 
             
                  Isolate* isolate,
         | 
| 6013 6028 | 
             
                  Local<FunctionTemplate> receiver = Local<FunctionTemplate>());
         | 
| 6014 6029 |  | 
| 6030 | 
            +
              V8_INLINE static Signature* Cast(Data* data);
         | 
| 6031 | 
            +
             | 
| 6015 6032 | 
             
             private:
         | 
| 6016 6033 | 
             
              Signature();
         | 
| 6034 | 
            +
             | 
| 6035 | 
            +
              static void CheckCast(Data* that);
         | 
| 6017 6036 | 
             
            };
         | 
| 6018 6037 |  | 
| 6019 6038 |  | 
| @@ -6027,8 +6046,12 @@ class V8_EXPORT AccessorSignature : public Data { | |
| 6027 6046 | 
             
                  Isolate* isolate,
         | 
| 6028 6047 | 
             
                  Local<FunctionTemplate> receiver = Local<FunctionTemplate>());
         | 
| 6029 6048 |  | 
| 6049 | 
            +
              V8_INLINE static AccessorSignature* Cast(Data* data);
         | 
| 6050 | 
            +
             | 
| 6030 6051 | 
             
             private:
         | 
| 6031 6052 | 
             
              AccessorSignature();
         | 
| 6053 | 
            +
             | 
| 6054 | 
            +
              static void CheckCast(Data* that);
         | 
| 6032 6055 | 
             
            };
         | 
| 6033 6056 |  | 
| 6034 6057 |  | 
| @@ -6131,13 +6154,13 @@ class V8_EXPORT ResourceConstraints { | |
| 6131 6154 |  | 
| 6132 6155 | 
             
              // Returns the max semi-space size in MB.
         | 
| 6133 6156 | 
             
              V8_DEPRECATE_SOON("Use max_semi_space_size_in_kb()",
         | 
| 6134 | 
            -
                                 | 
| 6135 | 
            -
                return  | 
| 6157 | 
            +
                                size_t max_semi_space_size()) {
         | 
| 6158 | 
            +
                return max_semi_space_size_in_kb_ / 1024;
         | 
| 6136 6159 | 
             
              }
         | 
| 6137 6160 |  | 
| 6138 6161 | 
             
              // Sets the max semi-space size in MB.
         | 
| 6139 6162 | 
             
              V8_DEPRECATE_SOON("Use set_max_semi_space_size_in_kb(size_t limit_in_kb)",
         | 
| 6140 | 
            -
                                void set_max_semi_space_size( | 
| 6163 | 
            +
                                void set_max_semi_space_size(size_t limit_in_mb)) {
         | 
| 6141 6164 | 
             
                max_semi_space_size_in_kb_ = limit_in_mb * 1024;
         | 
| 6142 6165 | 
             
              }
         | 
| 6143 6166 |  | 
| @@ -6151,16 +6174,16 @@ class V8_EXPORT ResourceConstraints { | |
| 6151 6174 | 
             
                max_semi_space_size_in_kb_ = limit_in_kb;
         | 
| 6152 6175 | 
             
              }
         | 
| 6153 6176 |  | 
| 6154 | 
            -
               | 
| 6155 | 
            -
              void set_max_old_space_size( | 
| 6177 | 
            +
              size_t max_old_space_size() const { return max_old_space_size_; }
         | 
| 6178 | 
            +
              void set_max_old_space_size(size_t limit_in_mb) {
         | 
| 6156 6179 | 
             
                max_old_space_size_ = limit_in_mb;
         | 
| 6157 6180 | 
             
              }
         | 
| 6158 6181 | 
             
              V8_DEPRECATE_SOON("max_executable_size_ is subsumed by max_old_space_size_",
         | 
| 6159 | 
            -
                                 | 
| 6182 | 
            +
                                size_t max_executable_size() const) {
         | 
| 6160 6183 | 
             
                return max_executable_size_;
         | 
| 6161 6184 | 
             
              }
         | 
| 6162 6185 | 
             
              V8_DEPRECATE_SOON("max_executable_size_ is subsumed by max_old_space_size_",
         | 
| 6163 | 
            -
                                void set_max_executable_size( | 
| 6186 | 
            +
                                void set_max_executable_size(size_t limit_in_mb)) {
         | 
| 6164 6187 | 
             
                max_executable_size_ = limit_in_mb;
         | 
| 6165 6188 | 
             
              }
         | 
| 6166 6189 | 
             
              uint32_t* stack_limit() const { return stack_limit_; }
         | 
| @@ -6171,17 +6194,15 @@ class V8_EXPORT ResourceConstraints { | |
| 6171 6194 | 
             
                code_range_size_ = limit_in_mb;
         | 
| 6172 6195 | 
             
              }
         | 
| 6173 6196 | 
             
              size_t max_zone_pool_size() const { return max_zone_pool_size_; }
         | 
| 6174 | 
            -
              void set_max_zone_pool_size( | 
| 6175 | 
            -
                max_zone_pool_size_ = bytes;
         | 
| 6176 | 
            -
              }
         | 
| 6197 | 
            +
              void set_max_zone_pool_size(size_t bytes) { max_zone_pool_size_ = bytes; }
         | 
| 6177 6198 |  | 
| 6178 6199 | 
             
             private:
         | 
| 6179 6200 | 
             
              // max_semi_space_size_ is in KB
         | 
| 6180 6201 | 
             
              size_t max_semi_space_size_in_kb_;
         | 
| 6181 6202 |  | 
| 6182 6203 | 
             
              // The remaining limits are in MB
         | 
| 6183 | 
            -
               | 
| 6184 | 
            -
               | 
| 6204 | 
            +
              size_t max_old_space_size_;
         | 
| 6205 | 
            +
              size_t max_executable_size_;
         | 
| 6185 6206 | 
             
              uint32_t* stack_limit_;
         | 
| 6186 6207 | 
             
              size_t code_range_size_;
         | 
| 6187 6208 | 
             
              size_t max_zone_pool_size_;
         | 
| @@ -6222,8 +6243,6 @@ class V8_EXPORT Exception { | |
| 6222 6243 | 
             
               * or capture the current stack trace if not available.
         | 
| 6223 6244 | 
             
               */
         | 
| 6224 6245 | 
             
              static Local<Message> CreateMessage(Isolate* isolate, Local<Value> exception);
         | 
| 6225 | 
            -
              V8_DEPRECATED("Use version with an Isolate*",
         | 
| 6226 | 
            -
                            static Local<Message> CreateMessage(Local<Value> exception));
         | 
| 6227 6246 |  | 
| 6228 6247 | 
             
              /**
         | 
| 6229 6248 | 
             
               * Returns the original stack trace that was captured at the creation time
         | 
| @@ -6244,24 +6263,6 @@ typedef void* (*CreateHistogramCallback)(const char* name, | |
| 6244 6263 |  | 
| 6245 6264 | 
             
            typedef void (*AddHistogramSampleCallback)(void* histogram, int sample);
         | 
| 6246 6265 |  | 
| 6247 | 
            -
            // --- Memory Allocation Callback ---
         | 
| 6248 | 
            -
            enum ObjectSpace {
         | 
| 6249 | 
            -
              kObjectSpaceNewSpace = 1 << 0,
         | 
| 6250 | 
            -
              kObjectSpaceOldSpace = 1 << 1,
         | 
| 6251 | 
            -
              kObjectSpaceCodeSpace = 1 << 2,
         | 
| 6252 | 
            -
              kObjectSpaceMapSpace = 1 << 3,
         | 
| 6253 | 
            -
              kObjectSpaceLoSpace = 1 << 4,
         | 
| 6254 | 
            -
              kObjectSpaceAll = kObjectSpaceNewSpace | kObjectSpaceOldSpace |
         | 
| 6255 | 
            -
                                kObjectSpaceCodeSpace | kObjectSpaceMapSpace |
         | 
| 6256 | 
            -
                                kObjectSpaceLoSpace
         | 
| 6257 | 
            -
            };
         | 
| 6258 | 
            -
             | 
| 6259 | 
            -
              enum AllocationAction {
         | 
| 6260 | 
            -
                kAllocationActionAllocate = 1 << 0,
         | 
| 6261 | 
            -
                kAllocationActionFree = 1 << 1,
         | 
| 6262 | 
            -
                kAllocationActionAll = kAllocationActionAllocate | kAllocationActionFree
         | 
| 6263 | 
            -
              };
         | 
| 6264 | 
            -
             | 
| 6265 6266 | 
             
            // --- Enter/Leave Script Callback ---
         | 
| 6266 6267 | 
             
            typedef void (*BeforeCallEnteredCallback)(Isolate*);
         | 
| 6267 6268 | 
             
            typedef void (*CallCompletedCallback)(Isolate*);
         | 
| @@ -6291,6 +6292,20 @@ typedef MaybeLocal<Promise> (*HostImportModuleDynamicallyCallback)( | |
| 6291 6292 | 
             
                Local<Context> context, Local<ScriptOrModule> referrer,
         | 
| 6292 6293 | 
             
                Local<String> specifier);
         | 
| 6293 6294 |  | 
| 6295 | 
            +
            /**
         | 
| 6296 | 
            +
             * HostInitializeImportMetaObjectCallback is called the first time import.meta
         | 
| 6297 | 
            +
             * is accessed for a module. Subsequent access will reuse the same value.
         | 
| 6298 | 
            +
             *
         | 
| 6299 | 
            +
             * The method combines two implementation-defined abstract operations into one:
         | 
| 6300 | 
            +
             * HostGetImportMetaProperties and HostFinalizeImportMeta.
         | 
| 6301 | 
            +
             *
         | 
| 6302 | 
            +
             * The embedder should use v8::Object::CreateDataProperty to add properties on
         | 
| 6303 | 
            +
             * the meta object.
         | 
| 6304 | 
            +
             */
         | 
| 6305 | 
            +
            typedef void (*HostInitializeImportMetaObjectCallback)(Local<Context> context,
         | 
| 6306 | 
            +
                                                                   Local<Module> module,
         | 
| 6307 | 
            +
                                                                   Local<Object> meta);
         | 
| 6308 | 
            +
             | 
| 6294 6309 | 
             
            /**
         | 
| 6295 6310 | 
             
             * PromiseHook with type kInit is called when a new promise is
         | 
| 6296 6311 | 
             
             * created. When a new promise is created as part of the chain in the
         | 
| @@ -6331,11 +6346,6 @@ class PromiseRejectMessage { | |
| 6331 6346 | 
             
              V8_INLINE PromiseRejectEvent GetEvent() const { return event_; }
         | 
| 6332 6347 | 
             
              V8_INLINE Local<Value> GetValue() const { return value_; }
         | 
| 6333 6348 |  | 
| 6334 | 
            -
              V8_DEPRECATED("Use v8::Exception::CreateMessage(GetValue())->GetStackTrace()",
         | 
| 6335 | 
            -
                            V8_INLINE Local<StackTrace> GetStackTrace() const) {
         | 
| 6336 | 
            -
                return stack_trace_;
         | 
| 6337 | 
            -
              }
         | 
| 6338 | 
            -
             | 
| 6339 6349 | 
             
             private:
         | 
| 6340 6350 | 
             
              Local<Promise> promise_;
         | 
| 6341 6351 | 
             
              PromiseRejectEvent event_;
         | 
| @@ -6418,6 +6428,9 @@ typedef bool (*AllowCodeGenerationFromStringsCallback)(Local<Context> context, | |
| 6418 6428 | 
             
            // --- WebAssembly compilation callbacks ---
         | 
| 6419 6429 | 
             
            typedef bool (*ExtensionCallback)(const FunctionCallbackInfo<Value>&);
         | 
| 6420 6430 |  | 
| 6431 | 
            +
            typedef bool (*AllowWasmCodeGenerationCallback)(Local<Context> context,
         | 
| 6432 | 
            +
                                                            Local<String> source);
         | 
| 6433 | 
            +
             | 
| 6421 6434 | 
             
            // --- Callback for APIs defined on v8-supported objects, but implemented
         | 
| 6422 6435 | 
             
            // by the embedder. Example: WebAssembly.{compile|instantiate}Streaming ---
         | 
| 6423 6436 | 
             
            typedef void (*ApiImplementationCallback)(const FunctionCallbackInfo<Value>&);
         | 
| @@ -6468,6 +6481,15 @@ typedef void (*GCCallback)(GCType type, GCCallbackFlags flags); | |
| 6468 6481 |  | 
| 6469 6482 | 
             
            typedef void (*InterruptCallback)(Isolate* isolate, void* data);
         | 
| 6470 6483 |  | 
| 6484 | 
            +
            /**
         | 
| 6485 | 
            +
             * This callback is invoked when the heap size is close to the heap limit and
         | 
| 6486 | 
            +
             * V8 is likely to abort with out-of-memory error.
         | 
| 6487 | 
            +
             * The callback can extend the heap limit by returning a value that is greater
         | 
| 6488 | 
            +
             * than the current_heap_limit. The initial heap limit is the limit that was
         | 
| 6489 | 
            +
             * set after heap setup.
         | 
| 6490 | 
            +
             */
         | 
| 6491 | 
            +
            typedef size_t (*NearHeapLimitCallback)(void* data, size_t current_heap_limit,
         | 
| 6492 | 
            +
                                                    size_t initial_heap_limit);
         | 
| 6471 6493 |  | 
| 6472 6494 | 
             
            /**
         | 
| 6473 6495 | 
             
             * Collection of V8 heap information.
         | 
| @@ -6486,6 +6508,8 @@ class V8_EXPORT HeapStatistics { | |
| 6486 6508 | 
             
              size_t heap_size_limit() { return heap_size_limit_; }
         | 
| 6487 6509 | 
             
              size_t malloced_memory() { return malloced_memory_; }
         | 
| 6488 6510 | 
             
              size_t peak_malloced_memory() { return peak_malloced_memory_; }
         | 
| 6511 | 
            +
              size_t number_of_native_contexts() { return number_of_native_contexts_; }
         | 
| 6512 | 
            +
              size_t number_of_detached_contexts() { return number_of_detached_contexts_; }
         | 
| 6489 6513 |  | 
| 6490 6514 | 
             
              /**
         | 
| 6491 6515 | 
             
               * Returns a 0/1 boolean, which signifies whether the V8 overwrite heap
         | 
| @@ -6503,6 +6527,8 @@ class V8_EXPORT HeapStatistics { | |
| 6503 6527 | 
             
              size_t malloced_memory_;
         | 
| 6504 6528 | 
             
              size_t peak_malloced_memory_;
         | 
| 6505 6529 | 
             
              bool does_zap_garbage_;
         | 
| 6530 | 
            +
              size_t number_of_native_contexts_;
         | 
| 6531 | 
            +
              size_t number_of_detached_contexts_;
         | 
| 6506 6532 |  | 
| 6507 6533 | 
             
              friend class V8;
         | 
| 6508 6534 | 
             
              friend class Isolate;
         | 
| @@ -6597,8 +6623,17 @@ struct JitCodeEvent { | |
| 6597 6623 | 
             
              // statement, and is used to indicate possible break locations.
         | 
| 6598 6624 | 
             
              enum PositionType { POSITION, STATEMENT_POSITION };
         | 
| 6599 6625 |  | 
| 6626 | 
            +
              // There are two different kinds of JitCodeEvents, one for JIT code generated
         | 
| 6627 | 
            +
              // by the optimizing compiler, and one for byte code generated for the
         | 
| 6628 | 
            +
              // interpreter.  For JIT_CODE events, the |code_start| member of the event
         | 
| 6629 | 
            +
              // points to the beginning of jitted assembly code, while for BYTE_CODE
         | 
| 6630 | 
            +
              // events, |code_start| points to the first bytecode of the interpreted
         | 
| 6631 | 
            +
              // function.
         | 
| 6632 | 
            +
              enum CodeType { BYTE_CODE, JIT_CODE };
         | 
| 6633 | 
            +
             | 
| 6600 6634 | 
             
              // Type of event.
         | 
| 6601 6635 | 
             
              EventType type;
         | 
| 6636 | 
            +
              CodeType code_type;
         | 
| 6602 6637 | 
             
              // Start of the instructions.
         | 
| 6603 6638 | 
             
              void* code_start;
         | 
| 6604 6639 | 
             
              // Size of the instructions.
         | 
| @@ -7049,9 +7084,16 @@ class V8_EXPORT Isolate { | |
| 7049 7084 | 
             
                kConstructorNonUndefinedPrimitiveReturn = 39,
         | 
| 7050 7085 | 
             
                kLabeledExpressionStatement = 40,
         | 
| 7051 7086 | 
             
                kLineOrParagraphSeparatorAsLineTerminator = 41,
         | 
| 7087 | 
            +
                kIndexAccessor = 42,
         | 
| 7088 | 
            +
                kErrorCaptureStackTrace = 43,
         | 
| 7089 | 
            +
                kErrorPrepareStackTrace = 44,
         | 
| 7090 | 
            +
                kErrorStackTraceLimit = 45,
         | 
| 7091 | 
            +
                kWebAssemblyInstantiation = 46,
         | 
| 7092 | 
            +
                kDeoptimizerDisableSpeculation = 47,
         | 
| 7052 7093 |  | 
| 7053 7094 | 
             
                // If you add new values here, you'll also need to update Chromium's:
         | 
| 7054 | 
            -
                //  | 
| 7095 | 
            +
                // web_feature.mojom, UseCounterCallback.cpp, and enums.xml. V8 changes to
         | 
| 7096 | 
            +
                // this list need to be landed first, then changes on the Chromium side.
         | 
| 7055 7097 | 
             
                kUseCounterFeatureCount  // This enum value must be last.
         | 
| 7056 7098 | 
             
              };
         | 
| 7057 7099 |  | 
| @@ -7102,15 +7144,19 @@ class V8_EXPORT Isolate { | |
| 7102 7144 | 
             
                  AbortOnUncaughtExceptionCallback callback);
         | 
| 7103 7145 |  | 
| 7104 7146 | 
             
              /**
         | 
| 7105 | 
            -
               * This is an unfinished experimental feature, and is only exposed
         | 
| 7106 | 
            -
               * here for internal testing purposes. DO NOT USE.
         | 
| 7107 | 
            -
               *
         | 
| 7108 7147 | 
             
               * This specifies the callback called by the upcoming dynamic
         | 
| 7109 7148 | 
             
               * import() language feature to load modules.
         | 
| 7110 7149 | 
             
               */
         | 
| 7111 7150 | 
             
              void SetHostImportModuleDynamicallyCallback(
         | 
| 7112 7151 | 
             
                  HostImportModuleDynamicallyCallback callback);
         | 
| 7113 7152 |  | 
| 7153 | 
            +
              /**
         | 
| 7154 | 
            +
               * This specifies the callback called by the upcoming importa.meta
         | 
| 7155 | 
            +
               * language feature to retrieve host-defined meta data for a module.
         | 
| 7156 | 
            +
               */
         | 
| 7157 | 
            +
              void SetHostInitializeImportMetaObjectCallback(
         | 
| 7158 | 
            +
                  HostInitializeImportMetaObjectCallback callback);
         | 
| 7159 | 
            +
             | 
| 7114 7160 | 
             
              /**
         | 
| 7115 7161 | 
             
               * Optional notification that the system is running low on memory.
         | 
| 7116 7162 | 
             
               * V8 uses these notifications to guide heuristics.
         | 
| @@ -7179,6 +7225,14 @@ class V8_EXPORT Isolate { | |
| 7179 7225 | 
             
               */
         | 
| 7180 7226 | 
             
              V8_INLINE static uint32_t GetNumberOfDataSlots();
         | 
| 7181 7227 |  | 
| 7228 | 
            +
              /**
         | 
| 7229 | 
            +
               * Return data that was previously attached to the isolate snapshot via
         | 
| 7230 | 
            +
               * SnapshotCreator, and removes the reference to it.
         | 
| 7231 | 
            +
               * Repeated call with the same index returns an empty MaybeLocal.
         | 
| 7232 | 
            +
               */
         | 
| 7233 | 
            +
              template <class T>
         | 
| 7234 | 
            +
              V8_INLINE MaybeLocal<T> GetDataFromSnapshotOnce(size_t index);
         | 
| 7235 | 
            +
             | 
| 7182 7236 | 
             
              /**
         | 
| 7183 7237 | 
             
               * Get statistics about the heap memory usage.
         | 
| 7184 7238 | 
             
               */
         | 
| @@ -7275,8 +7329,13 @@ class V8_EXPORT Isolate { | |
| 7275 7329 | 
             
               * is initialized. It is the embedder's responsibility to stop all CPU
         | 
| 7276 7330 | 
             
               * profiling activities if it has started any.
         | 
| 7277 7331 | 
             
               */
         | 
| 7278 | 
            -
               | 
| 7279 | 
            -
             | 
| 7332 | 
            +
              V8_DEPRECATED("CpuProfiler should be created with CpuProfiler::New call.",
         | 
| 7333 | 
            +
                            CpuProfiler* GetCpuProfiler());
         | 
| 7334 | 
            +
             | 
| 7335 | 
            +
              /**
         | 
| 7336 | 
            +
               * Tells the CPU profiler whether the embedder is idle.
         | 
| 7337 | 
            +
               */
         | 
| 7338 | 
            +
              void SetIdle(bool is_idle);
         | 
| 7280 7339 |  | 
| 7281 7340 | 
             
              /** Returns true if this isolate has a current context. */
         | 
| 7282 7341 | 
             
              bool InContext();
         | 
| @@ -7292,7 +7351,7 @@ class V8_EXPORT Isolate { | |
| 7292 7351 | 
             
               * context of the top-most JavaScript frame.  If there are no
         | 
| 7293 7352 | 
             
               * JavaScript frames an empty handle is returned.
         | 
| 7294 7353 | 
             
               */
         | 
| 7295 | 
            -
               | 
| 7354 | 
            +
              V8_DEPRECATED(
         | 
| 7296 7355 | 
             
                  "Calling context concept is not compatible with tail calls, and will be "
         | 
| 7297 7356 | 
             
                  "removed.",
         | 
| 7298 7357 | 
             
                  Local<Context> GetCallingContext());
         | 
| @@ -7469,7 +7528,7 @@ class V8_EXPORT Isolate { | |
| 7469 7528 | 
             
               * further callbacks.
         | 
| 7470 7529 | 
             
               */
         | 
| 7471 7530 | 
             
              void AddCallCompletedCallback(CallCompletedCallback callback);
         | 
| 7472 | 
            -
               | 
| 7531 | 
            +
              V8_DEPRECATED(
         | 
| 7473 7532 | 
             
                  "Use callback with parameter",
         | 
| 7474 7533 | 
             
                  void AddCallCompletedCallback(DeprecatedCallCompletedCallback callback));
         | 
| 7475 7534 |  | 
| @@ -7477,10 +7536,9 @@ class V8_EXPORT Isolate { | |
| 7477 7536 | 
             
               * Removes callback that was installed by AddCallCompletedCallback.
         | 
| 7478 7537 | 
             
               */
         | 
| 7479 7538 | 
             
              void RemoveCallCompletedCallback(CallCompletedCallback callback);
         | 
| 7480 | 
            -
               | 
| 7481 | 
            -
             | 
| 7482 | 
            -
             | 
| 7483 | 
            -
                      DeprecatedCallCompletedCallback callback));
         | 
| 7539 | 
            +
              V8_DEPRECATED("Use callback with parameter",
         | 
| 7540 | 
            +
                            void RemoveCallCompletedCallback(
         | 
| 7541 | 
            +
                                DeprecatedCallCompletedCallback callback));
         | 
| 7484 7542 |  | 
| 7485 7543 | 
             
              /**
         | 
| 7486 7544 | 
             
               * Set the PromiseHook callback for various promise lifecycle
         | 
| @@ -7495,38 +7553,36 @@ class V8_EXPORT Isolate { | |
| 7495 7553 | 
             
              void SetPromiseRejectCallback(PromiseRejectCallback callback);
         | 
| 7496 7554 |  | 
| 7497 7555 | 
             
              /**
         | 
| 7498 | 
            -
               *  | 
| 7556 | 
            +
               * Runs the Microtask Work Queue until empty
         | 
| 7499 7557 | 
             
               * Any exceptions thrown by microtask callbacks are swallowed.
         | 
| 7500 7558 | 
             
               */
         | 
| 7501 7559 | 
             
              void RunMicrotasks();
         | 
| 7502 7560 |  | 
| 7503 7561 | 
             
              /**
         | 
| 7504 | 
            -
               *  | 
| 7562 | 
            +
               * Enqueues the callback to the Microtask Work Queue
         | 
| 7505 7563 | 
             
               */
         | 
| 7506 7564 | 
             
              void EnqueueMicrotask(Local<Function> microtask);
         | 
| 7507 7565 |  | 
| 7508 7566 | 
             
              /**
         | 
| 7509 | 
            -
               *  | 
| 7567 | 
            +
               * Enqueues the callback to the Microtask Work Queue
         | 
| 7510 7568 | 
             
               */
         | 
| 7511 | 
            -
              void EnqueueMicrotask(MicrotaskCallback  | 
| 7569 | 
            +
              void EnqueueMicrotask(MicrotaskCallback callback, void* data = nullptr);
         | 
| 7512 7570 |  | 
| 7513 7571 | 
             
              /**
         | 
| 7514 | 
            -
               *  | 
| 7515 | 
            -
               * for details.
         | 
| 7572 | 
            +
               * Controls how Microtasks are invoked. See MicrotasksPolicy for details.
         | 
| 7516 7573 | 
             
               */
         | 
| 7517 7574 | 
             
              void SetMicrotasksPolicy(MicrotasksPolicy policy);
         | 
| 7518 | 
            -
               | 
| 7519 | 
            -
             | 
| 7575 | 
            +
              V8_DEPRECATED("Use SetMicrotasksPolicy",
         | 
| 7576 | 
            +
                            void SetAutorunMicrotasks(bool autorun));
         | 
| 7520 7577 |  | 
| 7521 7578 | 
             
              /**
         | 
| 7522 | 
            -
               *  | 
| 7579 | 
            +
               * Returns the policy controlling how Microtasks are invoked.
         | 
| 7523 7580 | 
             
               */
         | 
| 7524 7581 | 
             
              MicrotasksPolicy GetMicrotasksPolicy() const;
         | 
| 7525 | 
            -
               | 
| 7526 | 
            -
                                bool WillAutorunMicrotasks() const);
         | 
| 7582 | 
            +
              V8_DEPRECATED("Use GetMicrotasksPolicy", bool WillAutorunMicrotasks() const);
         | 
| 7527 7583 |  | 
| 7528 7584 | 
             
              /**
         | 
| 7529 | 
            -
               *  | 
| 7585 | 
            +
               * Adds a callback to notify the host application after
         | 
| 7530 7586 | 
             
               * microtasks were run. The callback is triggered by explicit RunMicrotasks
         | 
| 7531 7587 | 
             
               * call or automatic microtasks execution (see SetAutorunMicrotasks).
         | 
| 7532 7588 | 
             
               *
         | 
| @@ -7580,9 +7636,6 @@ class V8_EXPORT Isolate { | |
| 7580 7636 | 
             
               */
         | 
| 7581 7637 | 
             
              bool IdleNotificationDeadline(double deadline_in_seconds);
         | 
| 7582 7638 |  | 
| 7583 | 
            -
              V8_DEPRECATED("use IdleNotificationDeadline()",
         | 
| 7584 | 
            -
                            bool IdleNotification(int idle_time_in_ms));
         | 
| 7585 | 
            -
             | 
| 7586 7639 | 
             
              /**
         | 
| 7587 7640 | 
             
               * Optional notification that the system is running low on memory.
         | 
| 7588 7641 | 
             
               * V8 uses these notifications to attempt to free memory.
         | 
| @@ -7695,6 +7748,23 @@ class V8_EXPORT Isolate { | |
| 7695 7748 | 
             
              /** Set the callback to invoke in case of OOM errors. */
         | 
| 7696 7749 | 
             
              void SetOOMErrorHandler(OOMErrorCallback that);
         | 
| 7697 7750 |  | 
| 7751 | 
            +
              /**
         | 
| 7752 | 
            +
               * Add a callback to invoke in case the heap size is close to the heap limit.
         | 
| 7753 | 
            +
               * If multiple callbacks are added, only the most recently added callback is
         | 
| 7754 | 
            +
               * invoked.
         | 
| 7755 | 
            +
               */
         | 
| 7756 | 
            +
              void AddNearHeapLimitCallback(NearHeapLimitCallback callback, void* data);
         | 
| 7757 | 
            +
             | 
| 7758 | 
            +
              /**
         | 
| 7759 | 
            +
               * Remove the given callback and restore the heap limit to the
         | 
| 7760 | 
            +
               * given limit. If the given limit is zero, then it is ignored.
         | 
| 7761 | 
            +
               * If the current heap size is greater than the given limit,
         | 
| 7762 | 
            +
               * then the heap limit is restored to the minimal limit that
         | 
| 7763 | 
            +
               * is possible for the current heap size.
         | 
| 7764 | 
            +
               */
         | 
| 7765 | 
            +
              void RemoveNearHeapLimitCallback(NearHeapLimitCallback callback,
         | 
| 7766 | 
            +
                                               size_t heap_limit);
         | 
| 7767 | 
            +
             | 
| 7698 7768 | 
             
              /**
         | 
| 7699 7769 | 
             
               * Set the callback to invoke to check if code generation from
         | 
| 7700 7770 | 
             
               * strings should be allowed.
         | 
| @@ -7702,6 +7772,13 @@ class V8_EXPORT Isolate { | |
| 7702 7772 | 
             
              void SetAllowCodeGenerationFromStringsCallback(
         | 
| 7703 7773 | 
             
                  AllowCodeGenerationFromStringsCallback callback);
         | 
| 7704 7774 |  | 
| 7775 | 
            +
              /**
         | 
| 7776 | 
            +
               * Set the callback to invoke to check if wasm code generation should
         | 
| 7777 | 
            +
               * be allowed.
         | 
| 7778 | 
            +
               */
         | 
| 7779 | 
            +
              void SetAllowWasmCodeGenerationCallback(
         | 
| 7780 | 
            +
                  AllowWasmCodeGenerationCallback callback);
         | 
| 7781 | 
            +
             | 
| 7705 7782 | 
             
              /**
         | 
| 7706 7783 | 
             
               * Embedder over{ride|load} injection points for wasm APIs. The expectation
         | 
| 7707 7784 | 
             
               * is that the embedder sets them at most once.
         | 
| @@ -7817,6 +7894,7 @@ class V8_EXPORT Isolate { | |
| 7817 7894 | 
             
              template <class K, class V, class Traits>
         | 
| 7818 7895 | 
             
              friend class PersistentValueMapBase;
         | 
| 7819 7896 |  | 
| 7897 | 
            +
              internal::Object** GetDataFromSnapshotOnce(size_t index);
         | 
| 7820 7898 | 
             
              void ReportExternalAllocationLimitReached();
         | 
| 7821 7899 | 
             
              void CheckMemoryPressure();
         | 
| 7822 7900 | 
             
            };
         | 
| @@ -7856,17 +7934,6 @@ typedef uintptr_t (*ReturnAddressLocationResolver)( | |
| 7856 7934 | 
             
             */
         | 
| 7857 7935 | 
             
            class V8_EXPORT V8 {
         | 
| 7858 7936 | 
             
             public:
         | 
| 7859 | 
            -
              /** Set the callback to invoke in case of fatal errors. */
         | 
| 7860 | 
            -
              V8_INLINE static V8_DEPRECATED(
         | 
| 7861 | 
            -
                  "Use isolate version",
         | 
| 7862 | 
            -
                  void SetFatalErrorHandler(FatalErrorCallback that));
         | 
| 7863 | 
            -
             | 
| 7864 | 
            -
              /**
         | 
| 7865 | 
            -
              * Check if V8 is dead and therefore unusable.  This is the case after
         | 
| 7866 | 
            -
              * fatal errors such as out-of-memory situations.
         | 
| 7867 | 
            -
              */
         | 
| 7868 | 
            -
              V8_INLINE static V8_DEPRECATED("Use isolate version", bool IsDead());
         | 
| 7869 | 
            -
             | 
| 7870 7937 | 
             
              /**
         | 
| 7871 7938 | 
             
               * Hand startup data to V8, in case the embedder has chosen to build
         | 
| 7872 7939 | 
             
               * V8 with external startup data.
         | 
| @@ -7907,35 +7974,6 @@ class V8_EXPORT V8 { | |
| 7907 7974 | 
             
              /** Set the callback to invoke in case of Dcheck failures. */
         | 
| 7908 7975 | 
             
              static void SetDcheckErrorHandler(DcheckErrorCallback that);
         | 
| 7909 7976 |  | 
| 7910 | 
            -
              /**
         | 
| 7911 | 
            -
               * Adds a message listener.
         | 
| 7912 | 
            -
               *
         | 
| 7913 | 
            -
               * The same message listener can be added more than once and in that
         | 
| 7914 | 
            -
               * case it will be called more than once for each message.
         | 
| 7915 | 
            -
               *
         | 
| 7916 | 
            -
               * If data is specified, it will be passed to the callback when it is called.
         | 
| 7917 | 
            -
               * Otherwise, the exception object will be passed to the callback instead.
         | 
| 7918 | 
            -
               */
         | 
| 7919 | 
            -
              V8_INLINE static V8_DEPRECATED(
         | 
| 7920 | 
            -
                  "Use isolate version",
         | 
| 7921 | 
            -
                  bool AddMessageListener(MessageCallback that,
         | 
| 7922 | 
            -
                                          Local<Value> data = Local<Value>()));
         | 
| 7923 | 
            -
             | 
| 7924 | 
            -
              /**
         | 
| 7925 | 
            -
               * Remove all message listeners from the specified callback function.
         | 
| 7926 | 
            -
               */
         | 
| 7927 | 
            -
              V8_INLINE static V8_DEPRECATED(
         | 
| 7928 | 
            -
                  "Use isolate version", void RemoveMessageListeners(MessageCallback that));
         | 
| 7929 | 
            -
             | 
| 7930 | 
            -
              /**
         | 
| 7931 | 
            -
               * Tells V8 to capture current stack trace when uncaught exception occurs
         | 
| 7932 | 
            -
               * and report it to the message listeners. The option is off by default.
         | 
| 7933 | 
            -
               */
         | 
| 7934 | 
            -
              V8_INLINE static V8_DEPRECATED(
         | 
| 7935 | 
            -
                  "Use isolate version",
         | 
| 7936 | 
            -
                  void SetCaptureStackTraceForUncaughtExceptions(
         | 
| 7937 | 
            -
                      bool capture, int frame_limit = 10,
         | 
| 7938 | 
            -
                      StackTrace::StackTraceOptions options = StackTrace::kOverview));
         | 
| 7939 7977 |  | 
| 7940 7978 | 
             
              /**
         | 
| 7941 7979 | 
             
               * Sets V8 flags from a string.
         | 
| @@ -7952,55 +7990,6 @@ class V8_EXPORT V8 { | |
| 7952 7990 | 
             
              /** Get the version string. */
         | 
| 7953 7991 | 
             
              static const char* GetVersion();
         | 
| 7954 7992 |  | 
| 7955 | 
            -
              /** Callback function for reporting failed access checks.*/
         | 
| 7956 | 
            -
              V8_INLINE static V8_DEPRECATED(
         | 
| 7957 | 
            -
                  "Use isolate version",
         | 
| 7958 | 
            -
                  void SetFailedAccessCheckCallbackFunction(FailedAccessCheckCallback));
         | 
| 7959 | 
            -
             | 
| 7960 | 
            -
              /**
         | 
| 7961 | 
            -
               * Enables the host application to receive a notification before a
         | 
| 7962 | 
            -
               * garbage collection.  Allocations are not allowed in the
         | 
| 7963 | 
            -
               * callback function, you therefore cannot manipulate objects (set
         | 
| 7964 | 
            -
               * or delete properties for example) since it is possible such
         | 
| 7965 | 
            -
               * operations will result in the allocation of objects. It is possible
         | 
| 7966 | 
            -
               * to specify the GCType filter for your callback. But it is not possible to
         | 
| 7967 | 
            -
               * register the same callback function two times with different
         | 
| 7968 | 
            -
               * GCType filters.
         | 
| 7969 | 
            -
               */
         | 
| 7970 | 
            -
              static V8_DEPRECATED(
         | 
| 7971 | 
            -
                  "Use isolate version",
         | 
| 7972 | 
            -
                  void AddGCPrologueCallback(GCCallback callback,
         | 
| 7973 | 
            -
                                             GCType gc_type_filter = kGCTypeAll));
         | 
| 7974 | 
            -
             | 
| 7975 | 
            -
              /**
         | 
| 7976 | 
            -
               * This function removes callback which was installed by
         | 
| 7977 | 
            -
               * AddGCPrologueCallback function.
         | 
| 7978 | 
            -
               */
         | 
| 7979 | 
            -
              static V8_DEPRECATED("Use isolate version",
         | 
| 7980 | 
            -
                                   void RemoveGCPrologueCallback(GCCallback callback));
         | 
| 7981 | 
            -
             | 
| 7982 | 
            -
              /**
         | 
| 7983 | 
            -
               * Enables the host application to receive a notification after a
         | 
| 7984 | 
            -
               * garbage collection.  Allocations are not allowed in the
         | 
| 7985 | 
            -
               * callback function, you therefore cannot manipulate objects (set
         | 
| 7986 | 
            -
               * or delete properties for example) since it is possible such
         | 
| 7987 | 
            -
               * operations will result in the allocation of objects. It is possible
         | 
| 7988 | 
            -
               * to specify the GCType filter for your callback. But it is not possible to
         | 
| 7989 | 
            -
               * register the same callback function two times with different
         | 
| 7990 | 
            -
               * GCType filters.
         | 
| 7991 | 
            -
               */
         | 
| 7992 | 
            -
              static V8_DEPRECATED(
         | 
| 7993 | 
            -
                  "Use isolate version",
         | 
| 7994 | 
            -
                  void AddGCEpilogueCallback(GCCallback callback,
         | 
| 7995 | 
            -
                                             GCType gc_type_filter = kGCTypeAll));
         | 
| 7996 | 
            -
             | 
| 7997 | 
            -
              /**
         | 
| 7998 | 
            -
               * This function removes callback which was installed by
         | 
| 7999 | 
            -
               * AddGCEpilogueCallback function.
         | 
| 8000 | 
            -
               */
         | 
| 8001 | 
            -
              static V8_DEPRECATED("Use isolate version",
         | 
| 8002 | 
            -
                                   void RemoveGCEpilogueCallback(GCCallback callback));
         | 
| 8003 | 
            -
             | 
| 8004 7993 | 
             
              /**
         | 
| 8005 7994 | 
             
               * Initializes V8. This function needs to be called before the first Isolate
         | 
| 8006 7995 | 
             
               * is created. It always returns true.
         | 
| @@ -8020,51 +8009,6 @@ class V8_EXPORT V8 { | |
| 8020 8009 | 
             
              static void SetReturnAddressLocationResolver(
         | 
| 8021 8010 | 
             
                  ReturnAddressLocationResolver return_address_resolver);
         | 
| 8022 8011 |  | 
| 8023 | 
            -
              /**
         | 
| 8024 | 
            -
               * Forcefully terminate the current thread of JavaScript execution
         | 
| 8025 | 
            -
               * in the given isolate.
         | 
| 8026 | 
            -
               *
         | 
| 8027 | 
            -
               * This method can be used by any thread even if that thread has not
         | 
| 8028 | 
            -
               * acquired the V8 lock with a Locker object.
         | 
| 8029 | 
            -
               *
         | 
| 8030 | 
            -
               * \param isolate The isolate in which to terminate the current JS execution.
         | 
| 8031 | 
            -
               */
         | 
| 8032 | 
            -
              V8_INLINE static V8_DEPRECATED("Use isolate version",
         | 
| 8033 | 
            -
                                             void TerminateExecution(Isolate* isolate));
         | 
| 8034 | 
            -
             | 
| 8035 | 
            -
              /**
         | 
| 8036 | 
            -
               * Is V8 terminating JavaScript execution.
         | 
| 8037 | 
            -
               *
         | 
| 8038 | 
            -
               * Returns true if JavaScript execution is currently terminating
         | 
| 8039 | 
            -
               * because of a call to TerminateExecution.  In that case there are
         | 
| 8040 | 
            -
               * still JavaScript frames on the stack and the termination
         | 
| 8041 | 
            -
               * exception is still active.
         | 
| 8042 | 
            -
               *
         | 
| 8043 | 
            -
               * \param isolate The isolate in which to check.
         | 
| 8044 | 
            -
               */
         | 
| 8045 | 
            -
              V8_INLINE static V8_DEPRECATED(
         | 
| 8046 | 
            -
                  "Use isolate version",
         | 
| 8047 | 
            -
                  bool IsExecutionTerminating(Isolate* isolate = NULL));
         | 
| 8048 | 
            -
             | 
| 8049 | 
            -
              /**
         | 
| 8050 | 
            -
               * Resume execution capability in the given isolate, whose execution
         | 
| 8051 | 
            -
               * was previously forcefully terminated using TerminateExecution().
         | 
| 8052 | 
            -
               *
         | 
| 8053 | 
            -
               * When execution is forcefully terminated using TerminateExecution(),
         | 
| 8054 | 
            -
               * the isolate can not resume execution until all JavaScript frames
         | 
| 8055 | 
            -
               * have propagated the uncatchable exception which is generated.  This
         | 
| 8056 | 
            -
               * method allows the program embedding the engine to handle the
         | 
| 8057 | 
            -
               * termination event and resume execution capability, even if
         | 
| 8058 | 
            -
               * JavaScript frames remain on the stack.
         | 
| 8059 | 
            -
               *
         | 
| 8060 | 
            -
               * This method can be used by any thread even if that thread has not
         | 
| 8061 | 
            -
               * acquired the V8 lock with a Locker object.
         | 
| 8062 | 
            -
               *
         | 
| 8063 | 
            -
               * \param isolate The isolate in which to resume execution capability.
         | 
| 8064 | 
            -
               */
         | 
| 8065 | 
            -
              V8_INLINE static V8_DEPRECATED(
         | 
| 8066 | 
            -
                  "Use isolate version", void CancelTerminateExecution(Isolate* isolate));
         | 
| 8067 | 
            -
             | 
| 8068 8012 | 
             
              /**
         | 
| 8069 8013 | 
             
               * Releases any resources used by v8 and stops any utility threads
         | 
| 8070 8014 | 
             
               * that may be running.  Note that disposing v8 is permanent, it
         | 
| @@ -8076,44 +8020,6 @@ class V8_EXPORT V8 { | |
| 8076 8020 | 
             
               */
         | 
| 8077 8021 | 
             
              static bool Dispose();
         | 
| 8078 8022 |  | 
| 8079 | 
            -
              /**
         | 
| 8080 | 
            -
               * Iterates through all external resources referenced from current isolate
         | 
| 8081 | 
            -
               * heap.  GC is not invoked prior to iterating, therefore there is no
         | 
| 8082 | 
            -
               * guarantee that visited objects are still alive.
         | 
| 8083 | 
            -
               */
         | 
| 8084 | 
            -
              V8_INLINE static V8_DEPRECATED(
         | 
| 8085 | 
            -
                  "Use isolate version",
         | 
| 8086 | 
            -
                  void VisitExternalResources(ExternalResourceVisitor* visitor));
         | 
| 8087 | 
            -
             | 
| 8088 | 
            -
              /**
         | 
| 8089 | 
            -
               * Iterates through all the persistent handles in the current isolate's heap
         | 
| 8090 | 
            -
               * that have class_ids.
         | 
| 8091 | 
            -
               */
         | 
| 8092 | 
            -
              V8_INLINE static V8_DEPRECATED(
         | 
| 8093 | 
            -
                  "Use isolate version",
         | 
| 8094 | 
            -
                  void VisitHandlesWithClassIds(PersistentHandleVisitor* visitor));
         | 
| 8095 | 
            -
             | 
| 8096 | 
            -
              /**
         | 
| 8097 | 
            -
               * Iterates through all the persistent handles in isolate's heap that have
         | 
| 8098 | 
            -
               * class_ids.
         | 
| 8099 | 
            -
               */
         | 
| 8100 | 
            -
              V8_INLINE static V8_DEPRECATED(
         | 
| 8101 | 
            -
                  "Use isolate version",
         | 
| 8102 | 
            -
                  void VisitHandlesWithClassIds(Isolate* isolate,
         | 
| 8103 | 
            -
                                                PersistentHandleVisitor* visitor));
         | 
| 8104 | 
            -
             | 
| 8105 | 
            -
              /**
         | 
| 8106 | 
            -
               * Iterates through all the persistent handles in the current isolate's heap
         | 
| 8107 | 
            -
               * that have class_ids and are candidates to be marked as partially dependent
         | 
| 8108 | 
            -
               * handles. This will visit handles to young objects created since the last
         | 
| 8109 | 
            -
               * garbage collection but is free to visit an arbitrary superset of these
         | 
| 8110 | 
            -
               * objects.
         | 
| 8111 | 
            -
               */
         | 
| 8112 | 
            -
              V8_INLINE static V8_DEPRECATED(
         | 
| 8113 | 
            -
                  "Use isolate version",
         | 
| 8114 | 
            -
                  void VisitHandlesForPartialDependence(Isolate* isolate,
         | 
| 8115 | 
            -
                                                        PersistentHandleVisitor* visitor));
         | 
| 8116 | 
            -
             | 
| 8117 8023 | 
             
              /**
         | 
| 8118 8024 | 
             
               * Initialize the ICU library bundled with V8. The embedder should only
         | 
| 8119 8025 | 
             
               * invoke this method when using the bundled ICU. Returns true on success.
         | 
| @@ -8121,9 +8027,7 @@ class V8_EXPORT V8 { | |
| 8121 8027 | 
             
               * If V8 was compiled with the ICU data in an external file, the location
         | 
| 8122 8028 | 
             
               * of the data file has to be provided.
         | 
| 8123 8029 | 
             
               */
         | 
| 8124 | 
            -
               | 
| 8125 | 
            -
                  "Use version with default location.",
         | 
| 8126 | 
            -
                  static bool InitializeICU(const char* icu_data_file = nullptr));
         | 
| 8030 | 
            +
              static bool InitializeICU(const char* icu_data_file = nullptr);
         | 
| 8127 8031 |  | 
| 8128 8032 | 
             
              /**
         | 
| 8129 8033 | 
             
               * Initialize the ICU library bundled with V8. The embedder should only
         | 
| @@ -8198,7 +8102,16 @@ class V8_EXPORT V8 { | |
| 8198 8102 | 
             
               * Enable the default signal handler rather than using one provided by the
         | 
| 8199 8103 | 
             
               * embedder.
         | 
| 8200 8104 | 
             
               */
         | 
| 8201 | 
            -
               | 
| 8105 | 
            +
              V8_DEPRECATE_SOON("Use EnableWebAssemblyTrapHandler",
         | 
| 8106 | 
            +
                                static bool RegisterDefaultSignalHandler());
         | 
| 8107 | 
            +
             | 
| 8108 | 
            +
              /**
         | 
| 8109 | 
            +
               * Activate trap-based bounds checking for WebAssembly.
         | 
| 8110 | 
            +
               *
         | 
| 8111 | 
            +
               * \param use_v8_signal_handler Whether V8 should install its own signal
         | 
| 8112 | 
            +
               * handler or rely on the embedder's.
         | 
| 8113 | 
            +
               */
         | 
| 8114 | 
            +
              static bool EnableWebAssemblyTrapHandler(bool use_v8_signal_handler);
         | 
| 8202 8115 |  | 
| 8203 8116 | 
             
             private:
         | 
| 8204 8117 | 
             
              V8();
         | 
| @@ -8218,6 +8131,8 @@ class V8_EXPORT V8 { | |
| 8218 8131 | 
             
                                   WeakCallbackInfo<void>::Callback weak_callback);
         | 
| 8219 8132 | 
             
              static void MakeWeak(internal::Object*** location_addr);
         | 
| 8220 8133 | 
             
              static void* ClearWeak(internal::Object** location);
         | 
| 8134 | 
            +
              static void AnnotateStrongRetainer(internal::Object** location,
         | 
| 8135 | 
            +
                                                 const char* label);
         | 
| 8221 8136 | 
             
              static Value* Eternalize(Isolate* isolate, Value* handle);
         | 
| 8222 8137 |  | 
| 8223 8138 | 
             
              static void RegisterExternallyReferencedObject(internal::Object** object,
         | 
| @@ -8296,6 +8211,24 @@ class V8_EXPORT SnapshotCreator { | |
| 8296 8211 | 
             
               */
         | 
| 8297 8212 | 
             
              size_t AddTemplate(Local<Template> template_obj);
         | 
| 8298 8213 |  | 
| 8214 | 
            +
              /**
         | 
| 8215 | 
            +
               * Attach arbitrary V8::Data to the context snapshot, which can be retrieved
         | 
| 8216 | 
            +
               * via Context::GetDataFromSnapshot after deserialization. This data does not
         | 
| 8217 | 
            +
               * survive when a new snapshot is created from an existing snapshot.
         | 
| 8218 | 
            +
               * \returns the index for retrieval.
         | 
| 8219 | 
            +
               */
         | 
| 8220 | 
            +
              template <class T>
         | 
| 8221 | 
            +
              V8_INLINE size_t AddData(Local<Context> context, Local<T> object);
         | 
| 8222 | 
            +
             | 
| 8223 | 
            +
              /**
         | 
| 8224 | 
            +
               * Attach arbitrary V8::Data to the isolate snapshot, which can be retrieved
         | 
| 8225 | 
            +
               * via Isolate::GetDataFromSnapshot after deserialization. This data does not
         | 
| 8226 | 
            +
               * survive when a new snapshot is created from an existing snapshot.
         | 
| 8227 | 
            +
               * \returns the index for retrieval.
         | 
| 8228 | 
            +
               */
         | 
| 8229 | 
            +
              template <class T>
         | 
| 8230 | 
            +
              V8_INLINE size_t AddData(Local<T> object);
         | 
| 8231 | 
            +
             | 
| 8299 8232 | 
             
              /**
         | 
| 8300 8233 | 
             
               * Created a snapshot data blob.
         | 
| 8301 8234 | 
             
               * This must not be called from within a handle scope.
         | 
| @@ -8311,6 +8244,9 @@ class V8_EXPORT SnapshotCreator { | |
| 8311 8244 | 
             
              void operator=(const SnapshotCreator&) = delete;
         | 
| 8312 8245 |  | 
| 8313 8246 | 
             
             private:
         | 
| 8247 | 
            +
              size_t AddData(Local<Context> context, internal::Object* object);
         | 
| 8248 | 
            +
              size_t AddData(internal::Object* object);
         | 
| 8249 | 
            +
             | 
| 8314 8250 | 
             
              void* data_;
         | 
| 8315 8251 | 
             
            };
         | 
| 8316 8252 |  | 
| @@ -8383,18 +8319,45 @@ class Maybe { | |
| 8383 8319 | 
             
              friend Maybe<U> Just(const U& u);
         | 
| 8384 8320 | 
             
            };
         | 
| 8385 8321 |  | 
| 8386 | 
            -
             | 
| 8387 8322 | 
             
            template <class T>
         | 
| 8388 8323 | 
             
            inline Maybe<T> Nothing() {
         | 
| 8389 8324 | 
             
              return Maybe<T>();
         | 
| 8390 8325 | 
             
            }
         | 
| 8391 8326 |  | 
| 8392 | 
            -
             | 
| 8393 8327 | 
             
            template <class T>
         | 
| 8394 8328 | 
             
            inline Maybe<T> Just(const T& t) {
         | 
| 8395 8329 | 
             
              return Maybe<T>(t);
         | 
| 8396 8330 | 
             
            }
         | 
| 8397 8331 |  | 
| 8332 | 
            +
            // A template specialization of Maybe<T> for the case of T = void.
         | 
| 8333 | 
            +
            template <>
         | 
| 8334 | 
            +
            class Maybe<void> {
         | 
| 8335 | 
            +
             public:
         | 
| 8336 | 
            +
              V8_INLINE bool IsNothing() const { return !is_valid_; }
         | 
| 8337 | 
            +
              V8_INLINE bool IsJust() const { return is_valid_; }
         | 
| 8338 | 
            +
             | 
| 8339 | 
            +
              V8_INLINE bool operator==(const Maybe& other) const {
         | 
| 8340 | 
            +
                return IsJust() == other.IsJust();
         | 
| 8341 | 
            +
              }
         | 
| 8342 | 
            +
             | 
| 8343 | 
            +
              V8_INLINE bool operator!=(const Maybe& other) const {
         | 
| 8344 | 
            +
                return !operator==(other);
         | 
| 8345 | 
            +
              }
         | 
| 8346 | 
            +
             | 
| 8347 | 
            +
             private:
         | 
| 8348 | 
            +
              struct JustTag {};
         | 
| 8349 | 
            +
             | 
| 8350 | 
            +
              Maybe() : is_valid_(false) {}
         | 
| 8351 | 
            +
              explicit Maybe(JustTag) : is_valid_(true) {}
         | 
| 8352 | 
            +
             | 
| 8353 | 
            +
              bool is_valid_;
         | 
| 8354 | 
            +
             | 
| 8355 | 
            +
              template <class U>
         | 
| 8356 | 
            +
              friend Maybe<U> Nothing();
         | 
| 8357 | 
            +
              friend Maybe<void> JustVoid();
         | 
| 8358 | 
            +
            };
         | 
| 8359 | 
            +
             | 
| 8360 | 
            +
            inline Maybe<void> JustVoid() { return Maybe<void>(Maybe<void>::JustTag()); }
         | 
| 8398 8361 |  | 
| 8399 8362 | 
             
            /**
         | 
| 8400 8363 | 
             
             * An external exception handler.
         | 
| @@ -8406,14 +8369,7 @@ class V8_EXPORT TryCatch { | |
| 8406 8369 | 
             
               * all TryCatch blocks should be stack allocated because the memory
         | 
| 8407 8370 | 
             
               * location itself is compared against JavaScript try/catch blocks.
         | 
| 8408 8371 | 
             
               */
         | 
| 8409 | 
            -
               | 
| 8410 | 
            -
             | 
| 8411 | 
            -
              /**
         | 
| 8412 | 
            -
               * Creates a new try/catch block and registers it with v8.  Note that
         | 
| 8413 | 
            -
               * all TryCatch blocks should be stack allocated because the memory
         | 
| 8414 | 
            -
               * location itself is compared against JavaScript try/catch blocks.
         | 
| 8415 | 
            -
               */
         | 
| 8416 | 
            -
              TryCatch(Isolate* isolate);
         | 
| 8372 | 
            +
              explicit TryCatch(Isolate* isolate);
         | 
| 8417 8373 |  | 
| 8418 8374 | 
             
              /**
         | 
| 8419 8375 | 
             
               * Unregisters and deletes this try/catch block.
         | 
| @@ -8470,7 +8426,7 @@ class V8_EXPORT TryCatch { | |
| 8470 8426 | 
             
               * Returns the .stack property of the thrown object.  If no .stack
         | 
| 8471 8427 | 
             
               * property is present an empty handle is returned.
         | 
| 8472 8428 | 
             
               */
         | 
| 8473 | 
            -
               | 
| 8429 | 
            +
              V8_DEPRECATED("Use maybe version.", Local<Value> StackTrace() const);
         | 
| 8474 8430 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Value> StackTrace(
         | 
| 8475 8431 | 
             
                  Local<Context> context) const;
         | 
| 8476 8432 |  | 
| @@ -8714,6 +8670,11 @@ class V8_EXPORT Context { | |
| 8714 8670 | 
             
               */
         | 
| 8715 8671 | 
             
              enum EmbedderDataFields { kDebugIdIndex = 0 };
         | 
| 8716 8672 |  | 
| 8673 | 
            +
              /**
         | 
| 8674 | 
            +
               * Return the number of fields allocated for embedder data.
         | 
| 8675 | 
            +
               */
         | 
| 8676 | 
            +
              uint32_t GetNumberOfEmbedderDataFields();
         | 
| 8677 | 
            +
             | 
| 8717 8678 | 
             
              /**
         | 
| 8718 8679 | 
             
               * Gets the embedder data with the given index, which must have been set by a
         | 
| 8719 8680 | 
             
               * previous call to SetEmbedderData with the same index.
         | 
| @@ -8779,9 +8740,12 @@ class V8_EXPORT Context { | |
| 8779 8740 | 
             
              void SetErrorMessageForCodeGenerationFromStrings(Local<String> message);
         | 
| 8780 8741 |  | 
| 8781 8742 | 
             
              /**
         | 
| 8782 | 
            -
               *  | 
| 8743 | 
            +
               * Return data that was previously attached to the context snapshot via
         | 
| 8744 | 
            +
               * SnapshotCreator, and removes the reference to it.
         | 
| 8745 | 
            +
               * Repeated call with the same index returns an empty MaybeLocal.
         | 
| 8783 8746 | 
             
               */
         | 
| 8784 | 
            -
               | 
| 8747 | 
            +
              template <class T>
         | 
| 8748 | 
            +
              V8_INLINE MaybeLocal<T> GetDataFromSnapshotOnce(size_t index);
         | 
| 8785 8749 |  | 
| 8786 8750 | 
             
              /**
         | 
| 8787 8751 | 
             
               * Stack-allocated class which sets the execution context for all
         | 
| @@ -8803,7 +8767,7 @@ class V8_EXPORT Context { | |
| 8803 8767 | 
             
               * stack.
         | 
| 8804 8768 | 
             
               * https://html.spec.whatwg.org/multipage/webappapis.html#backup-incumbent-settings-object-stack
         | 
| 8805 8769 | 
             
               */
         | 
| 8806 | 
            -
              class BackupIncumbentScope {
         | 
| 8770 | 
            +
              class V8_EXPORT BackupIncumbentScope {
         | 
| 8807 8771 | 
             
               public:
         | 
| 8808 8772 | 
             
                /**
         | 
| 8809 8773 | 
             
                 * |backup_incumbent_context| is pushed onto the backup incumbent settings
         | 
| @@ -8825,6 +8789,7 @@ class V8_EXPORT Context { | |
| 8825 8789 | 
             
              friend class Object;
         | 
| 8826 8790 | 
             
              friend class Function;
         | 
| 8827 8791 |  | 
| 8792 | 
            +
              internal::Object** GetDataFromSnapshotOnce(size_t index);
         | 
| 8828 8793 | 
             
              Local<Value> SlowGetEmbedderData(int index);
         | 
| 8829 8794 | 
             
              void* SlowGetAlignedPointerFromEmbedderData(int index);
         | 
| 8830 8795 | 
             
            };
         | 
| @@ -8965,6 +8930,7 @@ const int kApiInt64Size = sizeof(int64_t);  // NOLINT | |
| 8965 8930 |  | 
| 8966 8931 | 
             
            // Tag information for HeapObject.
         | 
| 8967 8932 | 
             
            const int kHeapObjectTag = 1;
         | 
| 8933 | 
            +
            const int kWeakHeapObjectTag = 3;
         | 
| 8968 8934 | 
             
            const int kHeapObjectTagSize = 2;
         | 
| 8969 8935 | 
             
            const intptr_t kHeapObjectTagMask = (1 << kHeapObjectTagSize) - 1;
         | 
| 8970 8936 |  | 
| @@ -9047,8 +9013,7 @@ class Internals { | |
| 9047 9013 | 
             
              // These values match non-compiler-dependent values defined within
         | 
| 9048 9014 | 
             
              // the implementation of v8.
         | 
| 9049 9015 | 
             
              static const int kHeapObjectMapOffset = 0;
         | 
| 9050 | 
            -
              static const int  | 
| 9051 | 
            -
                  1 * kApiPointerSize + kApiIntSize;
         | 
| 9016 | 
            +
              static const int kMapInstanceTypeOffset = 1 * kApiPointerSize + kApiIntSize;
         | 
| 9052 9017 | 
             
              static const int kStringResourceOffset = 3 * kApiPointerSize;
         | 
| 9053 9018 |  | 
| 9054 9019 | 
             
              static const int kOddballKindOffset = 4 * kApiPointerSize + sizeof(double);
         | 
| @@ -9090,8 +9055,9 @@ class Internals { | |
| 9090 9055 | 
             
              static const int kFirstNonstringType = 0x80;
         | 
| 9091 9056 | 
             
              static const int kOddballType = 0x83;
         | 
| 9092 9057 | 
             
              static const int kForeignType = 0x87;
         | 
| 9093 | 
            -
              static const int  | 
| 9094 | 
            -
              static const int  | 
| 9058 | 
            +
              static const int kJSSpecialApiObjectType = 0x410;
         | 
| 9059 | 
            +
              static const int kJSApiObjectType = 0x420;
         | 
| 9060 | 
            +
              static const int kJSObjectType = 0x421;
         | 
| 9095 9061 |  | 
| 9096 9062 | 
             
              static const int kUndefinedOddballKind = 5;
         | 
| 9097 9063 | 
             
              static const int kNullOddballKind = 3;
         | 
| @@ -9125,9 +9091,7 @@ class Internals { | |
| 9125 9091 | 
             
              V8_INLINE static int GetInstanceType(const internal::Object* obj) {
         | 
| 9126 9092 | 
             
                typedef internal::Object O;
         | 
| 9127 9093 | 
             
                O* map = ReadField<O*>(obj, kHeapObjectMapOffset);
         | 
| 9128 | 
            -
                 | 
| 9129 | 
            -
                // the LS 8 bits of one 16-bit word, regardless of endianess.
         | 
| 9130 | 
            -
                return ReadField<uint16_t>(map, kMapInstanceTypeAndBitFieldOffset) & 0xff;
         | 
| 9094 | 
            +
                return ReadField<uint16_t>(map, kMapInstanceTypeOffset);
         | 
| 9131 9095 | 
             
              }
         | 
| 9132 9096 |  | 
| 9133 9097 | 
             
              V8_INLINE static int GetOddballKind(const internal::Object* obj) {
         | 
| @@ -9205,6 +9169,29 @@ class Internals { | |
| 9205 9169 | 
             
              }
         | 
| 9206 9170 | 
             
            };
         | 
| 9207 9171 |  | 
| 9172 | 
            +
            // Only perform cast check for types derived from v8::Data since
         | 
| 9173 | 
            +
            // other types do not implement the Cast method.
         | 
| 9174 | 
            +
            template <bool PerformCheck>
         | 
| 9175 | 
            +
            struct CastCheck {
         | 
| 9176 | 
            +
              template <class T>
         | 
| 9177 | 
            +
              static void Perform(T* data);
         | 
| 9178 | 
            +
            };
         | 
| 9179 | 
            +
             | 
| 9180 | 
            +
            template <>
         | 
| 9181 | 
            +
            template <class T>
         | 
| 9182 | 
            +
            void CastCheck<true>::Perform(T* data) {
         | 
| 9183 | 
            +
              T::Cast(data);
         | 
| 9184 | 
            +
            }
         | 
| 9185 | 
            +
             | 
| 9186 | 
            +
            template <>
         | 
| 9187 | 
            +
            template <class T>
         | 
| 9188 | 
            +
            void CastCheck<false>::Perform(T* data) {}
         | 
| 9189 | 
            +
             | 
| 9190 | 
            +
            template <class T>
         | 
| 9191 | 
            +
            V8_INLINE void PerformCastCheck(T* data) {
         | 
| 9192 | 
            +
              CastCheck<std::is_base_of<Data, T>::value>::Perform(data);
         | 
| 9193 | 
            +
            }
         | 
| 9194 | 
            +
             | 
| 9208 9195 | 
             
            }  // namespace internal
         | 
| 9209 9196 |  | 
| 9210 9197 |  | 
| @@ -9284,7 +9271,6 @@ void Persistent<T, M>::Copy(const Persistent<S, M2>& that) { | |
| 9284 9271 | 
             
              M::Copy(that, this);
         | 
| 9285 9272 | 
             
            }
         | 
| 9286 9273 |  | 
| 9287 | 
            -
             | 
| 9288 9274 | 
             
            template <class T>
         | 
| 9289 9275 | 
             
            bool PersistentBase<T>::IsIndependent() const {
         | 
| 9290 9276 | 
             
              typedef internal::Internals I;
         | 
| @@ -9293,7 +9279,6 @@ bool PersistentBase<T>::IsIndependent() const { | |
| 9293 9279 | 
             
                                    I::kNodeIsIndependentShift);
         | 
| 9294 9280 | 
             
            }
         | 
| 9295 9281 |  | 
| 9296 | 
            -
             | 
| 9297 9282 | 
             
            template <class T>
         | 
| 9298 9283 | 
             
            bool PersistentBase<T>::IsNearDeath() const {
         | 
| 9299 9284 | 
             
              typedef internal::Internals I;
         | 
| @@ -9365,6 +9350,12 @@ P* PersistentBase<T>::ClearWeak() { | |
| 9365 9350 | 
             
                V8::ClearWeak(reinterpret_cast<internal::Object**>(this->val_)));
         | 
| 9366 9351 | 
             
            }
         | 
| 9367 9352 |  | 
| 9353 | 
            +
            template <class T>
         | 
| 9354 | 
            +
            void PersistentBase<T>::AnnotateStrongRetainer(const char* label) {
         | 
| 9355 | 
            +
              V8::AnnotateStrongRetainer(reinterpret_cast<internal::Object**>(this->val_),
         | 
| 9356 | 
            +
                                         label);
         | 
| 9357 | 
            +
            }
         | 
| 9358 | 
            +
             | 
| 9368 9359 | 
             
            template <class T>
         | 
| 9369 9360 | 
             
            void PersistentBase<T>::RegisterExternalReference(Isolate* isolate) const {
         | 
| 9370 9361 | 
             
              if (IsEmpty()) return;
         | 
| @@ -9377,8 +9368,7 @@ template <class T> | |
| 9377 9368 | 
             
            void PersistentBase<T>::MarkIndependent() {
         | 
| 9378 9369 | 
             
              typedef internal::Internals I;
         | 
| 9379 9370 | 
             
              if (this->IsEmpty()) return;
         | 
| 9380 | 
            -
              I::UpdateNodeFlag(reinterpret_cast<internal::Object**>(this->val_),
         | 
| 9381 | 
            -
                                true,
         | 
| 9371 | 
            +
              I::UpdateNodeFlag(reinterpret_cast<internal::Object**>(this->val_), true,
         | 
| 9382 9372 | 
             
                                I::kNodeIsIndependentShift);
         | 
| 9383 9373 | 
             
            }
         | 
| 9384 9374 |  | 
| @@ -9550,13 +9540,6 @@ Local<Value> FunctionCallbackInfo<T>::operator[](int i) const { | |
| 9550 9540 | 
             
            }
         | 
| 9551 9541 |  | 
| 9552 9542 |  | 
| 9553 | 
            -
            template<typename T>
         | 
| 9554 | 
            -
            Local<Function> FunctionCallbackInfo<T>::Callee() const {
         | 
| 9555 | 
            -
              return Local<Function>(reinterpret_cast<Function*>(
         | 
| 9556 | 
            -
                  &implicit_args_[kCalleeIndex]));
         | 
| 9557 | 
            -
            }
         | 
| 9558 | 
            -
             | 
| 9559 | 
            -
             | 
| 9560 9543 | 
             
            template<typename T>
         | 
| 9561 9544 | 
             
            Local<Object> FunctionCallbackInfo<T>::This() const {
         | 
| 9562 9545 | 
             
              return Local<Object>(reinterpret_cast<Object*>(values_ + 1));
         | 
| @@ -9686,6 +9669,33 @@ void Template::Set(Isolate* isolate, const char* name, Local<Data> value) { | |
| 9686 9669 | 
             
                  value);
         | 
| 9687 9670 | 
             
            }
         | 
| 9688 9671 |  | 
| 9672 | 
            +
            FunctionTemplate* FunctionTemplate::Cast(Data* data) {
         | 
| 9673 | 
            +
            #ifdef V8_ENABLE_CHECKS
         | 
| 9674 | 
            +
              CheckCast(data);
         | 
| 9675 | 
            +
            #endif
         | 
| 9676 | 
            +
              return reinterpret_cast<FunctionTemplate*>(data);
         | 
| 9677 | 
            +
            }
         | 
| 9678 | 
            +
             | 
| 9679 | 
            +
            ObjectTemplate* ObjectTemplate::Cast(Data* data) {
         | 
| 9680 | 
            +
            #ifdef V8_ENABLE_CHECKS
         | 
| 9681 | 
            +
              CheckCast(data);
         | 
| 9682 | 
            +
            #endif
         | 
| 9683 | 
            +
              return reinterpret_cast<ObjectTemplate*>(data);
         | 
| 9684 | 
            +
            }
         | 
| 9685 | 
            +
             | 
| 9686 | 
            +
            Signature* Signature::Cast(Data* data) {
         | 
| 9687 | 
            +
            #ifdef V8_ENABLE_CHECKS
         | 
| 9688 | 
            +
              CheckCast(data);
         | 
| 9689 | 
            +
            #endif
         | 
| 9690 | 
            +
              return reinterpret_cast<Signature*>(data);
         | 
| 9691 | 
            +
            }
         | 
| 9692 | 
            +
             | 
| 9693 | 
            +
            AccessorSignature* AccessorSignature::Cast(Data* data) {
         | 
| 9694 | 
            +
            #ifdef V8_ENABLE_CHECKS
         | 
| 9695 | 
            +
              CheckCast(data);
         | 
| 9696 | 
            +
            #endif
         | 
| 9697 | 
            +
              return reinterpret_cast<AccessorSignature*>(data);
         | 
| 9698 | 
            +
            }
         | 
| 9689 9699 |  | 
| 9690 9700 | 
             
            Local<Value> Object::GetInternalField(int index) {
         | 
| 9691 9701 | 
             
            #ifndef V8_ENABLE_CHECKS
         | 
| @@ -9697,7 +9707,8 @@ Local<Value> Object::GetInternalField(int index) { | |
| 9697 9707 | 
             
              // know where to find the internal fields and can return the value directly.
         | 
| 9698 9708 | 
             
              auto instance_type = I::GetInstanceType(obj);
         | 
| 9699 9709 | 
             
              if (instance_type == I::kJSObjectType ||
         | 
| 9700 | 
            -
                  instance_type == I::kJSApiObjectType | 
| 9710 | 
            +
                  instance_type == I::kJSApiObjectType ||
         | 
| 9711 | 
            +
                  instance_type == I::kJSSpecialApiObjectType) {
         | 
| 9701 9712 | 
             
                int offset = I::kJSObjectHeaderSize + (internal::kApiPointerSize * index);
         | 
| 9702 9713 | 
             
                O* value = I::ReadField<O*>(obj, offset);
         | 
| 9703 9714 | 
             
                O** result = HandleScope::CreateHandle(reinterpret_cast<HO*>(obj), value);
         | 
| @@ -9717,7 +9728,8 @@ void* Object::GetAlignedPointerFromInternalField(int index) { | |
| 9717 9728 | 
             
              // know where to find the internal fields and can return the value directly.
         | 
| 9718 9729 | 
             
              auto instance_type = I::GetInstanceType(obj);
         | 
| 9719 9730 | 
             
              if (V8_LIKELY(instance_type == I::kJSObjectType ||
         | 
| 9720 | 
            -
                            instance_type == I::kJSApiObjectType | 
| 9731 | 
            +
                            instance_type == I::kJSApiObjectType ||
         | 
| 9732 | 
            +
                            instance_type == I::kJSSpecialApiObjectType)) {
         | 
| 9721 9733 | 
             
                int offset = I::kJSObjectHeaderSize + (internal::kApiPointerSize * index);
         | 
| 9722 9734 | 
             
                return I::ReadField<void*>(obj, offset);
         | 
| 9723 9735 | 
             
              }
         | 
| @@ -9861,24 +9873,12 @@ Local<Boolean> Value::ToBoolean() const { | |
| 9861 9873 | 
             
            }
         | 
| 9862 9874 |  | 
| 9863 9875 |  | 
| 9864 | 
            -
            Local<Number> Value::ToNumber() const {
         | 
| 9865 | 
            -
              return ToNumber(Isolate::GetCurrent()->GetCurrentContext())
         | 
| 9866 | 
            -
                  .FromMaybe(Local<Number>());
         | 
| 9867 | 
            -
            }
         | 
| 9868 | 
            -
             | 
| 9869 | 
            -
             | 
| 9870 9876 | 
             
            Local<String> Value::ToString() const {
         | 
| 9871 9877 | 
             
              return ToString(Isolate::GetCurrent()->GetCurrentContext())
         | 
| 9872 9878 | 
             
                  .FromMaybe(Local<String>());
         | 
| 9873 9879 | 
             
            }
         | 
| 9874 9880 |  | 
| 9875 9881 |  | 
| 9876 | 
            -
            Local<String> Value::ToDetailString() const {
         | 
| 9877 | 
            -
              return ToDetailString(Isolate::GetCurrent()->GetCurrentContext())
         | 
| 9878 | 
            -
                  .FromMaybe(Local<String>());
         | 
| 9879 | 
            -
            }
         | 
| 9880 | 
            -
             | 
| 9881 | 
            -
             | 
| 9882 9882 | 
             
            Local<Object> Value::ToObject() const {
         | 
| 9883 9883 | 
             
              return ToObject(Isolate::GetCurrent()->GetCurrentContext())
         | 
| 9884 9884 | 
             
                  .FromMaybe(Local<Object>());
         | 
| @@ -9891,18 +9891,6 @@ Local<Integer> Value::ToInteger() const { | |
| 9891 9891 | 
             
            }
         | 
| 9892 9892 |  | 
| 9893 9893 |  | 
| 9894 | 
            -
            Local<Uint32> Value::ToUint32() const {
         | 
| 9895 | 
            -
              return ToUint32(Isolate::GetCurrent()->GetCurrentContext())
         | 
| 9896 | 
            -
                  .FromMaybe(Local<Uint32>());
         | 
| 9897 | 
            -
            }
         | 
| 9898 | 
            -
             | 
| 9899 | 
            -
             | 
| 9900 | 
            -
            Local<Int32> Value::ToInt32() const {
         | 
| 9901 | 
            -
              return ToInt32(Isolate::GetCurrent()->GetCurrentContext())
         | 
| 9902 | 
            -
                  .FromMaybe(Local<Int32>());
         | 
| 9903 | 
            -
            }
         | 
| 9904 | 
            -
             | 
| 9905 | 
            -
             | 
| 9906 9894 | 
             
            Boolean* Boolean::Cast(v8::Value* value) {
         | 
| 9907 9895 | 
             
            #ifdef V8_ENABLE_CHECKS
         | 
| 9908 9896 | 
             
              CheckCast(value);
         | 
| @@ -9927,6 +9915,14 @@ Symbol* Symbol::Cast(v8::Value* value) { | |
| 9927 9915 | 
             
            }
         | 
| 9928 9916 |  | 
| 9929 9917 |  | 
| 9918 | 
            +
            Private* Private::Cast(Data* data) {
         | 
| 9919 | 
            +
            #ifdef V8_ENABLE_CHECKS
         | 
| 9920 | 
            +
              CheckCast(data);
         | 
| 9921 | 
            +
            #endif
         | 
| 9922 | 
            +
              return reinterpret_cast<Private*>(data);
         | 
| 9923 | 
            +
            }
         | 
| 9924 | 
            +
             | 
| 9925 | 
            +
             | 
| 9930 9926 | 
             
            Number* Number::Cast(v8::Value* value) {
         | 
| 9931 9927 | 
             
            #ifdef V8_ENABLE_CHECKS
         | 
| 9932 9928 | 
             
              CheckCast(value);
         | 
| @@ -9958,6 +9954,12 @@ Uint32* Uint32::Cast(v8::Value* value) { | |
| 9958 9954 | 
             
              return static_cast<Uint32*>(value);
         | 
| 9959 9955 | 
             
            }
         | 
| 9960 9956 |  | 
| 9957 | 
            +
            BigInt* BigInt::Cast(v8::Value* value) {
         | 
| 9958 | 
            +
            #ifdef V8_ENABLE_CHECKS
         | 
| 9959 | 
            +
              CheckCast(value);
         | 
| 9960 | 
            +
            #endif
         | 
| 9961 | 
            +
              return static_cast<BigInt*>(value);
         | 
| 9962 | 
            +
            }
         | 
| 9961 9963 |  | 
| 9962 9964 | 
             
            Date* Date::Cast(v8::Value* value) {
         | 
| 9963 9965 | 
             
            #ifdef V8_ENABLE_CHECKS
         | 
| @@ -9990,6 +9992,12 @@ NumberObject* NumberObject::Cast(v8::Value* value) { | |
| 9990 9992 | 
             
              return static_cast<NumberObject*>(value);
         | 
| 9991 9993 | 
             
            }
         | 
| 9992 9994 |  | 
| 9995 | 
            +
            BigIntObject* BigIntObject::Cast(v8::Value* value) {
         | 
| 9996 | 
            +
            #ifdef V8_ENABLE_CHECKS
         | 
| 9997 | 
            +
              CheckCast(value);
         | 
| 9998 | 
            +
            #endif
         | 
| 9999 | 
            +
              return static_cast<BigIntObject*>(value);
         | 
| 10000 | 
            +
            }
         | 
| 9993 10001 |  | 
| 9994 10002 | 
             
            BooleanObject* BooleanObject::Cast(v8::Value* value) {
         | 
| 9995 10003 | 
             
            #ifdef V8_ENABLE_CHECKS
         | 
| @@ -10156,6 +10164,19 @@ Float64Array* Float64Array::Cast(v8::Value* value) { | |
| 10156 10164 | 
             
              return static_cast<Float64Array*>(value);
         | 
| 10157 10165 | 
             
            }
         | 
| 10158 10166 |  | 
| 10167 | 
            +
            BigInt64Array* BigInt64Array::Cast(v8::Value* value) {
         | 
| 10168 | 
            +
            #ifdef V8_ENABLE_CHECKS
         | 
| 10169 | 
            +
              CheckCast(value);
         | 
| 10170 | 
            +
            #endif
         | 
| 10171 | 
            +
              return static_cast<BigInt64Array*>(value);
         | 
| 10172 | 
            +
            }
         | 
| 10173 | 
            +
             | 
| 10174 | 
            +
            BigUint64Array* BigUint64Array::Cast(v8::Value* value) {
         | 
| 10175 | 
            +
            #ifdef V8_ENABLE_CHECKS
         | 
| 10176 | 
            +
              CheckCast(value);
         | 
| 10177 | 
            +
            #endif
         | 
| 10178 | 
            +
              return static_cast<BigUint64Array*>(value);
         | 
| 10179 | 
            +
            }
         | 
| 10159 10180 |  | 
| 10160 10181 | 
             
            Uint8ClampedArray* Uint8ClampedArray::Cast(v8::Value* value) {
         | 
| 10161 10182 | 
             
            #ifdef V8_ENABLE_CHECKS
         | 
| @@ -10286,6 +10307,12 @@ uint32_t Isolate::GetNumberOfDataSlots() { | |
| 10286 10307 | 
             
              return I::kNumIsolateDataSlots;
         | 
| 10287 10308 | 
             
            }
         | 
| 10288 10309 |  | 
| 10310 | 
            +
            template <class T>
         | 
| 10311 | 
            +
            MaybeLocal<T> Isolate::GetDataFromSnapshotOnce(size_t index) {
         | 
| 10312 | 
            +
              T* data = reinterpret_cast<T*>(GetDataFromSnapshotOnce(index));
         | 
| 10313 | 
            +
              if (data) internal::PerformCastCheck(data);
         | 
| 10314 | 
            +
              return Local<T>(data);
         | 
| 10315 | 
            +
            }
         | 
| 10289 10316 |  | 
| 10290 10317 | 
             
            int64_t Isolate::AdjustAmountOfExternalAllocatedMemory(
         | 
| 10291 10318 | 
             
                int64_t change_in_bytes) {
         | 
| @@ -10345,81 +10372,25 @@ void* Context::GetAlignedPointerFromEmbedderData(int index) { | |
| 10345 10372 | 
             
            #endif
         | 
| 10346 10373 | 
             
            }
         | 
| 10347 10374 |  | 
| 10348 | 
            -
             | 
| 10349 | 
            -
             | 
| 10350 | 
            -
               | 
| 10351 | 
            -
             | 
| 10352 | 
            -
             | 
| 10353 | 
            -
             | 
| 10354 | 
            -
            bool V8::AddMessageListener(MessageCallback that, Local<Value> data) {
         | 
| 10355 | 
            -
              Isolate* isolate = Isolate::GetCurrent();
         | 
| 10356 | 
            -
              return isolate->AddMessageListener(that, data);
         | 
| 10357 | 
            -
            }
         | 
| 10358 | 
            -
             | 
| 10359 | 
            -
             | 
| 10360 | 
            -
            void V8::RemoveMessageListeners(MessageCallback that) {
         | 
| 10361 | 
            -
              Isolate* isolate = Isolate::GetCurrent();
         | 
| 10362 | 
            -
              isolate->RemoveMessageListeners(that);
         | 
| 10363 | 
            -
            }
         | 
| 10364 | 
            -
             | 
| 10365 | 
            -
             | 
| 10366 | 
            -
            void V8::SetFailedAccessCheckCallbackFunction(
         | 
| 10367 | 
            -
                FailedAccessCheckCallback callback) {
         | 
| 10368 | 
            -
              Isolate* isolate = Isolate::GetCurrent();
         | 
| 10369 | 
            -
              isolate->SetFailedAccessCheckCallbackFunction(callback);
         | 
| 10370 | 
            -
            }
         | 
| 10371 | 
            -
             | 
| 10372 | 
            -
             | 
| 10373 | 
            -
            void V8::SetCaptureStackTraceForUncaughtExceptions(
         | 
| 10374 | 
            -
                bool capture, int frame_limit, StackTrace::StackTraceOptions options) {
         | 
| 10375 | 
            -
              Isolate* isolate = Isolate::GetCurrent();
         | 
| 10376 | 
            -
              isolate->SetCaptureStackTraceForUncaughtExceptions(capture, frame_limit,
         | 
| 10377 | 
            -
                                                                 options);
         | 
| 10378 | 
            -
            }
         | 
| 10379 | 
            -
             | 
| 10380 | 
            -
             | 
| 10381 | 
            -
            void V8::SetFatalErrorHandler(FatalErrorCallback callback) {
         | 
| 10382 | 
            -
              Isolate* isolate = Isolate::GetCurrent();
         | 
| 10383 | 
            -
              isolate->SetFatalErrorHandler(callback);
         | 
| 10384 | 
            -
            }
         | 
| 10385 | 
            -
             | 
| 10386 | 
            -
            void V8::TerminateExecution(Isolate* isolate) { isolate->TerminateExecution(); }
         | 
| 10387 | 
            -
             | 
| 10388 | 
            -
             | 
| 10389 | 
            -
            bool V8::IsExecutionTerminating(Isolate* isolate) {
         | 
| 10390 | 
            -
              if (isolate == NULL) {
         | 
| 10391 | 
            -
                isolate = Isolate::GetCurrent();
         | 
| 10392 | 
            -
              }
         | 
| 10393 | 
            -
              return isolate->IsExecutionTerminating();
         | 
| 10394 | 
            -
            }
         | 
| 10395 | 
            -
             | 
| 10396 | 
            -
             | 
| 10397 | 
            -
            void V8::CancelTerminateExecution(Isolate* isolate) {
         | 
| 10398 | 
            -
              isolate->CancelTerminateExecution();
         | 
| 10399 | 
            -
            }
         | 
| 10400 | 
            -
             | 
| 10401 | 
            -
             | 
| 10402 | 
            -
            void V8::VisitExternalResources(ExternalResourceVisitor* visitor) {
         | 
| 10403 | 
            -
              Isolate* isolate = Isolate::GetCurrent();
         | 
| 10404 | 
            -
              isolate->VisitExternalResources(visitor);
         | 
| 10405 | 
            -
            }
         | 
| 10406 | 
            -
             | 
| 10407 | 
            -
             | 
| 10408 | 
            -
            void V8::VisitHandlesWithClassIds(PersistentHandleVisitor* visitor) {
         | 
| 10409 | 
            -
              Isolate* isolate = Isolate::GetCurrent();
         | 
| 10410 | 
            -
              isolate->VisitHandlesWithClassIds(visitor);
         | 
| 10375 | 
            +
            template <class T>
         | 
| 10376 | 
            +
            MaybeLocal<T> Context::GetDataFromSnapshotOnce(size_t index) {
         | 
| 10377 | 
            +
              T* data = reinterpret_cast<T*>(GetDataFromSnapshotOnce(index));
         | 
| 10378 | 
            +
              if (data) internal::PerformCastCheck(data);
         | 
| 10379 | 
            +
              return Local<T>(data);
         | 
| 10411 10380 | 
             
            }
         | 
| 10412 10381 |  | 
| 10413 | 
            -
             | 
| 10414 | 
            -
             | 
| 10415 | 
            -
             | 
| 10416 | 
            -
               | 
| 10382 | 
            +
            template <class T>
         | 
| 10383 | 
            +
            size_t SnapshotCreator::AddData(Local<Context> context, Local<T> object) {
         | 
| 10384 | 
            +
              T* object_ptr = *object;
         | 
| 10385 | 
            +
              internal::Object** p = reinterpret_cast<internal::Object**>(object_ptr);
         | 
| 10386 | 
            +
              return AddData(context, *p);
         | 
| 10417 10387 | 
             
            }
         | 
| 10418 10388 |  | 
| 10419 | 
            -
             | 
| 10420 | 
            -
             | 
| 10421 | 
            -
             | 
| 10422 | 
            -
               | 
| 10389 | 
            +
            template <class T>
         | 
| 10390 | 
            +
            size_t SnapshotCreator::AddData(Local<T> object) {
         | 
| 10391 | 
            +
              T* object_ptr = *object;
         | 
| 10392 | 
            +
              internal::Object** p = reinterpret_cast<internal::Object**>(object_ptr);
         | 
| 10393 | 
            +
              return AddData(*p);
         | 
| 10423 10394 | 
             
            }
         | 
| 10424 10395 |  | 
| 10425 10396 | 
             
            /**
         |