libv8-node 21.7.2.0-aarch64-linux-musl → 22.5.1.0-aarch64-linux-musl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/lib/libv8/node/version.rb +3 -3
 - data/vendor/v8/aarch64-linux-musl/libv8/obj/libv8_monolith.a +0 -0
 - data/vendor/v8/include/cppgc/internal/api-constants.h +1 -1
 - data/vendor/v8/include/cppgc/type-traits.h +25 -4
 - data/vendor/v8/include/v8-array-buffer.h +6 -0
 - data/vendor/v8/include/v8-callbacks.h +6 -12
 - data/vendor/v8/include/v8-container.h +54 -0
 - data/vendor/v8/include/v8-context.h +51 -22
 - data/vendor/v8/include/v8-embedder-heap.h +19 -3
 - data/vendor/v8/include/v8-embedder-state-scope.h +2 -1
 - data/vendor/v8/include/v8-exception.h +15 -9
 - data/vendor/v8/include/v8-fast-api-calls.h +35 -26
 - data/vendor/v8/include/v8-forward.h +1 -0
 - data/vendor/v8/include/v8-function-callback.h +129 -20
 - data/vendor/v8/include/v8-handle-base.h +32 -80
 - data/vendor/v8/include/v8-inspector.h +16 -24
 - data/vendor/v8/include/v8-internal.h +472 -65
 - data/vendor/v8/include/v8-isolate.h +86 -51
 - data/vendor/v8/include/v8-local-handle.h +257 -31
 - data/vendor/v8/include/v8-memory-span.h +157 -2
 - data/vendor/v8/include/v8-message.h +22 -3
 - data/vendor/v8/include/v8-metrics.h +1 -0
 - data/vendor/v8/include/v8-object.h +29 -10
 - data/vendor/v8/include/v8-persistent-handle.h +5 -3
 - data/vendor/v8/include/v8-platform.h +81 -44
 - data/vendor/v8/include/v8-script.h +61 -11
 - data/vendor/v8/include/v8-snapshot.h +94 -23
 - data/vendor/v8/include/v8-statistics.h +10 -24
 - data/vendor/v8/include/v8-template.h +410 -131
 - data/vendor/v8/include/v8-traced-handle.h +81 -46
 - data/vendor/v8/include/v8-typed-array.h +115 -7
 - data/vendor/v8/include/v8-util.h +13 -12
 - data/vendor/v8/include/v8-value.h +92 -4
 - data/vendor/v8/include/v8-version.h +4 -4
 - data/vendor/v8/include/v8config.h +35 -10
 - metadata +2 -2
 
| 
         @@ -172,9 +172,6 @@ using AccessorNameSetterCallback = 
     | 
|
| 
       172 
172 
     | 
    
         
             
             */
         
     | 
| 
       173 
173 
     | 
    
         
             
            enum AccessControl {
         
     | 
| 
       174 
174 
     | 
    
         
             
              DEFAULT = 0,
         
     | 
| 
       175 
     | 
    
         
            -
              ALL_CAN_READ = 1,
         
     | 
| 
       176 
     | 
    
         
            -
              ALL_CAN_WRITE = 1 << 1,
         
     | 
| 
       177 
     | 
    
         
            -
              PROHIBITS_OVERWRITING V8_ENUM_DEPRECATE_SOON("unused") = 1 << 2
         
     | 
| 
       178 
175 
     | 
    
         
             
            };
         
     | 
| 
       179 
176 
     | 
    
         | 
| 
       180 
177 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -342,22 +339,20 @@ class V8_EXPORT Object : public Value { 
     | 
|
| 
       342 
339 
     | 
    
         
             
              V8_WARN_UNUSED_RESULT Maybe<bool> Delete(Local<Context> context,
         
     | 
| 
       343 
340 
     | 
    
         
             
                                                       uint32_t index);
         
     | 
| 
       344 
341 
     | 
    
         | 
| 
       345 
     | 
    
         
            -
               
     | 
| 
       346 
     | 
    
         
            -
               * Note: SideEffectType affects the getter only, not the setter.
         
     | 
| 
       347 
     | 
    
         
            -
               */
         
     | 
| 
      
 342 
     | 
    
         
            +
              V8_DEPRECATE_SOON("Use SetNativeDataProperty instead")
         
     | 
| 
       348 
343 
     | 
    
         
             
              V8_WARN_UNUSED_RESULT Maybe<bool> SetAccessor(
         
     | 
| 
       349 
344 
     | 
    
         
             
                  Local<Context> context, Local<Name> name,
         
     | 
| 
       350 
345 
     | 
    
         
             
                  AccessorNameGetterCallback getter,
         
     | 
| 
       351 
346 
     | 
    
         
             
                  AccessorNameSetterCallback setter = nullptr,
         
     | 
| 
       352 
347 
     | 
    
         
             
                  MaybeLocal<Value> data = MaybeLocal<Value>(),
         
     | 
| 
       353 
     | 
    
         
            -
                  AccessControl  
     | 
| 
      
 348 
     | 
    
         
            +
                  AccessControl deprecated_settings = DEFAULT,
         
     | 
| 
      
 349 
     | 
    
         
            +
                  PropertyAttribute attribute = None,
         
     | 
| 
       354 
350 
     | 
    
         
             
                  SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect,
         
     | 
| 
       355 
351 
     | 
    
         
             
                  SideEffectType setter_side_effect_type = SideEffectType::kHasSideEffect);
         
     | 
| 
       356 
352 
     | 
    
         | 
| 
       357 
353 
     | 
    
         
             
              void SetAccessorProperty(Local<Name> name, Local<Function> getter,
         
     | 
| 
       358 
354 
     | 
    
         
             
                                       Local<Function> setter = Local<Function>(),
         
     | 
| 
       359 
     | 
    
         
            -
                                       PropertyAttribute attributes = None 
     | 
| 
       360 
     | 
    
         
            -
                                       AccessControl settings = DEFAULT);
         
     | 
| 
      
 355 
     | 
    
         
            +
                                       PropertyAttribute attributes = None);
         
     | 
| 
       361 
356 
     | 
    
         | 
| 
       362 
357 
     | 
    
         
             
              /**
         
     | 
| 
       363 
358 
     | 
    
         
             
               * Sets a native data property like Template::SetNativeDataProperty, but
         
     | 
| 
         @@ -504,6 +499,8 @@ class V8_EXPORT Object : public Value { 
     | 
|
| 
       504 
499 
     | 
    
         
             
               * leads to undefined behavior.
         
     | 
| 
       505 
500 
     | 
    
         
             
               */
         
     | 
| 
       506 
501 
     | 
    
         
             
              V8_INLINE void* GetAlignedPointerFromInternalField(int index);
         
     | 
| 
      
 502 
     | 
    
         
            +
              V8_INLINE void* GetAlignedPointerFromInternalField(v8::Isolate* isolate,
         
     | 
| 
      
 503 
     | 
    
         
            +
                                                                 int index);
         
     | 
| 
       507 
504 
     | 
    
         | 
| 
       508 
505 
     | 
    
         
             
              /** Same as above, but works for PersistentBase. */
         
     | 
| 
       509 
506 
     | 
    
         
             
              V8_INLINE static void* GetAlignedPointerFromInternalField(
         
     | 
| 
         @@ -736,6 +733,7 @@ class V8_EXPORT Object : public Value { 
     | 
|
| 
       736 
733 
     | 
    
         
             
              static void CheckCast(Value* obj);
         
     | 
| 
       737 
734 
     | 
    
         
             
              Local<Data> SlowGetInternalField(int index);
         
     | 
| 
       738 
735 
     | 
    
         
             
              void* SlowGetAlignedPointerFromInternalField(int index);
         
     | 
| 
      
 736 
     | 
    
         
            +
              void* SlowGetAlignedPointerFromInternalField(v8::Isolate* isolate, int index);
         
     | 
| 
       739 
737 
     | 
    
         
             
            };
         
     | 
| 
       740 
738 
     | 
    
         | 
| 
       741 
739 
     | 
    
         
             
            // --- Implementation ---
         
     | 
| 
         @@ -765,6 +763,27 @@ Local<Data> Object::GetInternalField(int index) { 
     | 
|
| 
       765 
763 
     | 
    
         
             
              return SlowGetInternalField(index);
         
     | 
| 
       766 
764 
     | 
    
         
             
            }
         
     | 
| 
       767 
765 
     | 
    
         | 
| 
      
 766 
     | 
    
         
            +
            void* Object::GetAlignedPointerFromInternalField(v8::Isolate* isolate,
         
     | 
| 
      
 767 
     | 
    
         
            +
                                                             int index) {
         
     | 
| 
      
 768 
     | 
    
         
            +
            #if !defined(V8_ENABLE_CHECKS)
         
     | 
| 
      
 769 
     | 
    
         
            +
              using A = internal::Address;
         
     | 
| 
      
 770 
     | 
    
         
            +
              using I = internal::Internals;
         
     | 
| 
      
 771 
     | 
    
         
            +
              A obj = internal::ValueHelper::ValueAsAddress(this);
         
     | 
| 
      
 772 
     | 
    
         
            +
              // Fast path: If the object is a plain JSObject, which is the common case, we
         
     | 
| 
      
 773 
     | 
    
         
            +
              // know where to find the internal fields and can return the value directly.
         
     | 
| 
      
 774 
     | 
    
         
            +
              auto instance_type = I::GetInstanceType(obj);
         
     | 
| 
      
 775 
     | 
    
         
            +
              if (V8_LIKELY(I::CanHaveInternalField(instance_type))) {
         
     | 
| 
      
 776 
     | 
    
         
            +
                int offset = I::kJSObjectHeaderSize + (I::kEmbedderDataSlotSize * index) +
         
     | 
| 
      
 777 
     | 
    
         
            +
                             I::kEmbedderDataSlotExternalPointerOffset;
         
     | 
| 
      
 778 
     | 
    
         
            +
                A value =
         
     | 
| 
      
 779 
     | 
    
         
            +
                    I::ReadExternalPointerField<internal::kEmbedderDataSlotPayloadTag>(
         
     | 
| 
      
 780 
     | 
    
         
            +
                        isolate, obj, offset);
         
     | 
| 
      
 781 
     | 
    
         
            +
                return reinterpret_cast<void*>(value);
         
     | 
| 
      
 782 
     | 
    
         
            +
              }
         
     | 
| 
      
 783 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 784 
     | 
    
         
            +
              return SlowGetAlignedPointerFromInternalField(isolate, index);
         
     | 
| 
      
 785 
     | 
    
         
            +
            }
         
     | 
| 
      
 786 
     | 
    
         
            +
             
     | 
| 
       768 
787 
     | 
    
         
             
            void* Object::GetAlignedPointerFromInternalField(int index) {
         
     | 
| 
       769 
788 
     | 
    
         
             
            #if !defined(V8_ENABLE_CHECKS)
         
     | 
| 
       770 
789 
     | 
    
         
             
              using A = internal::Address;
         
     | 
| 
         @@ -773,7 +792,7 @@ void* Object::GetAlignedPointerFromInternalField(int index) { 
     | 
|
| 
       773 
792 
     | 
    
         
             
              // Fast path: If the object is a plain JSObject, which is the common case, we
         
     | 
| 
       774 
793 
     | 
    
         
             
              // know where to find the internal fields and can return the value directly.
         
     | 
| 
       775 
794 
     | 
    
         
             
              auto instance_type = I::GetInstanceType(obj);
         
     | 
| 
       776 
     | 
    
         
            -
              if (I::CanHaveInternalField(instance_type)) {
         
     | 
| 
      
 795 
     | 
    
         
            +
              if (V8_LIKELY(I::CanHaveInternalField(instance_type))) {
         
     | 
| 
       777 
796 
     | 
    
         
             
                int offset = I::kJSObjectHeaderSize + (I::kEmbedderDataSlotSize * index) +
         
     | 
| 
       778 
797 
     | 
    
         
             
                             I::kEmbedderDataSlotExternalPointerOffset;
         
     | 
| 
       779 
798 
     | 
    
         
             
                Isolate* isolate = I::GetIsolateForSandbox(obj);
         
     | 
| 
         @@ -44,7 +44,7 @@ V8_EXPORT void MoveGlobalReference(internal::Address** from, 
     | 
|
| 
       44 
44 
     | 
    
         
             
             * isolate.
         
     | 
| 
       45 
45 
     | 
    
         
             
             */
         
     | 
| 
       46 
46 
     | 
    
         
             
            template <class T>
         
     | 
| 
       47 
     | 
    
         
            -
            class Eternal : public IndirectHandleBase {
         
     | 
| 
      
 47 
     | 
    
         
            +
            class Eternal : public api_internal::IndirectHandleBase {
         
     | 
| 
       48 
48 
     | 
    
         
             
             public:
         
     | 
| 
       49 
49 
     | 
    
         
             
              V8_INLINE Eternal() = default;
         
     | 
| 
       50 
50 
     | 
    
         | 
| 
         @@ -88,7 +88,7 @@ V8_EXPORT void MakeWeak(internal::Address* location, void* data, 
     | 
|
| 
       88 
88 
     | 
    
         
             
             *
         
     | 
| 
       89 
89 
     | 
    
         
             
             */
         
     | 
| 
       90 
90 
     | 
    
         
             
            template <class T>
         
     | 
| 
       91 
     | 
    
         
            -
            class PersistentBase : public IndirectHandleBase {
         
     | 
| 
      
 91 
     | 
    
         
            +
            class PersistentBase : public api_internal::IndirectHandleBase {
         
     | 
| 
       92 
92 
     | 
    
         
             
             public:
         
     | 
| 
       93 
93 
     | 
    
         
             
              /**
         
     | 
| 
       94 
94 
     | 
    
         
             
               * If non-empty, destroy the underlying storage cell
         
     | 
| 
         @@ -257,7 +257,9 @@ struct CopyablePersistentTraits { 
     | 
|
| 
       257 
257 
     | 
    
         
             
             * Copy, assignment and destructor behavior is controlled by the traits
         
     | 
| 
       258 
258 
     | 
    
         
             
             * class M.
         
     | 
| 
       259 
259 
     | 
    
         
             
             *
         
     | 
| 
       260 
     | 
    
         
            -
             *  
     | 
| 
      
 260 
     | 
    
         
            +
             * CAVEAT: Persistent objects do not have proper destruction behavior by default
         
     | 
| 
      
 261 
     | 
    
         
            +
             * and as such will leak the object without explicit clear. Consider using
         
     | 
| 
      
 262 
     | 
    
         
            +
             * `v8::Global` instead which has proper destruction and move semantics.
         
     | 
| 
       261 
263 
     | 
    
         
             
             */
         
     | 
| 
       262 
264 
     | 
    
         
             
            template <class T, class M>
         
     | 
| 
       263 
265 
     | 
    
         
             
            class Persistent : public PersistentBase<T> {
         
     | 
| 
         @@ -76,8 +76,12 @@ class TaskRunner { 
     | 
|
| 
       76 
76 
     | 
    
         
             
              /**
         
     | 
| 
       77 
77 
     | 
    
         
             
               * Schedules a task to be invoked by this TaskRunner. The TaskRunner
         
     | 
| 
       78 
78 
     | 
    
         
             
               * implementation takes ownership of |task|.
         
     | 
| 
      
 79 
     | 
    
         
            +
               *
         
     | 
| 
      
 80 
     | 
    
         
            +
               * Embedders should override PostTaskImpl instead of this.
         
     | 
| 
       79 
81 
     | 
    
         
             
               */
         
     | 
| 
       80 
     | 
    
         
            -
              virtual void PostTask(std::unique_ptr<Task> task)  
     | 
| 
      
 82 
     | 
    
         
            +
              virtual void PostTask(std::unique_ptr<Task> task) {
         
     | 
| 
      
 83 
     | 
    
         
            +
                PostTaskImpl(std::move(task), SourceLocation::Current());
         
     | 
| 
      
 84 
     | 
    
         
            +
              }
         
     | 
| 
       81 
85 
     | 
    
         | 
| 
       82 
86 
     | 
    
         
             
              /**
         
     | 
| 
       83 
87 
     | 
    
         
             
               * Schedules a task to be invoked by this TaskRunner. The TaskRunner
         
     | 
| 
         @@ -93,16 +97,25 @@ class TaskRunner { 
     | 
|
| 
       93 
97 
     | 
    
         
             
               * execution is not allowed to nest.
         
     | 
| 
       94 
98 
     | 
    
         
             
               *
         
     | 
| 
       95 
99 
     | 
    
         
             
               * Requires that |TaskRunner::NonNestableTasksEnabled()| is true.
         
     | 
| 
      
 100 
     | 
    
         
            +
               *
         
     | 
| 
      
 101 
     | 
    
         
            +
               * Embedders should override PostNonNestableTaskImpl instead of this.
         
     | 
| 
       96 
102 
     | 
    
         
             
               */
         
     | 
| 
       97 
     | 
    
         
            -
              virtual void PostNonNestableTask(std::unique_ptr<Task> task) { 
     | 
| 
      
 103 
     | 
    
         
            +
              virtual void PostNonNestableTask(std::unique_ptr<Task> task) {
         
     | 
| 
      
 104 
     | 
    
         
            +
                PostNonNestableTaskImpl(std::move(task), SourceLocation::Current());
         
     | 
| 
      
 105 
     | 
    
         
            +
              }
         
     | 
| 
       98 
106 
     | 
    
         | 
| 
       99 
107 
     | 
    
         
             
              /**
         
     | 
| 
       100 
108 
     | 
    
         
             
               * Schedules a task to be invoked by this TaskRunner. The task is scheduled
         
     | 
| 
       101 
109 
     | 
    
         
             
               * after the given number of seconds |delay_in_seconds|. The TaskRunner
         
     | 
| 
       102 
110 
     | 
    
         
             
               * implementation takes ownership of |task|.
         
     | 
| 
      
 111 
     | 
    
         
            +
               *
         
     | 
| 
      
 112 
     | 
    
         
            +
               * Embedders should override PostDelayedTaskImpl instead of this.
         
     | 
| 
       103 
113 
     | 
    
         
             
               */
         
     | 
| 
       104 
114 
     | 
    
         
             
              virtual void PostDelayedTask(std::unique_ptr<Task> task,
         
     | 
| 
       105 
     | 
    
         
            -
                                           double delay_in_seconds)  
     | 
| 
      
 115 
     | 
    
         
            +
                                           double delay_in_seconds) {
         
     | 
| 
      
 116 
     | 
    
         
            +
                PostDelayedTaskImpl(std::move(task), delay_in_seconds,
         
     | 
| 
      
 117 
     | 
    
         
            +
                                    SourceLocation::Current());
         
     | 
| 
      
 118 
     | 
    
         
            +
              }
         
     | 
| 
       106 
119 
     | 
    
         | 
| 
       107 
120 
     | 
    
         
             
              /**
         
     | 
| 
       108 
121 
     | 
    
         
             
               * Schedules a task to be invoked by this TaskRunner. The task is scheduled
         
     | 
| 
         @@ -119,9 +132,14 @@ class TaskRunner { 
     | 
|
| 
       119 
132 
     | 
    
         
             
               * execution is not allowed to nest.
         
     | 
| 
       120 
133 
     | 
    
         
             
               *
         
     | 
| 
       121 
134 
     | 
    
         
             
               * Requires that |TaskRunner::NonNestableDelayedTasksEnabled()| is true.
         
     | 
| 
      
 135 
     | 
    
         
            +
               *
         
     | 
| 
      
 136 
     | 
    
         
            +
               * Embedders should override PostNonNestableDelayedTaskImpl instead of this.
         
     | 
| 
       122 
137 
     | 
    
         
             
               */
         
     | 
| 
       123 
138 
     | 
    
         
             
              virtual void PostNonNestableDelayedTask(std::unique_ptr<Task> task,
         
     | 
| 
       124 
     | 
    
         
            -
                                                      double delay_in_seconds) { 
     | 
| 
      
 139 
     | 
    
         
            +
                                                      double delay_in_seconds) {
         
     | 
| 
      
 140 
     | 
    
         
            +
                PostNonNestableDelayedTaskImpl(std::move(task), delay_in_seconds,
         
     | 
| 
      
 141 
     | 
    
         
            +
                                               SourceLocation::Current());
         
     | 
| 
      
 142 
     | 
    
         
            +
              }
         
     | 
| 
       125 
143 
     | 
    
         | 
| 
       126 
144 
     | 
    
         
             
              /**
         
     | 
| 
       127 
145 
     | 
    
         
             
               * Schedules an idle task to be invoked by this TaskRunner. The task is
         
     | 
| 
         @@ -130,8 +148,12 @@ class TaskRunner { 
     | 
|
| 
       130 
148 
     | 
    
         
             
               * relative to other task types and may be starved for an arbitrarily long
         
     | 
| 
       131 
149 
     | 
    
         
             
               * time if no idle time is available. The TaskRunner implementation takes
         
     | 
| 
       132 
150 
     | 
    
         
             
               * ownership of |task|.
         
     | 
| 
      
 151 
     | 
    
         
            +
               *
         
     | 
| 
      
 152 
     | 
    
         
            +
               * Embedders should override PostIdleTaskImpl instead of this.
         
     | 
| 
       133 
153 
     | 
    
         
             
               */
         
     | 
| 
       134 
     | 
    
         
            -
              virtual void PostIdleTask(std::unique_ptr<IdleTask> task)  
     | 
| 
      
 154 
     | 
    
         
            +
              virtual void PostIdleTask(std::unique_ptr<IdleTask> task) {
         
     | 
| 
      
 155 
     | 
    
         
            +
                PostIdleTaskImpl(std::move(task), SourceLocation::Current());
         
     | 
| 
      
 156 
     | 
    
         
            +
              }
         
     | 
| 
       135 
157 
     | 
    
         | 
| 
       136 
158 
     | 
    
         
             
              /**
         
     | 
| 
       137 
159 
     | 
    
         
             
               * Returns true if idle tasks are enabled for this TaskRunner.
         
     | 
| 
         @@ -153,6 +175,23 @@ class TaskRunner { 
     | 
|
| 
       153 
175 
     | 
    
         | 
| 
       154 
176 
     | 
    
         
             
              TaskRunner(const TaskRunner&) = delete;
         
     | 
| 
       155 
177 
     | 
    
         
             
              TaskRunner& operator=(const TaskRunner&) = delete;
         
     | 
| 
      
 178 
     | 
    
         
            +
             
     | 
| 
      
 179 
     | 
    
         
            +
             protected:
         
     | 
| 
      
 180 
     | 
    
         
            +
              /**
         
     | 
| 
      
 181 
     | 
    
         
            +
               * Implementation of above methods with an additional `location` argument.
         
     | 
| 
      
 182 
     | 
    
         
            +
               */
         
     | 
| 
      
 183 
     | 
    
         
            +
              virtual void PostTaskImpl(std::unique_ptr<Task> task,
         
     | 
| 
      
 184 
     | 
    
         
            +
                                        const SourceLocation& location) {}
         
     | 
| 
      
 185 
     | 
    
         
            +
              virtual void PostNonNestableTaskImpl(std::unique_ptr<Task> task,
         
     | 
| 
      
 186 
     | 
    
         
            +
                                                   const SourceLocation& location) {}
         
     | 
| 
      
 187 
     | 
    
         
            +
              virtual void PostDelayedTaskImpl(std::unique_ptr<Task> task,
         
     | 
| 
      
 188 
     | 
    
         
            +
                                               double delay_in_seconds,
         
     | 
| 
      
 189 
     | 
    
         
            +
                                               const SourceLocation& location) {}
         
     | 
| 
      
 190 
     | 
    
         
            +
              virtual void PostNonNestableDelayedTaskImpl(std::unique_ptr<Task> task,
         
     | 
| 
      
 191 
     | 
    
         
            +
                                                          double delay_in_seconds,
         
     | 
| 
      
 192 
     | 
    
         
            +
                                                          const SourceLocation& location) {}
         
     | 
| 
      
 193 
     | 
    
         
            +
              virtual void PostIdleTaskImpl(std::unique_ptr<IdleTask> task,
         
     | 
| 
      
 194 
     | 
    
         
            +
                                            const SourceLocation& location) {}
         
     | 
| 
       156 
195 
     | 
    
         
             
            };
         
     | 
| 
       157 
196 
     | 
    
         | 
| 
       158 
197 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -736,6 +775,15 @@ class VirtualAddressSpace { 
     | 
|
| 
       736 
775 
     | 
    
         
             
               */
         
     | 
| 
       737 
776 
     | 
    
         
             
              PagePermissions max_page_permissions() const { return max_page_permissions_; }
         
     | 
| 
       738 
777 
     | 
    
         | 
| 
      
 778 
     | 
    
         
            +
              /**
         
     | 
| 
      
 779 
     | 
    
         
            +
               * Whether the |address| is inside the address space managed by this instance.
         
     | 
| 
      
 780 
     | 
    
         
            +
               *
         
     | 
| 
      
 781 
     | 
    
         
            +
               * \returns true if it is inside the address space, false if not.
         
     | 
| 
      
 782 
     | 
    
         
            +
               */
         
     | 
| 
      
 783 
     | 
    
         
            +
              bool Contains(Address address) const {
         
     | 
| 
      
 784 
     | 
    
         
            +
                return (address >= base()) && (address < base() + size());
         
     | 
| 
      
 785 
     | 
    
         
            +
              }
         
     | 
| 
      
 786 
     | 
    
         
            +
             
     | 
| 
       739 
787 
     | 
    
         
             
              /**
         
     | 
| 
       740 
788 
     | 
    
         
             
               * Sets the random seed so that GetRandomPageAddress() will generate
         
     | 
| 
       741 
789 
     | 
    
         
             
               * repeatable sequences of random addresses.
         
     | 
| 
         @@ -1075,12 +1123,12 @@ class Platform { 
     | 
|
| 
       1075 
1123 
     | 
    
         
             
               * Schedules a task to be invoked on a worker thread.
         
     | 
| 
       1076 
1124 
     | 
    
         
             
               * Embedders should override PostTaskOnWorkerThreadImpl() instead of
         
     | 
| 
       1077 
1125 
     | 
    
         
             
               * CallOnWorkerThread().
         
     | 
| 
       1078 
     | 
    
         
            -
               * TODO(chromium:1424158): Make non-virtual once embedders are migrated to
         
     | 
| 
       1079 
     | 
    
         
            -
               * PostTaskOnWorkerThreadImpl().
         
     | 
| 
       1080 
1126 
     | 
    
         
             
               */
         
     | 
| 
       1081 
     | 
    
         
            -
               
     | 
| 
      
 1127 
     | 
    
         
            +
              void CallOnWorkerThread(
         
     | 
| 
      
 1128 
     | 
    
         
            +
                  std::unique_ptr<Task> task,
         
     | 
| 
      
 1129 
     | 
    
         
            +
                  const SourceLocation& location = SourceLocation::Current()) {
         
     | 
| 
       1082 
1130 
     | 
    
         
             
                PostTaskOnWorkerThreadImpl(TaskPriority::kUserVisible, std::move(task),
         
     | 
| 
       1083 
     | 
    
         
            -
                                            
     | 
| 
      
 1131 
     | 
    
         
            +
                                           location);
         
     | 
| 
       1084 
1132 
     | 
    
         
             
              }
         
     | 
| 
       1085 
1133 
     | 
    
         | 
| 
       1086 
1134 
     | 
    
         
             
              /**
         
     | 
| 
         @@ -1088,28 +1136,28 @@ class Platform { 
     | 
|
| 
       1088 
1136 
     | 
    
         
             
               * high-priority on a worker thread.
         
     | 
| 
       1089 
1137 
     | 
    
         
             
               * Embedders should override PostTaskOnWorkerThreadImpl() instead of
         
     | 
| 
       1090 
1138 
     | 
    
         
             
               * CallBlockingTaskOnWorkerThread().
         
     | 
| 
       1091 
     | 
    
         
            -
               * TODO(chromium:1424158): Make non-virtual once embedders are migrated to
         
     | 
| 
       1092 
     | 
    
         
            -
               * PostTaskOnWorkerThreadImpl().
         
     | 
| 
       1093 
1139 
     | 
    
         
             
               */
         
     | 
| 
       1094 
     | 
    
         
            -
               
     | 
| 
      
 1140 
     | 
    
         
            +
              void CallBlockingTaskOnWorkerThread(
         
     | 
| 
      
 1141 
     | 
    
         
            +
                  std::unique_ptr<Task> task,
         
     | 
| 
      
 1142 
     | 
    
         
            +
                  const SourceLocation& location = SourceLocation::Current()) {
         
     | 
| 
       1095 
1143 
     | 
    
         
             
                // Embedders may optionally override this to process these tasks in a high
         
     | 
| 
       1096 
1144 
     | 
    
         
             
                // priority pool.
         
     | 
| 
       1097 
1145 
     | 
    
         
             
                PostTaskOnWorkerThreadImpl(TaskPriority::kUserBlocking, std::move(task),
         
     | 
| 
       1098 
     | 
    
         
            -
                                            
     | 
| 
      
 1146 
     | 
    
         
            +
                                           location);
         
     | 
| 
       1099 
1147 
     | 
    
         
             
              }
         
     | 
| 
       1100 
1148 
     | 
    
         | 
| 
       1101 
1149 
     | 
    
         
             
              /**
         
     | 
| 
       1102 
1150 
     | 
    
         
             
               * Schedules a task to be invoked with low-priority on a worker thread.
         
     | 
| 
       1103 
1151 
     | 
    
         
             
               * Embedders should override PostTaskOnWorkerThreadImpl() instead of
         
     | 
| 
       1104 
1152 
     | 
    
         
             
               * CallLowPriorityTaskOnWorkerThread().
         
     | 
| 
       1105 
     | 
    
         
            -
               * TODO(chromium:1424158): Make non-virtual once embedders are migrated to
         
     | 
| 
       1106 
     | 
    
         
            -
               * PostTaskOnWorkerThreadImpl().
         
     | 
| 
       1107 
1153 
     | 
    
         
             
               */
         
     | 
| 
       1108 
     | 
    
         
            -
               
     | 
| 
      
 1154 
     | 
    
         
            +
              void CallLowPriorityTaskOnWorkerThread(
         
     | 
| 
      
 1155 
     | 
    
         
            +
                  std::unique_ptr<Task> task,
         
     | 
| 
      
 1156 
     | 
    
         
            +
                  const SourceLocation& location = SourceLocation::Current()) {
         
     | 
| 
       1109 
1157 
     | 
    
         
             
                // Embedders may optionally override this to process these tasks in a low
         
     | 
| 
       1110 
1158 
     | 
    
         
             
                // priority pool.
         
     | 
| 
       1111 
1159 
     | 
    
         
             
                PostTaskOnWorkerThreadImpl(TaskPriority::kBestEffort, std::move(task),
         
     | 
| 
       1112 
     | 
    
         
            -
                                            
     | 
| 
      
 1160 
     | 
    
         
            +
                                           location);
         
     | 
| 
       1113 
1161 
     | 
    
         
             
              }
         
     | 
| 
       1114 
1162 
     | 
    
         | 
| 
       1115 
1163 
     | 
    
         
             
              /**
         
     | 
| 
         @@ -1117,14 +1165,13 @@ class Platform { 
     | 
|
| 
       1117 
1165 
     | 
    
         
             
               * expires.
         
     | 
| 
       1118 
1166 
     | 
    
         
             
               * Embedders should override PostDelayedTaskOnWorkerThreadImpl() instead of
         
     | 
| 
       1119 
1167 
     | 
    
         
             
               * CallDelayedOnWorkerThread().
         
     | 
| 
       1120 
     | 
    
         
            -
               * TODO(chromium:1424158): Make non-virtual once embedders are migrated to
         
     | 
| 
       1121 
     | 
    
         
            -
               * PostDelayedTaskOnWorkerThreadImpl().
         
     | 
| 
       1122 
1168 
     | 
    
         
             
               */
         
     | 
| 
       1123 
     | 
    
         
            -
               
     | 
| 
       1124 
     | 
    
         
            -
             
     | 
| 
      
 1169 
     | 
    
         
            +
              void CallDelayedOnWorkerThread(
         
     | 
| 
      
 1170 
     | 
    
         
            +
                  std::unique_ptr<Task> task, double delay_in_seconds,
         
     | 
| 
      
 1171 
     | 
    
         
            +
                  const SourceLocation& location = SourceLocation::Current()) {
         
     | 
| 
       1125 
1172 
     | 
    
         
             
                PostDelayedTaskOnWorkerThreadImpl(TaskPriority::kUserVisible,
         
     | 
| 
       1126 
1173 
     | 
    
         
             
                                                  std::move(task), delay_in_seconds,
         
     | 
| 
       1127 
     | 
    
         
            -
                                                   
     | 
| 
      
 1174 
     | 
    
         
            +
                                                  location);
         
     | 
| 
       1128 
1175 
     | 
    
         
             
              }
         
     | 
| 
       1129 
1176 
     | 
    
         | 
| 
       1130 
1177 
     | 
    
         
             
              /**
         
     | 
| 
         @@ -1176,12 +1223,11 @@ class Platform { 
     | 
|
| 
       1176 
1223 
     | 
    
         
             
               * JobTask::GetMaxConcurrency may be invoked synchronously from JobHandle
         
     | 
| 
       1177 
1224 
     | 
    
         
             
               * (B=>JobHandle::foo=>B deadlock).
         
     | 
| 
       1178 
1225 
     | 
    
         
             
               * Embedders should override CreateJobImpl() instead of PostJob().
         
     | 
| 
       1179 
     | 
    
         
            -
               * TODO(chromium:1424158): Make non-virtual once embedders are migrated to
         
     | 
| 
       1180 
     | 
    
         
            -
               * CreateJobImpl().
         
     | 
| 
       1181 
1226 
     | 
    
         
             
               */
         
     | 
| 
       1182 
     | 
    
         
            -
               
     | 
| 
       1183 
     | 
    
         
            -
                  TaskPriority priority, std::unique_ptr<JobTask> job_task 
     | 
| 
       1184 
     | 
    
         
            -
             
     | 
| 
      
 1227 
     | 
    
         
            +
              std::unique_ptr<JobHandle> PostJob(
         
     | 
| 
      
 1228 
     | 
    
         
            +
                  TaskPriority priority, std::unique_ptr<JobTask> job_task,
         
     | 
| 
      
 1229 
     | 
    
         
            +
                  const SourceLocation& location = SourceLocation::Current()) {
         
     | 
| 
      
 1230 
     | 
    
         
            +
                auto handle = CreateJob(priority, std::move(job_task), location);
         
     | 
| 
       1185 
1231 
     | 
    
         
             
                handle->NotifyConcurrencyIncrease();
         
     | 
| 
       1186 
1232 
     | 
    
         
             
                return handle;
         
     | 
| 
       1187 
1233 
     | 
    
         
             
              }
         
     | 
| 
         @@ -1200,13 +1246,11 @@ class Platform { 
     | 
|
| 
       1200 
1246 
     | 
    
         
             
               * }
         
     | 
| 
       1201 
1247 
     | 
    
         
             
               *
         
     | 
| 
       1202 
1248 
     | 
    
         
             
               * Embedders should override CreateJobImpl() instead of CreateJob().
         
     | 
| 
       1203 
     | 
    
         
            -
               * TODO(chromium:1424158): Make non-virtual once embedders are migrated to
         
     | 
| 
       1204 
     | 
    
         
            -
               * CreateJobImpl().
         
     | 
| 
       1205 
1249 
     | 
    
         
             
               */
         
     | 
| 
       1206 
     | 
    
         
            -
               
     | 
| 
       1207 
     | 
    
         
            -
                  TaskPriority priority, std::unique_ptr<JobTask> job_task 
     | 
| 
       1208 
     | 
    
         
            -
             
     | 
| 
       1209 
     | 
    
         
            -
             
     | 
| 
      
 1250 
     | 
    
         
            +
              std::unique_ptr<JobHandle> CreateJob(
         
     | 
| 
      
 1251 
     | 
    
         
            +
                  TaskPriority priority, std::unique_ptr<JobTask> job_task,
         
     | 
| 
      
 1252 
     | 
    
         
            +
                  const SourceLocation& location = SourceLocation::Current()) {
         
     | 
| 
      
 1253 
     | 
    
         
            +
                return CreateJobImpl(priority, std::move(job_task), location);
         
     | 
| 
       1210 
1254 
     | 
    
         
             
              }
         
     | 
| 
       1211 
1255 
     | 
    
         | 
| 
       1212 
1256 
     | 
    
         
             
              /**
         
     | 
| 
         @@ -1232,7 +1276,7 @@ class Platform { 
     | 
|
| 
       1232 
1276 
     | 
    
         
             
               * required.
         
     | 
| 
       1233 
1277 
     | 
    
         
             
               */
         
     | 
| 
       1234 
1278 
     | 
    
         
             
              virtual int64_t CurrentClockTimeMilliseconds() {
         
     | 
| 
       1235 
     | 
    
         
            -
                return floor(CurrentClockTimeMillis());
         
     | 
| 
      
 1279 
     | 
    
         
            +
                return static_cast<int64_t>(floor(CurrentClockTimeMillis()));
         
     | 
| 
       1236 
1280 
     | 
    
         
             
              }
         
     | 
| 
       1237 
1281 
     | 
    
         | 
| 
       1238 
1282 
     | 
    
         
             
              /**
         
     | 
| 
         @@ -1288,32 +1332,25 @@ class Platform { 
     | 
|
| 
       1288 
1332 
     | 
    
         | 
| 
       1289 
1333 
     | 
    
         
             
              /**
         
     | 
| 
       1290 
1334 
     | 
    
         
             
               * Creates and returns a JobHandle associated with a Job.
         
     | 
| 
       1291 
     | 
    
         
            -
               * TODO(chromium:1424158): Make pure virtual once embedders implement it.
         
     | 
| 
       1292 
1335 
     | 
    
         
             
               */
         
     | 
| 
       1293 
1336 
     | 
    
         
             
              virtual std::unique_ptr<JobHandle> CreateJobImpl(
         
     | 
| 
       1294 
1337 
     | 
    
         
             
                  TaskPriority priority, std::unique_ptr<JobTask> job_task,
         
     | 
| 
       1295 
     | 
    
         
            -
                  const SourceLocation& location)  
     | 
| 
       1296 
     | 
    
         
            -
                return nullptr;
         
     | 
| 
       1297 
     | 
    
         
            -
              }
         
     | 
| 
      
 1338 
     | 
    
         
            +
                  const SourceLocation& location) = 0;
         
     | 
| 
       1298 
1339 
     | 
    
         | 
| 
       1299 
1340 
     | 
    
         
             
              /**
         
     | 
| 
       1300 
1341 
     | 
    
         
             
               * Schedules a task with |priority| to be invoked on a worker thread.
         
     | 
| 
       1301 
     | 
    
         
            -
               * TODO(chromium:1424158): Make pure virtual once embedders implement it.
         
     | 
| 
       1302 
1342 
     | 
    
         
             
               */
         
     | 
| 
       1303 
1343 
     | 
    
         
             
              virtual void PostTaskOnWorkerThreadImpl(TaskPriority priority,
         
     | 
| 
       1304 
1344 
     | 
    
         
             
                                                      std::unique_ptr<Task> task,
         
     | 
| 
       1305 
     | 
    
         
            -
                                                      const SourceLocation& location)  
     | 
| 
       1306 
     | 
    
         
            -
                CallOnWorkerThread(std::move(task));
         
     | 
| 
       1307 
     | 
    
         
            -
              }
         
     | 
| 
      
 1345 
     | 
    
         
            +
                                                      const SourceLocation& location) = 0;
         
     | 
| 
       1308 
1346 
     | 
    
         | 
| 
       1309 
1347 
     | 
    
         
             
              /**
         
     | 
| 
       1310 
1348 
     | 
    
         
             
               * Schedules a task with |priority| to be invoked on a worker thread after
         
     | 
| 
       1311 
1349 
     | 
    
         
             
               * |delay_in_seconds| expires.
         
     | 
| 
       1312 
     | 
    
         
            -
               * TODO(chromium:1424158): Make pure virtual once embedders implement it.
         
     | 
| 
       1313 
1350 
     | 
    
         
             
               */
         
     | 
| 
       1314 
1351 
     | 
    
         
             
              virtual void PostDelayedTaskOnWorkerThreadImpl(
         
     | 
| 
       1315 
1352 
     | 
    
         
             
                  TaskPriority priority, std::unique_ptr<Task> task,
         
     | 
| 
       1316 
     | 
    
         
            -
                  double delay_in_seconds, const SourceLocation& location)  
     | 
| 
      
 1353 
     | 
    
         
            +
                  double delay_in_seconds, const SourceLocation& location) = 0;
         
     | 
| 
       1317 
1354 
     | 
    
         
             
            };
         
     | 
| 
       1318 
1355 
     | 
    
         | 
| 
       1319 
1356 
     | 
    
         
             
            }  // namespace v8
         
     | 
| 
         @@ -16,6 +16,7 @@ 
     | 
|
| 
       16 
16 
     | 
    
         
             
            #include "v8-data.h"          // NOLINT(build/include_directory)
         
     | 
| 
       17 
17 
     | 
    
         
             
            #include "v8-local-handle.h"  // NOLINT(build/include_directory)
         
     | 
| 
       18 
18 
     | 
    
         
             
            #include "v8-maybe.h"         // NOLINT(build/include_directory)
         
     | 
| 
      
 19 
     | 
    
         
            +
            #include "v8-memory-span.h"   // NOLINT(build/include_directory)
         
     | 
| 
       19 
20 
     | 
    
         
             
            #include "v8-message.h"       // NOLINT(build/include_directory)
         
     | 
| 
       20 
21 
     | 
    
         
             
            #include "v8config.h"         // NOLINT(build/include_directory)
         
     | 
| 
       21 
22 
     | 
    
         | 
| 
         @@ -135,19 +136,24 @@ class V8_EXPORT ModuleRequest : public Data { 
     | 
|
| 
       135 
136 
     | 
    
         
             
              int GetSourceOffset() const;
         
     | 
| 
       136 
137 
     | 
    
         | 
| 
       137 
138 
     | 
    
         
             
              /**
         
     | 
| 
       138 
     | 
    
         
            -
               * Contains the import  
     | 
| 
      
 139 
     | 
    
         
            +
               * Contains the import attributes for this request in the form:
         
     | 
| 
       139 
140 
     | 
    
         
             
               * [key1, value1, source_offset1, key2, value2, source_offset2, ...].
         
     | 
| 
       140 
141 
     | 
    
         
             
               * The keys and values are of type v8::String, and the source offsets are of
         
     | 
| 
       141 
142 
     | 
    
         
             
               * type Int32. Use Module::SourceOffsetToLocation to convert the source
         
     | 
| 
       142 
143 
     | 
    
         
             
               * offsets to Locations with line/column numbers.
         
     | 
| 
       143 
144 
     | 
    
         
             
               *
         
     | 
| 
       144 
     | 
    
         
            -
               * All  
     | 
| 
      
 145 
     | 
    
         
            +
               * All attributes present in the module request will be supplied in this
         
     | 
| 
       145 
146 
     | 
    
         
             
               * list, regardless of whether they are supported by the host. Per
         
     | 
| 
       146 
147 
     | 
    
         
             
               * https://tc39.es/proposal-import-attributes/#sec-hostgetsupportedimportattributes,
         
     | 
| 
       147 
     | 
    
         
            -
               * hosts are expected to throw for  
     | 
| 
      
 148 
     | 
    
         
            +
               * hosts are expected to throw for attributes that they do not support (as
         
     | 
| 
       148 
149 
     | 
    
         
             
               * opposed to, for example, ignoring them).
         
     | 
| 
       149 
150 
     | 
    
         
             
               */
         
     | 
| 
       150 
     | 
    
         
            -
              Local<FixedArray>  
     | 
| 
      
 151 
     | 
    
         
            +
              Local<FixedArray> GetImportAttributes() const;
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
      
 153 
     | 
    
         
            +
              V8_DEPRECATE_SOON("Use GetImportAttributes instead")
         
     | 
| 
      
 154 
     | 
    
         
            +
              Local<FixedArray> GetImportAssertions() const {
         
     | 
| 
      
 155 
     | 
    
         
            +
                return GetImportAttributes();
         
     | 
| 
      
 156 
     | 
    
         
            +
              }
         
     | 
| 
       151 
157 
     | 
    
         | 
| 
       152 
158 
     | 
    
         
             
              V8_INLINE static ModuleRequest* Cast(Data* data);
         
     | 
| 
       153 
159 
     | 
    
         | 
| 
         @@ -287,7 +293,7 @@ class V8_EXPORT Module : public Data { 
     | 
|
| 
       287 
293 
     | 
    
         
             
               */
         
     | 
| 
       288 
294 
     | 
    
         
             
              static Local<Module> CreateSyntheticModule(
         
     | 
| 
       289 
295 
     | 
    
         
             
                  Isolate* isolate, Local<String> module_name,
         
     | 
| 
       290 
     | 
    
         
            -
                  const  
     | 
| 
      
 296 
     | 
    
         
            +
                  const MemorySpan<const Local<String>>& export_names,
         
     | 
| 
       291 
297 
     | 
    
         
             
                  SyntheticModuleEvaluationSteps evaluation_steps);
         
     | 
| 
       292 
298 
     | 
    
         | 
| 
       293 
299 
     | 
    
         
             
              /**
         
     | 
| 
         @@ -303,12 +309,12 @@ class V8_EXPORT Module : public Data { 
     | 
|
| 
       303 
309 
     | 
    
         
             
              /**
         
     | 
| 
       304 
310 
     | 
    
         
             
               * Search the modules requested directly or indirectly by the module for
         
     | 
| 
       305 
311 
     | 
    
         
             
               * any top-level await that has not yet resolved. If there is any, the
         
     | 
| 
       306 
     | 
    
         
            -
               * returned  
     | 
| 
       307 
     | 
    
         
            -
               * with the pending top-level await.
         
     | 
| 
      
 312 
     | 
    
         
            +
               * returned pair of vectors (of equal size) contain the unresolved module
         
     | 
| 
      
 313 
     | 
    
         
            +
               * and corresponding message with the pending top-level await.
         
     | 
| 
       308 
314 
     | 
    
         
             
               * An embedder may call this before exiting to improve error messages.
         
     | 
| 
       309 
315 
     | 
    
         
             
               */
         
     | 
| 
       310 
     | 
    
         
            -
              std:: 
     | 
| 
       311 
     | 
    
         
            -
               
     | 
| 
      
 316 
     | 
    
         
            +
              std::pair<LocalVector<Module>, LocalVector<Message>>
         
     | 
| 
      
 317 
     | 
    
         
            +
              GetStalledTopLevelAwaitMessages(Isolate* isolate);
         
     | 
| 
       312 
318 
     | 
    
         | 
| 
       313 
319 
     | 
    
         
             
              V8_INLINE static Module* Cast(Data* data);
         
     | 
| 
       314 
320 
     | 
    
         | 
| 
         @@ -421,6 +427,33 @@ class V8_EXPORT ScriptCompiler { 
     | 
|
| 
       421 
427 
     | 
    
         
             
                CachedData& operator=(const CachedData&) = delete;
         
     | 
| 
       422 
428 
     | 
    
         
             
              };
         
     | 
| 
       423 
429 
     | 
    
         | 
| 
      
 430 
     | 
    
         
            +
              enum class InMemoryCacheResult {
         
     | 
| 
      
 431 
     | 
    
         
            +
                // V8 did not attempt to find this script in its in-memory cache.
         
     | 
| 
      
 432 
     | 
    
         
            +
                kNotAttempted,
         
     | 
| 
      
 433 
     | 
    
         
            +
             
     | 
| 
      
 434 
     | 
    
         
            +
                // V8 found a previously compiled copy of this script in its in-memory
         
     | 
| 
      
 435 
     | 
    
         
            +
                // cache. Any data generated by a streaming compilation or background
         
     | 
| 
      
 436 
     | 
    
         
            +
                // deserialization was abandoned.
         
     | 
| 
      
 437 
     | 
    
         
            +
                kHit,
         
     | 
| 
      
 438 
     | 
    
         
            +
             
     | 
| 
      
 439 
     | 
    
         
            +
                // V8 didn't have any previously compiled data for this script.
         
     | 
| 
      
 440 
     | 
    
         
            +
                kMiss,
         
     | 
| 
      
 441 
     | 
    
         
            +
             
     | 
| 
      
 442 
     | 
    
         
            +
                // V8 had some previously compiled data for an identical script, but the
         
     | 
| 
      
 443 
     | 
    
         
            +
                // data was incomplete.
         
     | 
| 
      
 444 
     | 
    
         
            +
                kPartial,
         
     | 
| 
      
 445 
     | 
    
         
            +
              };
         
     | 
| 
      
 446 
     | 
    
         
            +
             
     | 
| 
      
 447 
     | 
    
         
            +
              // Details about what happened during a compilation.
         
     | 
| 
      
 448 
     | 
    
         
            +
              struct CompilationDetails {
         
     | 
| 
      
 449 
     | 
    
         
            +
                InMemoryCacheResult in_memory_cache_result =
         
     | 
| 
      
 450 
     | 
    
         
            +
                    InMemoryCacheResult::kNotAttempted;
         
     | 
| 
      
 451 
     | 
    
         
            +
             
     | 
| 
      
 452 
     | 
    
         
            +
                static constexpr int64_t kTimeNotMeasured = -1;
         
     | 
| 
      
 453 
     | 
    
         
            +
                int64_t foreground_time_in_microseconds = kTimeNotMeasured;
         
     | 
| 
      
 454 
     | 
    
         
            +
                int64_t background_time_in_microseconds = kTimeNotMeasured;
         
     | 
| 
      
 455 
     | 
    
         
            +
              };
         
     | 
| 
      
 456 
     | 
    
         
            +
             
     | 
| 
       424 
457 
     | 
    
         
             
              /**
         
     | 
| 
       425 
458 
     | 
    
         
             
               * Source code which can be then compiled to a UnboundScript or Script.
         
     | 
| 
       426 
459 
     | 
    
         
             
               */
         
     | 
| 
         @@ -446,6 +479,8 @@ class V8_EXPORT ScriptCompiler { 
     | 
|
| 
       446 
479 
     | 
    
         | 
| 
       447 
480 
     | 
    
         
             
                V8_INLINE const ScriptOriginOptions& GetResourceOptions() const;
         
     | 
| 
       448 
481 
     | 
    
         | 
| 
      
 482 
     | 
    
         
            +
                V8_INLINE const CompilationDetails& GetCompilationDetails() const;
         
     | 
| 
      
 483 
     | 
    
         
            +
             
     | 
| 
       449 
484 
     | 
    
         
             
               private:
         
     | 
| 
       450 
485 
     | 
    
         
             
                friend class ScriptCompiler;
         
     | 
| 
       451 
486 
     | 
    
         | 
| 
         @@ -453,8 +488,8 @@ class V8_EXPORT ScriptCompiler { 
     | 
|
| 
       453 
488 
     | 
    
         | 
| 
       454 
489 
     | 
    
         
             
                // Origin information
         
     | 
| 
       455 
490 
     | 
    
         
             
                Local<Value> resource_name;
         
     | 
| 
       456 
     | 
    
         
            -
                int resource_line_offset;
         
     | 
| 
       457 
     | 
    
         
            -
                int resource_column_offset;
         
     | 
| 
      
 491 
     | 
    
         
            +
                int resource_line_offset = -1;
         
     | 
| 
      
 492 
     | 
    
         
            +
                int resource_column_offset = -1;
         
     | 
| 
       458 
493 
     | 
    
         
             
                ScriptOriginOptions resource_options;
         
     | 
| 
       459 
494 
     | 
    
         
             
                Local<Value> source_map_url;
         
     | 
| 
       460 
495 
     | 
    
         
             
                Local<Data> host_defined_options;
         
     | 
| 
         @@ -468,6 +503,10 @@ class V8_EXPORT ScriptCompiler { 
     | 
|
| 
       468 
503 
     | 
    
         
             
                // For requesting compile hints from the embedder.
         
     | 
| 
       469 
504 
     | 
    
         
             
                CompileHintCallback compile_hint_callback = nullptr;
         
     | 
| 
       470 
505 
     | 
    
         
             
                void* compile_hint_callback_data = nullptr;
         
     | 
| 
      
 506 
     | 
    
         
            +
             
     | 
| 
      
 507 
     | 
    
         
            +
                // V8 writes this data and never reads it. It exists only to be informative
         
     | 
| 
      
 508 
     | 
    
         
            +
                // to the embedder.
         
     | 
| 
      
 509 
     | 
    
         
            +
                CompilationDetails compilation_details;
         
     | 
| 
       471 
510 
     | 
    
         
             
              };
         
     | 
| 
       472 
511 
     | 
    
         | 
| 
       473 
512 
     | 
    
         
             
              /**
         
     | 
| 
         @@ -522,8 +561,14 @@ class V8_EXPORT ScriptCompiler { 
     | 
|
| 
       522 
561 
     | 
    
         
             
                StreamedSource(const StreamedSource&) = delete;
         
     | 
| 
       523 
562 
     | 
    
         
             
                StreamedSource& operator=(const StreamedSource&) = delete;
         
     | 
| 
       524 
563 
     | 
    
         | 
| 
      
 564 
     | 
    
         
            +
                CompilationDetails& compilation_details() { return compilation_details_; }
         
     | 
| 
      
 565 
     | 
    
         
            +
             
     | 
| 
       525 
566 
     | 
    
         
             
               private:
         
     | 
| 
       526 
567 
     | 
    
         
             
                std::unique_ptr<internal::ScriptStreamingData> impl_;
         
     | 
| 
      
 568 
     | 
    
         
            +
             
     | 
| 
      
 569 
     | 
    
         
            +
                // V8 writes this data and never reads it. It exists only to be informative
         
     | 
| 
      
 570 
     | 
    
         
            +
                // to the embedder.
         
     | 
| 
      
 571 
     | 
    
         
            +
                CompilationDetails compilation_details_;
         
     | 
| 
       527 
572 
     | 
    
         
             
              };
         
     | 
| 
       528 
573 
     | 
    
         | 
| 
       529 
574 
     | 
    
         
             
              /**
         
     | 
| 
         @@ -835,6 +880,11 @@ const ScriptOriginOptions& ScriptCompiler::Source::GetResourceOptions() const { 
     | 
|
| 
       835 
880 
     | 
    
         
             
              return resource_options;
         
     | 
| 
       836 
881 
     | 
    
         
             
            }
         
     | 
| 
       837 
882 
     | 
    
         | 
| 
      
 883 
     | 
    
         
            +
            const ScriptCompiler::CompilationDetails&
         
     | 
| 
      
 884 
     | 
    
         
            +
            ScriptCompiler::Source::GetCompilationDetails() const {
         
     | 
| 
      
 885 
     | 
    
         
            +
              return compilation_details;
         
     | 
| 
      
 886 
     | 
    
         
            +
            }
         
     | 
| 
      
 887 
     | 
    
         
            +
             
     | 
| 
       838 
888 
     | 
    
         
             
            ModuleRequest* ModuleRequest::Cast(Data* data) {
         
     | 
| 
       839 
889 
     | 
    
         
             
            #ifdef V8_ENABLE_CHECKS
         
     | 
| 
       840 
890 
     | 
    
         
             
              CheckCast(data);
         
     |