libv8-node 19.9.0.0-x86_64-linux → 20.12.1.0-x86_64-linux

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/lib/libv8/node/version.rb +3 -3
  3. data/vendor/v8/include/cppgc/cross-thread-persistent.h +4 -2
  4. data/vendor/v8/include/cppgc/heap-consistency.h +2 -2
  5. data/vendor/v8/include/cppgc/heap-handle.h +5 -0
  6. data/vendor/v8/include/cppgc/internal/api-constants.h +4 -1
  7. data/vendor/v8/include/cppgc/internal/gc-info.h +35 -33
  8. data/vendor/v8/include/cppgc/internal/member-storage.h +19 -7
  9. data/vendor/v8/include/cppgc/internal/pointer-policies.h +38 -2
  10. data/vendor/v8/include/cppgc/internal/write-barrier.h +15 -5
  11. data/vendor/v8/include/cppgc/macros.h +10 -1
  12. data/vendor/v8/include/cppgc/member.h +167 -129
  13. data/vendor/v8/include/cppgc/persistent.h +22 -15
  14. data/vendor/v8/include/cppgc/platform.h +6 -4
  15. data/vendor/v8/include/cppgc/type-traits.h +4 -3
  16. data/vendor/v8/include/cppgc/visitor.h +16 -1
  17. data/vendor/v8/include/libplatform/v8-tracing.h +2 -2
  18. data/vendor/v8/include/v8-array-buffer.h +59 -0
  19. data/vendor/v8/include/v8-callbacks.h +14 -1
  20. data/vendor/v8/include/v8-context.h +50 -3
  21. data/vendor/v8/include/v8-cppgc.h +15 -0
  22. data/vendor/v8/include/v8-data.h +1 -1
  23. data/vendor/v8/include/v8-embedder-heap.h +0 -169
  24. data/vendor/v8/include/v8-fast-api-calls.h +7 -3
  25. data/vendor/v8/include/v8-function-callback.h +69 -42
  26. data/vendor/v8/include/v8-function.h +1 -0
  27. data/vendor/v8/include/v8-inspector.h +20 -5
  28. data/vendor/v8/include/v8-internal.h +242 -150
  29. data/vendor/v8/include/v8-isolate.h +30 -40
  30. data/vendor/v8/include/v8-local-handle.h +81 -48
  31. data/vendor/v8/include/v8-metrics.h +28 -2
  32. data/vendor/v8/include/v8-microtask-queue.h +5 -0
  33. data/vendor/v8/include/v8-object.h +38 -3
  34. data/vendor/v8/include/v8-persistent-handle.h +25 -16
  35. data/vendor/v8/include/v8-platform.h +79 -10
  36. data/vendor/v8/include/v8-primitive.h +19 -12
  37. data/vendor/v8/include/v8-profiler.h +59 -31
  38. data/vendor/v8/include/v8-script.h +32 -5
  39. data/vendor/v8/include/v8-snapshot.h +4 -8
  40. data/vendor/v8/include/v8-template.h +3 -1
  41. data/vendor/v8/include/v8-traced-handle.h +22 -28
  42. data/vendor/v8/include/v8-util.h +9 -3
  43. data/vendor/v8/include/v8-value.h +31 -4
  44. data/vendor/v8/include/v8-version.h +4 -4
  45. data/vendor/v8/include/v8-wasm.h +2 -1
  46. data/vendor/v8/include/v8config.h +73 -2
  47. data/vendor/v8/x86_64-linux/libv8/obj/libv8_monolith.a +0 -0
  48. metadata +2 -2
@@ -21,6 +21,7 @@ class Value;
21
21
  namespace internal {
22
22
  class FunctionCallbackArguments;
23
23
  class PropertyCallbackArguments;
24
+ class Builtins;
24
25
  } // namespace internal
25
26
 
26
27
  namespace debug {
@@ -74,6 +75,11 @@ class ReturnValue {
74
75
  V8_INLINE void SetInternal(internal::Address value) { *value_ = value; }
75
76
  V8_INLINE internal::Address GetDefaultValue();
76
77
  V8_INLINE explicit ReturnValue(internal::Address* slot);
78
+
79
+ // See FunctionCallbackInfo.
80
+ static constexpr int kIsolateValueIndex = -2;
81
+ static constexpr int kDefaultValueValueIndex = -1;
82
+
77
83
  internal::Address* value_;
78
84
  };
79
85
 
@@ -116,19 +122,35 @@ class FunctionCallbackInfo {
116
122
  V8_INLINE Isolate* GetIsolate() const;
117
123
  /** The ReturnValue for the call. */
118
124
  V8_INLINE ReturnValue<T> GetReturnValue() const;
119
- // This shouldn't be public, but the arm compiler needs it.
120
- static const int kArgsLength = 6;
121
125
 
122
- protected:
126
+ private:
123
127
  friend class internal::FunctionCallbackArguments;
124
128
  friend class internal::CustomArguments<FunctionCallbackInfo>;
125
129
  friend class debug::ConsoleCallArguments;
126
- static const int kHolderIndex = 0;
127
- static const int kIsolateIndex = 1;
128
- static const int kReturnValueDefaultValueIndex = 2;
129
- static const int kReturnValueIndex = 3;
130
- static const int kDataIndex = 4;
131
- static const int kNewTargetIndex = 5;
130
+ friend class internal::Builtins;
131
+ static constexpr int kHolderIndex = 0;
132
+ static constexpr int kIsolateIndex = 1;
133
+ static constexpr int kReturnValueDefaultValueIndex = 2;
134
+ static constexpr int kReturnValueIndex = 3;
135
+ static constexpr int kDataIndex = 4;
136
+ static constexpr int kNewTargetIndex = 5;
137
+
138
+ static constexpr int kArgsLength = 6;
139
+ static constexpr int kArgsLengthWithReceiver = 7;
140
+
141
+ // Codegen constants:
142
+ static constexpr int kSize = 3 * internal::kApiSystemPointerSize;
143
+ static constexpr int kImplicitArgsOffset = 0;
144
+ static constexpr int kValuesOffset =
145
+ kImplicitArgsOffset + internal::kApiSystemPointerSize;
146
+ static constexpr int kLengthOffset =
147
+ kValuesOffset + internal::kApiSystemPointerSize;
148
+
149
+ static constexpr int kThisValuesIndex = -1;
150
+ static_assert(ReturnValue<Value>::kDefaultValueValueIndex ==
151
+ kReturnValueDefaultValueIndex - kReturnValueIndex);
152
+ static_assert(ReturnValue<Value>::kIsolateValueIndex ==
153
+ kIsolateIndex - kReturnValueIndex);
132
154
 
133
155
  V8_INLINE FunctionCallbackInfo(internal::Address* implicit_args,
134
156
  internal::Address* values, int length);
@@ -229,22 +251,24 @@ class PropertyCallbackInfo {
229
251
  */
230
252
  V8_INLINE bool ShouldThrowOnError() const;
231
253
 
232
- // This shouldn't be public, but the arm compiler needs it.
233
- static const int kArgsLength = 7;
234
-
235
- protected:
254
+ private:
236
255
  friend class MacroAssembler;
237
256
  friend class internal::PropertyCallbackArguments;
238
257
  friend class internal::CustomArguments<PropertyCallbackInfo>;
239
- static const int kShouldThrowOnErrorIndex = 0;
240
- static const int kHolderIndex = 1;
241
- static const int kIsolateIndex = 2;
242
- static const int kReturnValueDefaultValueIndex = 3;
243
- static const int kReturnValueIndex = 4;
244
- static const int kDataIndex = 5;
245
- static const int kThisIndex = 6;
246
-
247
- V8_INLINE PropertyCallbackInfo(internal::Address* args) : args_(args) {}
258
+ static constexpr int kShouldThrowOnErrorIndex = 0;
259
+ static constexpr int kHolderIndex = 1;
260
+ static constexpr int kIsolateIndex = 2;
261
+ static constexpr int kReturnValueDefaultValueIndex = 3;
262
+ static constexpr int kReturnValueIndex = 4;
263
+ static constexpr int kDataIndex = 5;
264
+ static constexpr int kThisIndex = 6;
265
+
266
+ static constexpr int kArgsLength = 7;
267
+
268
+ static constexpr int kSize = 1 * internal::kApiSystemPointerSize;
269
+
270
+ V8_INLINE explicit PropertyCallbackInfo(internal::Address* args)
271
+ : args_(args) {}
248
272
  internal::Address* args_;
249
273
  };
250
274
 
@@ -285,7 +309,7 @@ void ReturnValue<T>::Set(const Local<S> handle) {
285
309
  if (V8_UNLIKELY(handle.IsEmpty())) {
286
310
  *value_ = GetDefaultValue();
287
311
  } else {
288
- *value_ = *reinterpret_cast<internal::Address*>(*handle);
312
+ *value_ = internal::ValueHelper::ValueAsAddress(*handle);
289
313
  }
290
314
  }
291
315
 
@@ -328,41 +352,46 @@ void ReturnValue<T>::Set(bool value) {
328
352
  } else {
329
353
  root_index = I::kFalseValueRootIndex;
330
354
  }
331
- *value_ = *I::GetRoot(GetIsolate(), root_index);
355
+ *value_ = I::GetRoot(GetIsolate(), root_index);
332
356
  }
333
357
 
334
358
  template <typename T>
335
359
  void ReturnValue<T>::SetNull() {
336
360
  static_assert(std::is_base_of<T, Primitive>::value, "type check");
337
361
  using I = internal::Internals;
338
- *value_ = *I::GetRoot(GetIsolate(), I::kNullValueRootIndex);
362
+ *value_ = I::GetRoot(GetIsolate(), I::kNullValueRootIndex);
339
363
  }
340
364
 
341
365
  template <typename T>
342
366
  void ReturnValue<T>::SetUndefined() {
343
367
  static_assert(std::is_base_of<T, Primitive>::value, "type check");
344
368
  using I = internal::Internals;
345
- *value_ = *I::GetRoot(GetIsolate(), I::kUndefinedValueRootIndex);
369
+ *value_ = I::GetRoot(GetIsolate(), I::kUndefinedValueRootIndex);
346
370
  }
347
371
 
348
372
  template <typename T>
349
373
  void ReturnValue<T>::SetEmptyString() {
350
374
  static_assert(std::is_base_of<T, String>::value, "type check");
351
375
  using I = internal::Internals;
352
- *value_ = *I::GetRoot(GetIsolate(), I::kEmptyStringRootIndex);
376
+ *value_ = I::GetRoot(GetIsolate(), I::kEmptyStringRootIndex);
353
377
  }
354
378
 
355
379
  template <typename T>
356
380
  Isolate* ReturnValue<T>::GetIsolate() const {
357
381
  // Isolate is always the pointer below the default value on the stack.
358
- return *reinterpret_cast<Isolate**>(&value_[-2]);
382
+ return *reinterpret_cast<Isolate**>(&value_[kIsolateValueIndex]);
359
383
  }
360
384
 
361
385
  template <typename T>
362
386
  Local<Value> ReturnValue<T>::Get() const {
363
387
  using I = internal::Internals;
364
- if (*value_ == *I::GetRoot(GetIsolate(), I::kTheHoleValueRootIndex))
365
- return Local<Value>(*Undefined(GetIsolate()));
388
+ #if V8_STATIC_ROOTS_BOOL
389
+ if (I::is_identical(*value_, I::StaticReadOnlyRoot::kTheHoleValue)) {
390
+ #else
391
+ if (*value_ == I::GetRoot(GetIsolate(), I::kTheHoleValueRootIndex)) {
392
+ #endif
393
+ return Undefined(GetIsolate());
394
+ }
366
395
  return Local<Value>::New(GetIsolate(), reinterpret_cast<Value*>(value_));
367
396
  }
368
397
 
@@ -375,7 +404,7 @@ void ReturnValue<T>::Set(S* whatever) {
375
404
  template <typename T>
376
405
  internal::Address ReturnValue<T>::GetDefaultValue() {
377
406
  // Default value is always the pointer below value_ on the stack.
378
- return value_[-1];
407
+ return value_[kDefaultValueValueIndex];
379
408
  }
380
409
 
381
410
  template <typename T>
@@ -387,31 +416,29 @@ FunctionCallbackInfo<T>::FunctionCallbackInfo(internal::Address* implicit_args,
387
416
  template <typename T>
388
417
  Local<Value> FunctionCallbackInfo<T>::operator[](int i) const {
389
418
  // values_ points to the first argument (not the receiver).
390
- if (i < 0 || length_ <= i) return Local<Value>(*Undefined(GetIsolate()));
391
- return Local<Value>(reinterpret_cast<Value*>(values_ + i));
419
+ if (i < 0 || length_ <= i) return Undefined(GetIsolate());
420
+ return Local<Value>::FromSlot(values_ + i);
392
421
  }
393
422
 
394
423
  template <typename T>
395
424
  Local<Object> FunctionCallbackInfo<T>::This() const {
396
425
  // values_ points to the first argument (not the receiver).
397
- return Local<Object>(reinterpret_cast<Object*>(values_ - 1));
426
+ return Local<Object>::FromSlot(values_ + kThisValuesIndex);
398
427
  }
399
428
 
400
429
  template <typename T>
401
430
  Local<Object> FunctionCallbackInfo<T>::Holder() const {
402
- return Local<Object>(
403
- reinterpret_cast<Object*>(&implicit_args_[kHolderIndex]));
431
+ return Local<Object>::FromSlot(&implicit_args_[kHolderIndex]);
404
432
  }
405
433
 
406
434
  template <typename T>
407
435
  Local<Value> FunctionCallbackInfo<T>::NewTarget() const {
408
- return Local<Value>(
409
- reinterpret_cast<Value*>(&implicit_args_[kNewTargetIndex]));
436
+ return Local<Value>::FromSlot(&implicit_args_[kNewTargetIndex]);
410
437
  }
411
438
 
412
439
  template <typename T>
413
440
  Local<Value> FunctionCallbackInfo<T>::Data() const {
414
- return Local<Value>(reinterpret_cast<Value*>(&implicit_args_[kDataIndex]));
441
+ return Local<Value>::FromSlot(&implicit_args_[kDataIndex]);
415
442
  }
416
443
 
417
444
  template <typename T>
@@ -441,17 +468,17 @@ Isolate* PropertyCallbackInfo<T>::GetIsolate() const {
441
468
 
442
469
  template <typename T>
443
470
  Local<Value> PropertyCallbackInfo<T>::Data() const {
444
- return Local<Value>(reinterpret_cast<Value*>(&args_[kDataIndex]));
471
+ return Local<Value>::FromSlot(&args_[kDataIndex]);
445
472
  }
446
473
 
447
474
  template <typename T>
448
475
  Local<Object> PropertyCallbackInfo<T>::This() const {
449
- return Local<Object>(reinterpret_cast<Object*>(&args_[kThisIndex]));
476
+ return Local<Object>::FromSlot(&args_[kThisIndex]);
450
477
  }
451
478
 
452
479
  template <typename T>
453
480
  Local<Object> PropertyCallbackInfo<T>::Holder() const {
454
- return Local<Object>(reinterpret_cast<Object*>(&args_[kHolderIndex]));
481
+ return Local<Object>::FromSlot(&args_[kHolderIndex]);
455
482
  }
456
483
 
457
484
  template <typename T>
@@ -59,6 +59,7 @@ class V8_EXPORT Function : public Object {
59
59
  void SetName(Local<String> name);
60
60
  Local<Value> GetName() const;
61
61
 
62
+ V8_DEPRECATED("No direct replacement")
62
63
  MaybeLocal<UnboundScript> GetUnboundScript() const;
63
64
 
64
65
  /**
@@ -32,19 +32,19 @@ namespace Debugger {
32
32
  namespace API {
33
33
  class SearchMatch;
34
34
  }
35
- }
35
+ } // namespace Debugger
36
36
  namespace Runtime {
37
37
  namespace API {
38
38
  class RemoteObject;
39
39
  class StackTrace;
40
40
  class StackTraceId;
41
- }
42
- }
41
+ } // namespace API
42
+ } // namespace Runtime
43
43
  namespace Schema {
44
44
  namespace API {
45
45
  class Domain;
46
46
  }
47
- }
47
+ } // namespace Schema
48
48
  } // namespace protocol
49
49
 
50
50
  class V8_EXPORT StringView {
@@ -134,6 +134,13 @@ class V8_EXPORT V8DebuggerId {
134
134
  int64_t m_second = 0;
135
135
  };
136
136
 
137
+ struct V8_EXPORT V8StackFrame {
138
+ StringView sourceURL;
139
+ StringView functionName;
140
+ int lineNumber;
141
+ int columnNumber;
142
+ };
143
+
137
144
  class V8_EXPORT V8StackTrace {
138
145
  public:
139
146
  virtual StringView firstNonEmptySourceURL() const = 0;
@@ -151,6 +158,8 @@ class V8_EXPORT V8StackTrace {
151
158
 
152
159
  // Safe to pass between threads, drops async chain.
153
160
  virtual std::unique_ptr<V8StackTrace> clone() = 0;
161
+
162
+ virtual std::vector<V8StackFrame> frames() const = 0;
154
163
  };
155
164
 
156
165
  class V8_EXPORT V8InspectorSession {
@@ -203,6 +212,9 @@ class V8_EXPORT V8InspectorSession {
203
212
  std::unique_ptr<StringBuffer>* objectGroup) = 0;
204
213
  virtual void releaseObjectGroup(StringView) = 0;
205
214
  virtual void triggerPreciseCoverageDeltaUpdate(StringView occasion) = 0;
215
+
216
+ // Prepare for shutdown (disables debugger pausing, etc.).
217
+ virtual void stop() = 0;
206
218
  };
207
219
 
208
220
  class V8_EXPORT WebDriverValue {
@@ -365,9 +377,12 @@ class V8_EXPORT V8Inspector {
365
377
  virtual void flushProtocolNotifications() = 0;
366
378
  };
367
379
  enum ClientTrustLevel { kUntrusted, kFullyTrusted };
380
+ enum SessionPauseState { kWaitingForDebugger, kNotWaitingForDebugger };
381
+ // TODO(chromium:1352175): remove default value once downstream change lands.
368
382
  virtual std::unique_ptr<V8InspectorSession> connect(
369
383
  int contextGroupId, Channel*, StringView state,
370
- ClientTrustLevel client_trust_level) {
384
+ ClientTrustLevel client_trust_level,
385
+ SessionPauseState = kNotWaitingForDebugger) {
371
386
  return nullptr;
372
387
  }
373
388