libv8-node 17.9.1.0-x86_64-darwin → 18.13.0.0-x86_64-darwin

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/ext/libv8-node/paths.rb +1 -1
  3. data/lib/libv8/node/version.rb +3 -3
  4. data/vendor/v8/include/cppgc/allocation.h +88 -17
  5. data/vendor/v8/include/cppgc/default-platform.h +2 -10
  6. data/vendor/v8/include/cppgc/explicit-management.h +22 -4
  7. data/vendor/v8/include/cppgc/garbage-collected.h +15 -26
  8. data/vendor/v8/include/cppgc/heap-consistency.h +13 -0
  9. data/vendor/v8/include/cppgc/heap-state.h +12 -0
  10. data/vendor/v8/include/cppgc/heap.h +7 -2
  11. data/vendor/v8/include/cppgc/internal/api-constants.h +8 -0
  12. data/vendor/v8/include/cppgc/internal/caged-heap-local-data.h +23 -12
  13. data/vendor/v8/include/cppgc/internal/finalizer-trait.h +2 -1
  14. data/vendor/v8/include/cppgc/internal/logging.h +3 -3
  15. data/vendor/v8/include/cppgc/internal/persistent-node.h +39 -27
  16. data/vendor/v8/include/cppgc/internal/pointer-policies.h +4 -4
  17. data/vendor/v8/include/cppgc/internal/write-barrier.h +26 -32
  18. data/vendor/v8/include/cppgc/member.h +5 -2
  19. data/vendor/v8/include/cppgc/persistent.h +30 -31
  20. data/vendor/v8/include/cppgc/platform.h +3 -1
  21. data/vendor/v8/include/cppgc/prefinalizer.h +34 -11
  22. data/vendor/v8/include/cppgc/testing.h +9 -2
  23. data/vendor/v8/include/cppgc/type-traits.h +6 -13
  24. data/vendor/v8/include/libplatform/libplatform.h +0 -11
  25. data/vendor/v8/include/libplatform/v8-tracing.h +0 -1
  26. data/vendor/v8/include/v8-array-buffer.h +22 -2
  27. data/vendor/v8/include/v8-callbacks.h +26 -6
  28. data/vendor/v8/include/v8-context.h +3 -14
  29. data/vendor/v8/include/v8-cppgc.h +16 -126
  30. data/vendor/v8/include/v8-data.h +15 -0
  31. data/vendor/v8/include/v8-debug.h +21 -4
  32. data/vendor/v8/include/v8-embedder-heap.h +10 -30
  33. data/vendor/v8/include/v8-embedder-state-scope.h +51 -0
  34. data/vendor/v8/include/v8-exception.h +0 -7
  35. data/vendor/v8/include/v8-fast-api-calls.h +82 -31
  36. data/vendor/v8/include/v8-function.h +3 -0
  37. data/vendor/v8/include/v8-initialization.h +64 -31
  38. data/vendor/v8/include/v8-inspector.h +45 -4
  39. data/vendor/v8/include/v8-internal.h +189 -102
  40. data/vendor/v8/include/v8-isolate.h +49 -2
  41. data/vendor/v8/include/v8-local-handle.h +0 -4
  42. data/vendor/v8/include/v8-locker.h +2 -1
  43. data/vendor/v8/include/v8-message.h +19 -44
  44. data/vendor/v8/include/v8-metrics.h +32 -15
  45. data/vendor/v8/include/v8-object.h +11 -6
  46. data/vendor/v8/include/v8-platform.h +365 -6
  47. data/vendor/v8/include/v8-primitive.h +14 -6
  48. data/vendor/v8/include/v8-profiler.h +78 -2
  49. data/vendor/v8/include/v8-script.h +27 -51
  50. data/vendor/v8/include/v8-snapshot.h +0 -2
  51. data/vendor/v8/include/v8-statistics.h +2 -0
  52. data/vendor/v8/include/v8-template.h +31 -4
  53. data/vendor/v8/include/v8-traced-handle.h +39 -224
  54. data/vendor/v8/include/v8-unwinder.h +10 -7
  55. data/vendor/v8/include/v8-value-serializer-version.h +1 -1
  56. data/vendor/v8/include/v8-value-serializer.h +32 -2
  57. data/vendor/v8/include/v8-version.h +4 -4
  58. data/vendor/v8/include/v8-wasm.h +13 -1
  59. data/vendor/v8/include/v8-weak-callback-info.h +20 -6
  60. data/vendor/v8/include/v8.h +0 -1
  61. data/vendor/v8/include/v8config.h +56 -11
  62. data/vendor/v8/x86_64-darwin/libv8/obj/libv8_monolith.a +0 -0
  63. metadata +4 -4
  64. data/vendor/v8/include/cppgc/internal/prefinalizer-handler.h +0 -30
@@ -7,7 +7,8 @@
7
7
 
8
8
  #include <memory>
9
9
 
10
- #include "v8config.h" // NOLINT(build/include_directory)
10
+ #include "v8-embedder-state-scope.h" // NOLINT(build/include_directory)
11
+ #include "v8config.h" // NOLINT(build/include_directory)
11
12
 
12
13
  namespace v8 {
13
14
  // Holds the callee saved registers needed for the stack unwinder. It is the
@@ -32,7 +33,7 @@ struct V8_EXPORT RegisterState {
32
33
  };
33
34
 
34
35
  // A StateTag represents a possible state of the VM.
35
- enum StateTag {
36
+ enum StateTag : int {
36
37
  JS,
37
38
  GC,
38
39
  PARSER,
@@ -46,11 +47,13 @@ enum StateTag {
46
47
 
47
48
  // The output structure filled up by GetStackSample API function.
48
49
  struct SampleInfo {
49
- size_t frames_count; // Number of frames collected.
50
- StateTag vm_state; // Current VM state.
51
- void* external_callback_entry; // External callback address if VM is
52
- // executing an external callback.
53
- void* context; // Incumbent native context address.
50
+ size_t frames_count; // Number of frames collected.
51
+ void* external_callback_entry; // External callback address if VM is
52
+ // executing an external callback.
53
+ void* context; // Incumbent native context address.
54
+ void* embedder_context; // Native context address for embedder state
55
+ StateTag vm_state; // Current VM state.
56
+ EmbedderStateTag embedder_state; // Current Embedder state
54
57
  };
55
58
 
56
59
  struct MemoryRange {
@@ -17,7 +17,7 @@
17
17
 
18
18
  namespace v8 {
19
19
 
20
- constexpr uint32_t CurrentValueSerializerFormatVersion() { return 13; }
20
+ constexpr uint32_t CurrentValueSerializerFormatVersion() { return 15; }
21
21
 
22
22
  } // namespace v8
23
23
 
@@ -67,6 +67,23 @@ class V8_EXPORT ValueSerializer {
67
67
 
68
68
  virtual Maybe<uint32_t> GetWasmModuleTransferId(
69
69
  Isolate* isolate, Local<WasmModuleObject> module);
70
+
71
+ /**
72
+ * Returns whether shared values are supported. GetSharedValueId is only
73
+ * called if SupportsSharedValues() returns true.
74
+ */
75
+ virtual bool SupportsSharedValues() const;
76
+
77
+ /**
78
+ * Called when the ValueSerializer serializes a value that is shared across
79
+ * Isolates. The embedder must return an ID for the object. This function
80
+ * must be idempotent for the same object. When deserializing, the ID will
81
+ * be passed to ValueDeserializer::Delegate::GetSharedValueFromId as
82
+ * |shared_value_id|.
83
+ */
84
+ virtual Maybe<uint32_t> GetSharedValueId(Isolate* isolate,
85
+ Local<Value> shared_value);
86
+
70
87
  /**
71
88
  * Allocates memory for the buffer of at least the size provided. The actual
72
89
  * size (which may be greater or equal) is written to |actual_size|. If no
@@ -166,17 +183,30 @@ class V8_EXPORT ValueDeserializer {
166
183
 
167
184
  /**
168
185
  * Get a WasmModuleObject given a transfer_id previously provided
169
- * by ValueSerializer::GetWasmModuleTransferId
186
+ * by ValueSerializer::Delegate::GetWasmModuleTransferId
170
187
  */
171
188
  virtual MaybeLocal<WasmModuleObject> GetWasmModuleFromId(
172
189
  Isolate* isolate, uint32_t transfer_id);
173
190
 
174
191
  /**
175
192
  * Get a SharedArrayBuffer given a clone_id previously provided
176
- * by ValueSerializer::GetSharedArrayBufferId
193
+ * by ValueSerializer::Delegate::GetSharedArrayBufferId
177
194
  */
178
195
  virtual MaybeLocal<SharedArrayBuffer> GetSharedArrayBufferFromId(
179
196
  Isolate* isolate, uint32_t clone_id);
197
+
198
+ /**
199
+ * Returns whether shared values are supported. GetSharedValueFromId is only
200
+ * called if SupportsSharedValues() returns true.
201
+ */
202
+ virtual bool SupportsSharedValues() const;
203
+
204
+ /**
205
+ * Get a value shared across Isolates given a shared_value_id provided by
206
+ * ValueSerializer::Delegate::GetSharedValueId.
207
+ */
208
+ virtual MaybeLocal<Value> GetSharedValueFromId(Isolate* isolate,
209
+ uint32_t shared_value_id);
180
210
  };
181
211
 
182
212
  ValueDeserializer(Isolate* isolate, const uint8_t* data, size_t size);
@@ -8,10 +8,10 @@
8
8
  // These macros define the version number for the current version.
9
9
  // NOTE these macros are used by some of the tool scripts and the build
10
10
  // system so their names cannot be changed without changing the scripts.
11
- #define V8_MAJOR_VERSION 9
12
- #define V8_MINOR_VERSION 6
13
- #define V8_BUILD_NUMBER 180
14
- #define V8_PATCH_LEVEL 15
11
+ #define V8_MAJOR_VERSION 10
12
+ #define V8_MINOR_VERSION 2
13
+ #define V8_BUILD_NUMBER 154
14
+ #define V8_PATCH_LEVEL 23
15
15
 
16
16
  // Use 1 for candidates and 0 otherwise.
17
17
  // (Boolean macro values are not supported by all preprocessors.)
@@ -103,6 +103,12 @@ class V8_EXPORT WasmModuleObject : public Object {
103
103
  */
104
104
  CompiledWasmModule GetCompiledModule();
105
105
 
106
+ /**
107
+ * Compile a Wasm module from the provided uncompiled bytes.
108
+ */
109
+ static MaybeLocal<WasmModuleObject> Compile(
110
+ Isolate* isolate, MemorySpan<const uint8_t> wire_bytes);
111
+
106
112
  V8_INLINE static WasmModuleObject* Cast(Value* value) {
107
113
  #ifdef V8_ENABLE_CHECKS
108
114
  CheckCast(value);
@@ -151,8 +157,12 @@ class V8_EXPORT WasmStreaming final {
151
157
  * {Finish} should be called after all received bytes where passed to
152
158
  * {OnBytesReceived} to tell V8 that there will be no more bytes. {Finish}
153
159
  * does not have to be called after {Abort} has been called already.
160
+ * If {can_use_compiled_module} is true and {SetCompiledModuleBytes} was
161
+ * previously called, the compiled module bytes can be used.
162
+ * If {can_use_compiled_module} is false, the compiled module bytes previously
163
+ * set by {SetCompiledModuleBytes} should not be used.
154
164
  */
155
- void Finish();
165
+ void Finish(bool can_use_compiled_module = true);
156
166
 
157
167
  /**
158
168
  * Abort streaming compilation. If {exception} has a value, then the promise
@@ -167,6 +177,8 @@ class V8_EXPORT WasmStreaming final {
167
177
  * can be used, false otherwise. The buffer passed via {bytes} and {size}
168
178
  * is owned by the caller. If {SetCompiledModuleBytes} returns true, the
169
179
  * buffer must remain valid until either {Finish} or {Abort} completes.
180
+ * The compiled module bytes should not be used until {Finish(true)} is
181
+ * called, because they can be invalidated later by {Finish(false)}.
170
182
  */
171
183
  bool SetCompiledModuleBytes(const uint8_t* bytes, size_t size);
172
184
 
@@ -51,12 +51,26 @@ class WeakCallbackInfo {
51
51
  void* embedder_fields_[kEmbedderFieldsInWeakCallback];
52
52
  };
53
53
 
54
- // kParameter will pass a void* parameter back to the callback, kInternalFields
55
- // will pass the first two internal fields back to the callback, kFinalizer
56
- // will pass a void* parameter back, but is invoked before the object is
57
- // actually collected, so it can be resurrected. In the last case, it is not
58
- // possible to request a second pass callback.
59
- enum class WeakCallbackType { kParameter, kInternalFields, kFinalizer };
54
+ /**
55
+ * Weakness type for weak handles.
56
+ */
57
+ enum class WeakCallbackType {
58
+ /**
59
+ * Passes a user-defined void* parameter back to the callback.
60
+ */
61
+ kParameter,
62
+ /**
63
+ * Passes the first two internal fields of the object back to the callback.
64
+ */
65
+ kInternalFields,
66
+ /**
67
+ * Passes a user-defined void* parameter back to the callback. Will do so
68
+ * before the object is actually reclaimed, allowing it to be resurrected. In
69
+ * this case it is not possible to set a second-pass callback.
70
+ */
71
+ kFinalizer V8_ENUM_DEPRECATED("Resurrecting finalizers are deprecated "
72
+ "and will not be supported going forward.")
73
+ };
60
74
 
61
75
  template <class T>
62
76
  void* WeakCallbackInfo<T>::GetInternalField(int index) const {
@@ -19,7 +19,6 @@
19
19
  #include <stdint.h>
20
20
 
21
21
  #include <memory>
22
- #include <vector>
23
22
 
24
23
  #include "cppgc/common.h"
25
24
  #include "v8-array-buffer.h" // NOLINT(build/include_directory)
@@ -65,13 +65,14 @@ path. Add it with -I<path> to the command line
65
65
  // Operating system detection (host)
66
66
  //
67
67
  // V8_OS_ANDROID - Android
68
- // V8_OS_BSD - BSDish (Mac OS X, Net/Free/Open/DragonFlyBSD)
68
+ // V8_OS_BSD - BSDish (macOS, Net/Free/Open/DragonFlyBSD)
69
69
  // V8_OS_CYGWIN - Cygwin
70
70
  // V8_OS_DRAGONFLYBSD - DragonFlyBSD
71
71
  // V8_OS_FREEBSD - FreeBSD
72
72
  // V8_OS_FUCHSIA - Fuchsia
73
- // V8_OS_LINUX - Linux
74
- // V8_OS_MACOSX - Mac OS X
73
+ // V8_OS_LINUX - Linux (Android, ChromeOS, Linux, ...)
74
+ // V8_OS_DARWIN - Darwin (macOS, iOS)
75
+ // V8_OS_MACOS - macOS
75
76
  // V8_OS_IOS - iOS
76
77
  // V8_OS_NETBSD - NetBSD
77
78
  // V8_OS_OPENBSD - OpenBSD
@@ -89,13 +90,14 @@ path. Add it with -I<path> to the command line
89
90
  # define V8_OS_STRING "android"
90
91
 
91
92
  #elif defined(__APPLE__)
92
- # define V8_OS_BSD 1
93
- # define V8_OS_MACOSX 1
94
93
  # define V8_OS_POSIX 1
94
+ # define V8_OS_BSD 1
95
+ # define V8_OS_DARWIN 1
95
96
  # if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
96
97
  # define V8_OS_IOS 1
97
98
  # define V8_OS_STRING "ios"
98
99
  # else
100
+ # define V8_OS_MACOS 1
99
101
  # define V8_OS_STRING "macos"
100
102
  # endif // defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
101
103
 
@@ -169,7 +171,7 @@ path. Add it with -I<path> to the command line
169
171
  // V8_TARGET_OS_FUCHSIA
170
172
  // V8_TARGET_OS_IOS
171
173
  // V8_TARGET_OS_LINUX
172
- // V8_TARGET_OS_MACOSX
174
+ // V8_TARGET_OS_MACOS
173
175
  // V8_TARGET_OS_WIN
174
176
  //
175
177
  // If not set explicitly, these fall back to corresponding V8_OS_ values.
@@ -181,7 +183,7 @@ path. Add it with -I<path> to the command line
181
183
  && !defined(V8_TARGET_OS_FUCHSIA) \
182
184
  && !defined(V8_TARGET_OS_IOS) \
183
185
  && !defined(V8_TARGET_OS_LINUX) \
184
- && !defined(V8_TARGET_OS_MACOSX) \
186
+ && !defined(V8_TARGET_OS_MACOS) \
185
187
  && !defined(V8_TARGET_OS_WIN)
186
188
  # error No known target OS defined.
187
189
  # endif
@@ -192,7 +194,7 @@ path. Add it with -I<path> to the command line
192
194
  || defined(V8_TARGET_OS_FUCHSIA) \
193
195
  || defined(V8_TARGET_OS_IOS) \
194
196
  || defined(V8_TARGET_OS_LINUX) \
195
- || defined(V8_TARGET_OS_MACOSX) \
197
+ || defined(V8_TARGET_OS_MACOS) \
196
198
  || defined(V8_TARGET_OS_WIN)
197
199
  # error A target OS is defined but V8_HAVE_TARGET_OS is unset.
198
200
  # endif
@@ -214,8 +216,8 @@ path. Add it with -I<path> to the command line
214
216
  # define V8_TARGET_OS_LINUX
215
217
  #endif
216
218
 
217
- #ifdef V8_OS_MACOSX
218
- # define V8_TARGET_OS_MACOSX
219
+ #ifdef V8_OS_MACOS
220
+ # define V8_TARGET_OS_MACOS
219
221
  #endif
220
222
 
221
223
  #ifdef V8_OS_WIN
@@ -232,7 +234,7 @@ path. Add it with -I<path> to the command line
232
234
  # define V8_TARGET_OS_STRING "ios"
233
235
  #elif defined(V8_TARGET_OS_LINUX)
234
236
  # define V8_TARGET_OS_STRING "linux"
235
- #elif defined(V8_TARGET_OS_MACOSX)
237
+ #elif defined(V8_TARGET_OS_MACOS)
236
238
  # define V8_TARGET_OS_STRING "macos"
237
239
  #elif defined(V8_TARGET_OS_WINDOWS)
238
240
  # define V8_TARGET_OS_STRING "windows"
@@ -293,6 +295,8 @@ path. Add it with -I<path> to the command line
293
295
  // V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT - __attribute__((warn_unused_result))
294
296
  // supported
295
297
  // V8_HAS_CPP_ATTRIBUTE_NODISCARD - [[nodiscard]] supported
298
+ // V8_HAS_CPP_ATTRIBUTE_NO_UNIQUE_ADDRESS
299
+ // - [[no_unique_address]] supported
296
300
  // V8_HAS_BUILTIN_BSWAP16 - __builtin_bswap16() supported
297
301
  // V8_HAS_BUILTIN_BSWAP32 - __builtin_bswap32() supported
298
302
  // V8_HAS_BUILTIN_BSWAP64 - __builtin_bswap64() supported
@@ -337,6 +341,8 @@ path. Add it with -I<path> to the command line
337
341
  (__has_attribute(warn_unused_result))
338
342
 
339
343
  # define V8_HAS_CPP_ATTRIBUTE_NODISCARD (V8_HAS_CPP_ATTRIBUTE(nodiscard))
344
+ # define V8_HAS_CPP_ATTRIBUTE_NO_UNIQUE_ADDRESS \
345
+ (V8_HAS_CPP_ATTRIBUTE(no_unique_address))
340
346
 
341
347
  # define V8_HAS_BUILTIN_ASSUME_ALIGNED (__has_builtin(__builtin_assume_aligned))
342
348
  # define V8_HAS_BUILTIN_BSWAP16 (__has_builtin(__builtin_bswap16))
@@ -507,6 +513,27 @@ path. Add it with -I<path> to the command line
507
513
  #define V8_NODISCARD /* NOT SUPPORTED */
508
514
  #endif
509
515
 
516
+ // The no_unique_address attribute allows tail padding in a non-static data
517
+ // member to overlap other members of the enclosing class (and in the special
518
+ // case when the type is empty, permits it to fully overlap other members). The
519
+ // field is laid out as if a base class were encountered at the corresponding
520
+ // point within the class (except that it does not share a vptr with the
521
+ // enclosing object).
522
+ //
523
+ // Apply to a data member like:
524
+ //
525
+ // class Foo {
526
+ // V8_NO_UNIQUE_ADDRESS Bar bar_;
527
+ // };
528
+ //
529
+ // [[no_unique_address]] comes in C++20 but supported in clang with
530
+ // -std >= c++11.
531
+ #if V8_HAS_CPP_ATTRIBUTE_NO_UNIQUE_ADDRESS
532
+ #define V8_NO_UNIQUE_ADDRESS [[no_unique_address]]
533
+ #else
534
+ #define V8_NO_UNIQUE_ADDRESS /* NOT SUPPORTED */
535
+ #endif
536
+
510
537
  // Helper macro to define no_sanitize attributes only with clang.
511
538
  #if defined(__clang__) && defined(__has_attribute)
512
539
  #if __has_attribute(no_sanitize)
@@ -553,6 +580,24 @@ V8 shared library set USING_V8_SHARED.
553
580
 
554
581
  #endif // V8_OS_WIN
555
582
 
583
+ // The sandbox is available (i.e. defined) when pointer compression
584
+ // is enabled, but it is only used when V8_SANDBOX is enabled as
585
+ // well. This allows better test coverage of the sandbox.
586
+ #if defined(V8_COMPRESS_POINTERS)
587
+ #define V8_SANDBOX_IS_AVAILABLE
588
+ #endif
589
+
590
+ #if defined(V8_SANDBOX) && !defined(V8_SANDBOX_IS_AVAILABLE)
591
+ #error Inconsistent configuration: sandbox is enabled but not available
592
+ #endif
593
+
594
+ // From C++17 onwards, static constexpr member variables are defined to be
595
+ // "inline", and adding a separate definition for them can trigger deprecation
596
+ // warnings. For C++14 and below, however, these definitions are required.
597
+ #if __cplusplus < 201703L && (!defined(_MSVC_LANG) || _MSVC_LANG < 201703L)
598
+ #define V8_STATIC_CONSTEXPR_VARIABLES_NEED_DEFINITIONS
599
+ #endif
600
+
556
601
  // clang-format on
557
602
 
558
603
  #undef V8_HAS_CPP_ATTRIBUTE
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libv8-node
3
3
  version: !ruby/object:Gem::Version
4
- version: 17.9.1.0
4
+ version: 18.13.0.0
5
5
  platform: x86_64-darwin
6
6
  authors:
7
7
  - ''
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-25 00:00:00.000000000 Z
11
+ date: 2023-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -73,7 +73,6 @@ files:
73
73
  - vendor/v8/include/cppgc/internal/name-trait.h
74
74
  - vendor/v8/include/cppgc/internal/persistent-node.h
75
75
  - vendor/v8/include/cppgc/internal/pointer-policies.h
76
- - vendor/v8/include/cppgc/internal/prefinalizer-handler.h
77
76
  - vendor/v8/include/cppgc/internal/write-barrier.h
78
77
  - vendor/v8/include/cppgc/liveness-broker.h
79
78
  - vendor/v8/include/cppgc/macros.h
@@ -102,6 +101,7 @@ files:
102
101
  - vendor/v8/include/v8-date.h
103
102
  - vendor/v8/include/v8-debug.h
104
103
  - vendor/v8/include/v8-embedder-heap.h
104
+ - vendor/v8/include/v8-embedder-state-scope.h
105
105
  - vendor/v8/include/v8-exception.h
106
106
  - vendor/v8/include/v8-extension.h
107
107
  - vendor/v8/include/v8-external.h
@@ -173,7 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
173
  - !ruby/object:Gem::Version
174
174
  version: '0'
175
175
  requirements: []
176
- rubygems_version: 3.2.26
176
+ rubygems_version: 3.3.20
177
177
  signing_key:
178
178
  specification_version: 4
179
179
  summary: Node.JS's V8 JavaScript engine
@@ -1,30 +0,0 @@
1
- // Copyright 2020 the V8 project authors. All rights reserved.
2
- // Use of this source code is governed by a BSD-style license that can be
3
- // found in the LICENSE file.
4
-
5
- #ifndef INCLUDE_CPPGC_INTERNAL_PREFINALIZER_HANDLER_H_
6
- #define INCLUDE_CPPGC_INTERNAL_PREFINALIZER_HANDLER_H_
7
-
8
- #include "cppgc/heap.h"
9
- #include "cppgc/liveness-broker.h"
10
-
11
- namespace cppgc {
12
- namespace internal {
13
-
14
- class V8_EXPORT PreFinalizerRegistrationDispatcher final {
15
- public:
16
- using PreFinalizerCallback = bool (*)(const LivenessBroker&, void*);
17
- struct PreFinalizer {
18
- void* object;
19
- PreFinalizerCallback callback;
20
-
21
- bool operator==(const PreFinalizer& other) const;
22
- };
23
-
24
- static void RegisterPrefinalizer(PreFinalizer pre_finalizer);
25
- };
26
-
27
- } // namespace internal
28
- } // namespace cppgc
29
-
30
- #endif // INCLUDE_CPPGC_INTERNAL_PREFINALIZER_HANDLER_H_