5#ifndef INCLUDE_V8_CONTEXT_H_
6#define INCLUDE_V8_CONTEXT_H_
28
29
34 : name_count_(name_count), names_(names) {}
36 const char**
begin()
const {
return &names_[0]; }
37 const char**
end()
const {
return &names_[name_count_]; }
40 const int name_count_;
45
46
47
51
52
53
54
55
56
57
58
59
60
61
65
66
67
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
164 Isolate* isolate, size_t context_snapshot_index,
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
197
198
199
209
210
211
212
213
217
218
219
223
224
225
229
230
231
232
233
234
235
236
242
243
244
245
246
247
248
249
250
251
252
253
254
255
260 "Use Isolate::GetCurrent() instead, which is guaranteed to return the "
261 "same isolate since https://crrev.com/c/6458560.")
271
272
273
277
278
282
283
284
288
289
290
291
292
296
297
298
299
303
304
305
306
307
313
314
315
316
318 "Use SetAlignedPointerInEmbedderData with EmbedderDataTypeTag parameter "
320 void SetAlignedPointerInEmbedderData(
int index,
void*
value);
323 EmbedderDataTypeTag slot);
326
327
328
329
330
331
332
333
334
335
336
337
341
342
343
347
348
349
350
354
355
356
360
361
362
363
368
369
370
371
372 using AbortScriptExecutionCallback =
void (*)(
Isolate* isolate,
377
378
379
380
381
382
389
390
391
404
405
406
407
411
412
413
420 uintptr_t JSStackComparableAddressPrivate()
const {
421 return js_stack_comparable_address_;
425 uintptr_t js_stack_comparable_address_ = 0;
426 const BackupIncumbentScope* prev_ =
nullptr;
437 static void CheckCast(
Data* obj);
439 internal::ValueHelper::InternalRepresentationType GetDataFromSnapshotOnce(
442 void* SlowGetAlignedPointerFromEmbedderData(
int index);
448#ifndef V8_ENABLE_CHECKS
451 A ctx =
internal::ValueHelper::ValueAsAddress(
this);
456 A value = I::ReadRawField<A>(embedder_data, value_offset);
457#ifdef V8_COMPRESS_POINTERS
460 value = I::DecompressTaggedField(embedder_data,
static_cast<uint32_t>(value));
464 return Local<Value>::New(isolate, value);
466 return SlowGetEmbedderData(index);
471#if !defined(V8_ENABLE_CHECKS)
474 A ctx =
internal::ValueHelper::ValueAsAddress(
this);
480 return reinterpret_cast<
void*>(
483 isolate, embedder_data, value_offset));
485 return SlowGetAlignedPointerFromEmbedderData(index);
490#if !defined(V8_ENABLE_CHECKS)
493 A ctx =
internal::ValueHelper::ValueAsAddress(
this);
500 return reinterpret_cast<
void*>(
503 isolate, embedder_data, value_offset));
505 return SlowGetAlignedPointerFromEmbedderData(index);
511 if (
auto repr = GetDataFromSnapshotOnce(index);
514 return Local<T>::FromRepr(repr);
520#ifdef V8_ENABLE_CHECKS
523 return static_cast<
Context*>(data);
BackupIncumbentScope(Local< Context > backup_incumbent_context)
virtual bool FreezeEmbedderObjectAndGetChildren(Local< Object > obj, LocalVector< Object > &children_out)=0
V8_INLINE Scope(Local< Context > context)
void SetEmbedderData(int index, Local< Value > value)
V8_INLINE Local< Value > GetEmbedderData(int index)
static MaybeLocal< Object > NewRemoteContext(Isolate *isolate, Local< ObjectTemplate > global_template, MaybeLocal< Value > global_object=MaybeLocal< Value >())
Local< Object > GetExtrasBindingObject()
bool IsCodeGenerationFromStringsAllowed() const
V8_INLINE void * GetAlignedPointerFromEmbedderData(int index)
void SetAlignedPointerInEmbedderData(int index, void *value, EmbedderDataTypeTag slot)
Local< Value > GetSecurityToken()
static MaybeLocal< Context > FromSnapshot(Isolate *isolate, size_t context_snapshot_index, DeserializeInternalFieldsCallback internal_fields_deserializer=DeserializeInternalFieldsCallback(), ExtensionConfiguration *extensions=nullptr, MaybeLocal< Value > global_object=MaybeLocal< Value >(), MicrotaskQueue *microtask_queue=nullptr, DeserializeContextDataCallback context_data_deserializer=DeserializeContextDataCallback(), DeserializeAPIWrapperCallback api_wrapper_deserializer=DeserializeAPIWrapperCallback())
void SetAbortScriptExecution(AbortScriptExecutionCallback callback)
V8_INLINE MaybeLocal< T > GetDataFromSnapshotOnce(size_t index)
void AllowCodeGenerationFromStrings(bool allow)
void SetErrorMessageForCodeGenerationFromStrings(Local< String > message)
void UseDefaultSecurityToken()
void SetMicrotaskQueue(MicrotaskQueue *queue)
MicrotaskQueue * GetMicrotaskQueue()
Maybe< void > DeepFreeze(DeepFreezeDelegate *delegate=nullptr)
V8_INLINE void * GetAlignedPointerFromEmbedderData(Isolate *isolate, int index)
void SetErrorMessageForWasmCodeGeneration(Local< String > message)
static V8_INLINE Context * Cast(Data *data)
void SetSecurityToken(Local< Value > token)
static Local< Context > New(Isolate *isolate, ExtensionConfiguration *extensions=nullptr, MaybeLocal< ObjectTemplate > global_template=MaybeLocal< ObjectTemplate >(), MaybeLocal< Value > global_object=MaybeLocal< Value >(), DeserializeInternalFieldsCallback internal_fields_deserializer=DeserializeInternalFieldsCallback(), MicrotaskQueue *microtask_queue=nullptr, DeserializeContextDataCallback context_data_deserializer=DeserializeContextDataCallback(), DeserializeAPIWrapperCallback api_wrapper_deserializer=DeserializeAPIWrapperCallback())
bool HasTemplateLiteralObject(Local< Value > object)
void SetPromiseHooks(Local< Function > init_hook, Local< Function > before_hook, Local< Function > after_hook, Local< Function > resolve_hook)
uint32_t GetNumberOfEmbedderDataFields()
const char ** begin() const
ExtensionConfiguration(int name_count, const char *names[])
const char ** end() const
static const int kNativeContextEmbedderDataOffset
static const int kEmbedderDataArrayHeaderSize
static const int kEmbedderDataSlotExternalPointerOffset
static V8_INLINE v8::Isolate * GetCurrentIsolateForSandbox()
static const int kEmbedderDataSlotSize
static V8_INLINE Address ReadTaggedPointerField(Address heap_object_ptr, int offset)
static V8_EXPORT v8::Isolate * GetCurrentIsolate()
static constexpr InternalRepresentationType kEmpty
DeserializeAPIWrapperCallback(CallbackFunction function=nullptr, void *data=nullptr)
DeserializeContextDataCallback(CallbackFunction function=nullptr, void *data_arg=nullptr)
DeserializeInternalFieldsCallback(CallbackFunction function=nullptr, void *data_arg=nullptr)
#define V8_DEPRECATE_SOON(message)
#define V8_DEPRECATED(message)