Lines Matching refs:builder

103             builder: &mut FunctionBuilder,  in args()
106 let address = builder.ins().iadd_imm(self.address, offset); in args()
113 builder: &mut FunctionBuilder, in values()
116 let address = builder.ins().iadd_imm(self.address, offset); in values()
123 builder: &mut FunctionBuilder, in common_stack_information()
126 let address = builder.ins().iadd_imm(self.address, offset); in common_stack_information()
136 builder: &mut FunctionBuilder, in set_parent_stack_chain()
140 new_stack_chain.store(env, builder, self.address, offset) in set_parent_stack_chain()
149 builder: &mut FunctionBuilder, in get_parent_stack_chain()
152 VMStackChain::load(env, builder, self.address, offset, env.pointer_type()) in get_parent_stack_chain()
158 builder: &mut FunctionBuilder, in set_last_ancestor()
163 builder in set_last_ancestor()
171 builder: &mut FunctionBuilder, in get_last_ancestor()
175 builder in get_last_ancestor()
185 builder: &mut FunctionBuilder, in get_revision()
189 let revision = builder.ins().load(I64, mem_flags, self.address, offset); in get_revision()
199 builder: &mut FunctionBuilder, in incr_revision()
204 let revision_plus1 = builder.ins().iadd_imm(revision, 1); in incr_revision()
205 builder in incr_revision()
214 builder: &mut FunctionBuilder, in get_fiber_stack()
218 let fiber_stack_top_of_stack_ptr = builder.ins().iadd_imm(self.address, offset); in get_fiber_stack()
231 fn get(&self, builder: &mut FunctionBuilder, ty: ir::Type, offset: i32) -> ir::Value { in get()
233 builder.ins().load(ty, mem_flags, self.address, offset) in get()
236 fn set<U>(&self, builder: &mut FunctionBuilder, offset: i32, value: ir::Value) { in set()
238 builder.func.dfg.value_type(value), in set()
243 builder.ins().store(mem_flags, value, self.address, offset); in set()
249 builder: &mut FunctionBuilder, in get_data()
252 self.get(builder, env.pointer_type(), offset) in get_data()
258 builder: &mut FunctionBuilder, in get_length()
262 self.get(builder, I32, offset) in get_length()
268 builder: &mut FunctionBuilder, in set_length()
273 self.set::<u32>(builder, offset, length); in set_length()
279 builder: &mut FunctionBuilder, in set_capacity()
284 self.set::<u32>(builder, offset, capacity); in set_capacity()
290 builder: &mut FunctionBuilder, in set_data()
293 debug_assert_eq!(builder.func.dfg.value_type(data), env.pointer_type()); in set_data()
296 builder.ins().store(mem_flags, data, self.address, offset); in set_data()
304 builder: &mut FunctionBuilder, in occupy_next_slots()
307 let data = self.get_data(env, builder); in occupy_next_slots()
308 let original_length = self.get_length(env, builder); in occupy_next_slots()
309 let new_length = builder in occupy_next_slots()
312 self.set_length(env, builder, new_length); in occupy_next_slots()
315 let original_length = builder.ins().uextend(I64, original_length); in occupy_next_slots()
316 let byte_offset = builder in occupy_next_slots()
319 builder.ins().iadd(data, byte_offset) in occupy_next_slots()
325 builder: &mut FunctionBuilder, in allocate_or_reuse_stack_slot()
333 Some(slot) if builder.func.sized_stack_slots[slot].size >= required_size => { in allocate_or_reuse_stack_slot()
334 let slot_data = &builder.func.sized_stack_slots[slot]; in allocate_or_reuse_stack_slot()
339 let capacity_value = builder.ins().iconst(I32, i64::from(existing_capacity)); in allocate_or_reuse_stack_slot()
340 let existing_data = builder.ins().stack_addr(env.pointer_type(), slot, 0); in allocate_or_reuse_stack_slot()
342 self.set_capacity(env, builder, capacity_value); in allocate_or_reuse_stack_slot()
343 self.set_data(env, builder, existing_data); in allocate_or_reuse_stack_slot()
348 let capacity_value = builder.ins().iconst(I32, i64::from(required_capacity)); in allocate_or_reuse_stack_slot()
354 let slot = builder.create_sized_stack_slot(slot_size); in allocate_or_reuse_stack_slot()
355 let new_data = builder.ins().stack_addr(env.pointer_type(), slot, 0); in allocate_or_reuse_stack_slot()
357 self.set_capacity(env, builder, capacity_value); in allocate_or_reuse_stack_slot()
358 self.set_data(env, builder, new_data); in allocate_or_reuse_stack_slot()
371 builder: &mut FunctionBuilder, in load_data_entries()
376 let data_start_pointer = self.get_data(env, builder); in load_data_entries()
381 let val = builder in load_data_entries()
397 builder: &mut FunctionBuilder, in store_data_entries()
400 let store_count = builder in store_data_entries()
407 let ty = builder.func.dfg.value_type(*val); in store_data_entries()
414 let data_start_pointer = self.get_data(env, builder); in store_data_entries()
418 builder in store_data_entries()
424 self.set_length(env, builder, store_count); in store_data_entries()
430 builder: &mut FunctionBuilder, in clear()
433 let zero32 = builder.ins().iconst(I32, 0); in clear()
434 self.set_length(env, builder, zero32); in clear()
437 let zero32 = builder.ins().iconst(I32, 0); in clear()
438 self.set_capacity(env, builder, zero32); in clear()
440 let zero_ptr = builder.ins().iconst(env.pointer_type(), 0); in clear()
441 self.set_data(env, builder, zero_ptr); in clear()
450 builder: &mut FunctionBuilder, in from_continuation()
458 let discriminant = builder in from_continuation()
470 builder: &mut FunctionBuilder, in absent()
477 let discriminant = builder in absent()
480 let zero_filler = builder.ins().iconst(env.pointer_type(), 0i64); in absent()
490 builder: &mut FunctionBuilder, in is_initial_stack()
492 builder.ins().icmp_imm( in is_initial_stack()
515 builder: &mut FunctionBuilder, in load()
524 data.push(builder.ins().load(pointer_type, memflags, pointer, offset)); in load()
535 builder: &mut FunctionBuilder, in store()
544 debug_assert_eq!(builder.func.dfg.value_type(value), env.pointer_type()); in store()
545 builder.ins().store(memflags, value, target_pointer, offset); in store()
586 builder: &mut FunctionBuilder, in get_state_ptr()
590 builder.ins().iadd_imm(self.address, offset) in get_state_ptr()
596 builder: &mut FunctionBuilder, in get_stack_limits_ptr()
600 builder.ins().iadd_imm(self.address, offset) in get_stack_limits_ptr()
606 builder: &mut FunctionBuilder, in load_state()
609 let state_ptr = self.get_state_ptr(env, builder); in load_state()
611 builder.ins().load(I32, mem_flags, state_ptr, 0) in load_state()
617 builder: &mut FunctionBuilder, in set_state_no_payload()
620 let discriminant = builder.ins().iconst(I32, i64::from(discriminant)); in set_state_no_payload()
622 let state_ptr = self.get_state_ptr(env, builder); in set_state_no_payload()
624 builder.ins().store(mem_flags, discriminant, state_ptr, 0); in set_state_no_payload()
630 builder: &mut FunctionBuilder, in set_state_running()
633 self.set_state_no_payload(env, builder, discriminant); in set_state_running()
639 builder: &mut FunctionBuilder, in set_state_parent()
642 self.set_state_no_payload(env, builder, discriminant); in set_state_parent()
648 builder: &mut FunctionBuilder, in set_state_returned()
651 self.set_state_no_payload(env, builder, discriminant); in set_state_returned()
657 builder: &mut FunctionBuilder, in set_state_suspended()
660 self.set_state_no_payload(env, builder, discriminant); in set_state_suspended()
668 builder: &mut FunctionBuilder, in was_invoked()
670 let actual_state = self.load_state(env, builder); in was_invoked()
672 builder in was_invoked()
680 builder: &mut FunctionBuilder, in get_handler_list()
683 let address = builder.ins().iadd_imm(self.address, offset); in get_handler_list()
690 builder: &mut FunctionBuilder, in get_first_switch_handler_index()
699 builder.ins().load(I32, memflags, self.address, offset) in get_first_switch_handler_index()
705 builder: &mut FunctionBuilder, in set_first_switch_handler_index()
715 builder.ins().store(memflags, value, self.address, offset); in set_first_switch_handler_index()
724 builder: &mut FunctionBuilder, in write_limits_to_vmcontext()
727 let stack_limits_ptr = self.get_stack_limits_ptr(env, builder); in write_limits_to_vmcontext()
732 let our_value = builder.ins().load( in write_limits_to_vmcontext()
738 builder.ins().store( in write_limits_to_vmcontext()
767 builder: &mut FunctionBuilder, in load_limits_from_vmcontext()
771 let stack_limits_ptr = self.get_stack_limits_ptr(env, builder); in load_limits_from_vmcontext()
777 let from_vm_runtime_limits = builder.ins().load( in load_limits_from_vmcontext()
783 builder.ins().store( in load_limits_from_vmcontext()
818 builder: &mut FunctionBuilder, in load_top_of_stack()
821 builder in load_top_of_stack()
831 builder: &mut FunctionBuilder, in load_control_context()
833 let tos = self.load_top_of_stack(env, builder); in load_control_context()
835 builder.ins().iadd_imm(tos, -0x18) in load_control_context()
848 builder: &mut FunctionBuilder, in vmcontref_store_payloads()
855 let use_args_block = builder.create_block(); in vmcontref_store_payloads()
856 let use_payloads_block = builder.create_block(); in vmcontref_store_payloads()
857 let store_data_block = builder.create_block(); in vmcontref_store_payloads()
858 builder.append_block_param(store_data_block, env.pointer_type()); in vmcontref_store_payloads()
861 let csi = co.common_stack_information(env, builder); in vmcontref_store_payloads()
862 let was_invoked = csi.was_invoked(env, builder); in vmcontref_store_payloads()
863 builder in vmcontref_store_payloads()
868 builder.switch_to_block(use_args_block); in vmcontref_store_payloads()
869 builder.seal_block(use_args_block); in vmcontref_store_payloads()
871 let args = co.args(env, builder); in vmcontref_store_payloads()
872 let ptr = args.occupy_next_slots(env, builder, count); in vmcontref_store_payloads()
874 builder in vmcontref_store_payloads()
880 builder.switch_to_block(use_payloads_block); in vmcontref_store_payloads()
881 builder.seal_block(use_payloads_block); in vmcontref_store_payloads()
883 let payloads = co.values(env, builder); in vmcontref_store_payloads()
887 let ptr = payloads.occupy_next_slots(env, builder, count); in vmcontref_store_payloads()
888 builder in vmcontref_store_payloads()
894 builder.switch_to_block(store_data_block); in vmcontref_store_payloads()
895 builder.seal_block(store_data_block); in vmcontref_store_payloads()
897 let ptr = builder.block_params(store_data_block)[0]; in vmcontref_store_payloads()
903 builder.ins().store(memflags, *value, ptr, offset); in vmcontref_store_payloads()
912 builder: &mut FunctionBuilder, in tag_address()
915 let vmctx = env.vmctx_val(&mut builder.cursor()); in tag_address()
920 builder.ins().iadd_imm(vmctx, i64::from(offset)) in tag_address()
923 builder.ins().load( in tag_address()
937 builder: &mut FunctionBuilder, in vmctx_load_stack_chain()
944 let vm_store_context = builder.ins().load( in vmctx_load_stack_chain()
953 builder, in vmctx_load_stack_chain()
964 builder: &mut FunctionBuilder, in vmctx_store_stack_chain()
972 let vm_store_context = builder.ins().load( in vmctx_store_stack_chain()
979 stack_chain.store(env, builder, vm_store_context, stack_chain_offset) in vmctx_store_stack_chain()
986 builder: &mut FunctionBuilder, in vmctx_set_active_continuation()
990 let chain = VMStackChain::from_continuation(env, builder, contref); in vmctx_set_active_continuation()
991 vmctx_store_stack_chain(env, builder, vmctx, &chain) in vmctx_set_active_continuation()
996 builder: &mut FunctionBuilder, in vmctx_load_vm_runtime_limits_ptr()
1006 builder.ins().load(pointer_type, flags, vmctx, offset) in vmctx_load_vm_runtime_limits_ptr()
1054 builder: &mut FunctionBuilder, in search_handler()
1059 let handle_link = builder.create_block(); in search_handler()
1060 let begin_search_handler_list = builder.create_block(); in search_handler()
1061 let try_index = builder.create_block(); in search_handler()
1062 let compare_tags = builder.create_block(); in search_handler()
1063 let on_match = builder.create_block(); in search_handler()
1064 let on_no_match = builder.create_block(); in search_handler()
1068 builder.ins().jump(handle_link, &block_args); in search_handler()
1072 builder.append_block_param(handle_link, env.pointer_type()); in search_handler()
1073 builder.append_block_param(handle_link, env.pointer_type()); in search_handler()
1074 builder.switch_to_block(handle_link); in search_handler()
1076 let raw_parts = builder.block_params(handle_link); in search_handler()
1078 let is_initial_stack = chain_link.is_initial_stack(env, builder); in search_handler()
1079 builder.ins().brif( in search_handler()
1091 builder.switch_to_block(begin_search_handler_list); in search_handler()
1095 let parent_link = contref.get_parent_stack_chain(env, builder); in search_handler()
1096 let parent_csi = parent_link.get_common_stack_information(env, builder); in search_handler()
1098 let handlers = parent_csi.get_handler_list(env, builder); in search_handler()
1099 let handler_list_data_ptr = handlers.get_data(env, builder); in search_handler()
1101 let first_switch_handler_index = parent_csi.get_first_switch_handler_index(env, builder); in search_handler()
1105 let zero = builder.ins().iconst(I32, 0); in search_handler()
1108 let length = handlers.get_length(env, builder); in search_handler()
1112 builder in search_handler()
1121 builder.append_block_param(try_index, I32); in search_handler()
1122 builder.switch_to_block(try_index); in search_handler()
1123 let index = builder.block_params(try_index)[0]; in search_handler()
1125 let in_bounds = builder in search_handler()
1129 builder in search_handler()
1137 builder.switch_to_block(compare_tags); in search_handler()
1141 let offset = builder.ins().imul_imm(index, i64::from(entry_size)); in search_handler()
1142 let offset = builder.ins().uextend(I64, offset); in search_handler()
1143 let entry_address = builder.ins().iadd(base, offset); in search_handler()
1147 let handled_tag = builder in search_handler()
1151 let tags_match = builder.ins().icmp(IntCC::Equal, handled_tag, tag_address); in search_handler()
1152 let incremented_index = builder.ins().iadd_imm(index, 1); in search_handler()
1153 builder.ins().brif( in search_handler()
1164 builder.switch_to_block(on_no_match); in search_handler()
1165 builder.set_cold_block(on_no_match); in search_handler()
1166 builder.ins().trap(crate::TRAP_UNHANDLED_TAG); in search_handler()
1169 builder.seal_block(handle_link); in search_handler()
1170 builder.seal_block(begin_search_handler_list); in search_handler()
1171 builder.seal_block(try_index); in search_handler()
1172 builder.seal_block(compare_tags); in search_handler()
1173 builder.seal_block(on_match); in search_handler()
1174 builder.seal_block(on_no_match); in search_handler()
1177 builder.switch_to_block(on_match); in search_handler()
1184 builder: &mut FunctionBuilder, in translate_cont_bind()
1188 let (witness, contref) = fatpointer::deconstruct(env, &mut builder.cursor(), contobj); in translate_cont_bind()
1191 builder.ins().trapz(contref, crate::TRAP_NULL_REFERENCE); in translate_cont_bind()
1194 let revision = vmcontref.get_revision(env, builder); in translate_cont_bind()
1195 let evidence = builder.ins().icmp(IntCC::Equal, witness, revision); in translate_cont_bind()
1196 builder in translate_cont_bind()
1200 vmcontref_store_payloads(env, builder, args, contref); in translate_cont_bind()
1202 let revision = vmcontref.incr_revision(env, builder, revision); in translate_cont_bind()
1203 let contobj = fatpointer::construct(env, &mut builder.cursor(), revision, contref); in translate_cont_bind()
1209 builder: &mut FunctionBuilder, in translate_cont_new()
1215 builder.ins().trapz(func, crate::TRAP_NULL_REFERENCE); in translate_cont_new()
1217 let nargs = builder in translate_cont_new()
1220 let nreturns = builder in translate_cont_new()
1224 let cont_new_func = super::builtins::cont_new(env, &mut builder.func)?; in translate_cont_new()
1225 let vmctx = env.vmctx_val(&mut builder.cursor()); in translate_cont_new()
1226 let call_inst = builder in translate_cont_new()
1229 let contref = *builder.func.dfg.inst_results(call_inst).first().unwrap(); in translate_cont_new()
1231 let tag = helpers::VMContRef::new(contref).get_revision(env, builder); in translate_cont_new()
1232 let contobj = fatpointer::construct(env, &mut builder.cursor(), tag, contref); in translate_cont_new()
1238 builder: &mut FunctionBuilder, in translate_resume()
1278 let resume_block = builder.create_block(); in translate_resume()
1279 let return_block = builder.create_block(); in translate_resume()
1280 let suspend_block = builder.create_block(); in translate_resume()
1281 let dispatch_block = builder.create_block(); in translate_resume()
1283 let vmctx = env.vmctx_val(&mut builder.cursor()); in translate_resume()
1297 builder.ins().jump(resume_block, &[]); in translate_resume()
1301 builder.switch_to_block(resume_block); in translate_resume()
1302 builder.seal_block(resume_block); in translate_resume()
1305 fatpointer::deconstruct(env, &mut builder.cursor(), resume_contobj); in translate_resume()
1308 builder in translate_resume()
1314 let revision = vmcontref.get_revision(env, builder); in translate_resume()
1315 let evidence = builder.ins().icmp(IntCC::Equal, revision, witness); in translate_resume()
1316 builder in translate_resume()
1319 let _next_revision = vmcontref.incr_revision(env, builder, revision); in translate_resume()
1323 vmcontref_store_payloads(env, builder, resume_args, resume_contref); in translate_resume()
1328 let mut last_ancestor = helpers::VMContRef::new(vmcontref.get_last_ancestor(env, builder)); in translate_resume()
1331 let original_stack_chain = vmctx_load_stack_chain(env, builder, vmctx); in translate_resume()
1332 last_ancestor.set_parent_stack_chain(env, builder, &original_stack_chain); in translate_resume()
1335 let zero = builder.ins().iconst(env.pointer_type(), 0); in translate_resume()
1336 vmcontref.set_last_ancestor(env, builder, zero); in translate_resume()
1339 vmctx_set_active_continuation(env, builder, vmctx, resume_contref); in translate_resume()
1356 let resume_csi = resume_contref.common_stack_information(env, builder); in translate_resume()
1357 let parent_csi = original_stack_chain.get_common_stack_information(env, builder); in translate_resume()
1358 resume_csi.set_state_running(env, builder); in translate_resume()
1359 parent_csi.set_state_parent(env, builder); in translate_resume()
1365 let vm_runtime_limits_ptr = vmctx_load_vm_runtime_limits_ptr(env, builder, vmctx); in translate_resume()
1366 parent_csi.load_limits_from_vmcontext(env, builder, vm_runtime_limits_ptr, true); in translate_resume()
1367 resume_csi.write_limits_to_vmcontext(env, builder, vm_runtime_limits_ptr); in translate_resume()
1372 let handler_list = parent_csi.get_handler_list(env, builder); in translate_resume()
1382 builder, in translate_resume()
1398 .map(|tag_index| tag_address(env, builder, tag_index)) in translate_resume()
1402 handler_list.store_data_entries(env, builder, &all_tag_addresses); in translate_resume()
1406 let first_switch_handler_index = builder in translate_resume()
1409 parent_csi.set_first_switch_handler_index(env, builder, first_switch_handler_index); in translate_resume()
1412 let resume_payload = ControlEffect::encode_resume(builder).to_u64(); in translate_resume()
1416 let fiber_stack = last_ancestor.get_fiber_stack(env, builder); in translate_resume()
1417 let control_context_ptr = fiber_stack.load_control_context(env, builder); in translate_resume()
1420 builder in translate_resume()
1428 let new_stack_chain = vmctx_load_stack_chain(env, builder, vmctx); in translate_resume()
1431 vmctx_store_stack_chain(env, builder, vmctx, &original_stack_chain); in translate_resume()
1432 parent_csi.set_state_running(env, builder); in translate_resume()
1435 handler_list.clear(env, builder, true); in translate_resume()
1436 parent_csi.set_first_switch_handler_index(env, builder, zero); in translate_resume()
1440 let signal = result.signal(builder); in translate_resume()
1444 builder in translate_resume()
1459 builder.switch_to_block(suspend_block); in translate_resume()
1460 builder.seal_block(suspend_block); in translate_resume()
1464 let suspended_csi = suspended_continuation.common_stack_information(env, builder); in translate_resume()
1472 suspended_csi.load_limits_from_vmcontext(env, builder, vm_runtime_limits_ptr, false); in translate_resume()
1476 let parent_csi = original_stack_chain.get_common_stack_information(env, builder); in translate_resume()
1477 parent_csi.write_limits_to_vmcontext(env, builder, vm_runtime_limits_ptr); in translate_resume()
1480 let handler_index = resume_result.handler_index(builder); in translate_resume()
1482 let revision = suspended_continuation.get_revision(env, builder); in translate_resume()
1485 &mut builder.cursor(), in translate_resume()
1492 builder.ins().jump(dispatch_block, &[]); in translate_resume()
1501 let jt_default_block = builder.create_block(); in translate_resume()
1503 builder.switch_to_block(jt_default_block); in translate_resume()
1504 builder.set_cold_block(jt_default_block); in translate_resume()
1506 builder.ins().trap(crate::TRAP_UNREACHABLE); in translate_resume()
1516 let preamble_block = builder.create_block(); in translate_resume()
1518 builder.switch_to_block(preamble_block); in translate_resume()
1526 let values = suspended_contref.values(env, builder); in translate_resume()
1528 .load_data_entries(env, builder, &param_types) in translate_resume()
1541 values.clear(env, builder, false); in translate_resume()
1543 builder.ins().jump(target_block, &suspend_args); in translate_resume()
1552 builder.switch_to_block(dispatch_block); in translate_resume()
1553 builder.seal_block(dispatch_block); in translate_resume()
1555 let default_bc = builder.func.dfg.block_call(jt_default_block, &[]); in translate_resume()
1559 .map(|b| builder.func.dfg.block_call(*b, &[])) in translate_resume()
1563 let jt = builder.create_jump_table(jt_data); in translate_resume()
1565 builder.ins().br_table(handler_index, jt); in translate_resume()
1568 builder.seal_block(preamble_block); in translate_resume()
1570 builder.seal_block(jt_default_block); in translate_resume()
1576 builder.switch_to_block(return_block); in translate_resume()
1577 builder.seal_block(return_block); in translate_resume()
1585 let parent_csi = original_stack_chain.get_common_stack_information(env, builder); in translate_resume()
1586 parent_csi.write_limits_to_vmcontext(env, builder, vm_runtime_limits_ptr); in translate_resume()
1588 let returned_csi = returned_contref.common_stack_information(env, builder); in translate_resume()
1589 returned_csi.set_state_returned(env, builder); in translate_resume()
1597 let payloads = returned_contref.args(env, builder); in translate_resume()
1598 let return_values = payloads.load_data_entries(env, builder, &return_types); in translate_resume()
1599 payloads.clear(env, builder, true); in translate_resume()
1607 builder: &mut FunctionBuilder, in translate_suspend()
1612 let tag_addr = tag_address(env, builder, tag_index); in translate_suspend()
1614 let vmctx = env.vmctx_val(&mut builder.cursor()); in translate_suspend()
1615 let active_stack_chain = vmctx_load_stack_chain(env, builder, vmctx); in translate_suspend()
1618 search_handler(env, builder, &active_stack_chain, tag_addr, true); in translate_suspend()
1627 active_contref.set_last_ancestor(env, builder, end_of_chain_contref.address); in translate_suspend()
1633 let values = active_contref.values(env, builder); in translate_suspend()
1641 builder, in translate_suspend()
1648 values.store_data_entries(env, builder, suspend_args); in translate_suspend()
1652 let active_contref_csi = active_contref.common_stack_information(env, builder); in translate_suspend()
1653 active_contref_csi.set_state_suspended(env, builder); in translate_suspend()
1654 let absent_chain_link = VMStackChain::absent(env, builder); in translate_suspend()
1655 end_of_chain_contref.set_parent_stack_chain(env, builder, &absent_chain_link); in translate_suspend()
1657 let suspend_payload = ControlEffect::encode_suspend(builder, handler_index).to_u64(); in translate_suspend()
1664 let fiber_stack = end_of_chain_contref.get_fiber_stack(env, builder); in translate_suspend()
1665 let control_context_ptr = fiber_stack.load_control_context(env, builder); in translate_suspend()
1667 builder in translate_suspend()
1672 let values = active_contref.values(env, builder); in translate_suspend()
1673 let return_values = values.load_data_entries(env, builder, tag_return_types); in translate_suspend()
1675 values.clear(env, builder, true); in translate_suspend()
1682 builder: &mut FunctionBuilder, in translate_switch()
1688 let vmctx = env.vmctx_val(&mut builder.cursor()); in translate_switch()
1696 fatpointer::deconstruct(env, &mut builder.cursor(), switchee_contobj); in translate_switch()
1699 builder in translate_switch()
1705 let revision = target_contref.get_revision(env, builder); in translate_switch()
1706 let evidence = builder.ins().icmp(IntCC::Equal, revision, witness); in translate_switch()
1707 builder in translate_switch()
1710 let _next_revision = target_contref.incr_revision(env, builder, revision); in translate_switch()
1727 let tag_addr = tag_address(env, builder, tag_index); in translate_switch()
1728 let active_stack_chain = vmctx_load_stack_chain(env, builder, vmctx); in translate_switch()
1730 search_handler(env, builder, &active_stack_chain, tag_addr, false); in translate_switch()
1739 switcher_contref.set_last_ancestor(env, builder, last_ancestor.address); in translate_switch()
1743 let values = switcher_contref.values(env, builder); in translate_switch()
1748 builder, in translate_switch()
1754 let switcher_contref_csi = switcher_contref.common_stack_information(env, builder); in translate_switch()
1755 switcher_contref_csi.set_state_suspended(env, builder); in translate_switch()
1759 let absent = VMStackChain::absent(env, builder); in translate_switch()
1760 last_ancestor.set_parent_stack_chain(env, builder, &absent); in translate_switch()
1764 let vm_runtime_limits_ptr = vmctx_load_vm_runtime_limits_ptr(env, builder, vmctx); in translate_switch()
1765 switcher_contref_csi.load_limits_from_vmcontext(env, builder, vm_runtime_limits_ptr, false); in translate_switch()
1767 let revision = switcher_contref.get_revision(env, builder); in translate_switch()
1770 &mut builder.cursor(), in translate_switch()
1793 vmcontref_store_payloads(env, builder, &combined_payloads, switchee_contref.address); in translate_switch()
1795 let switchee_contref_csi = switchee_contref.common_stack_information(env, builder); in translate_switch()
1796 switchee_contref_csi.set_state_running(env, builder); in translate_switch()
1798 let switchee_contref_last_ancestor = switchee_contref.get_last_ancestor(env, builder); in translate_switch()
1802 switchee_contref_last_ancestor.set_parent_stack_chain(env, builder, &handler_stack_chain); in translate_switch()
1809 vmctx_set_active_continuation(env, builder, vmctx, switchee_contref.address); in translate_switch()
1811 switchee_contref_csi.write_limits_to_vmcontext(env, builder, vm_runtime_limits_ptr); in translate_switch()
1817 switcher_contref_last_ancestor.get_fiber_stack(env, builder); in translate_switch()
1819 switcher_last_ancestor_fs.load_control_context(env, builder); in translate_switch()
1822 switchee_contref_last_ancestor.get_fiber_stack(env, builder); in translate_switch()
1824 switchee_last_ancestor_fs.load_control_context(env, builder); in translate_switch()
1871 let slot = builder.create_sized_stack_slot(slot_size); in translate_switch()
1872 let tmp_control_context = builder.ins().stack_addr(env.pointer_type(), slot, 0); in translate_switch()
1879 builder in translate_switch()
1882 builder in translate_switch()
1888 builder in translate_switch()
1891 builder in translate_switch()
1898 let switch_payload = ControlEffect::encode_switch(builder).to_u64(); in translate_switch()
1900 let _result = builder.ins().stack_switch( in translate_switch()
1910 let payloads = switcher_contref.values(env, builder); in translate_switch()
1911 let return_values = payloads.load_data_entries(env, builder, return_types); in translate_switch()
1913 payloads.clear(env, builder, true); in translate_switch()