libv8-node 16.10.0.0-arm64-darwin → 18.8.0.0-arm64-darwin

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) 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/arm64-darwin/libv8/obj/libv8_monolith.a +0 -0
  5. data/vendor/v8/include/cppgc/allocation.h +100 -22
  6. data/vendor/v8/include/cppgc/cross-thread-persistent.h +114 -33
  7. data/vendor/v8/include/cppgc/default-platform.h +2 -10
  8. data/vendor/v8/include/cppgc/explicit-management.h +22 -4
  9. data/vendor/v8/include/cppgc/garbage-collected.h +15 -26
  10. data/vendor/v8/include/cppgc/heap-consistency.h +30 -0
  11. data/vendor/v8/include/cppgc/heap-state.h +12 -0
  12. data/vendor/v8/include/cppgc/heap.h +7 -2
  13. data/vendor/v8/include/cppgc/internal/api-constants.h +8 -0
  14. data/vendor/v8/include/cppgc/internal/caged-heap-local-data.h +25 -14
  15. data/vendor/v8/include/cppgc/internal/finalizer-trait.h +4 -1
  16. data/vendor/v8/include/cppgc/internal/gc-info.h +90 -10
  17. data/vendor/v8/include/cppgc/internal/logging.h +3 -3
  18. data/vendor/v8/include/cppgc/internal/name-trait.h +11 -0
  19. data/vendor/v8/include/cppgc/internal/persistent-node.h +73 -29
  20. data/vendor/v8/include/cppgc/internal/pointer-policies.h +26 -15
  21. data/vendor/v8/include/cppgc/internal/write-barrier.h +62 -23
  22. data/vendor/v8/include/cppgc/liveness-broker.h +4 -1
  23. data/vendor/v8/include/cppgc/member.h +7 -2
  24. data/vendor/v8/include/cppgc/persistent.h +38 -33
  25. data/vendor/v8/include/cppgc/platform.h +4 -1
  26. data/vendor/v8/include/cppgc/prefinalizer.h +35 -12
  27. data/vendor/v8/include/cppgc/testing.h +9 -2
  28. data/vendor/v8/include/cppgc/type-traits.h +6 -13
  29. data/vendor/v8/include/cppgc/visitor.h +9 -7
  30. data/vendor/v8/include/libplatform/libplatform.h +0 -11
  31. data/vendor/v8/include/libplatform/v8-tracing.h +0 -1
  32. data/vendor/v8/include/v8-array-buffer.h +445 -0
  33. data/vendor/v8/include/v8-callbacks.h +397 -0
  34. data/vendor/v8/include/v8-container.h +129 -0
  35. data/vendor/v8/include/v8-context.h +407 -0
  36. data/vendor/v8/include/v8-cppgc.h +21 -128
  37. data/vendor/v8/include/v8-data.h +80 -0
  38. data/vendor/v8/include/v8-date.h +43 -0
  39. data/vendor/v8/include/v8-debug.h +168 -0
  40. data/vendor/v8/include/v8-embedder-heap.h +218 -0
  41. data/vendor/v8/include/v8-embedder-state-scope.h +51 -0
  42. data/vendor/v8/include/v8-exception.h +217 -0
  43. data/vendor/v8/include/v8-extension.h +62 -0
  44. data/vendor/v8/include/v8-external.h +37 -0
  45. data/vendor/v8/include/v8-fast-api-calls.h +172 -24
  46. data/vendor/v8/include/v8-forward.h +81 -0
  47. data/vendor/v8/include/v8-function-callback.h +475 -0
  48. data/vendor/v8/include/v8-function.h +125 -0
  49. data/vendor/v8/include/v8-initialization.h +315 -0
  50. data/vendor/v8/include/v8-inspector.h +56 -28
  51. data/vendor/v8/include/v8-internal.h +217 -55
  52. data/vendor/v8/include/v8-isolate.h +1709 -0
  53. data/vendor/v8/include/v8-json.h +47 -0
  54. data/vendor/v8/include/v8-local-handle.h +455 -0
  55. data/vendor/v8/include/v8-locker.h +149 -0
  56. data/vendor/v8/include/v8-maybe.h +137 -0
  57. data/vendor/v8/include/v8-memory-span.h +43 -0
  58. data/vendor/v8/include/v8-message.h +216 -0
  59. data/vendor/v8/include/v8-metrics.h +69 -16
  60. data/vendor/v8/include/v8-microtask-queue.h +152 -0
  61. data/vendor/v8/include/v8-microtask.h +28 -0
  62. data/vendor/v8/include/v8-object.h +775 -0
  63. data/vendor/v8/include/v8-persistent-handle.h +590 -0
  64. data/vendor/v8/include/v8-platform.h +400 -17
  65. data/vendor/v8/include/v8-primitive-object.h +118 -0
  66. data/vendor/v8/include/v8-primitive.h +866 -0
  67. data/vendor/v8/include/v8-profiler.h +88 -13
  68. data/vendor/v8/include/v8-promise.h +174 -0
  69. data/vendor/v8/include/v8-proxy.h +50 -0
  70. data/vendor/v8/include/v8-regexp.h +105 -0
  71. data/vendor/v8/include/v8-script.h +747 -0
  72. data/vendor/v8/include/v8-snapshot.h +196 -0
  73. data/vendor/v8/include/v8-statistics.h +217 -0
  74. data/vendor/v8/include/v8-template.h +1079 -0
  75. data/vendor/v8/include/v8-traced-handle.h +420 -0
  76. data/vendor/v8/include/v8-typed-array.h +282 -0
  77. data/vendor/v8/include/v8-unwinder-state.h +4 -3
  78. data/vendor/v8/include/v8-unwinder.h +132 -0
  79. data/vendor/v8/include/v8-util.h +7 -1
  80. data/vendor/v8/include/v8-value-serializer-version.h +1 -1
  81. data/vendor/v8/include/v8-value-serializer.h +279 -0
  82. data/vendor/v8/include/v8-value.h +526 -0
  83. data/vendor/v8/include/v8-version.h +4 -4
  84. data/vendor/v8/include/v8-wasm.h +257 -0
  85. data/vendor/v8/include/v8-weak-callback-info.h +87 -0
  86. data/vendor/v8/include/v8.h +41 -12601
  87. data/vendor/v8/include/v8config.h +102 -12
  88. metadata +47 -5
  89. data/vendor/v8/include/cppgc/internal/prefinalizer-handler.h +0 -30
@@ -0,0 +1,196 @@
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_SNAPSHOT_H_
6
+ #define INCLUDE_V8_SNAPSHOT_H_
7
+
8
+ #include "v8-internal.h" // NOLINT(build/include_directory)
9
+ #include "v8-local-handle.h" // NOLINT(build/include_directory)
10
+ #include "v8config.h" // NOLINT(build/include_directory)
11
+
12
+ namespace v8 {
13
+
14
+ class Object;
15
+
16
+ class V8_EXPORT StartupData {
17
+ public:
18
+ /**
19
+ * Whether the data created can be rehashed and and the hash seed can be
20
+ * recomputed when deserialized.
21
+ * Only valid for StartupData returned by SnapshotCreator::CreateBlob().
22
+ */
23
+ bool CanBeRehashed() const;
24
+ /**
25
+ * Allows embedders to verify whether the data is valid for the current
26
+ * V8 instance.
27
+ */
28
+ bool IsValid() const;
29
+
30
+ const char* data;
31
+ int raw_size;
32
+ };
33
+
34
+ /**
35
+ * Callback and supporting data used in SnapshotCreator to implement embedder
36
+ * logic to serialize internal fields.
37
+ * Internal fields that directly reference V8 objects are serialized without
38
+ * calling this callback. Internal fields that contain aligned pointers are
39
+ * serialized by this callback if it returns non-zero result. Otherwise it is
40
+ * serialized verbatim.
41
+ */
42
+ struct SerializeInternalFieldsCallback {
43
+ using CallbackFunction = StartupData (*)(Local<Object> holder, int index,
44
+ void* data);
45
+ SerializeInternalFieldsCallback(CallbackFunction function = nullptr,
46
+ void* data_arg = nullptr)
47
+ : callback(function), data(data_arg) {}
48
+ CallbackFunction callback;
49
+ void* data;
50
+ };
51
+ // Note that these fields are called "internal fields" in the API and called
52
+ // "embedder fields" within V8.
53
+ using SerializeEmbedderFieldsCallback = SerializeInternalFieldsCallback;
54
+
55
+ /**
56
+ * Callback and supporting data used to implement embedder logic to deserialize
57
+ * internal fields.
58
+ */
59
+ struct DeserializeInternalFieldsCallback {
60
+ using CallbackFunction = void (*)(Local<Object> holder, int index,
61
+ StartupData payload, void* data);
62
+ DeserializeInternalFieldsCallback(CallbackFunction function = nullptr,
63
+ void* data_arg = nullptr)
64
+ : callback(function), data(data_arg) {}
65
+ void (*callback)(Local<Object> holder, int index, StartupData payload,
66
+ void* data);
67
+ void* data;
68
+ };
69
+
70
+ using DeserializeEmbedderFieldsCallback = DeserializeInternalFieldsCallback;
71
+
72
+ /**
73
+ * Helper class to create a snapshot data blob.
74
+ *
75
+ * The Isolate used by a SnapshotCreator is owned by it, and will be entered
76
+ * and exited by the constructor and destructor, respectively; The destructor
77
+ * will also destroy the Isolate. Experimental language features, including
78
+ * those available by default, are not available while creating a snapshot.
79
+ */
80
+ class V8_EXPORT SnapshotCreator {
81
+ public:
82
+ enum class FunctionCodeHandling { kClear, kKeep };
83
+
84
+ /**
85
+ * Initialize and enter an isolate, and set it up for serialization.
86
+ * The isolate is either created from scratch or from an existing snapshot.
87
+ * The caller keeps ownership of the argument snapshot.
88
+ * \param existing_blob existing snapshot from which to create this one.
89
+ * \param external_references a null-terminated array of external references
90
+ * that must be equivalent to CreateParams::external_references.
91
+ */
92
+ SnapshotCreator(Isolate* isolate,
93
+ const intptr_t* external_references = nullptr,
94
+ StartupData* existing_blob = nullptr);
95
+
96
+ /**
97
+ * Create and enter an isolate, and set it up for serialization.
98
+ * The isolate is either created from scratch or from an existing snapshot.
99
+ * The caller keeps ownership of the argument snapshot.
100
+ * \param existing_blob existing snapshot from which to create this one.
101
+ * \param external_references a null-terminated array of external references
102
+ * that must be equivalent to CreateParams::external_references.
103
+ */
104
+ SnapshotCreator(const intptr_t* external_references = nullptr,
105
+ StartupData* existing_blob = nullptr);
106
+
107
+ /**
108
+ * Destroy the snapshot creator, and exit and dispose of the Isolate
109
+ * associated with it.
110
+ */
111
+ ~SnapshotCreator();
112
+
113
+ /**
114
+ * \returns the isolate prepared by the snapshot creator.
115
+ */
116
+ Isolate* GetIsolate();
117
+
118
+ /**
119
+ * Set the default context to be included in the snapshot blob.
120
+ * The snapshot will not contain the global proxy, and we expect one or a
121
+ * global object template to create one, to be provided upon deserialization.
122
+ *
123
+ * \param callback optional callback to serialize internal fields.
124
+ */
125
+ void SetDefaultContext(Local<Context> context,
126
+ SerializeInternalFieldsCallback callback =
127
+ SerializeInternalFieldsCallback());
128
+
129
+ /**
130
+ * Add additional context to be included in the snapshot blob.
131
+ * The snapshot will include the global proxy.
132
+ *
133
+ * \param callback optional callback to serialize internal fields.
134
+ *
135
+ * \returns the index of the context in the snapshot blob.
136
+ */
137
+ size_t AddContext(Local<Context> context,
138
+ SerializeInternalFieldsCallback callback =
139
+ SerializeInternalFieldsCallback());
140
+
141
+ /**
142
+ * Attach arbitrary V8::Data to the context snapshot, which can be retrieved
143
+ * via Context::GetDataFromSnapshotOnce after deserialization. This data does
144
+ * not survive when a new snapshot is created from an existing snapshot.
145
+ * \returns the index for retrieval.
146
+ */
147
+ template <class T>
148
+ V8_INLINE size_t AddData(Local<Context> context, Local<T> object);
149
+
150
+ /**
151
+ * Attach arbitrary V8::Data to the isolate snapshot, which can be retrieved
152
+ * via Isolate::GetDataFromSnapshotOnce after deserialization. This data does
153
+ * not survive when a new snapshot is created from an existing snapshot.
154
+ * \returns the index for retrieval.
155
+ */
156
+ template <class T>
157
+ V8_INLINE size_t AddData(Local<T> object);
158
+
159
+ /**
160
+ * Created a snapshot data blob.
161
+ * This must not be called from within a handle scope.
162
+ * \param function_code_handling whether to include compiled function code
163
+ * in the snapshot.
164
+ * \returns { nullptr, 0 } on failure, and a startup snapshot on success. The
165
+ * caller acquires ownership of the data array in the return value.
166
+ */
167
+ StartupData CreateBlob(FunctionCodeHandling function_code_handling);
168
+
169
+ // Disallow copying and assigning.
170
+ SnapshotCreator(const SnapshotCreator&) = delete;
171
+ void operator=(const SnapshotCreator&) = delete;
172
+
173
+ private:
174
+ size_t AddData(Local<Context> context, internal::Address object);
175
+ size_t AddData(internal::Address object);
176
+
177
+ void* data_;
178
+ };
179
+
180
+ template <class T>
181
+ size_t SnapshotCreator::AddData(Local<Context> context, Local<T> object) {
182
+ T* object_ptr = *object;
183
+ internal::Address* p = reinterpret_cast<internal::Address*>(object_ptr);
184
+ return AddData(context, *p);
185
+ }
186
+
187
+ template <class T>
188
+ size_t SnapshotCreator::AddData(Local<T> object) {
189
+ T* object_ptr = *object;
190
+ internal::Address* p = reinterpret_cast<internal::Address*>(object_ptr);
191
+ return AddData(*p);
192
+ }
193
+
194
+ } // namespace v8
195
+
196
+ #endif // INCLUDE_V8_SNAPSHOT_H_
@@ -0,0 +1,217 @@
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_STATISTICS_H_
6
+ #define INCLUDE_V8_STATISTICS_H_
7
+
8
+ #include <stddef.h>
9
+ #include <stdint.h>
10
+
11
+ #include <memory>
12
+ #include <utility>
13
+ #include <vector>
14
+
15
+ #include "v8-local-handle.h" // NOLINT(build/include_directory)
16
+ #include "v8-promise.h" // NOLINT(build/include_directory)
17
+ #include "v8config.h" // NOLINT(build/include_directory)
18
+
19
+ namespace v8 {
20
+
21
+ class Context;
22
+ class Isolate;
23
+
24
+ namespace internal {
25
+ class ReadOnlyHeap;
26
+ } // namespace internal
27
+
28
+ /**
29
+ * Controls how the default MeasureMemoryDelegate reports the result of
30
+ * the memory measurement to JS. With kSummary only the total size is reported.
31
+ * With kDetailed the result includes the size of each native context.
32
+ */
33
+ enum class MeasureMemoryMode { kSummary, kDetailed };
34
+
35
+ /**
36
+ * Controls how promptly a memory measurement request is executed.
37
+ * By default the measurement is folded with the next scheduled GC which may
38
+ * happen after a while and is forced after some timeout.
39
+ * The kEager mode starts incremental GC right away and is useful for testing.
40
+ * The kLazy mode does not force GC.
41
+ */
42
+ enum class MeasureMemoryExecution { kDefault, kEager, kLazy };
43
+
44
+ /**
45
+ * The delegate is used in Isolate::MeasureMemory API.
46
+ *
47
+ * It specifies the contexts that need to be measured and gets called when
48
+ * the measurement is completed to report the results.
49
+ */
50
+ class V8_EXPORT MeasureMemoryDelegate {
51
+ public:
52
+ virtual ~MeasureMemoryDelegate() = default;
53
+
54
+ /**
55
+ * Returns true if the size of the given context needs to be measured.
56
+ */
57
+ virtual bool ShouldMeasure(Local<Context> context) = 0;
58
+
59
+ /**
60
+ * This function is called when memory measurement finishes.
61
+ *
62
+ * \param context_sizes_in_bytes a vector of (context, size) pairs that
63
+ * includes each context for which ShouldMeasure returned true and that
64
+ * was not garbage collected while the memory measurement was in progress.
65
+ *
66
+ * \param unattributed_size_in_bytes total size of objects that were not
67
+ * attributed to any context (i.e. are likely shared objects).
68
+ */
69
+ virtual void MeasurementComplete(
70
+ const std::vector<std::pair<Local<Context>, size_t>>&
71
+ context_sizes_in_bytes,
72
+ size_t unattributed_size_in_bytes) = 0;
73
+
74
+ /**
75
+ * Returns a default delegate that resolves the given promise when
76
+ * the memory measurement completes.
77
+ *
78
+ * \param isolate the current isolate
79
+ * \param context the current context
80
+ * \param promise_resolver the promise resolver that is given the
81
+ * result of the memory measurement.
82
+ * \param mode the detail level of the result.
83
+ */
84
+ static std::unique_ptr<MeasureMemoryDelegate> Default(
85
+ Isolate* isolate, Local<Context> context,
86
+ Local<Promise::Resolver> promise_resolver, MeasureMemoryMode mode);
87
+ };
88
+
89
+ /**
90
+ * Collection of shared per-process V8 memory information.
91
+ *
92
+ * Instances of this class can be passed to
93
+ * v8::V8::GetSharedMemoryStatistics to get shared memory statistics from V8.
94
+ */
95
+ class V8_EXPORT SharedMemoryStatistics {
96
+ public:
97
+ SharedMemoryStatistics();
98
+ size_t read_only_space_size() { return read_only_space_size_; }
99
+ size_t read_only_space_used_size() { return read_only_space_used_size_; }
100
+ size_t read_only_space_physical_size() {
101
+ return read_only_space_physical_size_;
102
+ }
103
+
104
+ private:
105
+ size_t read_only_space_size_;
106
+ size_t read_only_space_used_size_;
107
+ size_t read_only_space_physical_size_;
108
+
109
+ friend class V8;
110
+ friend class internal::ReadOnlyHeap;
111
+ };
112
+
113
+ /**
114
+ * Collection of V8 heap information.
115
+ *
116
+ * Instances of this class can be passed to v8::Isolate::GetHeapStatistics to
117
+ * get heap statistics from V8.
118
+ */
119
+ class V8_EXPORT HeapStatistics {
120
+ public:
121
+ HeapStatistics();
122
+ size_t total_heap_size() { return total_heap_size_; }
123
+ size_t total_heap_size_executable() { return total_heap_size_executable_; }
124
+ size_t total_physical_size() { return total_physical_size_; }
125
+ size_t total_available_size() { return total_available_size_; }
126
+ size_t total_global_handles_size() { return total_global_handles_size_; }
127
+ size_t used_global_handles_size() { return used_global_handles_size_; }
128
+ size_t used_heap_size() { return used_heap_size_; }
129
+ size_t heap_size_limit() { return heap_size_limit_; }
130
+ size_t malloced_memory() { return malloced_memory_; }
131
+ size_t external_memory() { return external_memory_; }
132
+ size_t peak_malloced_memory() { return peak_malloced_memory_; }
133
+ size_t number_of_native_contexts() { return number_of_native_contexts_; }
134
+ size_t number_of_detached_contexts() { return number_of_detached_contexts_; }
135
+
136
+ /**
137
+ * Returns a 0/1 boolean, which signifies whether the V8 overwrite heap
138
+ * garbage with a bit pattern.
139
+ */
140
+ size_t does_zap_garbage() { return does_zap_garbage_; }
141
+
142
+ private:
143
+ size_t total_heap_size_;
144
+ size_t total_heap_size_executable_;
145
+ size_t total_physical_size_;
146
+ size_t total_available_size_;
147
+ size_t used_heap_size_;
148
+ size_t heap_size_limit_;
149
+ size_t malloced_memory_;
150
+ size_t external_memory_;
151
+ size_t peak_malloced_memory_;
152
+ bool does_zap_garbage_;
153
+ size_t number_of_native_contexts_;
154
+ size_t number_of_detached_contexts_;
155
+ size_t total_global_handles_size_;
156
+ size_t used_global_handles_size_;
157
+
158
+ friend class V8;
159
+ friend class Isolate;
160
+ };
161
+
162
+ class V8_EXPORT HeapSpaceStatistics {
163
+ public:
164
+ HeapSpaceStatistics();
165
+ const char* space_name() { return space_name_; }
166
+ size_t space_size() { return space_size_; }
167
+ size_t space_used_size() { return space_used_size_; }
168
+ size_t space_available_size() { return space_available_size_; }
169
+ size_t physical_space_size() { return physical_space_size_; }
170
+
171
+ private:
172
+ const char* space_name_;
173
+ size_t space_size_;
174
+ size_t space_used_size_;
175
+ size_t space_available_size_;
176
+ size_t physical_space_size_;
177
+
178
+ friend class Isolate;
179
+ };
180
+
181
+ class V8_EXPORT HeapObjectStatistics {
182
+ public:
183
+ HeapObjectStatistics();
184
+ const char* object_type() { return object_type_; }
185
+ const char* object_sub_type() { return object_sub_type_; }
186
+ size_t object_count() { return object_count_; }
187
+ size_t object_size() { return object_size_; }
188
+
189
+ private:
190
+ const char* object_type_;
191
+ const char* object_sub_type_;
192
+ size_t object_count_;
193
+ size_t object_size_;
194
+
195
+ friend class Isolate;
196
+ };
197
+
198
+ class V8_EXPORT HeapCodeStatistics {
199
+ public:
200
+ HeapCodeStatistics();
201
+ size_t code_and_metadata_size() { return code_and_metadata_size_; }
202
+ size_t bytecode_and_metadata_size() { return bytecode_and_metadata_size_; }
203
+ size_t external_script_source_size() { return external_script_source_size_; }
204
+ size_t cpu_profiler_metadata_size() { return cpu_profiler_metadata_size_; }
205
+
206
+ private:
207
+ size_t code_and_metadata_size_;
208
+ size_t bytecode_and_metadata_size_;
209
+ size_t external_script_source_size_;
210
+ size_t cpu_profiler_metadata_size_;
211
+
212
+ friend class Isolate;
213
+ };
214
+
215
+ } // namespace v8
216
+
217
+ #endif // INCLUDE_V8_STATISTICS_H_