5#ifndef V8_CODEGEN_EXTERNAL_REFERENCE_H_
6#define V8_CODEGEN_EXTERNAL_REFERENCE_H_
20class SCTableReference;
27#define EXTERNAL_REFERENCE_LIST_WITH_ISOLATE(V) \
28 V(isolate_address, "isolate") \
29 V(handle_scope_implementer_address, \
30 "Isolate::handle_scope_implementer_address") \
31 V(address_of_interpreter_entry_trampoline_instruction_start, \
32 "Address of the InterpreterEntryTrampoline instruction start") \
33 V(interpreter_dispatch_counters, "Interpreter::dispatch_counters") \
34 V(interpreter_dispatch_table_address, "Interpreter::dispatch_table_address") \
35 V(date_cache_stamp, "date_cache_stamp") \
36 V(stress_deopt_count, "Isolate::stress_deopt_count_address()") \
37 V(force_slow_path, "Isolate::force_slow_path_address()") \
38 V(isolate_root, "Isolate::isolate_root()") \
39 V(allocation_sites_list_address, "Heap::allocation_sites_list_address()") \
40 V(address_of_jslimit, "StackGuard::address_of_jslimit()") \
41 V(address_of_no_heap_write_interrupt_request, \
42 "StackGuard::address_of_interrupt_request(StackGuard::InterruptLevel::" \
44 V(address_of_real_jslimit, "StackGuard::address_of_real_jslimit()") \
45 V(heap_is_marking_flag_address, "heap_is_marking_flag_address") \
46 V(heap_is_minor_marking_flag_address, "heap_is_minor_marking_flag_address") \
47 V(is_shared_space_isolate_flag_address, \
48 "is_shared_space_isolate_flag_address") \
49 V(new_space_allocation_top_address, "Heap::NewSpaceAllocationTopAddress()") \
50 V(new_space_allocation_limit_address, \
51 "Heap::NewSpaceAllocationLimitAddress()") \
52 V(old_space_allocation_top_address, "Heap::OldSpaceAllocationTopAddress") \
53 V(old_space_allocation_limit_address, \
54 "Heap::OldSpaceAllocationLimitAddress") \
55 V(array_buffer_max_allocation_address, \
56 "Heap::ArrayBufferMaxAllocationAddress") \
57 V(handle_scope_level_address, "HandleScope::level") \
58 V(handle_scope_next_address, "HandleScope::next") \
59 V(handle_scope_limit_address, "HandleScope::limit") \
60 V(exception_address, "Isolate::exception") \
61 V(address_of_pending_message, "address_of_pending_message") \
62 V(promise_hook_flags_address, "Isolate::promise_hook_flags_address()") \
63 V(promise_hook_address, "Isolate::promise_hook_address()") \
64 V(async_event_delegate_address, "Isolate::async_event_delegate_address()") \
65 V(debug_is_active_address, "Debug::is_active_address()") \
66 V(debug_hook_on_function_call_address, \
67 "Debug::hook_on_function_call_address()") \
68 V(runtime_function_table_address, \
69 "Runtime::runtime_function_table_address()") \
70 V(debug_suspended_generator_address, \
71 "Debug::step_suspended_generator_address()") \
72 V(context_address, "Isolate::context_address()") \
73 V(address_of_regexp_stack_limit_address, \
74 "RegExpStack::limit_address_address()") \
75 V(address_of_regexp_stack_memory_top_address, \
76 "RegExpStack::memory_top_address_address()") \
77 V(address_of_regexp_stack_stack_pointer, \
78 "RegExpStack::stack_pointer_address()") \
79 V(address_of_regexp_static_result_offsets_vector, \
80 "Isolate::address_of_regexp_static_result_offsets_vector") \
81 V(thread_in_wasm_flag_address_address, \
82 "Isolate::thread_in_wasm_flag_address_address") \
83 EXTERNAL_REFERENCE_LIST_WITH_ISOLATE_SANDBOX(V)
85#ifdef V8_ENABLE_SANDBOX
86#define EXTERNAL_REFERENCE_LIST_WITH_ISOLATE_SANDBOX(V) \
87 V(external_pointer_table_address, \
88 "Isolate::external_pointer_table_address()") \
89 V(shared_external_pointer_table_address_address, \
90 "Isolate::shared_external_pointer_table_address_address()") \
91 V(trusted_pointer_table_base_address, \
92 "Isolate::trusted_pointer_table_base_address()") \
93 V(shared_trusted_pointer_table_base_address, \
94 "Isolate::shared_trusted_pointer_table_base_address()") \
95 V(code_pointer_table_base_address, \
96 "Isolate::code_pointer_table_base_address()")
98#define EXTERNAL_REFERENCE_LIST_WITH_ISOLATE_SANDBOX(V)
101#define EXTERNAL_REFERENCE_LIST(V) \
102 V(abort_with_reason, "abort_with_reason") \
103 V(address_of_log_or_trace_osr, "v8_flags.log_or_trace_osr") \
104 V(address_of_builtin_subclassing_flag, "v8_flags.builtin_subclassing") \
105 V(address_of_double_abs_constant, "double_absolute_constant") \
106 V(address_of_double_neg_constant, "double_negate_constant") \
107 V(address_of_enable_experimental_regexp_engine, \
108 "address_of_enable_experimental_regexp_engine") \
109 V(address_of_fp16_abs_constant, "fp16_absolute_constant") \
110 V(address_of_fp16_neg_constant, "fp16_negate_constant") \
111 V(address_of_float_abs_constant, "float_absolute_constant") \
112 V(address_of_float_neg_constant, "float_negate_constant") \
113 V(address_of_log10_offset_table, "log10_offset_table") \
114 V(address_of_min_int, "LDoubleConstant::min_int") \
115 V(address_of_mock_arraybuffer_allocator_flag, \
116 "v8_flags.mock_arraybuffer_allocator") \
117 V(address_of_one_half, "LDoubleConstant::one_half") \
118 V(address_of_runtime_stats_flag, "TracingFlags::runtime_stats") \
119 V(address_of_shared_string_table_flag, "v8_flags.shared_string_table") \
120 V(address_of_the_hole_nan, "the_hole_nan") \
121 V(address_of_uint32_bias, "uint32_bias") \
122 V(allocate_and_initialize_young_external_pointer_table_entry, \
123 "AllocateAndInitializeYoungExternalPointerTableEntry") \
124 V(baseline_pc_for_bytecode_offset, "BaselinePCForBytecodeOffset") \
125 V(baseline_pc_for_next_executed_bytecode, \
126 "BaselinePCForNextExecutedBytecode") \
127 V(bytecode_size_table_address, "Bytecodes::bytecode_size_table_address") \
128 V(check_object_type, "check_object_type") \
129 V(compute_integer_hash, "ComputeSeededHash") \
130 V(compute_output_frames_function, "Deoptimizer::ComputeOutputFrames()") \
131 V(copy_fast_number_jsarray_elements_to_typed_array, \
132 "copy_fast_number_jsarray_elements_to_typed_array") \
133 V(copy_typed_array_elements_slice, "copy_typed_array_elements_slice") \
134 V(copy_typed_array_elements_to_typed_array, \
135 "copy_typed_array_elements_to_typed_array") \
136 V(cpu_features, "cpu_features") \
137 V(debug_break_at_entry_function, "DebugBreakAtEntry") \
138 V(debug_get_coverage_info_function, "DebugGetCoverageInfo") \
139 V(delete_handle_scope_extensions, "HandleScope::DeleteExtensions") \
140 V(ephemeron_key_write_barrier_function, \
141 "Heap::EphemeronKeyWriteBarrierFromCode") \
142 V(f64_acos_wrapper_function, "f64_acos_wrapper") \
143 V(f64_asin_wrapper_function, "f64_asin_wrapper") \
144 V(f64_mod_wrapper_function, "f64_mod_wrapper") \
145 V(get_date_field_function, "JSDate::GetField") \
146 V(get_or_create_hash_raw, "get_or_create_hash_raw") \
147 V(gsab_byte_length, "GsabByteLength") \
148 V(ieee754_fp64_to_fp16_raw_bits, "ieee754_fp64_to_fp16_raw_bits") \
149 V(ieee754_fp64_raw_bits_to_fp16_raw_bits_for_32bit_arch, \
150 "ieee754_fp64_raw_bits_to_fp16_raw_bits_for_32bit_arch") \
151 V(ieee754_fp16_raw_bits_to_fp32_raw_bits, \
152 "ieee754_fp16_raw_bits_to_fp32_raw_bits") \
153 V(ieee754_acos_function, "base::ieee754::acos") \
154 V(ieee754_acosh_function, "base::ieee754::acosh") \
155 V(ieee754_asin_function, "base::ieee754::asin") \
156 V(ieee754_asinh_function, "base::ieee754::asinh") \
157 V(ieee754_atan_function, "base::ieee754::atan") \
158 V(ieee754_atan2_function, "base::ieee754::atan2") \
159 V(ieee754_atanh_function, "base::ieee754::atanh") \
160 V(ieee754_cbrt_function, "base::ieee754::cbrt") \
161 V(ieee754_cos_function, "base::ieee754::cos") \
162 V(ieee754_cosh_function, "base::ieee754::cosh") \
163 V(ieee754_exp_function, "base::ieee754::exp") \
164 V(ieee754_expm1_function, "base::ieee754::expm1") \
165 V(ieee754_log_function, "base::ieee754::log") \
166 V(ieee754_log10_function, "base::ieee754::log10") \
167 V(ieee754_log1p_function, "base::ieee754::log1p") \
168 V(ieee754_log2_function, "base::ieee754::log2") \
169 V(ieee754_pow_function, "math::pow") \
170 V(ieee754_sin_function, "base::ieee754::sin") \
171 V(ieee754_sinh_function, "base::ieee754::sinh") \
172 V(ieee754_tan_function, "base::ieee754::tan") \
173 V(ieee754_tanh_function, "base::ieee754::tanh") \
174 V(insert_remembered_set_function, "Heap::InsertIntoRememberedSetFromCode") \
175 V(invalidate_prototype_chains_function, \
176 "JSObject::InvalidatePrototypeChains()") \
177 V(invoke_accessor_getter_callback, "InvokeAccessorGetterCallback") \
178 V(invoke_function_callback_generic, "InvokeFunctionCallbackGeneric") \
179 V(invoke_function_callback_optimized, "InvokeFunctionCallbackOptimized") \
180 V(jsarray_array_join_concat_to_sequential_string, \
181 "jsarray_array_join_concat_to_sequential_string") \
182 V(jsreceiver_create_identity_hash, "jsreceiver_create_identity_hash") \
183 V(libc_memchr_function, "libc_memchr") \
184 V(libc_memcpy_function, "libc_memcpy") \
185 V(libc_memmove_function, "libc_memmove") \
186 V(libc_memset_function, "libc_memset") \
187 V(relaxed_memcpy_function, "relaxed_memcpy") \
188 V(relaxed_memmove_function, "relaxed_memmove") \
189 V(mod_two_doubles_operation, "mod_two_doubles") \
190 V(mutable_big_int_absolute_add_and_canonicalize_function, \
191 "MutableBigInt_AbsoluteAddAndCanonicalize") \
192 V(mutable_big_int_absolute_compare_function, \
193 "MutableBigInt_AbsoluteCompare") \
194 V(mutable_big_int_absolute_sub_and_canonicalize_function, \
195 "MutableBigInt_AbsoluteSubAndCanonicalize") \
196 V(mutable_big_int_absolute_mul_and_canonicalize_function, \
197 "MutableBigInt_AbsoluteMulAndCanonicalize") \
198 V(mutable_big_int_absolute_div_and_canonicalize_function, \
199 "MutableBigInt_AbsoluteDivAndCanonicalize") \
200 V(mutable_big_int_absolute_mod_and_canonicalize_function, \
201 "MutableBigInt_AbsoluteModAndCanonicalize") \
202 V(mutable_big_int_bitwise_and_pp_and_canonicalize_function, \
203 "MutableBigInt_BitwiseAndPosPosAndCanonicalize") \
204 V(mutable_big_int_bitwise_and_nn_and_canonicalize_function, \
205 "MutableBigInt_BitwiseAndNegNegAndCanonicalize") \
206 V(mutable_big_int_bitwise_and_pn_and_canonicalize_function, \
207 "MutableBigInt_BitwiseAndPosNegAndCanonicalize") \
208 V(mutable_big_int_bitwise_or_pp_and_canonicalize_function, \
209 "MutableBigInt_BitwiseOrPosPosAndCanonicalize") \
210 V(mutable_big_int_bitwise_or_nn_and_canonicalize_function, \
211 "MutableBigInt_BitwiseOrNegNegAndCanonicalize") \
212 V(mutable_big_int_bitwise_or_pn_and_canonicalize_function, \
213 "MutableBigInt_BitwiseOrPosNegAndCanonicalize") \
214 V(mutable_big_int_bitwise_xor_pp_and_canonicalize_function, \
215 "MutableBigInt_BitwiseXorPosPosAndCanonicalize") \
216 V(mutable_big_int_bitwise_xor_nn_and_canonicalize_function, \
217 "MutableBigInt_BitwiseXorNegNegAndCanonicalize") \
218 V(mutable_big_int_bitwise_xor_pn_and_canonicalize_function, \
219 "MutableBigInt_BitwiseXorPosNegAndCanonicalize") \
220 V(mutable_big_int_left_shift_and_canonicalize_function, \
221 "MutableBigInt_LeftShiftAndCanonicalize") \
222 V(big_int_right_shift_result_length_function, "RightShiftResultLength") \
223 V(mutable_big_int_right_shift_and_canonicalize_function, \
224 "MutableBigInt_RightShiftAndCanonicalize") \
225 V(new_deoptimizer_function, "Deoptimizer::New()") \
226 V(orderedhashmap_gethash_raw, "orderedhashmap_gethash_raw") \
227 V(printf_function, "printf") \
228 V(refill_math_random, "MathRandom::RefillCache") \
229 V(search_string_raw_one_one, "search_string_raw_one_one") \
230 V(search_string_raw_one_two, "search_string_raw_one_two") \
231 V(search_string_raw_two_one, "search_string_raw_two_one") \
232 V(search_string_raw_two_two, "search_string_raw_two_two") \
233 V(string_write_to_flat_one_byte, "string_write_to_flat_one_byte") \
234 V(string_write_to_flat_two_byte, "string_write_to_flat_two_byte") \
235 V(script_context_mutable_heap_number_flag, \
236 "v8_flags.script_context_mutable_heap_number") \
237 V(script_context_mutable_heap_int32_flag, \
238 "v8_flags.script_context_mutable_heap_int32") \
239 V(additive_safe_int_feedback_flag, "v8_flags.additive_safe_int_feedback") \
240 V(external_one_byte_string_get_chars, "external_one_byte_string_get_chars") \
241 V(external_two_byte_string_get_chars, "external_two_byte_string_get_chars") \
242 V(smi_lexicographic_compare_function, "smi_lexicographic_compare_function") \
243 V(string_to_array_index_function, "String::ToArrayIndex") \
244 V(array_indexof_includes_smi_or_object, \
245 "array_indexof_includes_smi_or_object") \
246 V(array_indexof_includes_double, "array_indexof_includes_double") \
247 V(has_unpaired_surrogate, "Utf16::HasUnpairedSurrogate") \
248 V(replace_unpaired_surrogates, "Utf16::ReplaceUnpairedSurrogates") \
249 V(try_string_to_index_or_lookup_existing, \
250 "try_string_to_index_or_lookup_existing") \
251 V(string_from_forward_table, "string_from_forward_table") \
252 V(raw_hash_from_forward_table, "raw_hash_from_forward_table") \
253 V(name_dictionary_lookup_forwarded_string, \
254 "name_dictionary_lookup_forwarded_string") \
255 V(name_dictionary_find_insertion_entry_forwarded_string, \
256 "name_dictionary_find_insertion_entry_forwarded_string") \
257 V(global_dictionary_lookup_forwarded_string, \
258 "global_dictionary_lookup_forwarded_string") \
259 V(global_dictionary_find_insertion_entry_forwarded_string, \
260 "global_dictionary_find_insertion_entry_forwarded_string") \
261 V(name_to_index_hashtable_lookup_forwarded_string, \
262 "name_to_index_hashtable_lookup_forwarded_string") \
263 V(name_to_index_hashtable_find_insertion_entry_forwarded_string, \
264 "name_to_index_hashtable_find_insertion_entry_forwarded_string") \
265 IF_WASM(V, wasm_switch_stacks, "wasm_switch_stacks") \
266 IF_WASM(V, wasm_return_switch, "wasm_return_switch") \
267 IF_WASM(V, wasm_switch_to_the_central_stack, \
268 "wasm::switch_to_the_central_stack") \
269 IF_WASM(V, wasm_switch_from_the_central_stack, \
270 "wasm::switch_from_the_central_stack") \
271 IF_WASM(V, wasm_switch_to_the_central_stack_for_js, \
272 "wasm::switch_to_the_central_stack_for_js") \
273 IF_WASM(V, wasm_switch_from_the_central_stack_for_js, \
274 "wasm::switch_from_the_central_stack_for_js") \
275 IF_WASM(V, wasm_code_pointer_table, "GetProcessWideWasmCodePointerTable()") \
276 IF_WASM(V, wasm_grow_stack, "wasm::grow_stack") \
277 IF_WASM(V, wasm_shrink_stack, "wasm::shrink_stack") \
278 IF_WASM(V, wasm_load_old_fp, "wasm::load_old_fp") \
279 IF_WASM(V, wasm_f32_ceil, "wasm::f32_ceil_wrapper") \
280 IF_WASM(V, wasm_f32_floor, "wasm::f32_floor_wrapper") \
281 IF_WASM(V, wasm_f32_nearest_int, "wasm::f32_nearest_int_wrapper") \
282 IF_WASM(V, wasm_f32_trunc, "wasm::f32_trunc_wrapper") \
283 IF_WASM(V, wasm_f64_ceil, "wasm::f64_ceil_wrapper") \
284 IF_WASM(V, wasm_f64_floor, "wasm::f64_floor_wrapper") \
285 IF_WASM(V, wasm_f64_nearest_int, "wasm::f64_nearest_int_wrapper") \
286 IF_WASM(V, wasm_f64_trunc, "wasm::f64_trunc_wrapper") \
287 IF_WASM(V, wasm_float32_to_int64, "wasm::float32_to_int64_wrapper") \
288 IF_WASM(V, wasm_float32_to_uint64, "wasm::float32_to_uint64_wrapper") \
289 IF_WASM(V, wasm_float32_to_int64_sat, "wasm::float32_to_int64_sat_wrapper") \
290 IF_WASM(V, wasm_float32_to_uint64_sat, \
291 "wasm::float32_to_uint64_sat_wrapper") \
292 IF_WASM(V, wasm_float64_pow, "wasm::float64_pow") \
293 IF_WASM(V, wasm_float64_to_int64, "wasm::float64_to_int64_wrapper") \
294 IF_WASM(V, wasm_float64_to_uint64, "wasm::float64_to_uint64_wrapper") \
295 IF_WASM(V, wasm_float64_to_int64_sat, "wasm::float64_to_int64_sat_wrapper") \
296 IF_WASM(V, wasm_float64_to_uint64_sat, \
297 "wasm::float64_to_uint64_sat_wrapper") \
298 IF_WASM(V, wasm_float16_to_float32, "wasm::float16_to_float32_wrapper") \
299 IF_WASM(V, wasm_float32_to_float16, "wasm::float32_to_float16_wrapper") \
300 IF_WASM(V, wasm_int64_div, "wasm::int64_div") \
301 IF_WASM(V, wasm_int64_mod, "wasm::int64_mod") \
302 IF_WASM(V, wasm_int64_to_float32, "wasm::int64_to_float32_wrapper") \
303 IF_WASM(V, wasm_int64_to_float64, "wasm::int64_to_float64_wrapper") \
304 IF_WASM(V, wasm_uint64_div, "wasm::uint64_div") \
305 IF_WASM(V, wasm_uint64_mod, "wasm::uint64_mod") \
306 IF_WASM(V, wasm_uint64_to_float32, "wasm::uint64_to_float32_wrapper") \
307 IF_WASM(V, wasm_uint64_to_float64, "wasm::uint64_to_float64_wrapper") \
308 IF_WASM(V, wasm_word32_ctz, "wasm::word32_ctz") \
309 IF_WASM(V, wasm_word32_popcnt, "wasm::word32_popcnt") \
310 IF_WASM(V, wasm_word32_rol, "wasm::word32_rol") \
311 IF_WASM(V, wasm_word32_ror, "wasm::word32_ror") \
312 IF_WASM(V, wasm_word64_rol, "wasm::word64_rol") \
313 IF_WASM(V, wasm_word64_ror, "wasm::word64_ror") \
314 IF_WASM(V, wasm_word64_ctz, "wasm::word64_ctz") \
315 IF_WASM(V, wasm_word64_popcnt, "wasm::word64_popcnt") \
316 IF_WASM(V, wasm_f64x2_ceil, "wasm::f64x2_ceil_wrapper") \
317 IF_WASM(V, wasm_f64x2_floor, "wasm::f64x2_floor_wrapper") \
318 IF_WASM(V, wasm_f64x2_trunc, "wasm::f64x2_trunc_wrapper") \
319 IF_WASM(V, wasm_f64x2_nearest_int, "wasm::f64x2_nearest_int_wrapper") \
320 IF_WASM(V, wasm_f32x4_ceil, "wasm::f32x4_ceil_wrapper") \
321 IF_WASM(V, wasm_f32x4_floor, "wasm::f32x4_floor_wrapper") \
322 IF_WASM(V, wasm_f32x4_trunc, "wasm::f32x4_trunc_wrapper") \
323 IF_WASM(V, wasm_f32x4_nearest_int, "wasm::f32x4_nearest_int_wrapper") \
324 IF_WASM(V, wasm_f16x8_abs, "wasm::f16x8_abs_wrapper") \
325 IF_WASM(V, wasm_f16x8_neg, "wasm::f16x8_neg_wrapper") \
326 IF_WASM(V, wasm_f16x8_sqrt, "wasm::f16x8_sqrt_wrapper") \
327 IF_WASM(V, wasm_f16x8_ceil, "wasm::f16x8_ceil_wrapper") \
328 IF_WASM(V, wasm_f16x8_floor, "wasm::f16x8_floor_wrapper") \
329 IF_WASM(V, wasm_f16x8_trunc, "wasm::f16x8_trunc_wrapper") \
330 IF_WASM(V, wasm_f16x8_nearest_int, "wasm::f16x8_nearest_int_wrapper") \
331 IF_WASM(V, wasm_f16x8_eq, "wasm::f16x8_eq_wrapper") \
332 IF_WASM(V, wasm_f16x8_ne, "wasm::f16x8_ne_wrapper") \
333 IF_WASM(V, wasm_f16x8_lt, "wasm::f16x8_lt_wrapper") \
334 IF_WASM(V, wasm_f16x8_le, "wasm::f16x8_le_wrapper") \
335 IF_WASM(V, wasm_f16x8_add, "wasm::f16x8_add_wrapper") \
336 IF_WASM(V, wasm_f16x8_sub, "wasm::f16x8_sub_wrapper") \
337 IF_WASM(V, wasm_f16x8_mul, "wasm::f16x8_mul_wrapper") \
338 IF_WASM(V, wasm_f16x8_div, "wasm::f16x8_div_wrapper") \
339 IF_WASM(V, wasm_f16x8_min, "wasm::f16x8_min_wrapper") \
340 IF_WASM(V, wasm_f16x8_max, "wasm::f16x8_max_wrapper") \
341 IF_WASM(V, wasm_f16x8_pmin, "wasm::f16x8_pmin_wrapper") \
342 IF_WASM(V, wasm_f16x8_pmax, "wasm::f16x8_pmax_wrapper") \
343 IF_WASM(V, wasm_i16x8_sconvert_f16x8, "wasm::i16x8_sconvert_f16x8_wrapper") \
344 IF_WASM(V, wasm_i16x8_uconvert_f16x8, "wasm::i16x8_uconvert_f16x8_wrapper") \
345 IF_WASM(V, wasm_f16x8_sconvert_i16x8, "wasm::f16x8_sconvert_i16x8_wrapper") \
346 IF_WASM(V, wasm_f16x8_uconvert_i16x8, "wasm::f16x8_uconvert_i16x8_wrapper") \
347 IF_WASM(V, wasm_f32x4_promote_low_f16x8, \
348 "wasm::f32x4_promote_low_f16x8_wrapper") \
349 IF_WASM(V, wasm_f16x8_demote_f32x4_zero, \
350 "wasm::f16x8_demote_f32x4_zero_wrapper") \
351 IF_WASM(V, wasm_f16x8_demote_f64x2_zero, \
352 "wasm::f16x8_demote_f64x2_zero_wrapper") \
353 IF_WASM(V, wasm_f16x8_qfma, "wasm::f16x8_qfma_wrapper") \
354 IF_WASM(V, wasm_f16x8_qfms, "wasm::f16x8_qfms_wrapper") \
355 IF_WASM(V, wasm_memory_init, "wasm::memory_init") \
356 IF_WASM(V, wasm_memory_copy, "wasm::memory_copy") \
357 IF_WASM(V, wasm_memory_fill, "wasm::memory_fill") \
358 IF_WASM(V, wasm_array_copy, "wasm::array_copy") \
359 IF_WASM(V, wasm_array_fill, "wasm::array_fill") \
360 IF_WASM(V, wasm_string_to_f64, "wasm_string_to_f64") \
361 IF_WASM(V, wasm_atomic_notify, "wasm_atomic_notify") \
362 IF_WASM(V, wasm_WebAssemblyCompile, "wasm::WebAssemblyCompile") \
363 IF_WASM(V, wasm_WebAssemblyException, "wasm::WebAssemblyException") \
364 IF_WASM(V, wasm_WebAssemblyExceptionGetArg, \
365 "wasm::WebAssemblyExceptionGetArg") \
366 IF_WASM(V, wasm_WebAssemblyExceptionIs, "wasm::WebAssemblyExceptionIs") \
367 IF_WASM(V, wasm_WebAssemblyGlobal, "wasm::WebAssemblyGlobal") \
368 IF_WASM(V, wasm_WebAssemblyGlobalGetValue, \
369 "wasm::WebAssemblyGlobalGetValue") \
370 IF_WASM(V, wasm_WebAssemblyGlobalSetValue, \
371 "wasm::WebAssemblyGlobalSetValue") \
372 IF_WASM(V, wasm_WebAssemblyGlobalValueOf, "wasm::WebAssemblyGlobalValueOf") \
373 IF_WASM(V, wasm_WebAssemblyInstance, "wasm::WebAssemblyInstance") \
374 IF_WASM(V, wasm_WebAssemblyInstanceGetExports, \
375 "wasm::WebAssemblyInstanceGetExports") \
376 IF_WASM(V, wasm_WebAssemblyInstantiate, "wasm::WebAssemblyInstantiate") \
377 IF_WASM(V, wasm_WebAssemblyMemory, "wasm::WebAssemblyMemory") \
378 IF_WASM(V, wasm_WebAssemblyMemoryMapDescriptor, \
379 "wasm::WebAssemblyMemoryMapDescriptor") \
380 IF_WASM(V, wasm_WebAssemblyMemoryGetBuffer, \
381 "wasm::WebAssemblyMemoryGetBuffer") \
382 IF_WASM(V, wasm_WebAssemblyMemoryGrow, "wasm::WebAssemblyMemoryGrow") \
383 IF_WASM(V, wasm_WebAssemblyMemoryMapDescriptorMap, \
384 "wasm::WebAssemblyMemoryMapDescriptorMap") \
385 IF_WASM(V, wasm_WebAssemblyMemoryMapDescriptorUnmap, \
386 "wasm::WebAssemblyMemoryMapDescriptorUnmap") \
387 IF_WASM(V, wasm_WebAssemblyMemoryToFixedLengthBuffer, \
388 "wasm::WebAssemblyMemoryToFixedLengthBuffer") \
389 IF_WASM(V, wasm_WebAssemblyMemoryToResizableBuffer, \
390 "wasm::WebAssemblyMemoryToResizableBuffer") \
391 IF_WASM(V, wasm_WebAssemblyModule, "wasm::WebAssemblyModule") \
392 IF_WASM(V, wasm_WebAssemblyModuleCustomSections, \
393 "wasm::WebAssemblyModuleCustomSections") \
394 IF_WASM(V, wasm_WebAssemblyModuleExports, "wasm::WebAssemblyModuleExports") \
395 IF_WASM(V, wasm_WebAssemblyModuleImports, "wasm::WebAssemblyModuleImports") \
396 IF_WASM(V, wasm_WebAssemblySuspending, "wasm::WebAssemblySuspending") \
397 IF_WASM(V, wasm_WebAssemblyTable, "wasm::WebAssemblyTable") \
398 IF_WASM(V, wasm_WebAssemblyTableGet, "wasm::WebAssemblyTableGet") \
399 IF_WASM(V, wasm_WebAssemblyTableGetLength, \
400 "wasm::WebAssemblyTableGetLength") \
401 IF_WASM(V, wasm_WebAssemblyTableGrow, "wasm::WebAssemblyTableGrow") \
402 IF_WASM(V, wasm_WebAssemblyTableSet, "wasm::WebAssemblyTableSet") \
403 IF_WASM(V, wasm_WebAssemblyTag, "wasm::WebAssemblyTag") \
404 IF_WASM(V, wasm_WebAssemblyValidate, "wasm::WebAssemblyValidate") \
405 V(address_of_wasm_i8x16_swizzle_mask, "wasm_i8x16_swizzle_mask") \
406 V(address_of_wasm_i8x16_popcnt_mask, "wasm_i8x16_popcnt_mask") \
407 V(address_of_wasm_i8x16_splat_0x01, "wasm_i8x16_splat_0x01") \
408 V(address_of_wasm_i8x16_splat_0x0f, "wasm_i8x16_splat_0x0f") \
409 V(address_of_wasm_i8x16_splat_0x33, "wasm_i8x16_splat_0x33") \
410 V(address_of_wasm_i8x16_splat_0x55, "wasm_i8x16_splat_0x55") \
411 V(address_of_wasm_i16x8_splat_0x0001, "wasm_16x8_splat_0x0001") \
412 V(address_of_wasm_f64x2_convert_low_i32x4_u_int_mask, \
413 "wasm_f64x2_convert_low_i32x4_u_int_mask") \
414 V(supports_wasm_simd_128_address, "wasm::supports_wasm_simd_128_address") \
415 V(address_of_wasm_double_2_power_52, "wasm_double_2_power_52") \
416 V(address_of_wasm_int32_max_as_double, "wasm_int32_max_as_double") \
417 V(address_of_wasm_uint32_max_as_double, "wasm_uint32_max_as_double") \
418 V(address_of_wasm_int32_overflow_as_float, "wasm_int32_overflow_as_float") \
419 V(address_of_wasm_i32x8_int32_overflow_as_float, \
420 "wasm_i32x8_int32_overflow_as_float") \
421 V(supports_cetss_address, "CpuFeatures::supports_cetss_address") \
422 V(write_barrier_marking_from_code_function, "WriteBarrier::MarkingFromCode") \
423 V(write_barrier_indirect_pointer_marking_from_code_function, \
424 "WriteBarrier::IndirectPointerMarkingFromCode") \
425 V(write_barrier_shared_marking_from_code_function, \
426 "WriteBarrier::SharedMarkingFromCode") \
427 V(shared_barrier_from_code_function, "WriteBarrier::SharedFromCode") \
428 V(call_enqueue_microtask_function, "MicrotaskQueue::CallEnqueueMicrotask") \
429 V(call_enter_context_function, "call_enter_context_function") \
430 V(int64_mul_high_function, "int64_mul_high_function") \
431 V(atomic_pair_load_function, "atomic_pair_load_function") \
432 V(atomic_pair_store_function, "atomic_pair_store_function") \
433 V(atomic_pair_add_function, "atomic_pair_add_function") \
434 V(atomic_pair_sub_function, "atomic_pair_sub_function") \
435 V(atomic_pair_and_function, "atomic_pair_and_function") \
436 V(atomic_pair_or_function, "atomic_pair_or_function") \
437 V(atomic_pair_xor_function, "atomic_pair_xor_function") \
438 V(atomic_pair_exchange_function, "atomic_pair_exchange_function") \
439 V(atomic_pair_compare_exchange_function, \
440 "atomic_pair_compare_exchange_function") \
441 IF_TSAN(V, tsan_relaxed_store_function_8_bits, \
442 "tsan_relaxed_store_function_8_bits") \
443 IF_TSAN(V, tsan_relaxed_store_function_16_bits, \
444 "tsan_relaxed_store_function_16_bits") \
445 IF_TSAN(V, tsan_relaxed_store_function_32_bits, \
446 "tsan_relaxed_store_function_32_bits") \
447 IF_TSAN(V, tsan_relaxed_store_function_64_bits, \
448 "tsan_relaxed_store_function_64_bits") \
449 IF_TSAN(V, tsan_seq_cst_store_function_8_bits, \
450 "tsan_seq_cst_store_function_8_bits") \
451 IF_TSAN(V, tsan_seq_cst_store_function_16_bits, \
452 "tsan_seq_cst_store_function_16_bits") \
453 IF_TSAN(V, tsan_seq_cst_store_function_32_bits, \
454 "tsan_seq_cst_store_function_32_bits") \
455 IF_TSAN(V, tsan_seq_cst_store_function_64_bits, \
456 "tsan_seq_cst_store_function_64_bits") \
457 IF_TSAN(V, tsan_relaxed_load_function_32_bits, \
458 "tsan_relaxed_load_function_32_bits") \
459 IF_TSAN(V, tsan_relaxed_load_function_64_bits, \
460 "tsan_relaxed_load_function_64_bits") \
461 V(re_case_insensitive_compare_unicode, \
462 "RegExpMacroAssembler::CaseInsensitiveCompareUnicode()") \
463 V(re_case_insensitive_compare_non_unicode, \
464 "RegExpMacroAssembler::CaseInsensitiveCompareNonUnicode()") \
465 V(re_is_character_in_range_array, \
466 "RegExpMacroAssembler::IsCharacterInRangeArray()") \
467 V(re_check_stack_guard_state, \
468 "RegExpMacroAssembler*::CheckStackGuardState()") \
469 V(re_grow_stack, "NativeRegExpMacroAssembler::GrowStack()") \
470 V(re_word_character_map, "NativeRegExpMacroAssembler::word_character_map") \
471 V(re_match_for_call_from_js, "IrregexpInterpreter::MatchForCallFromJs") \
472 V(re_experimental_match_for_call_from_js, \
473 "ExperimentalRegExp::MatchForCallFromJs") \
474 V(re_atom_exec_raw, "RegExp::AtomExecRaw") \
475 V(allocate_regexp_result_vector, "RegExpResultVector::Allocate") \
476 V(free_regexp_result_vector, "RegExpResultVector::Free") \
477 V(typed_array_and_rab_gsab_typed_array_elements_kind_shifts, \
478 "TypedArrayAndRabGsabTypedArrayElementsKindShifts") \
479 V(typed_array_and_rab_gsab_typed_array_elements_kind_sizes, \
480 "TypedArrayAndRabGsabTypedArrayElementsKindSizes") \
481 V(allocate_buffer, "AllocateBuffer") \
482 EXTERNAL_REFERENCE_LIST_INTL(V) \
483 EXTERNAL_REFERENCE_LIST_SANDBOX(V) \
484 EXTERNAL_REFERENCE_LIST_LEAPTIERING(V) \
485 EXTERNAL_REFERENCE_LIST_CET_SHADOW_STACK(V)
487#ifdef V8_INTL_SUPPORT
488#define EXTERNAL_REFERENCE_LIST_INTL(V) \
489 V(intl_convert_one_byte_to_lower, "intl_convert_one_byte_to_lower") \
490 V(intl_to_latin1_lower_table, "intl_to_latin1_lower_table") \
491 V(intl_ascii_collation_weights_l1, "Intl::AsciiCollationWeightsL1") \
492 V(intl_ascii_collation_weights_l3, "Intl::AsciiCollationWeightsL3")
494#define EXTERNAL_REFERENCE_LIST_INTL(V)
497#ifdef V8_ENABLE_SANDBOX
498#ifdef V8_COMPRESS_POINTERS_IN_MULTIPLE_CAGES
499#define EXTERNAL_REFERENCE_LIST_SANDBOX(V) \
500 V(sandbox_base_address, "Sandbox::base()") \
501 V(sandbox_end_address, "Sandbox::end()") \
502 V(empty_backing_store_buffer, "EmptyBackingStoreBuffer()") \
503 V(memory_chunk_metadata_table_address, "MemoryChunkMetadata::Table()")
505#define EXTERNAL_REFERENCE_LIST_SANDBOX(V) \
506 V(sandbox_base_address, "Sandbox::base()") \
507 V(sandbox_end_address, "Sandbox::end()") \
508 V(empty_backing_store_buffer, "EmptyBackingStoreBuffer()") \
509 V(memory_chunk_metadata_table_address, "MemoryChunkMetadata::Table()") \
510 V(global_code_pointer_table_base_address, \
511 "IsolateGroup::current()->code_pointer_table()")
514#define EXTERNAL_REFERENCE_LIST_SANDBOX(V)
517#ifdef V8_ENABLE_LEAPTIERING
518#define EXTERNAL_REFERENCE_LIST_LEAPTIERING(V) \
519 V(js_dispatch_table_address, "IsolateGroup::current()->js_dispatch_table()")
521#define EXTERNAL_REFERENCE_LIST_LEAPTIERING(V)
524#ifdef V8_ENABLE_CET_SHADOW_STACK
525#define EXTERNAL_REFERENCE_LIST_CET_SHADOW_STACK(V) \
526 V(address_of_cet_compatible_flag, "v8_flags.cet_compatible") \
527 V(ensure_valid_return_address, "Deoptimizer::EnsureValidReturnAddress()")
529#define EXTERNAL_REFERENCE_LIST_CET_SHADOW_STACK(V)
590#define COUNT_EXTERNAL_REFERENCE(name, desc) +1
595#undef COUNT_EXTERNAL_REFERENCE
613 const CFunctionInfo*
const* c_signatures,
unsigned num_functions);
621 template <
typename SubjectChar,
typename PatternChar>
626#define DECL_EXTERNAL_REFERENCE(name, desc) \
627 V8_EXPORT_PRIVATE static ExternalReference name();
629#undef DECL_EXTERNAL_REFERENCE
631#define DECL_EXTERNAL_REFERENCE(name, desc) \
632 static V8_EXPORT_PRIVATE ExternalReference name(Isolate* isolate);
634#undef DECL_EXTERNAL_REFERENCE
static Address Redirect(Address external_function, Type type=ExternalReference::BUILTIN_CALL)
static V8_EXPORT_PRIVATE ExternalReference address_of_code_pointer_table_base_address()
static V8_EXPORT_PRIVATE ExternalReference address_of_load_from_stack_count(const char *function_name)
int32_t offset_from_root_register() const
ExternalReference(void *address)
static V8_EXPORT_PRIVATE ExternalReference jslimit_address()
static ExternalReference invoke_function_callback(CallApiCallbackMode mode)
static V8_EXPORT_PRIVATE ExternalReference isolate_address()
static Address UnwrapRedirection(Address redirection_trampoline)
ExternalReference(Address address)
static V8_EXPORT_PRIVATE ExternalReference FromRawAddress(Address address)
static constexpr int kExternalReferenceCountIsolateIndependent
V8_EXPORT_PRIVATE static V8_NOINLINE ExternalReference runtime_function_table_address_for_unittests(Isolate *isolate)
ExternalReference(IsolateFieldId id)
static V8_EXPORT_PRIVATE ExternalReference address_of_pending_message(LocalIsolate *local_isolate)
static constexpr int kExternalReferenceCountIsolateDependent
bool IsIsolateFieldId() const
V8_EXPORT_PRIVATE Address address() const
static V8_EXPORT_PRIVATE ExternalReference address_of_store_to_stack_count(const char *function_name)
@ BUILTIN_FP_POINTER_CALL
static ExternalReference Create(const SCTableReference &table_ref)
static ExternalReference search_string_raw()
#define COUNT_EXTERNAL_REFERENCE(name, desc)
#define DECL_EXTERNAL_REFERENCE(name, desc)
#define EXTERNAL_REFERENCE_LIST(V)
#define EXTERNAL_REFERENCE_LIST_WITH_ISOLATE(V)
bool operator!=(ExternalReference lhs, ExternalReference rhs)
size_t hash_value(AtomicMemoryOrder order)
std::ostream & operator<<(std::ostream &os, AtomicMemoryOrder order)
bool operator==(ExternalReference lhs, ExternalReference rhs)
static constexpr Address kNullAddress
void abort_with_reason(int reason)
#define ASSERT_TRIVIALLY_COPYABLE(T)
#define V8_EXPORT_PRIVATE