libv8 6.0.286.54.3-x86-linux → 6.2.414.42.1-x86-linux
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/libv8/version.rb +1 -1
- data/vendor/v8/include/libplatform/libplatform.h +6 -1
- data/vendor/v8/include/libplatform/v8-tracing.h +23 -9
- data/vendor/v8/include/v8-platform.h +86 -72
- data/vendor/v8/include/v8-profiler.h +2 -5
- data/vendor/v8/include/v8-version.h +3 -3
- data/vendor/v8/include/v8.h +326 -104
- data/vendor/v8/include/v8config.h +4 -15
- data/vendor/v8/out/ia32.release/libv8_base.a +0 -0
- data/vendor/v8/out/ia32.release/libv8_builtins_generators.a +0 -0
- data/vendor/v8/out/ia32.release/libv8_builtins_setup.a +0 -0
- data/vendor/v8/out/ia32.release/libv8_libbase.a +0 -0
- data/vendor/v8/out/ia32.release/libv8_libplatform.a +0 -0
- data/vendor/v8/out/ia32.release/libv8_libsampler.a +0 -0
- data/vendor/v8/out/ia32.release/libv8_nosnapshot.a +0 -0
- data/vendor/v8/out/ia32.release/libv8_snapshot.a +0 -0
- data/vendor/v8/out/ia32.release/obj.target/src/libv8_base.a +0 -0
- data/vendor/v8/out/ia32.release/obj.target/src/libv8_builtins_generators.a +0 -0
- data/vendor/v8/out/ia32.release/obj.target/src/libv8_builtins_setup.a +0 -0
- data/vendor/v8/out/ia32.release/obj.target/src/libv8_libbase.a +0 -0
- data/vendor/v8/out/ia32.release/obj.target/src/libv8_libplatform.a +0 -0
- data/vendor/v8/out/ia32.release/obj.target/src/libv8_libsampler.a +0 -0
- data/vendor/v8/out/ia32.release/obj.target/src/libv8_nosnapshot.a +0 -0
- data/vendor/v8/out/ia32.release/obj.target/src/libv8_snapshot.a +0 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 28aea298453f84fad98b06fdc9e195971b1ca64c
|
4
|
+
data.tar.gz: 422aeec14c1211b852fce565867f85494dc00668
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aca661357eef9da606ecae535393c032e1fa6dc836d8ee345eb51289edca4a6b0a77fa9706d0787ce0a80e7f617cd69e20ce5ac6eaec8f4f60889d2aec7ae7c4
|
7
|
+
data.tar.gz: 6a1789c9c6ce219c118c767d8872108ee632a63abf45e3d56aa86c28d947fbc2535554d36b1e100341b63abed0840c1d11f35657c1a61150f1dc689048079893
|
data/lib/libv8/version.rb
CHANGED
@@ -30,12 +30,15 @@ enum class MessageLoopBehavior : bool {
|
|
30
30
|
* If |idle_task_support| is enabled then the platform will accept idle
|
31
31
|
* tasks (IdleTasksEnabled will return true) and will rely on the embedder
|
32
32
|
* calling v8::platform::RunIdleTasks to process the idle tasks.
|
33
|
+
* If |tracing_controller| is nullptr, the default platform will create a
|
34
|
+
* v8::platform::TracingController instance and use it.
|
33
35
|
*/
|
34
36
|
V8_PLATFORM_EXPORT v8::Platform* CreateDefaultPlatform(
|
35
37
|
int thread_pool_size = 0,
|
36
38
|
IdleTaskSupport idle_task_support = IdleTaskSupport::kDisabled,
|
37
39
|
InProcessStackDumping in_process_stack_dumping =
|
38
|
-
InProcessStackDumping::kEnabled
|
40
|
+
InProcessStackDumping::kEnabled,
|
41
|
+
v8::TracingController* tracing_controller = nullptr);
|
39
42
|
|
40
43
|
/**
|
41
44
|
* Pumps the message loop for the given isolate.
|
@@ -67,6 +70,8 @@ V8_PLATFORM_EXPORT void RunIdleTasks(v8::Platform* platform,
|
|
67
70
|
* Attempts to set the tracing controller for the given platform.
|
68
71
|
*
|
69
72
|
* The |platform| has to be created using |CreateDefaultPlatform|.
|
73
|
+
*
|
74
|
+
* DEPRECATED: Will be removed soon.
|
70
75
|
*/
|
71
76
|
V8_PLATFORM_EXPORT void SetTracingController(
|
72
77
|
v8::Platform* platform,
|
@@ -209,7 +209,15 @@ class V8_PLATFORM_EXPORT TraceConfig {
|
|
209
209
|
void operator=(const TraceConfig&) = delete;
|
210
210
|
};
|
211
211
|
|
212
|
-
|
212
|
+
#if defined(_MSC_VER)
|
213
|
+
#define V8_PLATFORM_NON_EXPORTED_BASE(code) \
|
214
|
+
__pragma(warning(suppress : 4275)) code
|
215
|
+
#else
|
216
|
+
#define V8_PLATFORM_NON_EXPORTED_BASE(code) code
|
217
|
+
#endif // defined(_MSC_VER)
|
218
|
+
|
219
|
+
class V8_PLATFORM_EXPORT TracingController
|
220
|
+
: public V8_PLATFORM_NON_EXPORTED_BASE(v8::TracingController) {
|
213
221
|
public:
|
214
222
|
enum Mode { DISABLED = 0, RECORDING_MODE };
|
215
223
|
|
@@ -227,25 +235,29 @@ class V8_PLATFORM_EXPORT TracingController {
|
|
227
235
|
};
|
228
236
|
|
229
237
|
TracingController();
|
230
|
-
~TracingController();
|
238
|
+
~TracingController() override;
|
231
239
|
void Initialize(TraceBuffer* trace_buffer);
|
232
|
-
|
233
|
-
|
240
|
+
|
241
|
+
// v8::TracingController implementation.
|
242
|
+
const uint8_t* GetCategoryGroupEnabled(const char* category_group) override;
|
234
243
|
uint64_t AddTraceEvent(
|
235
244
|
char phase, const uint8_t* category_enabled_flag, const char* name,
|
236
245
|
const char* scope, uint64_t id, uint64_t bind_id, int32_t num_args,
|
237
246
|
const char** arg_names, const uint8_t* arg_types,
|
238
247
|
const uint64_t* arg_values,
|
239
248
|
std::unique_ptr<v8::ConvertableToTraceFormat>* arg_convertables,
|
240
|
-
unsigned int flags);
|
249
|
+
unsigned int flags) override;
|
241
250
|
void UpdateTraceEventDuration(const uint8_t* category_enabled_flag,
|
242
|
-
const char* name, uint64_t handle);
|
251
|
+
const char* name, uint64_t handle) override;
|
252
|
+
void AddTraceStateObserver(
|
253
|
+
v8::TracingController::TraceStateObserver* observer) override;
|
254
|
+
void RemoveTraceStateObserver(
|
255
|
+
v8::TracingController::TraceStateObserver* observer) override;
|
243
256
|
|
244
257
|
void StartTracing(TraceConfig* trace_config);
|
245
258
|
void StopTracing();
|
246
259
|
|
247
|
-
|
248
|
-
void RemoveTraceStateObserver(Platform::TraceStateObserver* observer);
|
260
|
+
static const char* GetCategoryGroupName(const uint8_t* category_enabled_flag);
|
249
261
|
|
250
262
|
private:
|
251
263
|
const uint8_t* GetCategoryGroupEnabledInternal(const char* category_group);
|
@@ -255,7 +267,7 @@ class V8_PLATFORM_EXPORT TracingController {
|
|
255
267
|
std::unique_ptr<TraceBuffer> trace_buffer_;
|
256
268
|
std::unique_ptr<TraceConfig> trace_config_;
|
257
269
|
std::unique_ptr<base::Mutex> mutex_;
|
258
|
-
std::unordered_set<
|
270
|
+
std::unordered_set<v8::TracingController::TraceStateObserver*> observers_;
|
259
271
|
Mode mode_ = DISABLED;
|
260
272
|
|
261
273
|
// Disallow copy and assign
|
@@ -263,6 +275,8 @@ class V8_PLATFORM_EXPORT TracingController {
|
|
263
275
|
void operator=(const TracingController&) = delete;
|
264
276
|
};
|
265
277
|
|
278
|
+
#undef V8_PLATFORM_NON_EXPORTED_BASE
|
279
|
+
|
266
280
|
} // namespace tracing
|
267
281
|
} // namespace platform
|
268
282
|
} // namespace v8
|
@@ -52,6 +52,66 @@ class ConvertableToTraceFormat {
|
|
52
52
|
virtual void AppendAsTraceFormat(std::string* out) const = 0;
|
53
53
|
};
|
54
54
|
|
55
|
+
/**
|
56
|
+
* V8 Tracing controller.
|
57
|
+
*
|
58
|
+
* Can be implemented by an embedder to record trace events from V8.
|
59
|
+
*/
|
60
|
+
class TracingController {
|
61
|
+
public:
|
62
|
+
virtual ~TracingController() = default;
|
63
|
+
|
64
|
+
/**
|
65
|
+
* Called by TRACE_EVENT* macros, don't call this directly.
|
66
|
+
* The name parameter is a category group for example:
|
67
|
+
* TRACE_EVENT0("v8,parse", "V8.Parse")
|
68
|
+
* The pointer returned points to a value with zero or more of the bits
|
69
|
+
* defined in CategoryGroupEnabledFlags.
|
70
|
+
**/
|
71
|
+
virtual const uint8_t* GetCategoryGroupEnabled(const char* name) {
|
72
|
+
static uint8_t no = 0;
|
73
|
+
return &no;
|
74
|
+
}
|
75
|
+
|
76
|
+
/**
|
77
|
+
* Adds a trace event to the platform tracing system. This function call is
|
78
|
+
* usually the result of a TRACE_* macro from trace_event_common.h when
|
79
|
+
* tracing and the category of the particular trace are enabled. It is not
|
80
|
+
* advisable to call this function on its own; it is really only meant to be
|
81
|
+
* used by the trace macros. The returned handle can be used by
|
82
|
+
* UpdateTraceEventDuration to update the duration of COMPLETE events.
|
83
|
+
*/
|
84
|
+
virtual uint64_t AddTraceEvent(
|
85
|
+
char phase, const uint8_t* category_enabled_flag, const char* name,
|
86
|
+
const char* scope, uint64_t id, uint64_t bind_id, int32_t num_args,
|
87
|
+
const char** arg_names, const uint8_t* arg_types,
|
88
|
+
const uint64_t* arg_values,
|
89
|
+
std::unique_ptr<ConvertableToTraceFormat>* arg_convertables,
|
90
|
+
unsigned int flags) {
|
91
|
+
return 0;
|
92
|
+
}
|
93
|
+
|
94
|
+
/**
|
95
|
+
* Sets the duration field of a COMPLETE trace event. It must be called with
|
96
|
+
* the handle returned from AddTraceEvent().
|
97
|
+
**/
|
98
|
+
virtual void UpdateTraceEventDuration(const uint8_t* category_enabled_flag,
|
99
|
+
const char* name, uint64_t handle) {}
|
100
|
+
|
101
|
+
class TraceStateObserver {
|
102
|
+
public:
|
103
|
+
virtual ~TraceStateObserver() = default;
|
104
|
+
virtual void OnTraceEnabled() = 0;
|
105
|
+
virtual void OnTraceDisabled() = 0;
|
106
|
+
};
|
107
|
+
|
108
|
+
/** Adds tracing state change observer. */
|
109
|
+
virtual void AddTraceStateObserver(TraceStateObserver*) {}
|
110
|
+
|
111
|
+
/** Removes tracing state change observer. */
|
112
|
+
virtual void RemoveTraceStateObserver(TraceStateObserver*) {}
|
113
|
+
};
|
114
|
+
|
55
115
|
/**
|
56
116
|
* V8 Platform abstraction layer.
|
57
117
|
*
|
@@ -72,6 +132,15 @@ class Platform {
|
|
72
132
|
|
73
133
|
virtual ~Platform() = default;
|
74
134
|
|
135
|
+
/**
|
136
|
+
* Enables the embedder to respond in cases where V8 can't allocate large
|
137
|
+
* blocks of memory. V8 retries the failed allocation once after calling this
|
138
|
+
* method. On success, execution continues; otherwise V8 exits with a fatal
|
139
|
+
* error.
|
140
|
+
* Embedder overrides of this function must NOT call back into V8.
|
141
|
+
*/
|
142
|
+
virtual void OnCriticalMemoryPressure() {}
|
143
|
+
|
75
144
|
/**
|
76
145
|
* Gets the number of threads that are used to execute background tasks. Is
|
77
146
|
* used to estimate the number of tasks a work package should be split into.
|
@@ -137,89 +206,34 @@ class Platform {
|
|
137
206
|
virtual double MonotonicallyIncreasingTime() = 0;
|
138
207
|
|
139
208
|
/**
|
140
|
-
*
|
141
|
-
*
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
virtual const uint8_t* GetCategoryGroupEnabled(const char* name) {
|
147
|
-
static uint8_t no = 0;
|
148
|
-
return &no;
|
209
|
+
* Current wall-clock time in milliseconds since epoch.
|
210
|
+
* This function is expected to return at least millisecond-precision values.
|
211
|
+
*/
|
212
|
+
virtual double CurrentClockTimeMillis() {
|
213
|
+
// TODO(dats): Make pure virtual after V8 roll in Chromium.
|
214
|
+
return 0.0;
|
149
215
|
}
|
150
216
|
|
151
|
-
|
152
|
-
* Gets the category group name of the given category_enabled_flag pointer.
|
153
|
-
* Usually used while serliazing TRACE_EVENTs.
|
154
|
-
**/
|
155
|
-
virtual const char* GetCategoryGroupName(
|
156
|
-
const uint8_t* category_enabled_flag) {
|
157
|
-
static const char dummy[] = "dummy";
|
158
|
-
return dummy;
|
159
|
-
}
|
217
|
+
typedef void (*StackTracePrinter)();
|
160
218
|
|
161
219
|
/**
|
162
|
-
*
|
163
|
-
*
|
164
|
-
* tracing and the category of the particular trace are enabled. It is not
|
165
|
-
* advisable to call this function on its own; it is really only meant to be
|
166
|
-
* used by the trace macros. The returned handle can be used by
|
167
|
-
* UpdateTraceEventDuration to update the duration of COMPLETE events.
|
220
|
+
* Returns a function pointer that print a stack trace of the current stack
|
221
|
+
* on invocation. Disables printing of the stack trace if nullptr.
|
168
222
|
*/
|
169
|
-
virtual
|
170
|
-
char phase, const uint8_t* category_enabled_flag, const char* name,
|
171
|
-
const char* scope, uint64_t id, uint64_t bind_id, int32_t num_args,
|
172
|
-
const char** arg_names, const uint8_t* arg_types,
|
173
|
-
const uint64_t* arg_values, unsigned int flags) {
|
174
|
-
return 0;
|
175
|
-
}
|
223
|
+
virtual StackTracePrinter GetStackTracePrinter() { return nullptr; }
|
176
224
|
|
177
225
|
/**
|
178
|
-
*
|
179
|
-
* usually the result of a TRACE_* macro from trace_event_common.h when
|
180
|
-
* tracing and the category of the particular trace are enabled. It is not
|
181
|
-
* advisable to call this function on its own; it is really only meant to be
|
182
|
-
* used by the trace macros. The returned handle can be used by
|
183
|
-
* UpdateTraceEventDuration to update the duration of COMPLETE events.
|
226
|
+
* Returns an instance of a v8::TracingController. This must be non-nullptr.
|
184
227
|
*/
|
185
|
-
virtual
|
186
|
-
char phase, const uint8_t* category_enabled_flag, const char* name,
|
187
|
-
const char* scope, uint64_t id, uint64_t bind_id, int32_t num_args,
|
188
|
-
const char** arg_names, const uint8_t* arg_types,
|
189
|
-
const uint64_t* arg_values,
|
190
|
-
std::unique_ptr<ConvertableToTraceFormat>* arg_convertables,
|
191
|
-
unsigned int flags) {
|
192
|
-
return AddTraceEvent(phase, category_enabled_flag, name, scope, id, bind_id,
|
193
|
-
num_args, arg_names, arg_types, arg_values, flags);
|
194
|
-
}
|
228
|
+
virtual TracingController* GetTracingController() = 0;
|
195
229
|
|
230
|
+
protected:
|
196
231
|
/**
|
197
|
-
*
|
198
|
-
*
|
199
|
-
|
200
|
-
virtual void UpdateTraceEventDuration(const uint8_t* category_enabled_flag,
|
201
|
-
const char* name, uint64_t handle) {}
|
202
|
-
|
203
|
-
class TraceStateObserver {
|
204
|
-
public:
|
205
|
-
virtual ~TraceStateObserver() = default;
|
206
|
-
virtual void OnTraceEnabled() = 0;
|
207
|
-
virtual void OnTraceDisabled() = 0;
|
208
|
-
};
|
209
|
-
|
210
|
-
/** Adds tracing state change observer. */
|
211
|
-
virtual void AddTraceStateObserver(TraceStateObserver*) {}
|
212
|
-
|
213
|
-
/** Removes tracing state change observer. */
|
214
|
-
virtual void RemoveTraceStateObserver(TraceStateObserver*) {}
|
215
|
-
|
216
|
-
typedef void (*StackTracePrinter)();
|
217
|
-
|
218
|
-
/**
|
219
|
-
* Returns a function pointer that print a stack trace of the current stack
|
220
|
-
* on invocation. Disables printing of the stack trace if nullptr.
|
232
|
+
* Default implementation of current wall-clock time in milliseconds
|
233
|
+
* since epoch. Useful for implementing |CurrentClockTimeMillis| if
|
234
|
+
* nothing special needed.
|
221
235
|
*/
|
222
|
-
|
236
|
+
static double SystemClockTimeMillis();
|
223
237
|
};
|
224
238
|
|
225
239
|
} // namespace v8
|
@@ -389,7 +389,7 @@ class V8_EXPORT HeapGraphNode {
|
|
389
389
|
kRegExp = 6, // RegExp.
|
390
390
|
kHeapNumber = 7, // Number stored in the heap.
|
391
391
|
kNative = 8, // Native object (not from V8 heap).
|
392
|
-
kSynthetic = 9, // Synthetic object,
|
392
|
+
kSynthetic = 9, // Synthetic object, usually used for grouping
|
393
393
|
// snapshot items together.
|
394
394
|
kConsString = 10, // Concatenated string. A pair of pointers to strings.
|
395
395
|
kSlicedString = 11, // Sliced string. A fragment of another string.
|
@@ -784,7 +784,7 @@ class V8_EXPORT HeapProfiler {
|
|
784
784
|
/**
|
785
785
|
* Returns the sampled profile of allocations allocated (and still live) since
|
786
786
|
* StartSamplingHeapProfiler was called. The ownership of the pointer is
|
787
|
-
*
|
787
|
+
* transferred to the caller. Returns nullptr if sampling heap profiler is not
|
788
788
|
* active.
|
789
789
|
*/
|
790
790
|
AllocationProfile* GetAllocationProfile();
|
@@ -809,9 +809,6 @@ class V8_EXPORT HeapProfiler {
|
|
809
809
|
*/
|
810
810
|
static const uint16_t kPersistentHandleNoClassId = 0;
|
811
811
|
|
812
|
-
/** Returns memory used for profiler internal data and snapshots. */
|
813
|
-
size_t GetProfilerMemorySize();
|
814
|
-
|
815
812
|
private:
|
816
813
|
HeapProfiler();
|
817
814
|
~HeapProfiler();
|
@@ -9,9 +9,9 @@
|
|
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
11
|
#define V8_MAJOR_VERSION 6
|
12
|
-
#define V8_MINOR_VERSION
|
13
|
-
#define V8_BUILD_NUMBER
|
14
|
-
#define V8_PATCH_LEVEL
|
12
|
+
#define V8_MINOR_VERSION 2
|
13
|
+
#define V8_BUILD_NUMBER 414
|
14
|
+
#define V8_PATCH_LEVEL 42
|
15
15
|
|
16
16
|
// Use 1 for candidates and 0 otherwise.
|
17
17
|
// (Boolean macro values are not supported by all preprocessors.)
|
data/vendor/v8/include/v8.h
CHANGED
@@ -139,6 +139,7 @@ template<typename T> class ReturnValue;
|
|
139
139
|
|
140
140
|
namespace internal {
|
141
141
|
class Arguments;
|
142
|
+
class DeferredHandles;
|
142
143
|
class Heap;
|
143
144
|
class HeapObject;
|
144
145
|
class Isolate;
|
@@ -869,8 +870,6 @@ class V8_EXPORT HandleScope {
|
|
869
870
|
|
870
871
|
HandleScope(const HandleScope&) = delete;
|
871
872
|
void operator=(const HandleScope&) = delete;
|
872
|
-
void* operator new(size_t size);
|
873
|
-
void operator delete(void*, size_t);
|
874
873
|
|
875
874
|
protected:
|
876
875
|
V8_INLINE HandleScope() {}
|
@@ -881,6 +880,13 @@ class V8_EXPORT HandleScope {
|
|
881
880
|
internal::Object* value);
|
882
881
|
|
883
882
|
private:
|
883
|
+
// Declaring operator new and delete as deleted is not spec compliant.
|
884
|
+
// Therefore declare them private instead to disable dynamic alloc
|
885
|
+
void* operator new(size_t size);
|
886
|
+
void* operator new[](size_t size);
|
887
|
+
void operator delete(void*, size_t);
|
888
|
+
void operator delete[](void*, size_t);
|
889
|
+
|
884
890
|
// Uses heap_object to obtain the current Isolate.
|
885
891
|
static internal::Object** CreateHandle(internal::HeapObject* heap_object,
|
886
892
|
internal::Object* value);
|
@@ -921,10 +927,15 @@ class V8_EXPORT EscapableHandleScope : public HandleScope {
|
|
921
927
|
|
922
928
|
EscapableHandleScope(const EscapableHandleScope&) = delete;
|
923
929
|
void operator=(const EscapableHandleScope&) = delete;
|
930
|
+
|
931
|
+
private:
|
932
|
+
// Declaring operator new and delete as deleted is not spec compliant.
|
933
|
+
// Therefore declare them private instead to disable dynamic alloc
|
924
934
|
void* operator new(size_t size);
|
935
|
+
void* operator new[](size_t size);
|
925
936
|
void operator delete(void*, size_t);
|
937
|
+
void operator delete[](void*, size_t);
|
926
938
|
|
927
|
-
private:
|
928
939
|
internal::Object** Escape(internal::Object** escape_value);
|
929
940
|
internal::Object** escape_slot_;
|
930
941
|
};
|
@@ -941,10 +952,15 @@ class V8_EXPORT SealHandleScope {
|
|
941
952
|
|
942
953
|
SealHandleScope(const SealHandleScope&) = delete;
|
943
954
|
void operator=(const SealHandleScope&) = delete;
|
955
|
+
|
956
|
+
private:
|
957
|
+
// Declaring operator new and delete as deleted is not spec compliant.
|
958
|
+
// Therefore declare them private instead to disable dynamic alloc
|
944
959
|
void* operator new(size_t size);
|
960
|
+
void* operator new[](size_t size);
|
945
961
|
void operator delete(void*, size_t);
|
962
|
+
void operator delete[](void*, size_t);
|
946
963
|
|
947
|
-
private:
|
948
964
|
internal::Isolate* const isolate_;
|
949
965
|
internal::Object** prev_limit_;
|
950
966
|
int prev_sealed_level_;
|
@@ -1016,9 +1032,6 @@ class ScriptOrigin {
|
|
1016
1032
|
V8_INLINE Local<Value> ResourceName() const;
|
1017
1033
|
V8_INLINE Local<Integer> ResourceLineOffset() const;
|
1018
1034
|
V8_INLINE Local<Integer> ResourceColumnOffset() const;
|
1019
|
-
/**
|
1020
|
-
* Returns true for embedder's debugger scripts
|
1021
|
-
*/
|
1022
1035
|
V8_INLINE Local<Integer> ScriptID() const;
|
1023
1036
|
V8_INLINE Local<Value> SourceMapUrl() const;
|
1024
1037
|
V8_INLINE ScriptOriginOptions Options() const { return options_; }
|
@@ -1032,7 +1045,6 @@ class ScriptOrigin {
|
|
1032
1045
|
Local<Value> source_map_url_;
|
1033
1046
|
};
|
1034
1047
|
|
1035
|
-
|
1036
1048
|
/**
|
1037
1049
|
* A compiled JavaScript script, not yet tied to a Context.
|
1038
1050
|
*/
|
@@ -1064,6 +1076,22 @@ class V8_EXPORT UnboundScript {
|
|
1064
1076
|
static const int kNoScriptId = 0;
|
1065
1077
|
};
|
1066
1078
|
|
1079
|
+
/**
|
1080
|
+
* A location in JavaScript source.
|
1081
|
+
*/
|
1082
|
+
class V8_EXPORT Location {
|
1083
|
+
public:
|
1084
|
+
int GetLineNumber() { return line_number_; }
|
1085
|
+
int GetColumnNumber() { return column_number_; }
|
1086
|
+
|
1087
|
+
Location(int line_number, int column_number)
|
1088
|
+
: line_number_(line_number), column_number_(column_number) {}
|
1089
|
+
|
1090
|
+
private:
|
1091
|
+
int line_number_;
|
1092
|
+
int column_number_;
|
1093
|
+
};
|
1094
|
+
|
1067
1095
|
/**
|
1068
1096
|
* This is an unfinished experimental feature, and is only exposed
|
1069
1097
|
* here for internal testing purposes. DO NOT USE.
|
@@ -1072,6 +1100,28 @@ class V8_EXPORT UnboundScript {
|
|
1072
1100
|
*/
|
1073
1101
|
class V8_EXPORT Module {
|
1074
1102
|
public:
|
1103
|
+
/**
|
1104
|
+
* The different states a module can be in.
|
1105
|
+
*/
|
1106
|
+
enum Status {
|
1107
|
+
kUninstantiated,
|
1108
|
+
kInstantiating,
|
1109
|
+
kInstantiated,
|
1110
|
+
kEvaluating,
|
1111
|
+
kEvaluated,
|
1112
|
+
kErrored
|
1113
|
+
};
|
1114
|
+
|
1115
|
+
/**
|
1116
|
+
* Returns the module's current status.
|
1117
|
+
*/
|
1118
|
+
Status GetStatus() const;
|
1119
|
+
|
1120
|
+
/**
|
1121
|
+
* For a module in kErrored status, this returns the corresponding exception.
|
1122
|
+
*/
|
1123
|
+
Local<Value> GetException() const;
|
1124
|
+
|
1075
1125
|
/**
|
1076
1126
|
* Returns the number of modules requested by this module.
|
1077
1127
|
*/
|
@@ -1083,6 +1133,12 @@ class V8_EXPORT Module {
|
|
1083
1133
|
*/
|
1084
1134
|
Local<String> GetModuleRequest(int i) const;
|
1085
1135
|
|
1136
|
+
/**
|
1137
|
+
* Returns the source location (line number and column number) of the ith
|
1138
|
+
* module specifier's first occurrence in this module.
|
1139
|
+
*/
|
1140
|
+
Location GetModuleRequestLocation(int i) const;
|
1141
|
+
|
1086
1142
|
/**
|
1087
1143
|
* Returns the identity hash for this object.
|
1088
1144
|
*/
|
@@ -1095,40 +1151,29 @@ class V8_EXPORT Module {
|
|
1095
1151
|
/**
|
1096
1152
|
* ModuleDeclarationInstantiation
|
1097
1153
|
*
|
1098
|
-
* Returns
|
1099
|
-
* where the callback throws an exception, that
|
1154
|
+
* Returns an empty Maybe<bool> if an exception occurred during
|
1155
|
+
* instantiation. (In the case where the callback throws an exception, that
|
1156
|
+
* exception is propagated.)
|
1100
1157
|
*/
|
1101
|
-
|
1102
|
-
|
1158
|
+
V8_DEPRECATED("Use Maybe<bool> version",
|
1159
|
+
bool Instantiate(Local<Context> context,
|
1160
|
+
ResolveCallback callback));
|
1161
|
+
V8_WARN_UNUSED_RESULT Maybe<bool> InstantiateModule(Local<Context> context,
|
1162
|
+
ResolveCallback callback);
|
1103
1163
|
|
1104
1164
|
/**
|
1105
1165
|
* ModuleEvaluation
|
1106
1166
|
*
|
1107
1167
|
* Returns the completion value.
|
1168
|
+
* TODO(neis): Be more precise or say nothing.
|
1108
1169
|
*/
|
1109
1170
|
V8_WARN_UNUSED_RESULT MaybeLocal<Value> Evaluate(Local<Context> context);
|
1110
|
-
};
|
1111
|
-
|
1112
|
-
/**
|
1113
|
-
* This is an unfinished experimental feature, and is only exposed
|
1114
|
-
* here for internal testing purposes. DO NOT USE.
|
1115
|
-
*
|
1116
|
-
* A compiled JavaScript module.
|
1117
|
-
*/
|
1118
|
-
class V8_EXPORT DynamicImportResult {
|
1119
|
-
public:
|
1120
|
-
/**
|
1121
|
-
* Resolves the promise with the namespace object of the given
|
1122
|
-
* module.
|
1123
|
-
*/
|
1124
|
-
V8_WARN_UNUSED_RESULT bool FinishDynamicImportSuccess(Local<Context> context,
|
1125
|
-
Local<Module> module);
|
1126
1171
|
|
1127
1172
|
/**
|
1128
|
-
*
|
1173
|
+
* Returns the namespace object of this module.
|
1174
|
+
* The module's status must be kEvaluated.
|
1129
1175
|
*/
|
1130
|
-
|
1131
|
-
Local<Value> exception);
|
1176
|
+
Local<Value> GetModuleNamespace();
|
1132
1177
|
};
|
1133
1178
|
|
1134
1179
|
/**
|
@@ -1681,7 +1726,16 @@ class V8_EXPORT StackFrame {
|
|
1681
1726
|
|
1682
1727
|
|
1683
1728
|
// A StateTag represents a possible state of the VM.
|
1684
|
-
enum StateTag {
|
1729
|
+
enum StateTag {
|
1730
|
+
JS,
|
1731
|
+
GC,
|
1732
|
+
PARSER,
|
1733
|
+
BYTECODE_COMPILER,
|
1734
|
+
COMPILER,
|
1735
|
+
OTHER,
|
1736
|
+
EXTERNAL,
|
1737
|
+
IDLE
|
1738
|
+
};
|
1685
1739
|
|
1686
1740
|
// A RegisterState represents the current state of registers used
|
1687
1741
|
// by the sampling profiler API.
|
@@ -2398,7 +2452,8 @@ enum class NewStringType {
|
|
2398
2452
|
*/
|
2399
2453
|
class V8_EXPORT String : public Name {
|
2400
2454
|
public:
|
2401
|
-
static
|
2455
|
+
static constexpr int kMaxLength =
|
2456
|
+
sizeof(void*) == 4 ? (1 << 28) - 16 : (1 << 30) - 1 - 24;
|
2402
2457
|
|
2403
2458
|
enum Encoding {
|
2404
2459
|
UNKNOWN_ENCODING = 0x1,
|
@@ -2717,7 +2772,9 @@ class V8_EXPORT String : public Name {
|
|
2717
2772
|
*/
|
2718
2773
|
class V8_EXPORT Utf8Value {
|
2719
2774
|
public:
|
2720
|
-
|
2775
|
+
V8_DEPRECATE_SOON("Use Isolate version",
|
2776
|
+
explicit Utf8Value(Local<v8::Value> obj));
|
2777
|
+
Utf8Value(Isolate* isolate, Local<v8::Value> obj);
|
2721
2778
|
~Utf8Value();
|
2722
2779
|
char* operator*() { return str_; }
|
2723
2780
|
const char* operator*() const { return str_; }
|
@@ -2740,7 +2797,9 @@ class V8_EXPORT String : public Name {
|
|
2740
2797
|
*/
|
2741
2798
|
class V8_EXPORT Value {
|
2742
2799
|
public:
|
2743
|
-
|
2800
|
+
V8_DEPRECATE_SOON("Use Isolate version",
|
2801
|
+
explicit Value(Local<v8::Value> obj));
|
2802
|
+
Value(Isolate* isolate, Local<v8::Value> obj);
|
2744
2803
|
~Value();
|
2745
2804
|
uint16_t* operator*() { return str_; }
|
2746
2805
|
const uint16_t* operator*() const { return str_; }
|
@@ -3053,12 +3112,9 @@ class V8_EXPORT Object : public Value {
|
|
3053
3112
|
//
|
3054
3113
|
// Note also that this only works for named properties.
|
3055
3114
|
V8_DEPRECATED("Use CreateDataProperty / DefineOwnProperty",
|
3056
|
-
bool ForceSet(Local<
|
3057
|
-
|
3058
|
-
|
3059
|
-
Maybe<bool> ForceSet(Local<Context> context,
|
3060
|
-
Local<Value> key, Local<Value> value,
|
3061
|
-
PropertyAttribute attribs = None));
|
3115
|
+
Maybe<bool> ForceSet(Local<Context> context, Local<Value> key,
|
3116
|
+
Local<Value> value,
|
3117
|
+
PropertyAttribute attribs = None));
|
3062
3118
|
|
3063
3119
|
V8_DEPRECATE_SOON("Use maybe version", Local<Value> Get(Local<Value> key));
|
3064
3120
|
V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
|
@@ -4123,6 +4179,46 @@ class V8_EXPORT WasmCompiledModule : public Object {
|
|
4123
4179
|
static void CheckCast(Value* obj);
|
4124
4180
|
};
|
4125
4181
|
|
4182
|
+
// TODO(mtrofin): when streaming compilation is done, we can rename this
|
4183
|
+
// to simply WasmModuleObjectBuilder
|
4184
|
+
class V8_EXPORT WasmModuleObjectBuilderStreaming final {
|
4185
|
+
public:
|
4186
|
+
WasmModuleObjectBuilderStreaming(Isolate* isolate);
|
4187
|
+
// The buffer passed into OnBytesReceived is owned by the caller.
|
4188
|
+
void OnBytesReceived(const uint8_t*, size_t size);
|
4189
|
+
void Finish();
|
4190
|
+
void Abort(Local<Value> exception);
|
4191
|
+
Local<Promise> GetPromise();
|
4192
|
+
|
4193
|
+
~WasmModuleObjectBuilderStreaming();
|
4194
|
+
|
4195
|
+
private:
|
4196
|
+
typedef std::pair<std::unique_ptr<const uint8_t[]>, size_t> Buffer;
|
4197
|
+
|
4198
|
+
WasmModuleObjectBuilderStreaming(const WasmModuleObjectBuilderStreaming&) =
|
4199
|
+
delete;
|
4200
|
+
WasmModuleObjectBuilderStreaming(WasmModuleObjectBuilderStreaming&&) =
|
4201
|
+
default;
|
4202
|
+
WasmModuleObjectBuilderStreaming& operator=(
|
4203
|
+
const WasmModuleObjectBuilderStreaming&) = delete;
|
4204
|
+
WasmModuleObjectBuilderStreaming& operator=(
|
4205
|
+
WasmModuleObjectBuilderStreaming&&) = default;
|
4206
|
+
Isolate* isolate_ = nullptr;
|
4207
|
+
|
4208
|
+
#if V8_CC_MSVC
|
4209
|
+
// We don't need the static Copy API, so the default
|
4210
|
+
// NonCopyablePersistentTraits would be sufficient, however,
|
4211
|
+
// MSVC eagerly instantiates the Copy.
|
4212
|
+
// We ensure we don't use Copy, however, by compiling with the
|
4213
|
+
// defaults everywhere else.
|
4214
|
+
Persistent<Promise, CopyablePersistentTraits<Promise>> promise_;
|
4215
|
+
#else
|
4216
|
+
Persistent<Promise> promise_;
|
4217
|
+
#endif
|
4218
|
+
std::vector<Buffer> received_buffers_;
|
4219
|
+
size_t total_size_ = 0;
|
4220
|
+
};
|
4221
|
+
|
4126
4222
|
class V8_EXPORT WasmModuleObjectBuilder final {
|
4127
4223
|
public:
|
4128
4224
|
WasmModuleObjectBuilder(Isolate* isolate) : isolate_(isolate) {}
|
@@ -4247,7 +4343,18 @@ class V8_EXPORT ArrayBuffer : public Object {
|
|
4247
4343
|
*/
|
4248
4344
|
class V8_EXPORT Contents { // NOLINT
|
4249
4345
|
public:
|
4250
|
-
Contents()
|
4346
|
+
Contents()
|
4347
|
+
: data_(nullptr),
|
4348
|
+
byte_length_(0),
|
4349
|
+
allocation_base_(nullptr),
|
4350
|
+
allocation_length_(0),
|
4351
|
+
allocation_mode_(Allocator::AllocationMode::kNormal) {}
|
4352
|
+
|
4353
|
+
void* AllocationBase() const { return allocation_base_; }
|
4354
|
+
size_t AllocationLength() const { return allocation_length_; }
|
4355
|
+
Allocator::AllocationMode AllocationMode() const {
|
4356
|
+
return allocation_mode_;
|
4357
|
+
}
|
4251
4358
|
|
4252
4359
|
void* Data() const { return data_; }
|
4253
4360
|
size_t ByteLength() const { return byte_length_; }
|
@@ -4255,6 +4362,9 @@ class V8_EXPORT ArrayBuffer : public Object {
|
|
4255
4362
|
private:
|
4256
4363
|
void* data_;
|
4257
4364
|
size_t byte_length_;
|
4365
|
+
void* allocation_base_;
|
4366
|
+
size_t allocation_length_;
|
4367
|
+
Allocator::AllocationMode allocation_mode_;
|
4258
4368
|
|
4259
4369
|
friend class ArrayBuffer;
|
4260
4370
|
};
|
@@ -4400,6 +4510,12 @@ class V8_EXPORT ArrayBufferView : public Object {
|
|
4400
4510
|
*/
|
4401
4511
|
class V8_EXPORT TypedArray : public ArrayBufferView {
|
4402
4512
|
public:
|
4513
|
+
/*
|
4514
|
+
* The largest typed array size that can be constructed using New.
|
4515
|
+
*/
|
4516
|
+
static constexpr size_t kMaxLength =
|
4517
|
+
sizeof(void*) == 4 ? (1u << 30) - 1 : (1u << 31) - 1;
|
4518
|
+
|
4403
4519
|
/**
|
4404
4520
|
* Number of elements in this typed array
|
4405
4521
|
* (e.g. for Int16Array, |ByteLength|/2).
|
@@ -4603,7 +4719,18 @@ class V8_EXPORT SharedArrayBuffer : public Object {
|
|
4603
4719
|
*/
|
4604
4720
|
class V8_EXPORT Contents { // NOLINT
|
4605
4721
|
public:
|
4606
|
-
Contents()
|
4722
|
+
Contents()
|
4723
|
+
: data_(nullptr),
|
4724
|
+
byte_length_(0),
|
4725
|
+
allocation_base_(nullptr),
|
4726
|
+
allocation_length_(0),
|
4727
|
+
allocation_mode_(ArrayBuffer::Allocator::AllocationMode::kNormal) {}
|
4728
|
+
|
4729
|
+
void* AllocationBase() const { return allocation_base_; }
|
4730
|
+
size_t AllocationLength() const { return allocation_length_; }
|
4731
|
+
ArrayBuffer::Allocator::AllocationMode AllocationMode() const {
|
4732
|
+
return allocation_mode_;
|
4733
|
+
}
|
4607
4734
|
|
4608
4735
|
void* Data() const { return data_; }
|
4609
4736
|
size_t ByteLength() const { return byte_length_; }
|
@@ -4611,6 +4738,9 @@ class V8_EXPORT SharedArrayBuffer : public Object {
|
|
4611
4738
|
private:
|
4612
4739
|
void* data_;
|
4613
4740
|
size_t byte_length_;
|
4741
|
+
void* allocation_base_;
|
4742
|
+
size_t allocation_length_;
|
4743
|
+
ArrayBuffer::Allocator::AllocationMode allocation_mode_;
|
4614
4744
|
|
4615
4745
|
friend class SharedArrayBuffer;
|
4616
4746
|
};
|
@@ -4857,6 +4987,7 @@ class V8_EXPORT External : public Value {
|
|
4857
4987
|
F(ArrayProto_forEach, array_for_each_iterator) \
|
4858
4988
|
F(ArrayProto_keys, array_keys_iterator) \
|
4859
4989
|
F(ArrayProto_values, array_values_iterator) \
|
4990
|
+
F(ErrorPrototype, initial_error_prototype) \
|
4860
4991
|
F(IteratorPrototype, initial_iterator_prototype)
|
4861
4992
|
|
4862
4993
|
enum Intrinsic {
|
@@ -4995,7 +5126,6 @@ typedef void (*NamedPropertyDeleterCallback)(
|
|
4995
5126
|
Local<String> property,
|
4996
5127
|
const PropertyCallbackInfo<Boolean>& info);
|
4997
5128
|
|
4998
|
-
|
4999
5129
|
/**
|
5000
5130
|
* Returns an array containing the names of the properties the named
|
5001
5131
|
* property getter intercepts.
|
@@ -5119,7 +5249,6 @@ typedef void (*GenericNamedPropertyQueryCallback)(
|
|
5119
5249
|
typedef void (*GenericNamedPropertyDeleterCallback)(
|
5120
5250
|
Local<Name> property, const PropertyCallbackInfo<Boolean>& info);
|
5121
5251
|
|
5122
|
-
|
5123
5252
|
/**
|
5124
5253
|
* Returns an array containing the names of the properties the named
|
5125
5254
|
* property getter intercepts.
|
@@ -5921,6 +6050,8 @@ V8_INLINE Local<Boolean> False(Isolate* isolate);
|
|
5921
6050
|
*
|
5922
6051
|
* The arguments for set_max_semi_space_size, set_max_old_space_size,
|
5923
6052
|
* set_max_executable_size, set_code_range_size specify limits in MB.
|
6053
|
+
*
|
6054
|
+
* The argument for set_max_semi_space_size_in_kb is in KB.
|
5924
6055
|
*/
|
5925
6056
|
class V8_EXPORT ResourceConstraints {
|
5926
6057
|
public:
|
@@ -5938,10 +6069,28 @@ class V8_EXPORT ResourceConstraints {
|
|
5938
6069
|
void ConfigureDefaults(uint64_t physical_memory,
|
5939
6070
|
uint64_t virtual_memory_limit);
|
5940
6071
|
|
5941
|
-
|
5942
|
-
|
5943
|
-
|
6072
|
+
// Returns the max semi-space size in MB.
|
6073
|
+
V8_DEPRECATE_SOON("Use max_semi_space_size_in_kb()",
|
6074
|
+
int max_semi_space_size()) {
|
6075
|
+
return static_cast<int>(max_semi_space_size_in_kb_ / 1024);
|
6076
|
+
}
|
6077
|
+
|
6078
|
+
// Sets the max semi-space size in MB.
|
6079
|
+
V8_DEPRECATE_SOON("Use set_max_semi_space_size_in_kb(size_t limit_in_kb)",
|
6080
|
+
void set_max_semi_space_size(int limit_in_mb)) {
|
6081
|
+
max_semi_space_size_in_kb_ = limit_in_mb * 1024;
|
6082
|
+
}
|
6083
|
+
|
6084
|
+
// Returns the max semi-space size in KB.
|
6085
|
+
size_t max_semi_space_size_in_kb() const {
|
6086
|
+
return max_semi_space_size_in_kb_;
|
5944
6087
|
}
|
6088
|
+
|
6089
|
+
// Sets the max semi-space size in KB.
|
6090
|
+
void set_max_semi_space_size_in_kb(size_t limit_in_kb) {
|
6091
|
+
max_semi_space_size_in_kb_ = limit_in_kb;
|
6092
|
+
}
|
6093
|
+
|
5945
6094
|
int max_old_space_size() const { return max_old_space_size_; }
|
5946
6095
|
void set_max_old_space_size(int limit_in_mb) {
|
5947
6096
|
max_old_space_size_ = limit_in_mb;
|
@@ -5967,7 +6116,10 @@ class V8_EXPORT ResourceConstraints {
|
|
5967
6116
|
}
|
5968
6117
|
|
5969
6118
|
private:
|
5970
|
-
|
6119
|
+
// max_semi_space_size_ is in KB
|
6120
|
+
size_t max_semi_space_size_in_kb_;
|
6121
|
+
|
6122
|
+
// The remaining limits are in MB
|
5971
6123
|
int max_old_space_size_;
|
5972
6124
|
int max_executable_size_;
|
5973
6125
|
uint32_t* stack_limit_;
|
@@ -6055,21 +6207,25 @@ typedef void (*DeprecatedCallCompletedCallback)();
|
|
6055
6207
|
/**
|
6056
6208
|
* HostImportDynamicallyCallback is called when we require the
|
6057
6209
|
* embedder to load a module. This is used as part of the dynamic
|
6058
|
-
* import syntax.
|
6059
|
-
* EcmaScript.
|
6210
|
+
* import syntax.
|
6060
6211
|
*
|
6061
6212
|
* The referrer is the name of the file which calls the dynamic
|
6062
6213
|
* import. The referrer can be used to resolve the module location.
|
6063
6214
|
*
|
6064
6215
|
* The specifier is the name of the module that should be imported.
|
6065
6216
|
*
|
6066
|
-
* The
|
6067
|
-
*
|
6217
|
+
* The embedder must compile, instantiate, evaluate the Module, and
|
6218
|
+
* obtain it's namespace object.
|
6068
6219
|
*
|
6220
|
+
* The Promise returned from this function is forwarded to userland
|
6221
|
+
* JavaScript. The embedder must resolve this promise with the module
|
6222
|
+
* namespace object. In case of an exception, the embedder must reject
|
6223
|
+
* this promise with the exception. If the promise creation itself
|
6224
|
+
* fails (e.g. due to stack overflow), the embedder must propagate
|
6225
|
+
* that exception by returning an empty MaybeLocal.
|
6069
6226
|
*/
|
6070
|
-
typedef
|
6071
|
-
|
6072
|
-
Local<DynamicImportResult> result);
|
6227
|
+
typedef MaybeLocal<Promise> (*HostImportModuleDynamicallyCallback)(
|
6228
|
+
Local<Context> context, Local<String> referrer, Local<String> specifier);
|
6073
6229
|
|
6074
6230
|
/**
|
6075
6231
|
* PromiseHook with type kInit is called when a new promise is
|
@@ -6192,11 +6348,16 @@ typedef void (*FailedAccessCheckCallback)(Local<Object> target,
|
|
6192
6348
|
* Callback to check if code generation from strings is allowed. See
|
6193
6349
|
* Context::AllowCodeGenerationFromStrings.
|
6194
6350
|
*/
|
6195
|
-
typedef bool (*AllowCodeGenerationFromStringsCallback)(Local<Context> context
|
6351
|
+
typedef bool (*AllowCodeGenerationFromStringsCallback)(Local<Context> context,
|
6352
|
+
Local<String> source);
|
6196
6353
|
|
6197
|
-
// ---
|
6354
|
+
// --- WebAssembly compilation callbacks ---
|
6198
6355
|
typedef bool (*ExtensionCallback)(const FunctionCallbackInfo<Value>&);
|
6199
6356
|
|
6357
|
+
// --- Callback for APIs defined on v8-supported objects, but implemented
|
6358
|
+
// by the embedder. Example: WebAssembly.{compile|instantiate}Streaming ---
|
6359
|
+
typedef void (*ApiImplementationCallback)(const FunctionCallbackInfo<Value>&);
|
6360
|
+
|
6200
6361
|
// --- Garbage Collection Callbacks ---
|
6201
6362
|
|
6202
6363
|
/**
|
@@ -6397,7 +6558,7 @@ struct JitCodeEvent {
|
|
6397
6558
|
struct line_info_t {
|
6398
6559
|
// PC offset
|
6399
6560
|
size_t offset;
|
6400
|
-
// Code
|
6561
|
+
// Code position
|
6401
6562
|
size_t pos;
|
6402
6563
|
// The position type.
|
6403
6564
|
PositionType position_type;
|
@@ -6620,8 +6781,7 @@ class V8_EXPORT Isolate {
|
|
6620
6781
|
add_histogram_sample_callback(nullptr),
|
6621
6782
|
array_buffer_allocator(nullptr),
|
6622
6783
|
external_references(nullptr),
|
6623
|
-
allow_atomics_wait(true)
|
6624
|
-
host_import_module_dynamically_callback_(nullptr) {}
|
6784
|
+
allow_atomics_wait(true) {}
|
6625
6785
|
|
6626
6786
|
/**
|
6627
6787
|
* The optional entry_hook allows the host application to provide the
|
@@ -6677,23 +6837,13 @@ class V8_EXPORT Isolate {
|
|
6677
6837
|
* deserialization. This array and its content must stay valid for the
|
6678
6838
|
* entire lifetime of the isolate.
|
6679
6839
|
*/
|
6680
|
-
intptr_t* external_references;
|
6840
|
+
const intptr_t* external_references;
|
6681
6841
|
|
6682
6842
|
/**
|
6683
6843
|
* Whether calling Atomics.wait (a function that may block) is allowed in
|
6684
6844
|
* this isolate. This can also be configured via SetAllowAtomicsWait.
|
6685
6845
|
*/
|
6686
6846
|
bool allow_atomics_wait;
|
6687
|
-
|
6688
|
-
/**
|
6689
|
-
* This is an unfinished experimental feature, and is only exposed
|
6690
|
-
* here for internal testing purposes. DO NOT USE.
|
6691
|
-
*
|
6692
|
-
* This specifies the callback called by the upcoming dynamic
|
6693
|
-
* import() language feature to load modules.
|
6694
|
-
*/
|
6695
|
-
HostImportModuleDynamicallyCallback
|
6696
|
-
host_import_module_dynamically_callback_;
|
6697
6847
|
};
|
6698
6848
|
|
6699
6849
|
|
@@ -6832,6 +6982,8 @@ class V8_EXPORT Isolate {
|
|
6832
6982
|
kAssigmentExpressionLHSIsCallInSloppy = 36,
|
6833
6983
|
kAssigmentExpressionLHSIsCallInStrict = 37,
|
6834
6984
|
kPromiseConstructorReturnedUndefined = 38,
|
6985
|
+
kConstructorNonUndefinedPrimitiveReturn = 39,
|
6986
|
+
kLabeledExpressionStatement = 40,
|
6835
6987
|
|
6836
6988
|
// If you add new values here, you'll also need to update Chromium's:
|
6837
6989
|
// UseCounter.h, V8PerIsolateData.cpp, histograms.xml
|
@@ -6884,6 +7036,16 @@ class V8_EXPORT Isolate {
|
|
6884
7036
|
void SetAbortOnUncaughtExceptionCallback(
|
6885
7037
|
AbortOnUncaughtExceptionCallback callback);
|
6886
7038
|
|
7039
|
+
/**
|
7040
|
+
* This is an unfinished experimental feature, and is only exposed
|
7041
|
+
* here for internal testing purposes. DO NOT USE.
|
7042
|
+
*
|
7043
|
+
* This specifies the callback called by the upcoming dynamic
|
7044
|
+
* import() language feature to load modules.
|
7045
|
+
*/
|
7046
|
+
void SetHostImportModuleDynamicallyCallback(
|
7047
|
+
HostImportModuleDynamicallyCallback callback);
|
7048
|
+
|
6887
7049
|
/**
|
6888
7050
|
* Optional notification that the system is running low on memory.
|
6889
7051
|
* V8 uses these notifications to guide heuristics.
|
@@ -7081,6 +7243,12 @@ class V8_EXPORT Isolate {
|
|
7081
7243
|
*/
|
7082
7244
|
Local<Context> GetEnteredOrMicrotaskContext();
|
7083
7245
|
|
7246
|
+
/**
|
7247
|
+
* Returns the Context that corresponds to the Incumbent realm in HTML spec.
|
7248
|
+
* https://html.spec.whatwg.org/multipage/webappapis.html#incumbent
|
7249
|
+
*/
|
7250
|
+
Local<Context> GetIncumbentContext();
|
7251
|
+
|
7084
7252
|
/**
|
7085
7253
|
* Schedules an exception to be thrown when returning to JavaScript. When an
|
7086
7254
|
* exception has been scheduled it is illegal to invoke any JavaScript
|
@@ -7133,6 +7301,17 @@ class V8_EXPORT Isolate {
|
|
7133
7301
|
*/
|
7134
7302
|
void RemoveGCEpilogueCallback(GCCallback callback);
|
7135
7303
|
|
7304
|
+
typedef size_t (*GetExternallyAllocatedMemoryInBytesCallback)();
|
7305
|
+
|
7306
|
+
/**
|
7307
|
+
* Set the callback that tells V8 how much memory is currently allocated
|
7308
|
+
* externally of the V8 heap. Ideally this memory is somehow connected to V8
|
7309
|
+
* objects and may get freed-up when the corresponding V8 objects get
|
7310
|
+
* collected by a V8 garbage collection.
|
7311
|
+
*/
|
7312
|
+
void SetGetExternallyAllocatedMemoryInBytesCallback(
|
7313
|
+
GetExternallyAllocatedMemoryInBytesCallback callback);
|
7314
|
+
|
7136
7315
|
/**
|
7137
7316
|
* Forcefully terminate the current thread of JavaScript execution
|
7138
7317
|
* in the given isolate.
|
@@ -7230,8 +7409,8 @@ class V8_EXPORT Isolate {
|
|
7230
7409
|
DeprecatedCallCompletedCallback callback));
|
7231
7410
|
|
7232
7411
|
/**
|
7233
|
-
*
|
7234
|
-
*
|
7412
|
+
* Set the PromiseHook callback for various promise lifecycle
|
7413
|
+
* events.
|
7235
7414
|
*/
|
7236
7415
|
void SetPromiseHook(PromiseHook hook);
|
7237
7416
|
|
@@ -7450,12 +7629,13 @@ class V8_EXPORT Isolate {
|
|
7450
7629
|
AllowCodeGenerationFromStringsCallback callback);
|
7451
7630
|
|
7452
7631
|
/**
|
7453
|
-
* Embedder over{ride|load} injection points for wasm APIs.
|
7632
|
+
* Embedder over{ride|load} injection points for wasm APIs. The expectation
|
7633
|
+
* is that the embedder sets them at most once.
|
7454
7634
|
*/
|
7455
7635
|
void SetWasmModuleCallback(ExtensionCallback callback);
|
7456
|
-
void SetWasmCompileCallback(ExtensionCallback callback);
|
7457
7636
|
void SetWasmInstanceCallback(ExtensionCallback callback);
|
7458
|
-
|
7637
|
+
|
7638
|
+
void SetWasmCompileStreamingCallback(ApiImplementationCallback callback);
|
7459
7639
|
|
7460
7640
|
/**
|
7461
7641
|
* Check if V8 is dead and therefore unusable. This is the case after
|
@@ -7552,14 +7732,19 @@ class V8_EXPORT Isolate {
|
|
7552
7732
|
~Isolate() = delete;
|
7553
7733
|
Isolate(const Isolate&) = delete;
|
7554
7734
|
Isolate& operator=(const Isolate&) = delete;
|
7735
|
+
// Deleting operator new and delete here is allowed as ctor and dtor is also
|
7736
|
+
// deleted.
|
7555
7737
|
void* operator new(size_t size) = delete;
|
7738
|
+
void* operator new[](size_t size) = delete;
|
7556
7739
|
void operator delete(void*, size_t) = delete;
|
7740
|
+
void operator delete[](void*, size_t) = delete;
|
7557
7741
|
|
7558
7742
|
private:
|
7559
7743
|
template <class K, class V, class Traits>
|
7560
7744
|
friend class PersistentValueMapBase;
|
7561
7745
|
|
7562
7746
|
void ReportExternalAllocationLimitReached();
|
7747
|
+
void CheckMemoryPressure();
|
7563
7748
|
};
|
7564
7749
|
|
7565
7750
|
class V8_EXPORT StartupData {
|
@@ -7579,7 +7764,7 @@ typedef bool (*EntropySource)(unsigned char* buffer, size_t length);
|
|
7579
7764
|
* ReturnAddressLocationResolver is used as a callback function when v8 is
|
7580
7765
|
* resolving the location of a return address on the stack. Profilers that
|
7581
7766
|
* change the return address on the stack can use this to resolve the stack
|
7582
|
-
* location to
|
7767
|
+
* location to wherever the profiler stashed the original return address.
|
7583
7768
|
*
|
7584
7769
|
* \param return_addr_location A location on stack where a machine
|
7585
7770
|
* return address resides.
|
@@ -7602,14 +7787,6 @@ class V8_EXPORT V8 {
|
|
7602
7787
|
"Use isolate version",
|
7603
7788
|
void SetFatalErrorHandler(FatalErrorCallback that));
|
7604
7789
|
|
7605
|
-
/**
|
7606
|
-
* Set the callback to invoke to check if code generation from
|
7607
|
-
* strings should be allowed.
|
7608
|
-
*/
|
7609
|
-
V8_INLINE static V8_DEPRECATED(
|
7610
|
-
"Use isolate version", void SetAllowCodeGenerationFromStringsCallback(
|
7611
|
-
AllowCodeGenerationFromStringsCallback that));
|
7612
|
-
|
7613
7790
|
/**
|
7614
7791
|
* Check if V8 is dead and therefore unusable. This is the case after
|
7615
7792
|
* fatal errors such as out-of-memory situations.
|
@@ -7919,7 +8096,7 @@ class V8_EXPORT V8 {
|
|
7919
8096
|
*/
|
7920
8097
|
static void ShutdownPlatform();
|
7921
8098
|
|
7922
|
-
#if
|
8099
|
+
#if V8_OS_POSIX
|
7923
8100
|
/**
|
7924
8101
|
* Give the V8 signal handler a chance to handle a fault.
|
7925
8102
|
*
|
@@ -7940,7 +8117,7 @@ class V8_EXPORT V8 {
|
|
7940
8117
|
* points to a ucontext_t structure.
|
7941
8118
|
*/
|
7942
8119
|
static bool TryHandleSignal(int signal_number, void* info, void* context);
|
7943
|
-
#endif //
|
8120
|
+
#endif // V8_OS_POSIX
|
7944
8121
|
|
7945
8122
|
/**
|
7946
8123
|
* Enable the default signal handler rather than using one provided by the
|
@@ -8005,7 +8182,7 @@ class V8_EXPORT SnapshotCreator {
|
|
8005
8182
|
* \param external_references a null-terminated array of external references
|
8006
8183
|
* that must be equivalent to CreateParams::external_references.
|
8007
8184
|
*/
|
8008
|
-
SnapshotCreator(intptr_t* external_references = nullptr,
|
8185
|
+
SnapshotCreator(const intptr_t* external_references = nullptr,
|
8009
8186
|
StartupData* existing_blob = nullptr);
|
8010
8187
|
|
8011
8188
|
~SnapshotCreator();
|
@@ -8019,8 +8196,12 @@ class V8_EXPORT SnapshotCreator {
|
|
8019
8196
|
* Set the default context to be included in the snapshot blob.
|
8020
8197
|
* The snapshot will not contain the global proxy, and we expect one or a
|
8021
8198
|
* global object template to create one, to be provided upon deserialization.
|
8199
|
+
*
|
8200
|
+
* \param callback optional callback to serialize internal fields.
|
8022
8201
|
*/
|
8023
|
-
void SetDefaultContext(Local<Context> context
|
8202
|
+
void SetDefaultContext(Local<Context> context,
|
8203
|
+
SerializeInternalFieldsCallback callback =
|
8204
|
+
SerializeInternalFieldsCallback());
|
8024
8205
|
|
8025
8206
|
/**
|
8026
8207
|
* Add additional context to be included in the snapshot blob.
|
@@ -8279,10 +8460,15 @@ class V8_EXPORT TryCatch {
|
|
8279
8460
|
|
8280
8461
|
TryCatch(const TryCatch&) = delete;
|
8281
8462
|
void operator=(const TryCatch&) = delete;
|
8463
|
+
|
8464
|
+
private:
|
8465
|
+
// Declaring operator new and delete as deleted is not spec compliant.
|
8466
|
+
// Therefore declare them private instead to disable dynamic alloc
|
8282
8467
|
void* operator new(size_t size);
|
8468
|
+
void* operator new[](size_t size);
|
8283
8469
|
void operator delete(void*, size_t);
|
8470
|
+
void operator delete[](void*, size_t);
|
8284
8471
|
|
8285
|
-
private:
|
8286
8472
|
void ResetInternal();
|
8287
8473
|
|
8288
8474
|
internal::Isolate* isolate_;
|
@@ -8367,7 +8553,9 @@ class V8_EXPORT Context {
|
|
8367
8553
|
static Local<Context> New(
|
8368
8554
|
Isolate* isolate, ExtensionConfiguration* extensions = NULL,
|
8369
8555
|
MaybeLocal<ObjectTemplate> global_template = MaybeLocal<ObjectTemplate>(),
|
8370
|
-
MaybeLocal<Value> global_object = MaybeLocal<Value>()
|
8556
|
+
MaybeLocal<Value> global_object = MaybeLocal<Value>(),
|
8557
|
+
DeserializeInternalFieldsCallback internal_fields_deserializer =
|
8558
|
+
DeserializeInternalFieldsCallback());
|
8371
8559
|
|
8372
8560
|
/**
|
8373
8561
|
* Create a new context from a (non-default) context snapshot. There
|
@@ -8535,6 +8723,27 @@ class V8_EXPORT Context {
|
|
8535
8723
|
Local<Context> context_;
|
8536
8724
|
};
|
8537
8725
|
|
8726
|
+
/**
|
8727
|
+
* Stack-allocated class to support the backup incumbent settings object
|
8728
|
+
* stack.
|
8729
|
+
* https://html.spec.whatwg.org/multipage/webappapis.html#backup-incumbent-settings-object-stack
|
8730
|
+
*/
|
8731
|
+
class BackupIncumbentScope {
|
8732
|
+
public:
|
8733
|
+
/**
|
8734
|
+
* |backup_incumbent_context| is pushed onto the backup incumbent settings
|
8735
|
+
* object stack.
|
8736
|
+
*/
|
8737
|
+
explicit BackupIncumbentScope(Local<Context> backup_incumbent_context);
|
8738
|
+
~BackupIncumbentScope();
|
8739
|
+
|
8740
|
+
private:
|
8741
|
+
friend class internal::Isolate;
|
8742
|
+
|
8743
|
+
Local<Context> backup_incumbent_context_;
|
8744
|
+
const BackupIncumbentScope* prev_ = nullptr;
|
8745
|
+
};
|
8746
|
+
|
8538
8747
|
private:
|
8539
8748
|
friend class Value;
|
8540
8749
|
friend class Script;
|
@@ -8782,6 +8991,8 @@ class Internals {
|
|
8782
8991
|
static const int kExternalMemoryOffset = 4 * kApiPointerSize;
|
8783
8992
|
static const int kExternalMemoryLimitOffset =
|
8784
8993
|
kExternalMemoryOffset + kApiInt64Size;
|
8994
|
+
static const int kExternalMemoryAtLastMarkCompactOffset =
|
8995
|
+
kExternalMemoryLimitOffset + kApiInt64Size;
|
8785
8996
|
static const int kIsolateRootsOffset = kExternalMemoryLimitOffset +
|
8786
8997
|
kApiInt64Size + kApiInt64Size +
|
8787
8998
|
kApiPointerSize + kApiPointerSize;
|
@@ -8801,8 +9012,8 @@ class Internals {
|
|
8801
9012
|
static const int kNodeIsIndependentShift = 3;
|
8802
9013
|
static const int kNodeIsActiveShift = 4;
|
8803
9014
|
|
8804
|
-
static const int kJSApiObjectType =
|
8805
|
-
static const int kJSObjectType =
|
9015
|
+
static const int kJSApiObjectType = 0xbd;
|
9016
|
+
static const int kJSObjectType = 0xbe;
|
8806
9017
|
static const int kFirstNonstringType = 0x80;
|
8807
9018
|
static const int kOddballType = 0x82;
|
8808
9019
|
static const int kForeignType = 0x86;
|
@@ -10000,13 +10211,32 @@ uint32_t Isolate::GetNumberOfDataSlots() {
|
|
10000
10211
|
int64_t Isolate::AdjustAmountOfExternalAllocatedMemory(
|
10001
10212
|
int64_t change_in_bytes) {
|
10002
10213
|
typedef internal::Internals I;
|
10214
|
+
const int64_t kMemoryReducerActivationLimit = 32 * 1024 * 1024;
|
10003
10215
|
int64_t* external_memory = reinterpret_cast<int64_t*>(
|
10004
10216
|
reinterpret_cast<uint8_t*>(this) + I::kExternalMemoryOffset);
|
10005
|
-
|
10217
|
+
int64_t* external_memory_limit = reinterpret_cast<int64_t*>(
|
10006
10218
|
reinterpret_cast<uint8_t*>(this) + I::kExternalMemoryLimitOffset);
|
10219
|
+
int64_t* external_memory_at_last_mc =
|
10220
|
+
reinterpret_cast<int64_t*>(reinterpret_cast<uint8_t*>(this) +
|
10221
|
+
I::kExternalMemoryAtLastMarkCompactOffset);
|
10007
10222
|
const int64_t amount = *external_memory + change_in_bytes;
|
10223
|
+
|
10008
10224
|
*external_memory = amount;
|
10009
|
-
|
10225
|
+
|
10226
|
+
int64_t allocation_diff_since_last_mc =
|
10227
|
+
*external_memory_at_last_mc - *external_memory;
|
10228
|
+
allocation_diff_since_last_mc = allocation_diff_since_last_mc < 0
|
10229
|
+
? -allocation_diff_since_last_mc
|
10230
|
+
: allocation_diff_since_last_mc;
|
10231
|
+
if (allocation_diff_since_last_mc > kMemoryReducerActivationLimit) {
|
10232
|
+
CheckMemoryPressure();
|
10233
|
+
}
|
10234
|
+
|
10235
|
+
if (change_in_bytes < 0) {
|
10236
|
+
*external_memory_limit += change_in_bytes;
|
10237
|
+
}
|
10238
|
+
|
10239
|
+
if (change_in_bytes > 0 && amount > *external_memory_limit) {
|
10010
10240
|
ReportExternalAllocationLimitReached();
|
10011
10241
|
}
|
10012
10242
|
return *external_memory;
|
@@ -10036,14 +10266,6 @@ void* Context::GetAlignedPointerFromEmbedderData(int index) {
|
|
10036
10266
|
#endif
|
10037
10267
|
}
|
10038
10268
|
|
10039
|
-
|
10040
|
-
void V8::SetAllowCodeGenerationFromStringsCallback(
|
10041
|
-
AllowCodeGenerationFromStringsCallback callback) {
|
10042
|
-
Isolate* isolate = Isolate::GetCurrent();
|
10043
|
-
isolate->SetAllowCodeGenerationFromStringsCallback(callback);
|
10044
|
-
}
|
10045
|
-
|
10046
|
-
|
10047
10269
|
bool V8::IsDead() {
|
10048
10270
|
Isolate* isolate = Isolate::GetCurrent();
|
10049
10271
|
return isolate->IsDead();
|