5#ifndef V8_OBJECTS_CONTEXTS_H_
6#define V8_OBJECTS_CONTEXTS_H_
21class ContextSidePropertyCell;
27struct VariableLookupResult;
46#define NATIVE_CONTEXT_FIELDS(V) \
47 V(GLOBAL_PROXY_INDEX, JSGlobalProxy, global_proxy_object) \
51 V(EMBEDDER_DATA_INDEX, HeapObject, embedder_data) \
52 V(CONTINUATION_PRESERVED_EMBEDDER_DATA_INDEX, HeapObject, \
53 continuation_preserved_embedder_data) \
54 V(GENERATOR_NEXT_INTERNAL, JSFunction, generator_next_internal) \
55 V(ASYNC_MODULE_EVALUATE_INTERNAL, JSFunction, \
56 async_module_evaluate_internal) \
57 V(REFLECT_APPLY_INDEX, JSFunction, reflect_apply) \
58 V(REFLECT_CONSTRUCT_INDEX, JSFunction, reflect_construct) \
59 V(PERFORM_PROMISE_THEN_INDEX, JSFunction, perform_promise_then) \
60 V(PROMISE_THEN_INDEX, JSFunction, promise_then) \
61 V(PROMISE_RESOLVE_INDEX, JSFunction, promise_resolve) \
62 V(FUNCTION_PROTOTYPE_APPLY_INDEX, JSFunction, function_prototype_apply) \
64 V(UINT8_ARRAY_FUN_INDEX, JSFunction, uint8_array_fun) \
65 V(INT8_ARRAY_FUN_INDEX, JSFunction, int8_array_fun) \
66 V(UINT16_ARRAY_FUN_INDEX, JSFunction, uint16_array_fun) \
67 V(INT16_ARRAY_FUN_INDEX, JSFunction, int16_array_fun) \
68 V(UINT32_ARRAY_FUN_INDEX, JSFunction, uint32_array_fun) \
69 V(INT32_ARRAY_FUN_INDEX, JSFunction, int32_array_fun) \
70 V(BIGUINT64_ARRAY_FUN_INDEX, JSFunction, biguint64_array_fun) \
71 V(BIGINT64_ARRAY_FUN_INDEX, JSFunction, bigint64_array_fun) \
72 V(UINT8_CLAMPED_ARRAY_FUN_INDEX, JSFunction, uint8_clamped_array_fun) \
73 V(FLOAT32_ARRAY_FUN_INDEX, JSFunction, float32_array_fun) \
74 V(FLOAT64_ARRAY_FUN_INDEX, JSFunction, float64_array_fun) \
75 V(FLOAT16_ARRAY_FUN_INDEX, JSFunction, float16_array_fun) \
76 V(RAB_GSAB_UINT8_ARRAY_MAP_INDEX, Map, rab_gsab_uint8_array_map) \
77 V(RAB_GSAB_INT8_ARRAY_MAP_INDEX, Map, rab_gsab_int8_array_map) \
78 V(RAB_GSAB_UINT16_ARRAY_MAP_INDEX, Map, rab_gsab_uint16_array_map) \
79 V(RAB_GSAB_INT16_ARRAY_MAP_INDEX, Map, rab_gsab_int16_array_map) \
80 V(RAB_GSAB_UINT32_ARRAY_MAP_INDEX, Map, rab_gsab_uint32_array_map) \
81 V(RAB_GSAB_INT32_ARRAY_MAP_INDEX, Map, rab_gsab_int32_array_map) \
82 V(RAB_GSAB_BIGUINT64_ARRAY_MAP_INDEX, Map, rab_gsab_biguint64_array_map) \
83 V(RAB_GSAB_BIGINT64_ARRAY_MAP_INDEX, Map, rab_gsab_bigint64_array_map) \
84 V(RAB_GSAB_UINT8_CLAMPED_ARRAY_MAP_INDEX, Map, \
85 rab_gsab_uint8_clamped_array_map) \
86 V(RAB_GSAB_FLOAT32_ARRAY_MAP_INDEX, Map, rab_gsab_float32_array_map) \
87 V(RAB_GSAB_FLOAT64_ARRAY_MAP_INDEX, Map, rab_gsab_float64_array_map) \
88 V(RAB_GSAB_FLOAT16_ARRAY_MAP_INDEX, Map, rab_gsab_float16_array_map) \
90 V(ABSTRACT_MODULE_SOURCE_FUNCTION_INDEX, JSFunction, \
91 abstract_module_source_function) \
92 V(ABSTRACT_MODULE_SOURCE_PROTOTYPE_INDEX, JSObject, \
93 abstract_module_source_prototype) \
94 V(ACCESSOR_PROPERTY_DESCRIPTOR_MAP_INDEX, Map, \
95 accessor_property_descriptor_map) \
96 V(ALLOW_CODE_GEN_FROM_STRINGS_INDEX, Object, allow_code_gen_from_strings) \
97 V(ARRAY_BUFFER_FUN_INDEX, JSFunction, array_buffer_fun) \
98 V(ARRAY_BUFFER_MAP_INDEX, Map, array_buffer_map) \
99 V(ARRAY_BUFFER_NOINIT_FUN_INDEX, JSFunction, array_buffer_noinit_fun) \
100 V(ARRAY_FUNCTION_INDEX, JSFunction, array_function) \
101 V(ARRAY_JOIN_STACK_INDEX, HeapObject, array_join_stack) \
102 V(ARRAY_FROM_ASYNC_INDEX, JSFunction, from_async) \
103 V(ASYNC_FROM_SYNC_ITERATOR_MAP_INDEX, Map, async_from_sync_iterator_map) \
104 V(ASYNC_FUNCTION_FUNCTION_INDEX, JSFunction, async_function_constructor) \
105 V(ASYNC_FUNCTION_OBJECT_MAP_INDEX, Map, async_function_object_map) \
106 V(ASYNC_GENERATOR_FUNCTION_FUNCTION_INDEX, JSFunction, \
107 async_generator_function_function) \
108 V(BIGINT_FUNCTION_INDEX, JSFunction, bigint_function) \
109 V(BOOLEAN_FUNCTION_INDEX, JSFunction, boolean_function) \
110 V(BOUND_FUNCTION_WITH_CONSTRUCTOR_MAP_INDEX, Map, \
111 bound_function_with_constructor_map) \
112 V(BOUND_FUNCTION_WITHOUT_CONSTRUCTOR_MAP_INDEX, Map, \
113 bound_function_without_constructor_map) \
114 V(CALL_AS_CONSTRUCTOR_DELEGATE_INDEX, JSFunction, \
115 call_as_constructor_delegate) \
116 V(CALL_AS_FUNCTION_DELEGATE_INDEX, JSFunction, call_as_function_delegate) \
117 V(CALLSITE_FUNCTION_INDEX, JSFunction, callsite_function) \
118 V(CONTEXT_EXTENSION_FUNCTION_INDEX, JSFunction, context_extension_function) \
119 V(DATA_PROPERTY_DESCRIPTOR_MAP_INDEX, Map, data_property_descriptor_map) \
120 V(DATA_VIEW_FUN_INDEX, JSFunction, data_view_fun) \
121 V(DATE_FUNCTION_INDEX, JSFunction, date_function) \
122 V(DEBUG_CONTEXT_ID_INDEX, (UnionOf<Smi, Undefined>), debug_context_id) \
123 V(EMPTY_FUNCTION_INDEX, JSFunction, empty_function) \
124 V(ERROR_MESSAGE_FOR_CODE_GEN_FROM_STRINGS_INDEX, Object, \
125 error_message_for_code_gen_from_strings) \
126 V(ERROR_MESSAGE_FOR_WASM_CODE_GEN_INDEX, Object, \
127 error_message_for_wasm_code_gen) \
128 V(ERRORS_THROWN_INDEX, Smi, errors_thrown) \
129 V(EXTRAS_BINDING_OBJECT_INDEX, JSObject, extras_binding_object) \
130 V(FAST_ALIASED_ARGUMENTS_MAP_INDEX, Map, fast_aliased_arguments_map) \
131 V(FAST_TEMPLATE_INSTANTIATIONS_CACHE_INDEX, FixedArray, \
132 fast_template_instantiations_cache) \
133 V(FUNCTION_FUNCTION_INDEX, JSFunction, function_function) \
134 V(FUNCTION_PROTOTYPE_INDEX, JSObject, function_prototype) \
135 V(GENERATOR_FUNCTION_FUNCTION_INDEX, JSFunction, \
136 generator_function_function) \
137 V(GENERATOR_OBJECT_PROTOTYPE_MAP_INDEX, Map, generator_object_prototype_map) \
138 V(ASYNC_GENERATOR_OBJECT_PROTOTYPE_MAP_INDEX, Map, \
139 async_generator_object_prototype_map) \
140 V(INITIAL_ARRAY_ITERATOR_MAP_INDEX, Map, initial_array_iterator_map) \
141 V(INITIAL_ARRAY_ITERATOR_PROTOTYPE_INDEX, JSObject, \
142 initial_array_iterator_prototype) \
143 V(INITIAL_ARRAY_PROTOTYPE_INDEX, JSObject, initial_array_prototype) \
144 V(INITIAL_ERROR_PROTOTYPE_INDEX, JSObject, initial_error_prototype) \
145 V(INITIAL_GENERATOR_PROTOTYPE_INDEX, JSObject, initial_generator_prototype) \
146 V(INITIAL_ASYNC_ITERATOR_PROTOTYPE_INDEX, JSObject, \
147 initial_async_iterator_prototype) \
148 V(INITIAL_ASYNC_GENERATOR_PROTOTYPE_INDEX, JSObject, \
149 initial_async_generator_prototype) \
150 V(INITIAL_ITERATOR_PROTOTYPE_INDEX, JSObject, initial_iterator_prototype) \
151 V(INITIAL_DISPOSABLE_STACK_PROTOTYPE_INDEX, JSObject, \
152 initial_disposable_stack_prototype) \
153 V(INITIAL_MAP_ITERATOR_PROTOTYPE_INDEX, JSObject, \
154 initial_map_iterator_prototype) \
155 V(INITIAL_MAP_PROTOTYPE_MAP_INDEX, Map, initial_map_prototype_map) \
156 V(INITIAL_OBJECT_PROTOTYPE_INDEX, JSObject, initial_object_prototype) \
157 V(INITIAL_SET_ITERATOR_PROTOTYPE_INDEX, JSObject, \
158 initial_set_iterator_prototype) \
159 V(INITIAL_SET_PROTOTYPE_INDEX, JSObject, initial_set_prototype) \
160 V(INITIAL_SET_PROTOTYPE_MAP_INDEX, Map, initial_set_prototype_map) \
161 V(INITIAL_STRING_ITERATOR_MAP_INDEX, Map, initial_string_iterator_map) \
162 V(INITIAL_STRING_ITERATOR_PROTOTYPE_INDEX, JSObject, \
163 initial_string_iterator_prototype) \
164 V(INITIAL_STRING_PROTOTYPE_INDEX, JSObject, initial_string_prototype) \
165 V(INITIAL_WEAKMAP_PROTOTYPE_MAP_INDEX, Map, initial_weakmap_prototype_map) \
166 V(INITIAL_WEAKSET_PROTOTYPE_MAP_INDEX, Map, initial_weakset_prototype_map) \
167 V(INTL_COLLATOR_FUNCTION_INDEX, JSFunction, intl_collator_function) \
168 V(INTL_DATE_TIME_FORMAT_FUNCTION_INDEX, JSFunction, \
169 intl_date_time_format_function) \
170 V(INTL_DISPLAY_NAMES_FUNCTION_INDEX, JSFunction, \
171 intl_display_names_function) \
172 V(INTL_DURATION_FORMAT_FUNCTION_INDEX, JSFunction, \
173 intl_duration_format_function) \
174 V(INTL_NUMBER_FORMAT_FUNCTION_INDEX, JSFunction, \
175 intl_number_format_function) \
176 V(INTL_LOCALE_FUNCTION_INDEX, JSFunction, intl_locale_function) \
177 V(INTL_LIST_FORMAT_FUNCTION_INDEX, JSFunction, intl_list_format_function) \
178 V(INTL_PLURAL_RULES_FUNCTION_INDEX, JSFunction, intl_plural_rules_function) \
179 V(INTL_RELATIVE_TIME_FORMAT_FUNCTION_INDEX, JSFunction, \
180 intl_relative_time_format_function) \
181 V(INTL_SEGMENTER_FUNCTION_INDEX, JSFunction, intl_segmenter_function) \
182 V(INTL_SEGMENTS_MAP_INDEX, Map, intl_segments_map) \
183 V(INTL_SEGMENT_DATA_OBJECT_MAP_INDEX, Map, intl_segment_data_object_map) \
184 V(INTL_SEGMENT_DATA_OBJECT_WORDLIKE_MAP_INDEX, Map, \
185 intl_segment_data_object_wordlike_map) \
186 V(INTL_SEGMENT_ITERATOR_MAP_INDEX, Map, intl_segment_iterator_map) \
187 V(ITERATOR_FILTER_HELPER_MAP_INDEX, Map, iterator_filter_helper_map) \
188 V(ITERATOR_MAP_HELPER_MAP_INDEX, Map, iterator_map_helper_map) \
189 V(ITERATOR_TAKE_HELPER_MAP_INDEX, Map, iterator_take_helper_map) \
190 V(ITERATOR_DROP_HELPER_MAP_INDEX, Map, iterator_drop_helper_map) \
191 V(ITERATOR_FLAT_MAP_HELPER_MAP_INDEX, Map, iterator_flatMap_helper_map) \
192 V(ITERATOR_FUNCTION_INDEX, JSFunction, iterator_function) \
193 V(VALID_ITERATOR_WRAPPER_MAP_INDEX, Map, valid_iterator_wrapper_map) \
194 V(ITERATOR_RESULT_MAP_INDEX, Map, iterator_result_map) \
195 V(JS_ARRAY_PACKED_SMI_ELEMENTS_MAP_INDEX, Map, \
196 js_array_packed_smi_elements_map) \
197 V(JS_ARRAY_HOLEY_SMI_ELEMENTS_MAP_INDEX, Map, \
198 js_array_holey_smi_elements_map) \
199 V(JS_ARRAY_PACKED_ELEMENTS_MAP_INDEX, Map, js_array_packed_elements_map) \
200 V(JS_ARRAY_HOLEY_ELEMENTS_MAP_INDEX, Map, js_array_holey_elements_map) \
201 V(JS_ARRAY_PACKED_DOUBLE_ELEMENTS_MAP_INDEX, Map, \
202 js_array_packed_double_elements_map) \
203 V(JS_ARRAY_HOLEY_DOUBLE_ELEMENTS_MAP_INDEX, Map, \
204 js_array_holey_double_elements_map) \
205 V(JS_ARRAY_TEMPLATE_LITERAL_OBJECT_MAP, Map, \
206 js_array_template_literal_object_map) \
207 V(JS_DISPOSABLE_STACK_FUNCTION_INDEX, JSFunction, \
208 js_disposable_stack_function) \
209 V(JS_ASYNC_DISPOSABLE_STACK_FUNCTION_INDEX, JSFunction, \
210 js_async_disposable_stack_function) \
211 V(JS_DISPOSABLE_STACK_MAP_INDEX, Map, js_disposable_stack_map) \
212 V(JS_MAP_FUN_INDEX, JSFunction, js_map_fun) \
213 V(JS_MAP_MAP_INDEX, Map, js_map_map) \
214 V(JS_MODULE_NAMESPACE_MAP, Map, js_module_namespace_map) \
215 V(JS_RAW_JSON_MAP, Map, js_raw_json_map) \
216 V(JS_SET_FUN_INDEX, JSFunction, js_set_fun) \
217 V(JS_SET_MAP_INDEX, Map, js_set_map) \
218 V(JS_WEAK_MAP_FUN_INDEX, JSFunction, js_weak_map_fun) \
219 V(JS_WEAK_SET_FUN_INDEX, JSFunction, js_weak_set_fun) \
220 V(JS_WEAK_REF_FUNCTION_INDEX, JSFunction, js_weak_ref_fun) \
221 V(JS_FINALIZATION_REGISTRY_FUNCTION_INDEX, JSFunction, \
222 js_finalization_registry_fun) \
223 V(JS_TEMPORAL_CALENDAR_FUNCTION_INDEX, JSFunction, \
224 temporal_calendar_function) \
225 V(JS_TEMPORAL_DURATION_FUNCTION_INDEX, JSFunction, \
226 temporal_duration_function) \
227 V(JS_TEMPORAL_INSTANT_FUNCTION_INDEX, JSFunction, temporal_instant_function) \
228 V(JS_TEMPORAL_PLAIN_DATE_FUNCTION_INDEX, JSFunction, \
229 temporal_plain_date_function) \
230 V(JS_TEMPORAL_PLAIN_DATE_TIME_FUNCTION_INDEX, JSFunction, \
231 temporal_plain_date_time_function) \
232 V(JS_TEMPORAL_PLAIN_MONTH_DAY_FUNCTION_INDEX, JSFunction, \
233 temporal_plain_month_day_function) \
234 V(JS_TEMPORAL_PLAIN_TIME_FUNCTION_INDEX, JSFunction, \
235 temporal_plain_time_function) \
236 V(JS_TEMPORAL_PLAIN_YEAR_MONTH_FUNCTION_INDEX, JSFunction, \
237 temporal_plain_year_month_function) \
238 V(JS_TEMPORAL_TIME_ZONE_FUNCTION_INDEX, JSFunction, \
239 temporal_time_zone_function) \
240 V(JS_TEMPORAL_ZONED_DATE_TIME_FUNCTION_INDEX, JSFunction, \
241 temporal_zoned_date_time_function) \
242 V(JSON_OBJECT, JSObject, json_object) \
243 V(PROMISE_WITHRESOLVERS_RESULT_MAP_INDEX, Map, \
244 promise_withresolvers_result_map) \
245 V(TEMPORAL_OBJECT_INDEX, HeapObject, temporal_object) \
246 V(TEMPORAL_INSTANT_FIXED_ARRAY_FROM_ITERABLE_FUNCTION_INDEX, JSFunction, \
247 temporal_instant_fixed_array_from_iterable) \
248 V(STRING_FIXED_ARRAY_FROM_ITERABLE_FUNCTION_INDEX, JSFunction, \
249 string_fixed_array_from_iterable) \
251 V(META_MAP_INDEX, Map, meta_map) \
252 V(FUNCTION_CONTEXT_MAP_INDEX, Map, function_context_map) \
253 V(MODULE_CONTEXT_MAP_INDEX, Map, module_context_map) \
254 V(EVAL_CONTEXT_MAP_INDEX, Map, eval_context_map) \
255 V(SCRIPT_CONTEXT_MAP_INDEX, Map, script_context_map) \
256 V(AWAIT_CONTEXT_MAP_INDEX, Map, await_context_map) \
257 V(BLOCK_CONTEXT_MAP_INDEX, Map, block_context_map) \
258 V(CATCH_CONTEXT_MAP_INDEX, Map, catch_context_map) \
259 V(WITH_CONTEXT_MAP_INDEX, Map, with_context_map) \
260 V(DEBUG_EVALUATE_CONTEXT_MAP_INDEX, Map, debug_evaluate_context_map) \
261 V(JS_RAB_GSAB_DATA_VIEW_MAP_INDEX, Map, js_rab_gsab_data_view_map) \
262 V(MAP_CACHE_INDEX, Object, map_cache) \
263 V(MAP_KEY_ITERATOR_MAP_INDEX, Map, map_key_iterator_map) \
264 V(MAP_KEY_VALUE_ITERATOR_MAP_INDEX, Map, map_key_value_iterator_map) \
265 V(MAP_VALUE_ITERATOR_MAP_INDEX, Map, map_value_iterator_map) \
266 V(MATH_RANDOM_INDEX_INDEX, Smi, math_random_index) \
267 V(MATH_RANDOM_STATE_INDEX, ByteArray, math_random_state) \
268 V(MATH_RANDOM_CACHE_INDEX, FixedDoubleArray, math_random_cache) \
269 V(NORMALIZED_MAP_CACHE_INDEX, Object, normalized_map_cache) \
270 V(NUMBER_FUNCTION_INDEX, JSFunction, number_function) \
271 V(OBJECT_FUNCTION_INDEX, JSFunction, object_function) \
272 V(OBJECT_FUNCTION_PROTOTYPE_INDEX, JSObject, object_function_prototype) \
273 V(OBJECT_FUNCTION_PROTOTYPE_MAP_INDEX, Map, object_function_prototype_map) \
274 V(PROMISE_HOOK_INIT_FUNCTION_INDEX, Object, promise_hook_init_function) \
275 V(PROMISE_HOOK_BEFORE_FUNCTION_INDEX, Object, promise_hook_before_function) \
276 V(PROMISE_HOOK_AFTER_FUNCTION_INDEX, Object, promise_hook_after_function) \
277 V(PROMISE_HOOK_RESOLVE_FUNCTION_INDEX, Object, \
278 promise_hook_resolve_function) \
279 V(PROXY_CALLABLE_MAP_INDEX, Map, proxy_callable_map) \
280 V(PROXY_CONSTRUCTOR_MAP_INDEX, Map, proxy_constructor_map) \
281 V(PROXY_FUNCTION_INDEX, JSFunction, proxy_function) \
282 V(PROXY_MAP_INDEX, Map, proxy_map) \
283 V(PROXY_REVOCABLE_RESULT_MAP_INDEX, Map, proxy_revocable_result_map) \
284 V(PROMISE_PROTOTYPE_INDEX, JSObject, promise_prototype) \
285 V(RECORDER_CONTEXT_ID, Object, recorder_context_id) \
286 V(REGEXP_EXEC_FUNCTION_INDEX, JSFunction, regexp_exec_function) \
287 V(REGEXP_FUNCTION_INDEX, JSFunction, regexp_function) \
288 V(REGEXP_LAST_MATCH_INFO_INDEX, RegExpMatchInfo, regexp_last_match_info) \
289 V(REGEXP_MATCH_ALL_FUNCTION_INDEX, JSFunction, regexp_match_all_function) \
290 V(REGEXP_MATCH_FUNCTION_INDEX, JSFunction, regexp_match_function) \
291 V(REGEXP_PROTOTYPE_INDEX, JSObject, regexp_prototype) \
292 V(REGEXP_PROTOTYPE_MAP_INDEX, Map, regexp_prototype_map) \
293 V(REGEXP_REPLACE_FUNCTION_INDEX, JSFunction, regexp_replace_function) \
294 V(REGEXP_RESULT_MAP_INDEX, Map, regexp_result_map) \
295 V(REGEXP_RESULT_WITH_INDICES_MAP_INDEX, Map, regexp_result_with_indices_map) \
296 V(REGEXP_RESULT_INDICES_MAP_INDEX, Map, regexp_result_indices_map) \
297 V(REGEXP_SEARCH_FUNCTION_INDEX, JSFunction, regexp_search_function) \
298 V(REGEXP_SPLIT_FUNCTION_INDEX, JSFunction, regexp_split_function) \
299 V(INITIAL_REGEXP_STRING_ITERATOR_PROTOTYPE_MAP_INDEX, Map, \
300 initial_regexp_string_iterator_prototype_map) \
301 V(SCRIPT_CONTEXT_TABLE_INDEX, ScriptContextTable, script_context_table) \
302 V(SCRIPT_EXECUTION_CALLBACK_INDEX, Object, script_execution_callback) \
303 V(SECURITY_TOKEN_INDEX, Object, security_token) \
304 V(SERIALIZED_OBJECTS, HeapObject, serialized_objects) \
305 V(SET_VALUE_ITERATOR_MAP_INDEX, Map, set_value_iterator_map) \
306 V(SET_KEY_VALUE_ITERATOR_MAP_INDEX, Map, set_key_value_iterator_map) \
307 V(SHARED_ARRAY_BUFFER_FUN_INDEX, JSFunction, shared_array_buffer_fun) \
308 V(SLOPPY_ARGUMENTS_MAP_INDEX, Map, sloppy_arguments_map) \
309 V(SLOW_ALIASED_ARGUMENTS_MAP_INDEX, Map, slow_aliased_arguments_map) \
310 V(STRICT_ARGUMENTS_MAP_INDEX, Map, strict_arguments_map) \
311 V(SLOW_OBJECT_WITH_NULL_PROTOTYPE_MAP, Map, \
312 slow_object_with_null_prototype_map) \
313 V(SLOW_OBJECT_WITH_OBJECT_PROTOTYPE_MAP, Map, \
314 slow_object_with_object_prototype_map) \
315 V(SLOW_TEMPLATE_INSTANTIATIONS_CACHE_INDEX, EphemeronHashTable, \
316 slow_template_instantiations_cache) \
317 V(ATOMICS_WAITASYNC_PROMISES, OrderedHashSet, atomics_waitasync_promises) \
318 V(WASM_DEBUG_MAPS, FixedArray, wasm_debug_maps) \
320 V(REGEXP_SPECIES_PROTECTOR_INDEX, PropertyCell, regexp_species_protector) \
323 V(SLOPPY_FUNCTION_MAP_INDEX, Map, sloppy_function_map) \
324 V(SLOPPY_FUNCTION_WITH_NAME_MAP_INDEX, Map, sloppy_function_with_name_map) \
325 V(SLOPPY_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX, Map, \
326 sloppy_function_without_prototype_map) \
327 V(SLOPPY_FUNCTION_WITH_READONLY_PROTOTYPE_MAP_INDEX, Map, \
328 sloppy_function_with_readonly_prototype_map) \
329 V(STRICT_FUNCTION_MAP_INDEX, Map, strict_function_map) \
330 V(STRICT_FUNCTION_WITH_NAME_MAP_INDEX, Map, strict_function_with_name_map) \
331 V(STRICT_FUNCTION_WITH_READONLY_PROTOTYPE_MAP_INDEX, Map, \
332 strict_function_with_readonly_prototype_map) \
333 V(STRICT_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX, Map, \
334 strict_function_without_prototype_map) \
335 V(METHOD_WITH_NAME_MAP_INDEX, Map, method_with_name_map) \
336 V(ASYNC_FUNCTION_MAP_INDEX, Map, async_function_map) \
337 V(ASYNC_FUNCTION_WITH_NAME_MAP_INDEX, Map, async_function_with_name_map) \
338 V(GENERATOR_FUNCTION_MAP_INDEX, Map, generator_function_map) \
339 V(GENERATOR_FUNCTION_WITH_NAME_MAP_INDEX, Map, \
340 generator_function_with_name_map) \
341 V(ASYNC_GENERATOR_FUNCTION_MAP_INDEX, Map, async_generator_function_map) \
342 V(ASYNC_GENERATOR_FUNCTION_WITH_NAME_MAP_INDEX, Map, \
343 async_generator_function_with_name_map) \
344 V(CLASS_FUNCTION_MAP_INDEX, Map, class_function_map) \
345 V(STRING_FUNCTION_INDEX, JSFunction, string_function) \
346 V(STRING_FUNCTION_PROTOTYPE_MAP_INDEX, Map, string_function_prototype_map) \
347 V(SYMBOL_FUNCTION_INDEX, JSFunction, symbol_function) \
348 V(IS_WASM_JS_INSTALLED_INDEX, Smi, is_wasm_js_installed) \
349 V(IS_WASM_JSPI_INSTALLED_INDEX, Smi, is_wasm_jspi_installed) \
350 V(WASM_WEBASSEMBLY_OBJECT_INDEX, JSObject, wasm_webassembly_object) \
351 V(WASM_EXPORTED_FUNCTION_MAP_INDEX, Map, wasm_exported_function_map) \
352 V(WASM_TAG_CONSTRUCTOR_INDEX, JSFunction, wasm_tag_constructor) \
353 V(WASM_EXCEPTION_CONSTRUCTOR_INDEX, JSFunction, wasm_exception_constructor) \
354 V(WASM_GLOBAL_CONSTRUCTOR_INDEX, JSFunction, wasm_global_constructor) \
355 V(WASM_INSTANCE_CONSTRUCTOR_INDEX, JSFunction, wasm_instance_constructor) \
356 V(WASM_JS_TAG_INDEX, JSObject, wasm_js_tag) \
357 V(WASM_MEMORY_CONSTRUCTOR_INDEX, JSFunction, wasm_memory_constructor) \
358 V(WASM_MODULE_CONSTRUCTOR_INDEX, JSFunction, wasm_module_constructor) \
359 V(WASM_TABLE_CONSTRUCTOR_INDEX, JSFunction, wasm_table_constructor) \
360 V(WASM_SUSPENDING_CONSTRUCTOR_INDEX, JSFunction, \
361 wasm_suspending_constructor) \
362 V(WASM_SUSPENDER_CONSTRUCTOR_INDEX, JSFunction, wasm_suspender_constructor) \
363 V(WASM_SUSPENDING_MAP, Map, wasm_suspending_map) \
364 V(WASM_SUSPENDING_PROTOTYPE, JSObject, wasm_suspending_prototype) \
365 V(WASM_MEMORY_MAP_DESCRIPTOR_CONSTRUCTOR_INDEX, JSFunction, \
366 wasm_memory_map_descriptor_constructor) \
367 V(TEMPLATE_WEAKMAP_INDEX, HeapObject, template_weakmap) \
368 V(TYPED_ARRAY_FUN_INDEX, JSFunction, typed_array_function) \
369 V(TYPED_ARRAY_PROTOTYPE_INDEX, JSObject, typed_array_prototype) \
370 V(ARRAY_ENTRIES_ITERATOR_INDEX, JSFunction, array_entries_iterator) \
371 V(ARRAY_FOR_EACH_ITERATOR_INDEX, JSFunction, array_for_each_iterator) \
372 V(ARRAY_KEYS_ITERATOR_INDEX, JSFunction, array_keys_iterator) \
373 V(ARRAY_VALUES_ITERATOR_INDEX, JSFunction, array_values_iterator) \
374 V(ERROR_FUNCTION_INDEX, JSFunction, error_function) \
375 V(ERROR_TO_STRING, JSFunction, error_to_string) \
376 V(EVAL_ERROR_FUNCTION_INDEX, JSFunction, eval_error_function) \
377 V(AGGREGATE_ERROR_FUNCTION_INDEX, JSFunction, aggregate_error_function) \
378 V(GLOBAL_EVAL_FUN_INDEX, JSFunction, global_eval_fun) \
379 V(GLOBAL_PARSE_FLOAT_FUN_INDEX, JSFunction, global_parse_float_fun) \
380 V(GLOBAL_PARSE_INT_FUN_INDEX, JSFunction, global_parse_int_fun) \
381 V(GLOBAL_PROXY_FUNCTION_INDEX, JSFunction, global_proxy_function) \
382 V(MAP_DELETE_INDEX, JSFunction, map_delete) \
383 V(MAP_GET_INDEX, JSFunction, map_get) \
384 V(MAP_HAS_INDEX, JSFunction, map_has) \
385 V(MAP_SET_INDEX, JSFunction, map_set) \
386 V(FUNCTION_HAS_INSTANCE_INDEX, JSFunction, function_has_instance) \
387 V(FUNCTION_TO_STRING_INDEX, JSFunction, function_to_string) \
388 V(OBJECT_TO_STRING, JSFunction, object_to_string) \
389 V(OBJECT_VALUE_OF_FUNCTION_INDEX, JSFunction, object_value_of_function) \
390 V(PROMISE_ALL_INDEX, JSFunction, promise_all) \
391 V(PROMISE_ALL_SETTLED_INDEX, JSFunction, promise_all_settled) \
392 V(PROMISE_ANY_INDEX, JSFunction, promise_any) \
393 V(PROMISE_FUNCTION_INDEX, JSFunction, promise_function) \
394 V(RANGE_ERROR_FUNCTION_INDEX, JSFunction, range_error_function) \
395 V(REFERENCE_ERROR_FUNCTION_INDEX, JSFunction, reference_error_function) \
396 V(SET_ADD_INDEX, JSFunction, set_add) \
397 V(SET_DELETE_INDEX, JSFunction, set_delete) \
398 V(SET_HAS_INDEX, JSFunction, set_has) \
399 V(SHADOW_REALM_IMPORT_VALUE_REJECTED_INDEX, JSFunction, \
400 shadow_realm_import_value_rejected) \
401 V(SUPPRESSED_ERROR_FUNCTION_INDEX, JSFunction, suppressed_error_function) \
402 V(SYNTAX_ERROR_FUNCTION_INDEX, JSFunction, syntax_error_function) \
403 V(TYPE_ERROR_FUNCTION_INDEX, JSFunction, type_error_function) \
404 V(URI_ERROR_FUNCTION_INDEX, JSFunction, uri_error_function) \
405 V(WASM_COMPILE_ERROR_FUNCTION_INDEX, JSFunction, \
406 wasm_compile_error_function) \
407 V(WASM_LINK_ERROR_FUNCTION_INDEX, JSFunction, wasm_link_error_function) \
408 V(WASM_SUSPEND_ERROR_FUNCTION_INDEX, JSFunction, \
409 wasm_suspend_error_function) \
410 V(WASM_RUNTIME_ERROR_FUNCTION_INDEX, JSFunction, \
411 wasm_runtime_error_function) \
412 V(WEAKMAP_SET_INDEX, JSFunction, weakmap_set) \
413 V(WEAKMAP_GET_INDEX, JSFunction, weakmap_get) \
414 V(WEAKMAP_DELETE_INDEX, JSFunction, weakmap_delete) \
415 V(WEAKSET_ADD_INDEX, JSFunction, weakset_add) \
416 V(WRAPPED_FUNCTION_MAP_INDEX, Map, wrapped_function_map) \
417 V(RETAINED_MAPS, Object, retained_maps) \
418 V(SHARED_SPACE_JS_OBJECT_HAS_INSTANCE_INDEX, JSFunction, \
419 shared_space_js_object_has_instance)
421#include "torque-generated/src/objects/contexts-tq.inc"
469class Context :
public TorqueGeneratedContext<Context, HeapObject> {
473 using TorqueGeneratedContext::length;
474 using TorqueGeneratedContext::set_length;
537#define NATIVE_CONTEXT_SLOT(index, type, name) index,
539#undef NATIVE_CONTEXT_SLOT
575 RAB_GSAB_UINT8_ARRAY_MAP_INDEX;
637#define NATIVE_CONTEXT_FIELD_ACCESSORS(index, type, name) \
638 inline void set_##name(Tagged<UNPAREN(type)> value); \
639 inline bool is_##name(Tagged<UNPAREN(type)> value) const; \
640 inline Tagged<UNPAREN(type)> name() const; \
641 inline Tagged<UNPAREN(type)> name(AcquireLoadTag) const;
643#undef NATIVE_CONTEXT_FIELD_ACCESSORS
671 bool* is_sloppy_function_name =
nullptr);
704 class BodyDescriptor;
713 static bool IsBootstrappingOrValidParentContext(
Tagged<Object> object,
768#define NATIVE_CONTEXT_FIELDS_DEF(V) \
770 V(kStartOfNativeContextFieldsOffset, \
771 (FIRST_WEAK_SLOT - MIN_CONTEXT_EXTENDED_SLOTS) * kTaggedSize) \
772 V(kEndOfStrongFieldsOffset, 0) \
773 V(kStartOfWeakFieldsOffset, \
774 (NATIVE_CONTEXT_SLOTS - FIRST_WEAK_SLOT) * kTaggedSize) \
775 V(kEndOfWeakFieldsOffset, 0) \
776 V(kEndOfNativeContextFieldsOffset, 0) \
777 V(kEndOfTaggedFieldsOffset, 0) \
779 V(kMicrotaskQueueOffset, kSystemPointerSize) \
785#undef NATIVE_CONTEXT_FIELDS_DEF
793#ifdef V8_ENABLE_JAVASCRIPT_PROMISE_HOOKS
821 :
public TaggedArrayBase<ScriptContextTable, ScriptContextTableShape> {
828 Isolate* isolate,
int capacity,
static Tagged< ContextSidePropertyCell > GetOrCreateContextSidePropertyCell(DirectHandle< Context > context, size_t index, ContextSidePropertyCell::Property property, Isolate *isolate)
bool IsModuleContext() const
std::optional< ContextSidePropertyCell::Property > GetScriptContextSideProperty(size_t index) const
bool IsDebugEvaluateContext() const
static Handle< Object > Lookup(Handle< Context > context, Handle< String > name, ContextLookupFlags flags, int *index, PropertyAttributes *attributes, InitializationFlag *init_flag, VariableMode *variable_mode, bool *is_sloppy_function_name=nullptr)
Tagged< Context > declaration_context() const
void Initialize(Isolate *isolate)
Tagged< Context > previous() const
static const int FIRST_FUNCTION_MAP_INDEX
bool has_extension() const
bool IsWithContext() const
static const int kExtensionOffset
static DirectHandle< Object > LoadScriptContextElement(DirectHandle< Context > script_context, int index, DirectHandle< Object > new_value, Isolate *isolate)
V8_INLINE void set(int index, Tagged< Object > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
V8_EXPORT_PRIVATE Tagged< JSGlobalObject > global_object() const
bool IsBlockContext() const
static const int FIRST_FIXED_TYPED_ARRAY_FUN_INDEX
Tagged< Object > unchecked_previous() const
Tagged< Context > closure_context() const
static V8_INLINE constexpr int OffsetOfElementAt(int index)
bool IsScriptContext() const
static const int FIRST_RAB_GSAB_TYPED_ARRAY_MAP_INDEX
bool IsEvalContext() const
V8_EXPORT_PRIVATE void set_extension(Tagged< HeapObject > object, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
bool IsCatchContext() const
static const int kInvalidContext
static V8_INLINE constexpr int SizeFor(int length)
bool is_declaration_context() const
void set_previous(Tagged< Context > context, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
Handle< Object > ErrorMessageForCodeGenerationFromStrings()
bool IsFunctionContext() const
@ MIN_CONTEXT_EXTENDED_SLOTS
@ FIRST_JS_ARRAY_MAP_SLOT
@ CONTEXT_SIDE_TABLE_PROPERTY_INDEX
DirectHandle< Object > ErrorMessageForWasmCodeGeneration()
static V8_INLINE constexpr int SlotOffset(int index)
Tagged< Map > GetInitialJSArrayMap(ElementsKind kind) const
static const int kScopeInfoOffset
static void StoreScriptContextAndUpdateSlotProperty(DirectHandle< Context > script_context, int index, DirectHandle< Object > new_value, Isolate *isolate)
Tagged< HeapObject > extension() const
static const int kTodoHeaderSize
bool IsAwaitContext() const
static int ArrayMapIndex(ElementsKind elements_kind)
Tagged< Object > next_context_link() const
static const int LAST_FUNCTION_MAP_INDEX
static const int kNoContext
Tagged< JSObject > extension_object() const
V8_EXPORT_PRIVATE Tagged< JSGlobalProxy > global_proxy() const
static const int kNotFound
V8_INLINE Tagged< Object > get(int index) const
bool HasSameSecurityTokenAs(Tagged< Context > that) const
Tagged< JSReceiver > extension_receiver() const
Tagged< Context > script_context() const
static int FunctionMapIndex(LanguageMode language_mode, FunctionKind kind, bool has_shared_name)
static const int kExtendedHeaderSize
static const int kPreviousOffset
static const int kExtensionSize
Tagged< NativeContext > native_context() const
Tagged< SourceTextModule > module() const
static const int kNativeContextEmbedderDataOffset
Tagged< ScriptContextTable > synchronized_script_context_table() const
Tagged< Map > TypedArrayElementsKindToCtorMap(ElementsKind element_kind) const
void IncrementErrorsThrown()
DEFINE_FIELD_OFFSET_CONSTANTS(Context::kExtendedHeaderSize, NATIVE_CONTEXT_FIELDS_DEF) class BodyDescriptor
Tagged< Map > TypedArrayElementsKindToRabGsabCtorMap(ElementsKind element_kind) const
OBJECT_CONSTRUCTORS(NativeContext, Context)
Tagged< JSGlobalObject > global_object(AcquireLoadTag)
void set(int index, Tagged< Object > value, WriteBarrierMode mode)=delete
Tagged< JSGlobalObject > global_object()
void synchronized_set_script_context_table(Tagged< ScriptContextTable > script_context_table)
bool HasTemplateLiteralObject(Tagged< JSArray > array)
V8_ARRAY_EXTRA_FIELDS({ TaggedMember< Smi > length_;TaggedMember< NameToIndexHashTable > names_to_context_index_;})
static constexpr bool kLengthEqualsCapacity
static constexpr RootIndex kMapRootIndex
Tagged< NameToIndexHashTable > names_to_context_index() const
void set_length(int value, ReleaseStoreTag)
static Handle< ScriptContextTable > New(Isolate *isolate, int capacity, AllocationType allocation=AllocationType::kYoung)
V8_WARN_UNUSED_RESULT static V8_EXPORT_PRIVATE Handle< ScriptContextTable > Add(Isolate *isolate, Handle< ScriptContextTable > table, DirectHandle< Context > script_context, bool ignore_duplicates)
Tagged< Context > get(int index) const
V8_WARN_UNUSED_RESULT V8_EXPORT_PRIVATE bool Lookup(DirectHandle< String > name, VariableLookupResult *result)
void set_names_to_context_index(Tagged< NameToIndexHashTable > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
#define NATIVE_CONTEXT_FIELD_ACCESSORS(index, type, name)
#define NATIVE_CONTEXT_FIELDS(V)
#define NATIVE_CONTEXT_SLOT(index, type, name)
#define NATIVE_CONTEXT_FIELDS_DEF(V)
MicrotaskQueue * microtask_queue
ZoneVector< RpoNumber > & result
constexpr int kTaggedSize
bool IsFastElementsKind(ElementsKind kind)
V8HeapCompressionSchemeImpl< MainCage > V8HeapCompressionScheme
#define DECL_ACCESSORS(name,...)
#define DECL_EXTERNAL_POINTER_ACCESSORS(name, type)
#define DECL_VERIFIER(Name)
#define NEVER_READ_ONLY_SPACE
#define DECL_PRINTER(Name)
#define TQ_OBJECT_CONSTRUCTORS(Type)
#define DECL_RELAXED_INT_ACCESSORS(name)
#define DCHECK(condition)
#define DCHECK_EQ(v1, v2)
#define V8_EXPORT_PRIVATE
#define V8_WARN_UNUSED_RESULT