Lines Matching refs:builder
5 use crate::{BuiltinFunctionSignatures, builder::LinkOptions, wasm_call_signature};
153 builder: &mut FunctionBuilder<'_>, in call_indirect_host()
159 let signature = &builder.func.dfg.signatures[sig]; in call_indirect_host()
176 let new_sig = builder.func.import_signature(new_signature); in call_indirect_host()
180 builder in call_indirect_host()
184 let func = builder.func.import_function(ir::ExtFuncData { in call_indirect_host()
194 return builder.ins().call(func, &raw_args); in call_indirect_host()
197 builder.ins().call_indirect(sig, addr, args) in call_indirect_host()
389 let (mut builder, block0) = compiler.builder(func); in compile_wasm_to_array_trampoline()
391 let args = builder.func.dfg.block_params(block0).to_vec(); in compile_wasm_to_array_trampoline()
400 &mut builder, in compile_wasm_to_array_trampoline()
405 let vm_store_context = builder.ins().load( in compile_wasm_to_array_trampoline()
411 save_last_wasm_exit_fp_and_pc(&mut builder, pointer_type, &ptr, vm_store_context); in compile_wasm_to_array_trampoline()
415 self.allocate_stack_array_and_spill_args(wasm_func_ty, &mut builder, &args[2..]); in compile_wasm_to_array_trampoline()
416 let args_len = builder.ins().iconst(pointer_type, i64::from(args_len)); in compile_wasm_to_array_trampoline()
421 let callee = builder.ins().load( in compile_wasm_to_array_trampoline()
429 let callee_signature = builder.func.import_signature(array_call_sig); in compile_wasm_to_array_trampoline()
431 &mut builder, in compile_wasm_to_array_trampoline()
441 let vmstore_ctx_ptr = builder.ins().load( in compile_wasm_to_array_trampoline()
447 let old_version = builder.ins().load( in compile_wasm_to_array_trampoline()
453 let new_version = builder.ins().iadd_imm(old_version, 1); in compile_wasm_to_array_trampoline()
454 builder.ins().store( in compile_wasm_to_array_trampoline()
463 let succeeded = builder.func.dfg.inst_results(call)[0]; in compile_wasm_to_array_trampoline()
464 self.raise_if_host_trapped(&mut builder, caller_vmctx, succeeded); in compile_wasm_to_array_trampoline()
468 self.load_values_from_array(wasm_func_ty.results(), &mut builder, args_base, args_len); in compile_wasm_to_array_trampoline()
469 builder.ins().return_(&results); in compile_wasm_to_array_trampoline()
470 builder.finalize(); in compile_wasm_to_array_trampoline()
489 let mut builder = in append_code() localVariable
492 builder.force_veneers(); in append_code()
517 .map(|builder| builder.serialize()) in append_code()
528 let (sym_id, range) = builder.append_func(&sym, func, |idx| resolve_reloc(i, idx)); in append_code()
567 builder.append_padding(self.linkopts.padding_between_functions); in append_code()
582 builder.finish(|text| { in append_code()
765 let (mut builder, block0) = compiler.builder(func); in compile_wasm_to_builtin()
766 let vmctx = builder.block_params(block0)[0]; in compile_wasm_to_builtin()
771 self.debug_assert_vmctx_kind(&mut builder, vmctx, wasmtime_environ::VMCONTEXT_MAGIC); in compile_wasm_to_builtin()
772 let vm_store_context = builder.ins().load( in compile_wasm_to_builtin()
778 save_last_wasm_exit_fp_and_pc(&mut builder, pointer_type, &ptr_size, vm_store_context); in compile_wasm_to_builtin()
782 let args = builder.block_params(block0).to_vec(); in compile_wasm_to_builtin()
783 let call = self.call_builtin(&mut builder, vmctx, &args, builtin_func_index, host_sig); in compile_wasm_to_builtin()
784 let results = builder.func.dfg.inst_results(call).to_vec(); in compile_wasm_to_builtin()
794 self.raise_if_host_trapped(&mut builder, vmctx, results[0]); in compile_wasm_to_builtin()
797 let ty = builder.func.dfg.value_type(results[0]); in compile_wasm_to_builtin()
798 let trapped = builder.ins().iconst(ty, -2); in compile_wasm_to_builtin()
799 let succeeded = builder.ins().icmp(IntCC::NotEqual, results[0], trapped); in compile_wasm_to_builtin()
800 self.raise_if_host_trapped(&mut builder, vmctx, succeeded); in compile_wasm_to_builtin()
803 let ty = builder.func.dfg.value_type(results[0]); in compile_wasm_to_builtin()
804 let zero = builder.ins().iconst(ty, 0); in compile_wasm_to_builtin()
806 builder in compile_wasm_to_builtin()
809 self.raise_if_host_trapped(&mut builder, vmctx, succeeded); in compile_wasm_to_builtin()
812 let ty = builder.func.dfg.value_type(results[0]); in compile_wasm_to_builtin()
813 let minus_one = builder.ins().iconst(ty, -1); in compile_wasm_to_builtin()
814 let succeeded = builder.ins().icmp(IntCC::NotEqual, results[0], minus_one); in compile_wasm_to_builtin()
815 self.raise_if_host_trapped(&mut builder, vmctx, succeeded); in compile_wasm_to_builtin()
822 builder.ins().return_(&results); in compile_wasm_to_builtin()
824 builder.ins().return_(&[]); in compile_wasm_to_builtin()
826 builder.finalize(); in compile_wasm_to_builtin()
1063 builder: &mut FunctionBuilder, in allocate_stack_array_and_spill_args()
1075 let slot = builder.func.create_sized_stack_slot(ir::StackSlotData::new( in allocate_stack_array_and_spill_args()
1080 let values_vec_ptr = builder.ins().stack_addr(pointer_type, slot, 0); in allocate_stack_array_and_spill_args()
1083 let values_vec_len = builder in allocate_stack_array_and_spill_args()
1086 self.store_values_to_array(builder, ty.params(), args, values_vec_ptr, values_vec_len); in allocate_stack_array_and_spill_args()
1100 builder: &mut FunctionBuilder, in store_values_to_array()
1107 self.debug_assert_enough_capacity_for_length(builder, types.len(), values_vec_capacity); in store_values_to_array()
1121 &mut builder.cursor(), in store_values_to_array()
1140 builder: &mut FunctionBuilder, in load_values_from_array()
1147 self.debug_assert_enough_capacity_for_length(builder, types.len(), values_vec_capacity); in load_values_from_array()
1159 &mut builder.cursor(), in load_values_from_array()
1207 builder: &mut FunctionBuilder<'_>, in raise_if_host_trapped()
1211 let trapped_block = builder.create_block(); in raise_if_host_trapped()
1212 let continuation_block = builder.create_block(); in raise_if_host_trapped()
1213 builder.set_cold_block(trapped_block); in raise_if_host_trapped()
1214 builder in raise_if_host_trapped()
1218 builder.seal_block(trapped_block); in raise_if_host_trapped()
1219 builder.seal_block(continuation_block); in raise_if_host_trapped()
1221 builder.switch_to_block(trapped_block); in raise_if_host_trapped()
1224 self.call_builtin(builder, vmctx, &[vmctx], BuiltinFunctionIndex::raise(), sig); in raise_if_host_trapped()
1225 builder.ins().trap(TRAP_INTERNAL_ASSERT); in raise_if_host_trapped()
1227 builder.switch_to_block(continuation_block); in raise_if_host_trapped()
1234 builder: &mut FunctionBuilder<'_>, in call_builtin()
1248 let array_addr = builder.ins().load( in call_builtin()
1255 let func_addr = builder in call_builtin()
1259 let sig = builder.func.import_signature(sig); in call_builtin()
1260 self.call_indirect_host(builder, builtin, sig, func_addr, args) in call_builtin()
1273 builder: &mut FunctionBuilder, in debug_assert_enough_capacity_for_length()
1280 let enough_capacity = builder.ins().icmp_imm( in debug_assert_enough_capacity_for_length()
1285 builder.ins().trapz(enough_capacity, TRAP_INTERNAL_ASSERT); in debug_assert_enough_capacity_for_length()
1290 builder: &mut FunctionBuilder, in debug_assert_vmctx_kind()
1297 let magic = builder.ins().load( in debug_assert_vmctx_kind()
1303 let is_expected_vmctx = builder.ins().icmp_imm( in debug_assert_vmctx_kind()
1308 builder.ins().trapz(is_expected_vmctx, TRAP_INTERNAL_ASSERT); in debug_assert_vmctx_kind()
1329 let (mut builder, block0) = compiler.builder(func); in array_to_wasm_trampoline()
1331 let try_call_block = builder.create_block(); in array_to_wasm_trampoline()
1332 builder.ins().jump(try_call_block, []); in array_to_wasm_trampoline()
1333 builder.switch_to_block(try_call_block); in array_to_wasm_trampoline()
1336 let params = builder.func.dfg.block_params(block0); in array_to_wasm_trampoline()
1343 &mut builder, in array_to_wasm_trampoline()
1354 self.debug_assert_vmctx_kind(&mut builder, vmctx, expected_vmctx_magic); in array_to_wasm_trampoline()
1356 &mut builder, in array_to_wasm_trampoline()
1366 let normal_return = builder.create_block(); in array_to_wasm_trampoline()
1367 let exceptional_return = builder.create_block(); in array_to_wasm_trampoline()
1372 builder in array_to_wasm_trampoline()
1380 let signature = builder.func.import_signature(wasm_call_sig.clone()); in array_to_wasm_trampoline()
1384 builder in array_to_wasm_trampoline()
1388 builder.func.dfg.ext_funcs.push(ir::ExtFuncData { in array_to_wasm_trampoline()
1396 let dfg = &mut builder.func.dfg; in array_to_wasm_trampoline()
1411 builder.ins().try_call(callee, &args, exception_table); in array_to_wasm_trampoline()
1413 builder.seal_block(try_call_block); in array_to_wasm_trampoline()
1414 builder.seal_block(normal_return); in array_to_wasm_trampoline()
1415 builder.seal_block(exceptional_return); in array_to_wasm_trampoline()
1419 builder.switch_to_block(normal_return); in array_to_wasm_trampoline()
1421 &mut builder, in array_to_wasm_trampoline()
1427 let true_return = builder.ins().iconst(ir::types::I8, 1); in array_to_wasm_trampoline()
1428 builder.ins().return_(&[true_return]); in array_to_wasm_trampoline()
1433 builder.switch_to_block(exceptional_return); in array_to_wasm_trampoline()
1434 let false_return = builder.ins().iconst(ir::types::I8, 0); in array_to_wasm_trampoline()
1435 builder.ins().return_(&[false_return]); in array_to_wasm_trampoline()
1437 builder.finalize(); in array_to_wasm_trampoline()
1452 fn builder(&mut self, func: ir::Function) -> (FunctionBuilder<'_>, ir::Block) { in builder() method
1454 let mut builder = FunctionBuilder::new( in builder() localVariable
1459 let block0 = builder.create_block(); in builder()
1460 builder.append_block_params_for_function_params(block0); in builder()
1461 builder.switch_to_block(block0); in builder()
1462 builder.ensure_inserted_block(); in builder()
1463 builder.seal_block(block0); in builder()
1464 (builder, block0) in builder()
1541 if let Some(builder) = self.cx.debug_slot_descriptor.take() { in finish_with_info()
1542 compiled_function.debug_slot_descriptor = Some(builder); in finish_with_info()
1603 builder: &mut ExceptionTableBuilder, in clif_to_env_exception_tables()
1607 builder.add_func(CodeOffset::try_from(range.start).unwrap(), call_sites) in clif_to_env_exception_tables()
1613 builder: &mut FrameTableBuilder, in clif_to_env_frame_tables()
1644 builder.add_frame_descriptor(slot_to_fp_offset, &descriptor) in clif_to_env_frame_tables()
1662 builder.add_program_point(native_pc_in_code_section, pos, &frames); in clif_to_env_frame_tables()
1684 builder: &mut FunctionBuilder, in save_last_wasm_entry_context()
1692 let vm_store_context = builder.ins().load( in save_last_wasm_entry_context()
1700 let fp = builder.ins().get_frame_pointer(pointer_type); in save_last_wasm_entry_context()
1701 builder.ins().store( in save_last_wasm_entry_context()
1707 let sp = builder.ins().get_stack_pointer(pointer_type); in save_last_wasm_entry_context()
1708 builder.ins().store( in save_last_wasm_entry_context()
1717 let trap_handler = builder in save_last_wasm_entry_context()
1720 builder.ins().store( in save_last_wasm_entry_context()
1729 builder: &mut FunctionBuilder, in save_last_wasm_exit_fp_and_pc()
1737 let trampoline_fp = builder.ins().get_frame_pointer(pointer_type); in save_last_wasm_exit_fp_and_pc()
1738 builder.ins().store( in save_last_wasm_exit_fp_and_pc()
1746 let wasm_pc = builder.ins().get_return_address(pointer_type); in save_last_wasm_exit_fp_and_pc()
1747 builder.ins().store( in save_last_wasm_exit_fp_and_pc()