libv8-node 16.20.0.0-aarch64-linux-musl → 17.9.1.0-aarch64-linux-musl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/ext/libv8-node/location.rb +1 -1
  3. data/ext/libv8-node/paths.rb +1 -1
  4. data/lib/libv8/node/version.rb +3 -3
  5. data/vendor/v8/aarch64-linux-musl/libv8/obj/libv8_monolith.a +0 -0
  6. data/vendor/v8/include/cppgc/allocation.h +11 -5
  7. data/vendor/v8/include/cppgc/cross-thread-persistent.h +78 -26
  8. data/vendor/v8/include/cppgc/internal/caged-heap-local-data.h +2 -2
  9. data/vendor/v8/include/cppgc/internal/finalizer-trait.h +2 -0
  10. data/vendor/v8/include/cppgc/internal/gc-info.h +90 -10
  11. data/vendor/v8/include/cppgc/internal/name-trait.h +11 -0
  12. data/vendor/v8/include/cppgc/internal/persistent-node.h +44 -12
  13. data/vendor/v8/include/cppgc/internal/pointer-policies.h +22 -11
  14. data/vendor/v8/include/cppgc/internal/write-barrier.h +9 -1
  15. data/vendor/v8/include/cppgc/persistent.h +1 -1
  16. data/vendor/v8/include/cppgc/prefinalizer.h +1 -1
  17. data/vendor/v8/include/v8-array-buffer.h +433 -0
  18. data/vendor/v8/include/v8-callbacks.h +377 -0
  19. data/vendor/v8/include/v8-container.h +129 -0
  20. data/vendor/v8/include/v8-context.h +418 -0
  21. data/vendor/v8/include/v8-cppgc.h +5 -2
  22. data/vendor/v8/include/v8-data.h +65 -0
  23. data/vendor/v8/include/v8-date.h +43 -0
  24. data/vendor/v8/include/v8-debug.h +151 -0
  25. data/vendor/v8/include/v8-embedder-heap.h +238 -0
  26. data/vendor/v8/include/v8-exception.h +224 -0
  27. data/vendor/v8/include/v8-extension.h +62 -0
  28. data/vendor/v8/include/v8-external.h +37 -0
  29. data/vendor/v8/include/v8-fast-api-calls.h +63 -11
  30. data/vendor/v8/include/v8-forward.h +81 -0
  31. data/vendor/v8/include/v8-function-callback.h +475 -0
  32. data/vendor/v8/include/v8-function.h +122 -0
  33. data/vendor/v8/include/v8-initialization.h +282 -0
  34. data/vendor/v8/include/v8-inspector.h +11 -21
  35. data/vendor/v8/include/v8-internal.h +85 -22
  36. data/vendor/v8/include/v8-isolate.h +1662 -0
  37. data/vendor/v8/include/v8-json.h +47 -0
  38. data/vendor/v8/include/v8-local-handle.h +459 -0
  39. data/vendor/v8/include/v8-locker.h +148 -0
  40. data/vendor/v8/include/v8-maybe.h +137 -0
  41. data/vendor/v8/include/v8-memory-span.h +43 -0
  42. data/vendor/v8/include/v8-message.h +241 -0
  43. data/vendor/v8/include/v8-metrics.h +37 -1
  44. data/vendor/v8/include/v8-microtask-queue.h +152 -0
  45. data/vendor/v8/include/v8-microtask.h +28 -0
  46. data/vendor/v8/include/v8-object.h +770 -0
  47. data/vendor/v8/include/v8-persistent-handle.h +590 -0
  48. data/vendor/v8/include/v8-platform.h +41 -17
  49. data/vendor/v8/include/v8-primitive-object.h +118 -0
  50. data/vendor/v8/include/v8-primitive.h +858 -0
  51. data/vendor/v8/include/v8-profiler.h +10 -11
  52. data/vendor/v8/include/v8-promise.h +174 -0
  53. data/vendor/v8/include/v8-proxy.h +50 -0
  54. data/vendor/v8/include/v8-regexp.h +105 -0
  55. data/vendor/v8/include/v8-script.h +771 -0
  56. data/vendor/v8/include/v8-snapshot.h +198 -0
  57. data/vendor/v8/include/v8-statistics.h +215 -0
  58. data/vendor/v8/include/v8-template.h +1052 -0
  59. data/vendor/v8/include/v8-traced-handle.h +605 -0
  60. data/vendor/v8/include/v8-typed-array.h +282 -0
  61. data/vendor/v8/include/v8-unwinder-state.h +4 -3
  62. data/vendor/v8/include/v8-unwinder.h +129 -0
  63. data/vendor/v8/include/v8-util.h +7 -1
  64. data/vendor/v8/include/v8-value-serializer.h +249 -0
  65. data/vendor/v8/include/v8-value.h +526 -0
  66. data/vendor/v8/include/v8-version.h +3 -3
  67. data/vendor/v8/include/v8-wasm.h +245 -0
  68. data/vendor/v8/include/v8-weak-callback-info.h +73 -0
  69. data/vendor/v8/include/v8.h +41 -12604
  70. metadata +47 -5
@@ -0,0 +1,377 @@
1
+ // Copyright 2021 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_V8_ISOLATE_CALLBACKS_H_
6
+ #define INCLUDE_V8_ISOLATE_CALLBACKS_H_
7
+
8
+ #include <stddef.h>
9
+
10
+ #include <string>
11
+
12
+ #include "cppgc/common.h"
13
+ #include "v8-data.h" // NOLINT(build/include_directory)
14
+ #include "v8-local-handle.h" // NOLINT(build/include_directory)
15
+ #include "v8config.h" // NOLINT(build/include_directory)
16
+
17
+ #if defined(V8_OS_WIN)
18
+ struct _EXCEPTION_POINTERS;
19
+ #endif
20
+
21
+ namespace v8 {
22
+
23
+ template <typename T>
24
+ class FunctionCallbackInfo;
25
+ class Isolate;
26
+ class Message;
27
+ class Module;
28
+ class Object;
29
+ class Promise;
30
+ class ScriptOrModule;
31
+ class String;
32
+ class UnboundScript;
33
+ class Value;
34
+
35
+ /**
36
+ * A JIT code event is issued each time code is added, moved or removed.
37
+ *
38
+ * \note removal events are not currently issued.
39
+ */
40
+ struct JitCodeEvent {
41
+ enum EventType {
42
+ CODE_ADDED,
43
+ CODE_MOVED,
44
+ CODE_REMOVED,
45
+ CODE_ADD_LINE_POS_INFO,
46
+ CODE_START_LINE_INFO_RECORDING,
47
+ CODE_END_LINE_INFO_RECORDING
48
+ };
49
+ // Definition of the code position type. The "POSITION" type means the place
50
+ // in the source code which are of interest when making stack traces to
51
+ // pin-point the source location of a stack frame as close as possible.
52
+ // The "STATEMENT_POSITION" means the place at the beginning of each
53
+ // statement, and is used to indicate possible break locations.
54
+ enum PositionType { POSITION, STATEMENT_POSITION };
55
+
56
+ // There are three different kinds of CodeType, one for JIT code generated
57
+ // by the optimizing compiler, one for byte code generated for the
58
+ // interpreter, and one for code generated from Wasm. For JIT_CODE and
59
+ // WASM_CODE, |code_start| points to the beginning of jitted assembly code,
60
+ // while for BYTE_CODE events, |code_start| points to the first bytecode of
61
+ // the interpreted function.
62
+ enum CodeType { BYTE_CODE, JIT_CODE, WASM_CODE };
63
+
64
+ // Type of event.
65
+ EventType type;
66
+ CodeType code_type;
67
+ // Start of the instructions.
68
+ void* code_start;
69
+ // Size of the instructions.
70
+ size_t code_len;
71
+ // Script info for CODE_ADDED event.
72
+ Local<UnboundScript> script;
73
+ // User-defined data for *_LINE_INFO_* event. It's used to hold the source
74
+ // code line information which is returned from the
75
+ // CODE_START_LINE_INFO_RECORDING event. And it's passed to subsequent
76
+ // CODE_ADD_LINE_POS_INFO and CODE_END_LINE_INFO_RECORDING events.
77
+ void* user_data;
78
+
79
+ struct name_t {
80
+ // Name of the object associated with the code, note that the string is not
81
+ // zero-terminated.
82
+ const char* str;
83
+ // Number of chars in str.
84
+ size_t len;
85
+ };
86
+
87
+ struct line_info_t {
88
+ // PC offset
89
+ size_t offset;
90
+ // Code position
91
+ size_t pos;
92
+ // The position type.
93
+ PositionType position_type;
94
+ };
95
+
96
+ struct wasm_source_info_t {
97
+ // Source file name.
98
+ const char* filename;
99
+ // Length of filename.
100
+ size_t filename_size;
101
+ // Line number table, which maps offsets of JITted code to line numbers of
102
+ // source file.
103
+ const line_info_t* line_number_table;
104
+ // Number of entries in the line number table.
105
+ size_t line_number_table_size;
106
+ };
107
+
108
+ wasm_source_info_t* wasm_source_info;
109
+
110
+ union {
111
+ // Only valid for CODE_ADDED.
112
+ struct name_t name;
113
+
114
+ // Only valid for CODE_ADD_LINE_POS_INFO
115
+ struct line_info_t line_info;
116
+
117
+ // New location of instructions. Only valid for CODE_MOVED.
118
+ void* new_code_start;
119
+ };
120
+
121
+ Isolate* isolate;
122
+ };
123
+
124
+ /**
125
+ * Option flags passed to the SetJitCodeEventHandler function.
126
+ */
127
+ enum JitCodeEventOptions {
128
+ kJitCodeEventDefault = 0,
129
+ // Generate callbacks for already existent code.
130
+ kJitCodeEventEnumExisting = 1
131
+ };
132
+
133
+ /**
134
+ * Callback function passed to SetJitCodeEventHandler.
135
+ *
136
+ * \param event code add, move or removal event.
137
+ */
138
+ using JitCodeEventHandler = void (*)(const JitCodeEvent* event);
139
+
140
+ // --- Garbage Collection Callbacks ---
141
+
142
+ /**
143
+ * Applications can register callback functions which will be called before and
144
+ * after certain garbage collection operations. Allocations are not allowed in
145
+ * the callback functions, you therefore cannot manipulate objects (set or
146
+ * delete properties for example) since it is possible such operations will
147
+ * result in the allocation of objects.
148
+ */
149
+ enum GCType {
150
+ kGCTypeScavenge = 1 << 0,
151
+ kGCTypeMarkSweepCompact = 1 << 1,
152
+ kGCTypeIncrementalMarking = 1 << 2,
153
+ kGCTypeProcessWeakCallbacks = 1 << 3,
154
+ kGCTypeAll = kGCTypeScavenge | kGCTypeMarkSweepCompact |
155
+ kGCTypeIncrementalMarking | kGCTypeProcessWeakCallbacks
156
+ };
157
+
158
+ /**
159
+ * GCCallbackFlags is used to notify additional information about the GC
160
+ * callback.
161
+ * - kGCCallbackFlagConstructRetainedObjectInfos: The GC callback is for
162
+ * constructing retained object infos.
163
+ * - kGCCallbackFlagForced: The GC callback is for a forced GC for testing.
164
+ * - kGCCallbackFlagSynchronousPhantomCallbackProcessing: The GC callback
165
+ * is called synchronously without getting posted to an idle task.
166
+ * - kGCCallbackFlagCollectAllAvailableGarbage: The GC callback is called
167
+ * in a phase where V8 is trying to collect all available garbage
168
+ * (e.g., handling a low memory notification).
169
+ * - kGCCallbackScheduleIdleGarbageCollection: The GC callback is called to
170
+ * trigger an idle garbage collection.
171
+ */
172
+ enum GCCallbackFlags {
173
+ kNoGCCallbackFlags = 0,
174
+ kGCCallbackFlagConstructRetainedObjectInfos = 1 << 1,
175
+ kGCCallbackFlagForced = 1 << 2,
176
+ kGCCallbackFlagSynchronousPhantomCallbackProcessing = 1 << 3,
177
+ kGCCallbackFlagCollectAllAvailableGarbage = 1 << 4,
178
+ kGCCallbackFlagCollectAllExternalMemory = 1 << 5,
179
+ kGCCallbackScheduleIdleGarbageCollection = 1 << 6,
180
+ };
181
+
182
+ using GCCallback = void (*)(GCType type, GCCallbackFlags flags);
183
+
184
+ using InterruptCallback = void (*)(Isolate* isolate, void* data);
185
+
186
+ /**
187
+ * This callback is invoked when the heap size is close to the heap limit and
188
+ * V8 is likely to abort with out-of-memory error.
189
+ * The callback can extend the heap limit by returning a value that is greater
190
+ * than the current_heap_limit. The initial heap limit is the limit that was
191
+ * set after heap setup.
192
+ */
193
+ using NearHeapLimitCallback = size_t (*)(void* data, size_t current_heap_limit,
194
+ size_t initial_heap_limit);
195
+
196
+ /**
197
+ * Callback function passed to SetUnhandledExceptionCallback.
198
+ */
199
+ #if defined(V8_OS_WIN)
200
+ using UnhandledExceptionCallback =
201
+ int (*)(_EXCEPTION_POINTERS* exception_pointers);
202
+ #endif
203
+
204
+ // --- Counters Callbacks ---
205
+
206
+ using CounterLookupCallback = int* (*)(const char* name);
207
+
208
+ using CreateHistogramCallback = void* (*)(const char* name, int min, int max,
209
+ size_t buckets);
210
+
211
+ using AddHistogramSampleCallback = void (*)(void* histogram, int sample);
212
+
213
+ // --- Exceptions ---
214
+
215
+ using FatalErrorCallback = void (*)(const char* location, const char* message);
216
+
217
+ using OOMErrorCallback = void (*)(const char* location, bool is_heap_oom);
218
+
219
+ using MessageCallback = void (*)(Local<Message> message, Local<Value> data);
220
+
221
+ // --- Tracing ---
222
+
223
+ enum LogEventStatus : int { kStart = 0, kEnd = 1, kStamp = 2 };
224
+ using LogEventCallback = void (*)(const char* name,
225
+ int /* LogEventStatus */ status);
226
+
227
+ // --- Crashkeys Callback ---
228
+ enum class CrashKeyId {
229
+ kIsolateAddress,
230
+ kReadonlySpaceFirstPageAddress,
231
+ kMapSpaceFirstPageAddress,
232
+ kCodeSpaceFirstPageAddress,
233
+ kDumpType,
234
+ };
235
+
236
+ using AddCrashKeyCallback = void (*)(CrashKeyId id, const std::string& value);
237
+
238
+ // --- Enter/Leave Script Callback ---
239
+ using BeforeCallEnteredCallback = void (*)(Isolate*);
240
+ using CallCompletedCallback = void (*)(Isolate*);
241
+
242
+ // --- AllowCodeGenerationFromStrings callbacks ---
243
+
244
+ /**
245
+ * Callback to check if code generation from strings is allowed. See
246
+ * Context::AllowCodeGenerationFromStrings.
247
+ */
248
+ using AllowCodeGenerationFromStringsCallback = bool (*)(Local<Context> context,
249
+ Local<String> source);
250
+
251
+ struct ModifyCodeGenerationFromStringsResult {
252
+ // If true, proceed with the codegen algorithm. Otherwise, block it.
253
+ bool codegen_allowed = false;
254
+ // Overwrite the original source with this string, if present.
255
+ // Use the original source if empty.
256
+ // This field is considered only if codegen_allowed is true.
257
+ MaybeLocal<String> modified_source;
258
+ };
259
+
260
+ /**
261
+ * Access type specification.
262
+ */
263
+ enum AccessType {
264
+ ACCESS_GET,
265
+ ACCESS_SET,
266
+ ACCESS_HAS,
267
+ ACCESS_DELETE,
268
+ ACCESS_KEYS
269
+ };
270
+
271
+ // --- Failed Access Check Callback ---
272
+
273
+ using FailedAccessCheckCallback = void (*)(Local<Object> target,
274
+ AccessType type, Local<Value> data);
275
+
276
+ /**
277
+ * Callback to check if codegen is allowed from a source object, and convert
278
+ * the source to string if necessary. See: ModifyCodeGenerationFromStrings.
279
+ */
280
+ using ModifyCodeGenerationFromStringsCallback =
281
+ ModifyCodeGenerationFromStringsResult (*)(Local<Context> context,
282
+ Local<Value> source);
283
+ using ModifyCodeGenerationFromStringsCallback2 =
284
+ ModifyCodeGenerationFromStringsResult (*)(Local<Context> context,
285
+ Local<Value> source,
286
+ bool is_code_like);
287
+
288
+ // --- WebAssembly compilation callbacks ---
289
+ using ExtensionCallback = bool (*)(const FunctionCallbackInfo<Value>&);
290
+
291
+ using AllowWasmCodeGenerationCallback = bool (*)(Local<Context> context,
292
+ Local<String> source);
293
+
294
+ // --- Callback for APIs defined on v8-supported objects, but implemented
295
+ // by the embedder. Example: WebAssembly.{compile|instantiate}Streaming ---
296
+ using ApiImplementationCallback = void (*)(const FunctionCallbackInfo<Value>&);
297
+
298
+ // --- Callback for WebAssembly.compileStreaming ---
299
+ using WasmStreamingCallback = void (*)(const FunctionCallbackInfo<Value>&);
300
+
301
+ // --- Callback for loading source map file for Wasm profiling support
302
+ using WasmLoadSourceMapCallback = Local<String> (*)(Isolate* isolate,
303
+ const char* name);
304
+
305
+ // --- Callback for checking if WebAssembly Simd is enabled ---
306
+ using WasmSimdEnabledCallback = bool (*)(Local<Context> context);
307
+
308
+ // --- Callback for checking if WebAssembly exceptions are enabled ---
309
+ using WasmExceptionsEnabledCallback = bool (*)(Local<Context> context);
310
+
311
+ // --- Callback for checking if WebAssembly dynamic tiering is enabled ---
312
+ using WasmDynamicTieringEnabledCallback = bool (*)(Local<Context> context);
313
+
314
+ // --- Callback for checking if the SharedArrayBuffer constructor is enabled ---
315
+ using SharedArrayBufferConstructorEnabledCallback =
316
+ bool (*)(Local<Context> context);
317
+
318
+ /**
319
+ * HostImportModuleDynamicallyWithImportAssertionsCallback is called when we
320
+ * require the embedder to load a module. This is used as part of the dynamic
321
+ * import syntax.
322
+ *
323
+ * The referrer contains metadata about the script/module that calls
324
+ * import.
325
+ *
326
+ * The specifier is the name of the module that should be imported.
327
+ *
328
+ * The import_assertions are import assertions for this request in the form:
329
+ * [key1, value1, key2, value2, ...] where the keys and values are of type
330
+ * v8::String. Note, unlike the FixedArray passed to ResolveModuleCallback and
331
+ * returned from ModuleRequest::GetImportAssertions(), this array does not
332
+ * contain the source Locations of the assertions.
333
+ *
334
+ * The embedder must compile, instantiate, evaluate the Module, and
335
+ * obtain its namespace object.
336
+ *
337
+ * The Promise returned from this function is forwarded to userland
338
+ * JavaScript. The embedder must resolve this promise with the module
339
+ * namespace object. In case of an exception, the embedder must reject
340
+ * this promise with the exception. If the promise creation itself
341
+ * fails (e.g. due to stack overflow), the embedder must propagate
342
+ * that exception by returning an empty MaybeLocal.
343
+ */
344
+ using HostImportModuleDynamicallyWithImportAssertionsCallback =
345
+ MaybeLocal<Promise> (*)(Local<Context> context,
346
+ Local<ScriptOrModule> referrer,
347
+ Local<String> specifier,
348
+ Local<FixedArray> import_assertions);
349
+
350
+ /**
351
+ * HostInitializeImportMetaObjectCallback is called the first time import.meta
352
+ * is accessed for a module. Subsequent access will reuse the same value.
353
+ *
354
+ * The method combines two implementation-defined abstract operations into one:
355
+ * HostGetImportMetaProperties and HostFinalizeImportMeta.
356
+ *
357
+ * The embedder should use v8::Object::CreateDataProperty to add properties on
358
+ * the meta object.
359
+ */
360
+ using HostInitializeImportMetaObjectCallback = void (*)(Local<Context> context,
361
+ Local<Module> module,
362
+ Local<Object> meta);
363
+
364
+ /**
365
+ * PrepareStackTraceCallback is called when the stack property of an error is
366
+ * first accessed. The return value will be used as the stack value. If this
367
+ * callback is registed, the |Error.prepareStackTrace| API will be disabled.
368
+ * |sites| is an array of call sites, specified in
369
+ * https://v8.dev/docs/stack-trace-api
370
+ */
371
+ using PrepareStackTraceCallback = MaybeLocal<Value> (*)(Local<Context> context,
372
+ Local<Value> error,
373
+ Local<Array> sites);
374
+
375
+ } // namespace v8
376
+
377
+ #endif // INCLUDE_V8_ISOLATE_CALLBACKS_H_
@@ -0,0 +1,129 @@
1
+ // Copyright 2021 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_V8_CONTAINER_H_
6
+ #define INCLUDE_V8_CONTAINER_H_
7
+
8
+ #include <stddef.h>
9
+ #include <stdint.h>
10
+
11
+ #include "v8-local-handle.h" // NOLINT(build/include_directory)
12
+ #include "v8-object.h" // NOLINT(build/include_directory)
13
+ #include "v8config.h" // NOLINT(build/include_directory)
14
+
15
+ namespace v8 {
16
+
17
+ class Context;
18
+ class Isolate;
19
+
20
+ /**
21
+ * An instance of the built-in array constructor (ECMA-262, 15.4.2).
22
+ */
23
+ class V8_EXPORT Array : public Object {
24
+ public:
25
+ uint32_t Length() const;
26
+
27
+ /**
28
+ * Creates a JavaScript array with the given length. If the length
29
+ * is negative the returned array will have length 0.
30
+ */
31
+ static Local<Array> New(Isolate* isolate, int length = 0);
32
+
33
+ /**
34
+ * Creates a JavaScript array out of a Local<Value> array in C++
35
+ * with a known length.
36
+ */
37
+ static Local<Array> New(Isolate* isolate, Local<Value>* elements,
38
+ size_t length);
39
+ V8_INLINE static Array* Cast(Value* value) {
40
+ #ifdef V8_ENABLE_CHECKS
41
+ CheckCast(value);
42
+ #endif
43
+ return static_cast<Array*>(value);
44
+ }
45
+
46
+ private:
47
+ Array();
48
+ static void CheckCast(Value* obj);
49
+ };
50
+
51
+ /**
52
+ * An instance of the built-in Map constructor (ECMA-262, 6th Edition, 23.1.1).
53
+ */
54
+ class V8_EXPORT Map : public Object {
55
+ public:
56
+ size_t Size() const;
57
+ void Clear();
58
+ V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
59
+ Local<Value> key);
60
+ V8_WARN_UNUSED_RESULT MaybeLocal<Map> Set(Local<Context> context,
61
+ Local<Value> key,
62
+ Local<Value> value);
63
+ V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
64
+ Local<Value> key);
65
+ V8_WARN_UNUSED_RESULT Maybe<bool> Delete(Local<Context> context,
66
+ Local<Value> key);
67
+
68
+ /**
69
+ * Returns an array of length Size() * 2, where index N is the Nth key and
70
+ * index N + 1 is the Nth value.
71
+ */
72
+ Local<Array> AsArray() const;
73
+
74
+ /**
75
+ * Creates a new empty Map.
76
+ */
77
+ static Local<Map> New(Isolate* isolate);
78
+
79
+ V8_INLINE static Map* Cast(Value* value) {
80
+ #ifdef V8_ENABLE_CHECKS
81
+ CheckCast(value);
82
+ #endif
83
+ return static_cast<Map*>(value);
84
+ }
85
+
86
+ private:
87
+ Map();
88
+ static void CheckCast(Value* obj);
89
+ };
90
+
91
+ /**
92
+ * An instance of the built-in Set constructor (ECMA-262, 6th Edition, 23.2.1).
93
+ */
94
+ class V8_EXPORT Set : public Object {
95
+ public:
96
+ size_t Size() const;
97
+ void Clear();
98
+ V8_WARN_UNUSED_RESULT MaybeLocal<Set> Add(Local<Context> context,
99
+ Local<Value> key);
100
+ V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
101
+ Local<Value> key);
102
+ V8_WARN_UNUSED_RESULT Maybe<bool> Delete(Local<Context> context,
103
+ Local<Value> key);
104
+
105
+ /**
106
+ * Returns an array of the keys in this Set.
107
+ */
108
+ Local<Array> AsArray() const;
109
+
110
+ /**
111
+ * Creates a new empty Set.
112
+ */
113
+ static Local<Set> New(Isolate* isolate);
114
+
115
+ V8_INLINE static Set* Cast(Value* value) {
116
+ #ifdef V8_ENABLE_CHECKS
117
+ CheckCast(value);
118
+ #endif
119
+ return static_cast<Set*>(value);
120
+ }
121
+
122
+ private:
123
+ Set();
124
+ static void CheckCast(Value* obj);
125
+ };
126
+
127
+ } // namespace v8
128
+
129
+ #endif // INCLUDE_V8_CONTAINER_H_