libv8-node 21.7.2.0-aarch64-linux-musl → 24.12.0.0-aarch64-linux-musl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/ext/libv8-node/location.rb +3 -5
  3. data/ext/libv8-node/paths.rb +2 -0
  4. data/lib/libv8/node/version.rb +7 -4
  5. data/lib/libv8/node.rb +2 -0
  6. data/lib/libv8-node.rb +2 -0
  7. data/vendor/v8/aarch64-linux-musl/libv8/obj/libv8_monolith.a +0 -0
  8. data/vendor/v8/include/cppgc/allocation.h +11 -13
  9. data/vendor/v8/include/cppgc/default-platform.h +3 -2
  10. data/vendor/v8/include/cppgc/garbage-collected.h +8 -0
  11. data/vendor/v8/include/cppgc/heap-consistency.h +1 -1
  12. data/vendor/v8/include/cppgc/heap-statistics.h +2 -0
  13. data/vendor/v8/include/cppgc/internal/api-constants.h +2 -14
  14. data/vendor/v8/include/cppgc/internal/base-page-handle.h +2 -4
  15. data/vendor/v8/include/cppgc/internal/caged-heap-local-data.h +0 -4
  16. data/vendor/v8/include/cppgc/internal/caged-heap.h +0 -4
  17. data/vendor/v8/include/cppgc/internal/compiler-specific.h +9 -1
  18. data/vendor/v8/include/cppgc/internal/conditional-stack-allocated.h +41 -0
  19. data/vendor/v8/include/cppgc/internal/gc-info.h +12 -10
  20. data/vendor/v8/include/cppgc/internal/logging.h +3 -3
  21. data/vendor/v8/include/cppgc/internal/member-storage.h +69 -20
  22. data/vendor/v8/include/cppgc/internal/name-trait.h +5 -1
  23. data/vendor/v8/include/cppgc/internal/persistent-node.h +8 -3
  24. data/vendor/v8/include/cppgc/internal/pointer-policies.h +48 -11
  25. data/vendor/v8/include/cppgc/macros.h +21 -0
  26. data/vendor/v8/include/cppgc/member.h +70 -36
  27. data/vendor/v8/include/cppgc/name-provider.h +10 -0
  28. data/vendor/v8/include/cppgc/platform.h +11 -0
  29. data/vendor/v8/include/cppgc/type-traits.h +26 -4
  30. data/vendor/v8/include/cppgc/visitor.h +25 -1
  31. data/vendor/v8/include/libplatform/libplatform-export.h +2 -2
  32. data/vendor/v8/include/libplatform/v8-tracing.h +0 -1
  33. data/vendor/v8/include/v8-array-buffer.h +149 -46
  34. data/vendor/v8/include/v8-callbacks.h +100 -43
  35. data/vendor/v8/include/v8-container.h +54 -0
  36. data/vendor/v8/include/v8-context.h +92 -30
  37. data/vendor/v8/include/v8-cppgc.h +5 -56
  38. data/vendor/v8/include/v8-data.h +5 -0
  39. data/vendor/v8/include/v8-date.h +9 -0
  40. data/vendor/v8/include/v8-debug.h +11 -0
  41. data/vendor/v8/include/v8-embedder-heap.h +8 -20
  42. data/vendor/v8/include/v8-embedder-state-scope.h +2 -1
  43. data/vendor/v8/include/v8-exception.h +87 -9
  44. data/vendor/v8/include/v8-external-memory-accounter.h +60 -0
  45. data/vendor/v8/include/v8-fast-api-calls.h +67 -223
  46. data/vendor/v8/include/v8-forward.h +1 -0
  47. data/vendor/v8/include/v8-function-callback.h +296 -75
  48. data/vendor/v8/include/v8-function.h +11 -3
  49. data/vendor/v8/include/v8-handle-base.h +52 -82
  50. data/vendor/v8/include/v8-initialization.h +26 -1
  51. data/vendor/v8/include/v8-inspector.h +26 -27
  52. data/vendor/v8/include/v8-internal.h +960 -230
  53. data/vendor/v8/include/v8-isolate.h +347 -226
  54. data/vendor/v8/include/v8-local-handle.h +307 -55
  55. data/vendor/v8/include/v8-maybe.h +2 -1
  56. data/vendor/v8/include/v8-memory-span.h +284 -4
  57. data/vendor/v8/include/v8-message.h +11 -5
  58. data/vendor/v8/include/v8-metrics.h +15 -0
  59. data/vendor/v8/include/v8-microtask-queue.h +0 -5
  60. data/vendor/v8/include/v8-object.h +314 -41
  61. data/vendor/v8/include/v8-persistent-handle.h +29 -39
  62. data/vendor/v8/include/v8-platform.h +135 -77
  63. data/vendor/v8/include/v8-primitive.h +223 -5
  64. data/vendor/v8/include/v8-profiler.h +51 -2
  65. data/vendor/v8/include/v8-promise.h +2 -2
  66. data/vendor/v8/include/v8-proxy.h +0 -1
  67. data/vendor/v8/include/v8-regexp.h +0 -1
  68. data/vendor/v8/include/v8-sandbox.h +173 -0
  69. data/vendor/v8/include/v8-script.h +125 -27
  70. data/vendor/v8/include/v8-snapshot.h +130 -23
  71. data/vendor/v8/include/v8-source-location.h +6 -1
  72. data/vendor/v8/include/v8-statistics.h +10 -24
  73. data/vendor/v8/include/v8-template.h +320 -193
  74. data/vendor/v8/include/v8-trace-categories.h +23 -0
  75. data/vendor/v8/include/v8-traced-handle.h +99 -76
  76. data/vendor/v8/include/v8-typed-array.h +111 -7
  77. data/vendor/v8/include/v8-unwinder-state.h +2 -3
  78. data/vendor/v8/include/v8-unwinder.h +2 -1
  79. data/vendor/v8/include/v8-util.h +10 -125
  80. data/vendor/v8/include/v8-value-serializer-version.h +3 -3
  81. data/vendor/v8/include/v8-value.h +113 -6
  82. data/vendor/v8/include/v8-version.h +3 -3
  83. data/vendor/v8/include/v8-wasm.h +27 -0
  84. data/vendor/v8/include/v8-weak-callback-info.h +20 -12
  85. data/vendor/v8/include/v8.h +3 -3
  86. data/vendor/v8/include/v8config.h +116 -53
  87. metadata +55 -12
  88. data/vendor/v8/include/cppgc/ephemeron-pair.h +0 -30
@@ -7,92 +7,48 @@
7
7
 
8
8
  #include "v8-internal.h" // NOLINT(build/include_directory)
9
9
 
10
- namespace v8 {
10
+ namespace v8::api_internal {
11
11
 
12
- namespace internal {
13
-
14
- // Helper functions about values contained in handles.
15
- // A value is either an indirect pointer or a direct pointer, depending on
16
- // whether direct local support is enabled.
17
- class ValueHelper final {
12
+ template <bool check_statically_enabled>
13
+ class StackAllocated {
18
14
  public:
19
- #ifdef V8_ENABLE_DIRECT_LOCAL
20
- static constexpr Address kTaggedNullAddress = 1;
21
- static constexpr Address kEmpty = kTaggedNullAddress;
22
- #else
23
- static constexpr Address kEmpty = kNullAddress;
24
- #endif // V8_ENABLE_DIRECT_LOCAL
25
-
26
- template <typename T>
27
- V8_INLINE static bool IsEmpty(T* value) {
28
- return reinterpret_cast<Address>(value) == kEmpty;
29
- }
30
-
31
- // Returns a handle's "value" for all kinds of abstract handles. For Local,
32
- // it is equivalent to `*handle`. The variadic parameters support handle
33
- // types with extra type parameters, like `Persistent<T, M>`.
34
- template <template <typename T, typename... Ms> typename H, typename T,
35
- typename... Ms>
36
- V8_INLINE static T* HandleAsValue(const H<T, Ms...>& handle) {
37
- return handle.template value<T>();
38
- }
39
-
40
- #ifdef V8_ENABLE_DIRECT_LOCAL
15
+ V8_INLINE StackAllocated() = default;
41
16
 
42
- template <typename T>
43
- V8_INLINE static Address ValueAsAddress(const T* value) {
44
- return reinterpret_cast<Address>(value);
45
- }
46
-
47
- template <typename T, bool check_null = true, typename S>
48
- V8_INLINE static T* SlotAsValue(S* slot) {
49
- if (check_null && slot == nullptr) {
50
- return reinterpret_cast<T*>(kTaggedNullAddress);
51
- }
52
- return *reinterpret_cast<T**>(slot);
53
- }
54
-
55
- #else // !V8_ENABLE_DIRECT_LOCAL
56
-
57
- template <typename T>
58
- V8_INLINE static Address ValueAsAddress(const T* value) {
59
- return *reinterpret_cast<const Address*>(value);
60
- }
17
+ protected:
18
+ struct no_checking_tag {};
19
+ static constexpr no_checking_tag do_not_check{};
61
20
 
62
- template <typename T, bool check_null = true, typename S>
63
- V8_INLINE static T* SlotAsValue(S* slot) {
64
- return reinterpret_cast<T*>(slot);
65
- }
21
+ V8_INLINE explicit StackAllocated(no_checking_tag) {}
22
+ V8_INLINE explicit StackAllocated(const StackAllocated& other,
23
+ no_checking_tag) {}
66
24
 
67
- #endif // V8_ENABLE_DIRECT_LOCAL
25
+ V8_INLINE void VerifyOnStack() const {}
68
26
  };
69
27
 
70
- /**
71
- * Helper functions about handles.
72
- */
73
- class HandleHelper final {
28
+ template <>
29
+ class V8_TRIVIAL_ABI StackAllocated<true> : public StackAllocated<false> {
74
30
  public:
75
- /**
76
- * Checks whether two handles are equal.
77
- * They are equal iff they are both empty or they are both non-empty and the
78
- * objects to which they refer are physically equal.
79
- *
80
- * If both handles refer to JS objects, this is the same as strict equality.
81
- * For primitives, such as numbers or strings, a `false` return value does not
82
- * indicate that the values aren't equal in the JavaScript sense.
83
- * Use `Value::StrictEquals()` to check primitives for equality.
84
- */
85
- template <typename T1, typename T2>
86
- V8_INLINE static bool EqualHandles(const T1& lhs, const T2& rhs) {
87
- if (lhs.IsEmpty()) return rhs.IsEmpty();
88
- if (rhs.IsEmpty()) return false;
89
- return lhs.ptr() == rhs.ptr();
90
- }
31
+ V8_INLINE StackAllocated() { VerifyOnStack(); }
91
32
 
92
- static V8_EXPORT void VerifyOnStack(const void* ptr);
93
- };
33
+ #if V8_HAS_ATTRIBUTE_TRIVIAL_ABI
34
+ // In this case, StackAllocated becomes not trivially copyable.
35
+ V8_INLINE StackAllocated(const StackAllocated& other) { VerifyOnStack(); }
36
+ StackAllocated& operator=(const StackAllocated&) = default;
37
+ #endif
94
38
 
95
- } // namespace internal
39
+ protected:
40
+ V8_INLINE explicit StackAllocated(no_checking_tag tag)
41
+ : StackAllocated<false>(tag) {}
42
+ V8_INLINE explicit StackAllocated(const StackAllocated& other,
43
+ no_checking_tag tag)
44
+ : StackAllocated<false>(other, tag) {}
45
+
46
+ #ifdef ENABLE_SLOW_DCHECKS
47
+ V8_EXPORT void VerifyOnStack() const;
48
+ #else
49
+ V8_INLINE V8_EXPORT void VerifyOnStack() const {}
50
+ #endif
51
+ };
96
52
 
97
53
  /**
98
54
  * A base class for abstract handles containing indirect pointers.
@@ -129,16 +85,26 @@ class IndirectHandleBase {
129
85
 
130
86
  // Returns the handler's "value" (direct or indirect pointer, depending on
131
87
  // whether direct local support is enabled).
132
- template <typename T>
88
+ template <typename T, bool check_null = false>
133
89
  V8_INLINE T* value() const {
134
- return internal::ValueHelper::SlotAsValue<T, false>(slot());
90
+ return internal::ValueHelper::SlotAsValue<T, check_null>(slot());
135
91
  }
136
92
 
93
+ #ifdef V8_ENABLE_DIRECT_HANDLE
94
+ V8_INLINE internal::ValueHelper::InternalRepresentationType repr() const {
95
+ return location_ ? *location_ : internal::ValueHelper::kEmpty;
96
+ }
97
+ #else
98
+ V8_INLINE internal::ValueHelper::InternalRepresentationType repr() const {
99
+ return location_;
100
+ }
101
+ #endif // V8_ENABLE_DIRECT_HANDLE
102
+
137
103
  private:
138
104
  internal::Address* location_ = nullptr;
139
105
  };
140
106
 
141
- #ifdef V8_ENABLE_DIRECT_LOCAL
107
+ #ifdef V8_ENABLE_DIRECT_HANDLE
142
108
 
143
109
  /**
144
110
  * A base class for abstract handles containing direct pointers.
@@ -169,17 +135,21 @@ class DirectHandleBase {
169
135
 
170
136
  // Returns the handler's "value" (direct pointer, as direct local support
171
137
  // is guaranteed to be enabled here).
172
- template <typename T>
138
+ template <typename T, bool check_null = false>
173
139
  V8_INLINE T* value() const {
174
140
  return reinterpret_cast<T*>(ptr_);
175
141
  }
176
142
 
143
+ V8_INLINE internal::ValueHelper::InternalRepresentationType repr() const {
144
+ return ptr_;
145
+ }
146
+
177
147
  private:
178
148
  internal::Address ptr_ = internal::ValueHelper::kEmpty;
179
149
  };
180
150
 
181
- #endif // V8_ENABLE_DIRECT_LOCAL
151
+ #endif // V8_ENABLE_DIRECT_HANDLE
182
152
 
183
- } // namespace v8
153
+ } // namespace v8::api_internal
184
154
 
185
155
  #endif // INCLUDE_V8_HANDLE_BASE_H_
@@ -52,6 +52,9 @@ using ReturnAddressLocationResolver =
52
52
  using DcheckErrorCallback = void (*)(const char* file, int line,
53
53
  const char* message);
54
54
 
55
+ using V8FatalErrorCallback = void (*)(const char* file, int line,
56
+ const char* message);
57
+
55
58
  /**
56
59
  * Container class for static utility functions.
57
60
  */
@@ -77,6 +80,12 @@ class V8_EXPORT V8 {
77
80
  /** Set the callback to invoke in case of Dcheck failures. */
78
81
  static void SetDcheckErrorHandler(DcheckErrorCallback that);
79
82
 
83
+ /** Set the callback to invoke in the case of CHECK failures or fatal
84
+ * errors. This is distinct from Isolate::SetFatalErrorHandler, which
85
+ * is invoked in response to API usage failures.
86
+ * */
87
+ static void SetFatalErrorHandler(V8FatalErrorCallback that);
88
+
80
89
  /**
81
90
  * Sets V8 flags from a string.
82
91
  */
@@ -97,10 +106,24 @@ class V8_EXPORT V8 {
97
106
  * is created. It always returns true.
98
107
  */
99
108
  V8_INLINE static bool Initialize() {
109
+ #ifdef V8_TARGET_OS_ANDROID
110
+ const bool kV8TargetOsIsAndroid = true;
111
+ #else
112
+ const bool kV8TargetOsIsAndroid = false;
113
+ #endif
114
+
115
+ #ifdef V8_ENABLE_CHECKS
116
+ const bool kV8EnableChecks = true;
117
+ #else
118
+ const bool kV8EnableChecks = false;
119
+ #endif
120
+
100
121
  const int kBuildConfiguration =
101
122
  (internal::PointerCompressionIsEnabled() ? kPointerCompression : 0) |
102
123
  (internal::SmiValuesAre31Bits() ? k31BitSmis : 0) |
103
- (internal::SandboxIsEnabled() ? kSandbox : 0);
124
+ (internal::SandboxIsEnabled() ? kSandbox : 0) |
125
+ (kV8TargetOsIsAndroid ? kTargetOsIsAndroid : 0) |
126
+ (kV8EnableChecks ? kEnableChecks : 0);
104
127
  return Initialize(kBuildConfiguration);
105
128
  }
106
129
 
@@ -271,6 +294,8 @@ class V8_EXPORT V8 {
271
294
  kPointerCompression = 1 << 0,
272
295
  k31BitSmis = 1 << 1,
273
296
  kSandbox = 1 << 2,
297
+ kTargetOsIsAndroid = 1 << 3,
298
+ kEnableChecks = 1 << 4,
274
299
  };
275
300
 
276
301
  /**
@@ -139,6 +139,7 @@ struct V8_EXPORT V8StackFrame {
139
139
  StringView functionName;
140
140
  int lineNumber;
141
141
  int columnNumber;
142
+ int scriptId;
142
143
  };
143
144
 
144
145
  class V8_EXPORT V8StackTrace {
@@ -172,10 +173,6 @@ class V8_EXPORT V8InspectorSession {
172
173
  virtual v8::Local<v8::Value> get(v8::Local<v8::Context>) = 0;
173
174
  virtual ~Inspectable() = default;
174
175
  };
175
- class V8_EXPORT CommandLineAPIScope {
176
- public:
177
- virtual ~CommandLineAPIScope() = default;
178
- };
179
176
  virtual void addInspectedObject(std::unique_ptr<Inspectable>) = 0;
180
177
 
181
178
  // Dispatching protocol messages.
@@ -185,9 +182,6 @@ class V8_EXPORT V8InspectorSession {
185
182
  virtual std::vector<std::unique_ptr<protocol::Schema::API::Domain>>
186
183
  supportedDomains() = 0;
187
184
 
188
- virtual std::unique_ptr<V8InspectorSession::CommandLineAPIScope>
189
- initializeCommandLineAPIScope(int executionContextId) = 0;
190
-
191
185
  // Debugger actions.
192
186
  virtual void schedulePauseOnNextStatement(StringView breakReason,
193
187
  StringView breakDetails) = 0;
@@ -213,21 +207,26 @@ class V8_EXPORT V8InspectorSession {
213
207
  virtual void releaseObjectGroup(StringView) = 0;
214
208
  virtual void triggerPreciseCoverageDeltaUpdate(StringView occasion) = 0;
215
209
 
210
+ struct V8_EXPORT EvaluateResult {
211
+ enum class ResultType {
212
+ kNotRun,
213
+ kSuccess,
214
+ kException,
215
+ };
216
+
217
+ ResultType type;
218
+ v8::Local<v8::Value> value;
219
+ };
220
+ // Evalaute 'expression' in the provided context. Does the same as
221
+ // Runtime#evaluate under-the-hood but exposed on the C++ side.
222
+ virtual EvaluateResult evaluate(v8::Local<v8::Context> context,
223
+ StringView expression,
224
+ bool includeCommandLineAPI = false) = 0;
225
+
216
226
  // Prepare for shutdown (disables debugger pausing, etc.).
217
227
  virtual void stop() = 0;
218
228
  };
219
229
 
220
- // Deprecated.
221
- // TODO(crbug.com/1420968): remove.
222
- class V8_EXPORT WebDriverValue {
223
- public:
224
- explicit WebDriverValue(std::unique_ptr<StringBuffer> type,
225
- v8::MaybeLocal<v8::Value> value = {})
226
- : type(std::move(type)), value(value) {}
227
- std::unique_ptr<StringBuffer> type;
228
- v8::MaybeLocal<v8::Value> value;
229
- };
230
-
231
230
  struct V8_EXPORT DeepSerializedValue {
232
231
  explicit DeepSerializedValue(std::unique_ptr<StringBuffer> type,
233
232
  v8::MaybeLocal<v8::Value> value = {})
@@ -266,12 +265,6 @@ class V8_EXPORT V8InspectorClient {
266
265
  virtual void beginUserGesture() {}
267
266
  virtual void endUserGesture() {}
268
267
 
269
- // Deprecated. Use `deepSerialize` instead.
270
- // TODO(crbug.com/1420968): remove.
271
- virtual std::unique_ptr<WebDriverValue> serializeToWebDriverValue(
272
- v8::Local<v8::Value> v8Value, int maxDepth) {
273
- return nullptr;
274
- }
275
268
  virtual std::unique_ptr<DeepSerializationResult> deepSerialize(
276
269
  v8::Local<v8::Value> v8Value, int maxDepth,
277
270
  v8::Local<v8::Object> additionalParameters) {
@@ -305,9 +298,14 @@ class V8_EXPORT V8InspectorClient {
305
298
  return v8::MaybeLocal<v8::Value>();
306
299
  }
307
300
 
308
- virtual void consoleTime(const StringView& title) {}
309
- virtual void consoleTimeEnd(const StringView& title) {}
310
- virtual void consoleTimeStamp(const StringView& title) {}
301
+ virtual void consoleTime(v8::Isolate* isolate, v8::Local<v8::String> label) {}
302
+ virtual void consoleTimeEnd(v8::Isolate* isolate,
303
+ v8::Local<v8::String> label) {}
304
+ virtual void consoleTimeStamp(v8::Isolate* isolate,
305
+ v8::Local<v8::String> label) {}
306
+ virtual void consoleTimeStampWithArgs(
307
+ v8::Isolate* isolate, v8::Local<v8::String> label,
308
+ const v8::LocalVector<v8::Value>& args) {}
311
309
  virtual void consoleClear(int contextGroupId) {}
312
310
  virtual double currentTimeMS() { return 0; }
313
311
  typedef void (*TimerCallback)(void*);
@@ -366,6 +364,7 @@ class V8_EXPORT V8Inspector {
366
364
  virtual void resetContextGroup(int contextGroupId) = 0;
367
365
  virtual v8::MaybeLocal<v8::Context> contextById(int contextId) = 0;
368
366
  virtual V8DebuggerId uniqueDebuggerId(int contextId) = 0;
367
+ virtual uint64_t isolateId() = 0;
369
368
 
370
369
  // Various instrumentation.
371
370
  virtual void idleStarted() = 0;